@cloudflare/realtimekit-ui 1.1.0-staging.1 → 1.1.0-staging.10

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 (644) hide show
  1. package/dist/browser.js +1 -1
  2. package/dist/cjs/{TextMessage-7bb3e1fd.js → TextMessage-1dc6f8b9.js} +1 -1
  3. package/dist/cjs/{chat-717e517d.js → chat-2ae6f058.js} +1 -1
  4. package/dist/cjs/{config-8c9ac89a.js → config-0a88d50b.js} +2 -2
  5. package/dist/cjs/{debounce-a3e0d9e7.js → debounce-b06b27ca.js} +1 -1
  6. package/dist/cjs/{index-8d07e125.js → index-e4244d7d.js} +1 -1
  7. package/dist/cjs/index.cjs.js +6 -5
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/{merge-73e2770b.js → merge-c46cfa17.js} +1 -1
  10. package/dist/cjs/{notification-567fe887.js → notification-f3750b61.js} +1 -1
  11. package/dist/cjs/realtimekit-ui.cjs.js +1 -1
  12. package/dist/cjs/rtk-ai-toggle.cjs.entry.js +2 -2
  13. package/dist/cjs/rtk-ai-transcriptions.cjs.entry.js +3 -3
  14. package/dist/cjs/rtk-ai.cjs.entry.js +2 -2
  15. package/dist/cjs/rtk-audio-grid.cjs.entry.js +3 -3
  16. package/dist/cjs/rtk-audio-tile.cjs.entry.js +2 -2
  17. package/dist/cjs/rtk-audio-visualizer_4.cjs.entry.js +3 -3
  18. package/dist/cjs/rtk-avatar_24.cjs.entry.js +430 -301
  19. package/dist/cjs/rtk-breakout-room-manager_3.cjs.entry.js +6 -6
  20. package/dist/cjs/rtk-breakout-rooms-manager_9.cjs.entry.js +11 -11
  21. package/dist/cjs/rtk-breakout-rooms-toggle.cjs.entry.js +2 -2
  22. package/dist/cjs/rtk-camera-selector_2.cjs.entry.js +2 -2
  23. package/dist/cjs/rtk-camera-toggle.cjs.entry.js +2 -2
  24. package/dist/cjs/rtk-caption-toggle.cjs.entry.js +2 -2
  25. package/dist/cjs/rtk-channel-creator.cjs.entry.js +4 -4
  26. package/dist/cjs/rtk-channel-details.cjs.entry.js +3 -3
  27. package/dist/cjs/rtk-channel-header.cjs.entry.js +2 -2
  28. package/dist/cjs/rtk-channel-selector-ui.cjs.entry.js +6 -6
  29. package/dist/cjs/rtk-chat-composer-ui.cjs.entry.js +3 -3
  30. package/dist/cjs/rtk-chat-message.cjs.entry.js +4 -4
  31. package/dist/cjs/rtk-chat-messages-ui.cjs.entry.js +5 -5
  32. package/dist/cjs/rtk-chat-search-results.cjs.entry.js +3 -3
  33. package/dist/cjs/rtk-chat-selector-ui.cjs.entry.js +3 -3
  34. package/dist/cjs/rtk-chat-toggle.cjs.entry.js +30 -25
  35. package/dist/cjs/rtk-clock.cjs.entry.js +5 -5
  36. package/dist/cjs/rtk-controlbar-button.cjs.entry.js +3 -3
  37. package/dist/cjs/rtk-controlbar.cjs.entry.js +3 -3
  38. package/dist/cjs/rtk-debugger-audio_4.cjs.entry.js +2 -2
  39. package/dist/cjs/rtk-debugger-toggle.cjs.entry.js +3 -3
  40. package/dist/cjs/rtk-dialog-manager.cjs.entry.js +2 -2
  41. package/dist/cjs/rtk-dialog.cjs.entry.js +2 -2
  42. package/dist/cjs/rtk-ended-screen.cjs.entry.js +2 -2
  43. package/dist/cjs/rtk-file-dropzone.cjs.entry.js +3 -3
  44. package/dist/cjs/rtk-file-message_3.cjs.entry.js +12 -12
  45. package/dist/cjs/rtk-fullscreen-toggle.cjs.entry.js +2 -2
  46. package/dist/cjs/rtk-grid-pagination.cjs.entry.js +2 -2
  47. package/dist/cjs/rtk-grid.cjs.entry.js +2 -2
  48. package/dist/cjs/rtk-header.cjs.entry.js +3 -3
  49. package/dist/cjs/rtk-idle-screen.cjs.entry.js +3 -3
  50. package/dist/cjs/rtk-image-viewer.cjs.entry.js +3 -3
  51. package/dist/cjs/rtk-information-tooltip.cjs.entry.js +3 -3
  52. package/dist/cjs/rtk-leave-button.cjs.entry.js +3 -3
  53. package/dist/cjs/rtk-livestream-indicator_3.cjs.entry.js +2 -2
  54. package/dist/cjs/rtk-livestream-toggle.cjs.entry.js +2 -2
  55. package/dist/cjs/rtk-logo.cjs.entry.js +2 -2
  56. package/dist/cjs/rtk-meeting-title.cjs.entry.js +2 -2
  57. package/dist/cjs/rtk-message-list-view.cjs.entry.js +6 -6
  58. package/dist/cjs/rtk-mic-toggle.cjs.entry.js +2 -2
  59. package/dist/cjs/rtk-mixed-grid.cjs.entry.js +2 -2
  60. package/dist/cjs/rtk-more-toggle.cjs.entry.js +4 -4
  61. package/dist/cjs/rtk-mute-all-button.cjs.entry.js +2 -2
  62. package/dist/cjs/rtk-name-tag.cjs.entry.js +3 -3
  63. package/dist/cjs/rtk-network-indicator.cjs.entry.js +2 -2
  64. package/dist/cjs/rtk-notification.cjs.entry.js +6 -6
  65. package/dist/cjs/rtk-notifications.cjs.entry.js +8 -5
  66. package/dist/cjs/rtk-participant-count.cjs.entry.js +2 -2
  67. package/dist/cjs/rtk-participant-setup.cjs.entry.js +4 -4
  68. package/dist/cjs/rtk-participant_2.cjs.entry.js +17 -17
  69. package/dist/cjs/rtk-participants-audio.cjs.entry.js +3 -3
  70. package/dist/cjs/rtk-participants-stage-list_4.cjs.entry.js +3 -3
  71. package/dist/cjs/rtk-participants-toggle.cjs.entry.js +3 -3
  72. package/dist/cjs/rtk-participants.cjs.entry.js +3 -3
  73. package/dist/cjs/rtk-pip-toggle.cjs.entry.js +2 -2
  74. package/dist/cjs/rtk-plugin-main_2.cjs.entry.js +3 -3
  75. package/dist/cjs/rtk-plugins-toggle.cjs.entry.js +3 -3
  76. package/dist/cjs/rtk-plugins_2.cjs.entry.js +6 -6
  77. package/dist/cjs/rtk-poll_2.cjs.entry.js +5 -5
  78. package/dist/cjs/rtk-polls-toggle.cjs.entry.js +3 -3
  79. package/dist/cjs/rtk-recording-indicator.cjs.entry.js +3 -3
  80. package/dist/cjs/rtk-recording-toggle.cjs.entry.js +2 -2
  81. package/dist/cjs/rtk-screen-share-toggle.cjs.entry.js +2 -2
  82. package/dist/cjs/rtk-screenshare-view.cjs.entry.js +7 -7
  83. package/dist/cjs/rtk-settings-audio_2.cjs.entry.js +2 -2
  84. package/dist/cjs/rtk-settings-toggle.cjs.entry.js +3 -3
  85. package/dist/cjs/rtk-settings.cjs.entry.js +2 -2
  86. package/dist/cjs/rtk-setup-screen.cjs.entry.js +2 -2
  87. package/dist/cjs/rtk-sidebar-ui.cjs.entry.js +4 -4
  88. package/dist/cjs/rtk-sidebar.cjs.entry.js +3 -3
  89. package/dist/cjs/rtk-simple-grid.cjs.entry.js +2 -2
  90. package/dist/cjs/rtk-spotlight-grid.cjs.entry.js +4 -4
  91. package/dist/cjs/rtk-spotlight-indicator.cjs.entry.js +2 -2
  92. package/dist/cjs/rtk-stage-toggle.cjs.entry.js +2 -2
  93. package/dist/cjs/rtk-stage.cjs.entry.js +3 -3
  94. package/dist/cjs/rtk-transcript.cjs.entry.js +3 -3
  95. package/dist/cjs/rtk-transcripts.cjs.entry.js +2 -2
  96. package/dist/cjs/rtk-ui-provider.cjs.entry.js +13 -3
  97. package/dist/cjs/rtk-waiting-screen.cjs.entry.js +3 -3
  98. package/dist/cjs/{sidebar-2ad915b1.js → sidebar-0eb1e4ef.js} +1 -1
  99. package/dist/cjs/{ui-store-1cb28da8.js → ui-store-6c2d680f.js} +11 -2
  100. package/dist/collection/components/rtk-ai-transcriptions/rtk-ai-transcriptions.js +1 -1
  101. package/dist/collection/components/rtk-audio-grid/rtk-audio-grid.js +1 -1
  102. package/dist/collection/components/rtk-avatar/rtk-avatar.js +1 -1
  103. package/dist/collection/components/rtk-breakout-room-participants/rtk-breakout-room-participants.js +2 -2
  104. package/dist/collection/components/rtk-broadcast-message-modal/rtk-broadcast-message-modal.js +2 -2
  105. package/dist/collection/components/rtk-channel-creator/rtk-channel-creator.js +2 -2
  106. package/dist/collection/components/rtk-channel-details/rtk-channel-details.js +1 -1
  107. package/dist/collection/components/rtk-channel-selector-ui/rtk-channel-selector-ui.js +2 -2
  108. package/dist/collection/components/rtk-channel-selector-view/rtk-channel-selector-view.css +29 -29
  109. package/dist/collection/components/rtk-channel-selector-view/rtk-channel-selector-view.js +4 -4
  110. package/dist/collection/components/rtk-chat/rtk-chat.css +47 -8
  111. package/dist/collection/components/rtk-chat/rtk-chat.js +98 -13
  112. package/dist/collection/components/rtk-chat-composer-view/rtk-chat-composer-view.js +28 -15
  113. package/dist/collection/components/rtk-chat-message/rtk-chat-message.js +2 -2
  114. package/dist/collection/components/rtk-chat-messages-ui/rtk-chat-messages-ui.js +3 -3
  115. package/dist/collection/components/rtk-chat-messages-ui-paginated/rtk-chat-messages-ui-paginated.js +37 -17
  116. package/dist/collection/components/rtk-chat-search-results/rtk-chat-search-results.js +1 -1
  117. package/dist/collection/components/rtk-chat-toggle/rtk-chat-toggle.css +1 -1
  118. package/dist/collection/components/rtk-chat-toggle/rtk-chat-toggle.js +27 -26
  119. package/dist/collection/components/rtk-clock/rtk-clock.js +3 -3
  120. package/dist/collection/components/rtk-confirmation-modal/rtk-confirmation-modal.js +1 -1
  121. package/dist/collection/components/rtk-controlbar/rtk-controlbar.js +1 -1
  122. package/dist/collection/components/rtk-controlbar-button/rtk-controlbar-button.js +1 -1
  123. package/dist/collection/components/rtk-counter/rtk-counter.js +2 -2
  124. package/dist/collection/components/rtk-debugger-toggle/rtk-debugger-toggle.js +1 -1
  125. package/dist/collection/components/rtk-draft-attachment-view/rtk-draft-attachment-view.js +1 -1
  126. package/dist/collection/components/rtk-emoji-picker/rtk-emoji-picker.js +1 -1
  127. package/dist/collection/components/rtk-emoji-picker-button/rtk-emoji-picker-button.js +1 -1
  128. package/dist/collection/components/rtk-file-dropzone/rtk-file-dropzone.js +1 -1
  129. package/dist/collection/components/rtk-file-message/rtk-file-message.js +2 -2
  130. package/dist/collection/components/rtk-file-message-view/rtk-file-message-view.js +1 -1
  131. package/dist/collection/components/rtk-file-picker-button/rtk-file-picker-button.js +1 -1
  132. package/dist/collection/components/rtk-header/rtk-header.js +1 -1
  133. package/dist/collection/components/rtk-icon/rtk-icon.js +1 -1
  134. package/dist/collection/components/rtk-idle-screen/rtk-idle-screen.js +1 -1
  135. package/dist/collection/components/rtk-image-message/rtk-image-message.js +4 -4
  136. package/dist/collection/components/rtk-image-message-view/rtk-image-message-view.js +3 -3
  137. package/dist/collection/components/rtk-image-viewer/rtk-image-viewer.js +1 -1
  138. package/dist/collection/components/rtk-information-tooltip/rtk-information-tooltip.js +1 -1
  139. package/dist/collection/components/rtk-join-stage/rtk-join-stage.js +1 -1
  140. package/dist/collection/components/rtk-leave-button/rtk-leave-button.js +1 -1
  141. package/dist/collection/components/rtk-leave-meeting/rtk-leave-meeting.js +2 -2
  142. package/dist/collection/components/rtk-markdown-view/rtk-markdown-view.js +1 -1
  143. package/dist/collection/components/rtk-meeting/rtk-meeting.js +37 -0
  144. package/dist/collection/components/rtk-menu/rtk-menu.js +2 -2
  145. package/dist/collection/components/rtk-menu-item/rtk-menu-item.css +6 -1
  146. package/dist/collection/components/rtk-menu-item/rtk-menu-item.js +23 -1
  147. package/dist/collection/components/rtk-menu-list/rtk-menu-list.css +15 -4
  148. package/dist/collection/components/rtk-menu-list/rtk-menu-list.js +23 -1
  149. package/dist/collection/components/rtk-message-list-view/rtk-message-list-view.js +3 -3
  150. package/dist/collection/components/rtk-message-view/rtk-message-view.css +30 -22
  151. package/dist/collection/components/rtk-message-view/rtk-message-view.js +72 -2
  152. package/dist/collection/components/rtk-more-toggle/rtk-more-toggle.js +2 -2
  153. package/dist/collection/components/rtk-mute-all-confirmation/rtk-mute-all-confirmation.js +1 -1
  154. package/dist/collection/components/rtk-name-tag/rtk-name-tag.js +1 -1
  155. package/dist/collection/components/rtk-notification/rtk-notification.js +2 -2
  156. package/dist/collection/components/rtk-notifications/rtk-notifications.js +4 -1
  157. package/dist/collection/components/rtk-overlay-modal/rtk-overlay-modal.js +1 -1
  158. package/dist/collection/components/rtk-paginated-list/rtk-paginated-list.css +5 -5
  159. package/dist/collection/components/rtk-paginated-list/rtk-paginated-list.js +327 -264
  160. package/dist/collection/components/rtk-participant/rtk-participant.js +12 -12
  161. package/dist/collection/components/rtk-participant-setup/rtk-participant-setup.js +2 -2
  162. package/dist/collection/components/rtk-participants-audio/rtk-participants-audio.js +1 -1
  163. package/dist/collection/components/rtk-participants-stage-list/rtk-participants-stage-list.js +1 -1
  164. package/dist/collection/components/rtk-permissions-message/rtk-permissions-message.js +1 -1
  165. package/dist/collection/components/rtk-plugins/rtk-plugins.js +1 -1
  166. package/dist/collection/components/rtk-poll/rtk-poll.js +1 -1
  167. package/dist/collection/components/rtk-poll-form/rtk-poll-form.js +2 -2
  168. package/dist/collection/components/rtk-polls/rtk-polls.js +3 -3
  169. package/dist/collection/components/rtk-recording-indicator/rtk-recording-indicator.js +1 -1
  170. package/dist/collection/components/rtk-screenshare-view/rtk-screenshare-view.js +5 -5
  171. package/dist/collection/components/rtk-settings-toggle/rtk-settings-toggle.js +1 -1
  172. package/dist/collection/components/rtk-sidebar-ui/rtk-sidebar-ui.js +2 -2
  173. package/dist/collection/components/rtk-spinner/rtk-spinner.js +1 -1
  174. package/dist/collection/components/rtk-spotlight-grid/rtk-spotlight-grid.js +2 -2
  175. package/dist/collection/components/rtk-stage/rtk-stage.js +1 -1
  176. package/dist/collection/components/rtk-switch/rtk-switch.js +1 -1
  177. package/dist/collection/components/rtk-tab-bar/rtk-tab-bar.js +1 -1
  178. package/dist/collection/components/rtk-text-composer-view/rtk-text-composer-view.js +1 -1
  179. package/dist/collection/components/rtk-text-message/rtk-text-message.js +2 -2
  180. package/dist/collection/components/rtk-text-message-view/rtk-text-message-view.js +1 -1
  181. package/dist/collection/components/rtk-tooltip/rtk-tooltip.js +1 -1
  182. package/dist/collection/components/rtk-transcript/rtk-transcript.js +1 -1
  183. package/dist/collection/components/rtk-ui-provider/rtk-ui-provider.js +37 -1
  184. package/dist/collection/components/rtk-virtualized-list/rtk-virtualized-participant-list.js +2 -2
  185. package/dist/collection/components/rtk-waiting-screen/rtk-waiting-screen.js +1 -1
  186. package/dist/collection/exports.js +2 -1
  187. package/dist/collection/lib/overrides.js +6 -0
  188. package/dist/collection/utils/flags.js +0 -1
  189. package/dist/collection/utils/sync-with-store/ui-store.js +4 -1
  190. package/dist/components/index.js +6 -6
  191. package/dist/components/{p-6f340109.js → p-05df465d.js} +1 -1
  192. package/dist/components/{p-9e87b2c9.js → p-0a31ef52.js} +2 -2
  193. package/dist/components/{p-618864a0.js → p-107e55c1.js} +3 -3
  194. package/dist/components/{p-5f26bba3.js → p-193d8051.js} +2 -2
  195. package/dist/components/{p-d3de8b85.js → p-19b037c5.js} +4 -4
  196. package/dist/components/{p-8d25843a.js → p-1a9e3806.js} +3 -3
  197. package/dist/components/{p-82f8c924.js → p-1afc54bb.js} +3 -3
  198. package/dist/components/{p-afe77b50.js → p-1da807a2.js} +3 -3
  199. package/dist/components/{p-2f08d7eb.js → p-210862ae.js} +98 -37
  200. package/dist/components/{p-abe1dbe6.js → p-2309fb19.js} +4 -4
  201. package/dist/components/{p-f8f5cb31.js → p-2447a26f.js} +4 -4
  202. package/dist/components/{p-63ef7ea4.js → p-282e8e83.js} +7 -7
  203. package/dist/components/{p-ee98bbaf.js → p-33be3c19.js} +13 -13
  204. package/dist/components/{p-adf73364.js → p-33e73313.js} +6 -6
  205. package/dist/components/{p-121e073d.js → p-35e93724.js} +2 -2
  206. package/dist/components/{p-bb8f2597.js → p-395ef9c8.js} +7 -7
  207. package/dist/components/{p-f47894a6.js → p-3972098e.js} +21 -27
  208. package/dist/components/{p-10ef077c.js → p-39e8b34a.js} +3 -3
  209. package/dist/components/{p-e81fc1e8.js → p-3e58e0f3.js} +3 -3
  210. package/dist/components/{p-0b4e526c.js → p-43bf8953.js} +4 -4
  211. package/dist/components/p-44a203bd.js +409 -0
  212. package/dist/components/{p-190db142.js → p-44c32349.js} +8 -8
  213. package/dist/components/{p-2d08ab28.js → p-45b4f6a1.js} +4 -4
  214. package/dist/components/{p-9889bee5.js → p-46d99dd9.js} +4 -4
  215. package/dist/components/{p-65cd2fe3.js → p-524d7900.js} +5 -5
  216. package/dist/components/{p-0d7bf41b.js → p-5476e3f3.js} +4 -4
  217. package/dist/components/{p-914563e7.js → p-586482a8.js} +6 -6
  218. package/dist/components/{p-fd68a52b.js → p-5f1b84f7.js} +9 -9
  219. package/dist/components/{p-d06d1eac.js → p-600579a6.js} +3 -3
  220. package/dist/components/{p-6f272732.js → p-6392204c.js} +9 -9
  221. package/dist/components/{p-a94b2e67.js → p-6739a399.js} +2 -2
  222. package/dist/components/{p-f7eb9c47.js → p-6c02b0d0.js} +6 -6
  223. package/dist/components/{p-c515acba.js → p-6f361314.js} +3 -3
  224. package/dist/components/{p-47c25f64.js → p-6f7c46d2.js} +1 -1
  225. package/dist/components/{p-84e5b453.js → p-6f8d2043.js} +2 -2
  226. package/dist/components/{p-080acf18.js → p-7148ec6a.js} +7 -4
  227. package/dist/components/{p-33a87325.js → p-72fffe3e.js} +3 -3
  228. package/dist/components/{p-3b29dda1.js → p-73baf5ba.js} +1 -1
  229. package/dist/components/{p-2f82e0b0.js → p-74356882.js} +8 -8
  230. package/dist/components/{p-fe911889.js → p-7a27fdb5.js} +20 -11
  231. package/dist/components/{p-b011763d.js → p-7b6356e2.js} +4 -4
  232. package/dist/components/{p-5c92df32.js → p-7bde2b2d.js} +6 -6
  233. package/dist/components/{p-6c2cfa0d.js → p-7c8096c2.js} +5 -5
  234. package/dist/components/{p-a6296b02.js → p-819cb785.js} +7 -4
  235. package/dist/components/{p-6756b222.js → p-851b90a6.js} +3 -3
  236. package/dist/components/{p-e4a080a5.js → p-89151c7a.js} +4 -4
  237. package/dist/components/{p-244cbe7b.js → p-89eb65a9.js} +2 -2
  238. package/dist/components/{p-c3621e10.js → p-92729e09.js} +7 -7
  239. package/dist/components/{p-cf503999.js → p-977f9875.js} +5 -5
  240. package/dist/components/{p-f4e75ea9.js → p-9bdc24b8.js} +5 -5
  241. package/dist/components/{p-188bfe87.js → p-abdff498.js} +9 -9
  242. package/dist/components/{p-78b61cce.js → p-ad873f2d.js} +1 -1
  243. package/dist/components/{p-d107e9f4.js → p-b6869c32.js} +4 -4
  244. package/dist/components/{p-395d7140.js → p-b76e3950.js} +5 -5
  245. package/dist/components/{p-102b6df8.js → p-c05530c8.js} +2 -2
  246. package/dist/components/p-c78c26b1.js +203 -0
  247. package/dist/components/{p-88bef213.js → p-cf8f725b.js} +1 -1
  248. package/dist/components/{p-c078ae06.js → p-d188f58b.js} +3 -3
  249. package/dist/components/{p-2e282643.js → p-d9f6db4f.js} +5 -5
  250. package/dist/components/{p-51de7af3.js → p-da87cc71.js} +1 -1
  251. package/dist/components/{p-0d582365.js → p-dc3143c0.js} +2 -2
  252. package/dist/components/{p-4d582a90.js → p-dd89aff2.js} +6 -6
  253. package/dist/components/{p-7481511c.js → p-dfb42075.js} +3 -3
  254. package/dist/components/{p-e675729a.js → p-e375b50d.js} +5 -5
  255. package/dist/components/{p-0a35a909.js → p-e443d803.js} +4 -4
  256. package/dist/components/{p-a6f2b402.js → p-e4888ccc.js} +31 -31
  257. package/dist/components/{p-a10b9faa.js → p-e552dc59.js} +3 -3
  258. package/dist/components/{p-55501201.js → p-e57e8041.js} +5 -5
  259. package/dist/components/{p-b34865c7.js → p-e64e3cec.js} +5 -5
  260. package/dist/components/{p-3da4880c.js → p-e72a0f16.js} +5 -5
  261. package/dist/components/{p-7fc0dc2f.js → p-e847fee9.js} +11 -3
  262. package/dist/components/{p-b882f4a1.js → p-ecb016da.js} +5 -5
  263. package/dist/components/{p-a4a5ff5a.js → p-edd12f2f.js} +6 -6
  264. package/dist/components/{p-563c785d.js → p-eeb37b16.js} +3 -3
  265. package/dist/components/{p-dbfc9151.js → p-f0e4633e.js} +4 -4
  266. package/dist/components/{p-a29c01fc.js → p-f6c2e822.js} +3 -3
  267. package/dist/components/{p-20290b0b.js → p-f7bd10f1.js} +5 -5
  268. package/dist/components/{p-e8df7ac5.js → p-fa5aba68.js} +19 -19
  269. package/dist/components/{p-488d88a8.js → p-fb7666ce.js} +5 -5
  270. package/dist/components/{p-fa8f6b4a.js → p-fb836f65.js} +1 -1
  271. package/dist/components/{p-e6710b76.js → p-fb900e8f.js} +4 -4
  272. package/dist/components/{p-f7430e46.js → p-fefc57f9.js} +6 -6
  273. package/dist/components/rtk-ai-toggle.js +5 -5
  274. package/dist/components/rtk-ai-transcriptions.js +1 -1
  275. package/dist/components/rtk-ai.js +4 -4
  276. package/dist/components/rtk-audio-grid.js +3 -3
  277. package/dist/components/rtk-audio-tile.js +6 -6
  278. package/dist/components/rtk-audio-visualizer.js +1 -1
  279. package/dist/components/rtk-avatar.js +1 -1
  280. package/dist/components/rtk-breakout-room-manager.js +1 -1
  281. package/dist/components/rtk-breakout-room-participants.js +1 -1
  282. package/dist/components/rtk-breakout-rooms-manager.js +1 -1
  283. package/dist/components/rtk-breakout-rooms-toggle.js +5 -5
  284. package/dist/components/rtk-broadcast-message-modal.js +1 -1
  285. package/dist/components/rtk-camera-selector.js +1 -1
  286. package/dist/components/rtk-camera-toggle.js +6 -6
  287. package/dist/components/rtk-caption-toggle.js +5 -5
  288. package/dist/components/rtk-channel-creator.js +7 -7
  289. package/dist/components/rtk-channel-details.js +1 -1
  290. package/dist/components/rtk-channel-header.js +8 -8
  291. package/dist/components/rtk-channel-selector-ui.js +7 -7
  292. package/dist/components/rtk-channel-selector-view.js +1 -1
  293. package/dist/components/rtk-chat-composer-ui.js +7 -7
  294. package/dist/components/rtk-chat-composer-view.js +1 -1
  295. package/dist/components/rtk-chat-message.js +1 -1
  296. package/dist/components/rtk-chat-messages-ui-paginated.js +1 -1
  297. package/dist/components/rtk-chat-messages-ui.js +17 -17
  298. package/dist/components/rtk-chat-search-results.js +14 -14
  299. package/dist/components/rtk-chat-selector-ui.js +3 -3
  300. package/dist/components/rtk-chat-toggle.js +34 -30
  301. package/dist/components/rtk-chat.js +1 -1
  302. package/dist/components/rtk-clock.js +6 -6
  303. package/dist/components/rtk-confirmation-modal.js +1 -1
  304. package/dist/components/rtk-controlbar-button.js +1 -1
  305. package/dist/components/rtk-controlbar.js +3 -3
  306. package/dist/components/rtk-counter.js +1 -1
  307. package/dist/components/rtk-debugger-audio.js +1 -1
  308. package/dist/components/rtk-debugger-screenshare.js +1 -1
  309. package/dist/components/rtk-debugger-system.js +1 -1
  310. package/dist/components/rtk-debugger-toggle.js +6 -6
  311. package/dist/components/rtk-debugger-video.js +1 -1
  312. package/dist/components/rtk-debugger.js +1 -1
  313. package/dist/components/rtk-dialog-manager.js +23 -23
  314. package/dist/components/rtk-dialog.js +1 -1
  315. package/dist/components/rtk-draft-attachment-view.js +1 -1
  316. package/dist/components/rtk-emoji-picker-button.js +1 -1
  317. package/dist/components/rtk-emoji-picker.js +1 -1
  318. package/dist/components/rtk-ended-screen.js +4 -4
  319. package/dist/components/rtk-file-dropzone.js +4 -4
  320. package/dist/components/rtk-file-message-view.js +1 -1
  321. package/dist/components/rtk-file-message.js +1 -1
  322. package/dist/components/rtk-file-picker-button.js +1 -1
  323. package/dist/components/rtk-fullscreen-toggle.js +1 -1
  324. package/dist/components/rtk-grid-pagination.js +4 -4
  325. package/dist/components/rtk-grid.js +9 -9
  326. package/dist/components/rtk-header.js +3 -3
  327. package/dist/components/rtk-icon.js +1 -1
  328. package/dist/components/rtk-idle-screen.js +6 -6
  329. package/dist/components/rtk-image-message-view.js +1 -1
  330. package/dist/components/rtk-image-message.js +1 -1
  331. package/dist/components/rtk-image-viewer.js +4 -4
  332. package/dist/components/rtk-information-tooltip.js +4 -4
  333. package/dist/components/rtk-join-stage.js +1 -1
  334. package/dist/components/rtk-leave-button.js +6 -6
  335. package/dist/components/rtk-leave-meeting.js +1 -1
  336. package/dist/components/rtk-livestream-indicator.js +1 -1
  337. package/dist/components/rtk-livestream-player.js +1 -1
  338. package/dist/components/rtk-livestream-toggle.js +5 -5
  339. package/dist/components/rtk-logo.js +1 -1
  340. package/dist/components/rtk-markdown-view.js +1 -1
  341. package/dist/components/rtk-meeting-title.js +3 -3
  342. package/dist/components/rtk-meeting.js +40 -28
  343. package/dist/components/rtk-menu-item.js +1 -1
  344. package/dist/components/rtk-menu-list.js +1 -1
  345. package/dist/components/rtk-menu.js +1 -1
  346. package/dist/components/rtk-message-list-view.js +7 -7
  347. package/dist/components/rtk-message-view.js +1 -1
  348. package/dist/components/rtk-mic-toggle.js +6 -6
  349. package/dist/components/rtk-microphone-selector.js +1 -1
  350. package/dist/components/rtk-mixed-grid.js +7 -7
  351. package/dist/components/rtk-more-toggle.js +7 -7
  352. package/dist/components/rtk-mute-all-button.js +6 -6
  353. package/dist/components/rtk-mute-all-confirmation.js +1 -1
  354. package/dist/components/rtk-name-tag.js +1 -1
  355. package/dist/components/rtk-network-indicator.js +3 -3
  356. package/dist/components/rtk-notification.js +1 -1
  357. package/dist/components/rtk-notifications.js +9 -6
  358. package/dist/components/rtk-overlay-modal.js +1 -1
  359. package/dist/components/rtk-paginated-list.js +1 -1
  360. package/dist/components/rtk-participant-count.js +3 -3
  361. package/dist/components/rtk-participant-setup.js +4 -4
  362. package/dist/components/rtk-participant-tile.js +1 -1
  363. package/dist/components/rtk-participant.js +1 -1
  364. package/dist/components/rtk-participants-audio.js +5 -5
  365. package/dist/components/rtk-participants-stage-list.js +1 -1
  366. package/dist/components/rtk-participants-stage-queue.js +1 -1
  367. package/dist/components/rtk-participants-toggle.js +6 -6
  368. package/dist/components/rtk-participants-viewer-list.js +1 -1
  369. package/dist/components/rtk-participants-waiting-list.js +1 -1
  370. package/dist/components/rtk-participants.js +15 -15
  371. package/dist/components/rtk-permissions-message.js +1 -1
  372. package/dist/components/rtk-pip-toggle.js +5 -5
  373. package/dist/components/rtk-plugin-main.js +1 -1
  374. package/dist/components/rtk-plugins-toggle.js +6 -6
  375. package/dist/components/rtk-plugins.js +1 -1
  376. package/dist/components/rtk-poll-form.js +1 -1
  377. package/dist/components/rtk-poll.js +1 -1
  378. package/dist/components/rtk-polls-toggle.js +6 -6
  379. package/dist/components/rtk-polls.js +1 -1
  380. package/dist/components/rtk-recording-indicator.js +4 -4
  381. package/dist/components/rtk-recording-toggle.js +5 -5
  382. package/dist/components/rtk-screen-share-toggle.js +6 -6
  383. package/dist/components/rtk-screenshare-view.js +9 -9
  384. package/dist/components/rtk-settings-audio.js +1 -1
  385. package/dist/components/rtk-settings-toggle.js +6 -6
  386. package/dist/components/rtk-settings-video.js +1 -1
  387. package/dist/components/rtk-settings.js +11 -11
  388. package/dist/components/rtk-setup-screen.js +7 -7
  389. package/dist/components/rtk-sidebar-ui.js +1 -1
  390. package/dist/components/rtk-sidebar.js +10 -10
  391. package/dist/components/rtk-simple-grid.js +2 -2
  392. package/dist/components/rtk-speaker-selector.js +1 -1
  393. package/dist/components/rtk-spinner.js +1 -1
  394. package/dist/components/rtk-spotlight-grid.js +4 -4
  395. package/dist/components/rtk-spotlight-indicator.js +1 -1
  396. package/dist/components/rtk-stage-toggle.js +6 -6
  397. package/dist/components/rtk-stage.js +3 -3
  398. package/dist/components/rtk-switch.js +1 -1
  399. package/dist/components/rtk-tab-bar.js +1 -1
  400. package/dist/components/rtk-text-composer-view.js +1 -1
  401. package/dist/components/rtk-text-message-view.js +1 -1
  402. package/dist/components/rtk-text-message.js +1 -1
  403. package/dist/components/rtk-tooltip.js +1 -1
  404. package/dist/components/rtk-transcript.js +1 -1
  405. package/dist/components/rtk-transcripts.js +3 -3
  406. package/dist/components/rtk-ui-provider.js +17 -5
  407. package/dist/components/rtk-viewer-count.js +1 -1
  408. package/dist/components/rtk-virtualized-participant-list.js +1 -1
  409. package/dist/components/rtk-waiting-screen.js +4 -4
  410. package/dist/docs/docs-components.json +372 -82
  411. package/dist/docs/docs-vscode.json +42 -1
  412. package/dist/esm/{TextMessage-ca92045e.js → TextMessage-0d8be8c5.js} +1 -1
  413. package/dist/esm/{chat-ff185374.js → chat-b2bea75f.js} +1 -1
  414. package/dist/esm/{config-e684aa4d.js → config-325caca3.js} +2 -2
  415. package/dist/esm/{debounce-3ea4df36.js → debounce-3139f9e3.js} +1 -1
  416. package/dist/esm/{index-e65afca5.js → index-6eb882e7.js} +1 -1
  417. package/dist/esm/index.js +7 -7
  418. package/dist/esm/loader.js +584 -428
  419. package/dist/esm/{merge-7ffc04b3.js → merge-bc2a0775.js} +1 -1
  420. package/dist/esm/{notification-78afaabf.js → notification-4beb1e0d.js} +1 -1
  421. package/dist/esm/realtimekit-ui.js +1 -1
  422. package/dist/esm/rtk-ai-toggle.entry.js +2 -2
  423. package/dist/esm/rtk-ai-transcriptions.entry.js +3 -3
  424. package/dist/esm/rtk-ai.entry.js +2 -2
  425. package/dist/esm/rtk-audio-grid.entry.js +3 -3
  426. package/dist/esm/rtk-audio-tile.entry.js +2 -2
  427. package/dist/esm/rtk-audio-visualizer_4.entry.js +3 -3
  428. package/dist/esm/rtk-avatar_24.entry.js +430 -301
  429. package/dist/esm/rtk-breakout-room-manager_3.entry.js +6 -6
  430. package/dist/esm/rtk-breakout-rooms-manager_9.entry.js +11 -11
  431. package/dist/esm/rtk-breakout-rooms-toggle.entry.js +2 -2
  432. package/dist/esm/rtk-camera-selector_2.entry.js +2 -2
  433. package/dist/esm/rtk-camera-toggle.entry.js +2 -2
  434. package/dist/esm/rtk-caption-toggle.entry.js +2 -2
  435. package/dist/esm/rtk-channel-creator.entry.js +4 -4
  436. package/dist/esm/rtk-channel-details.entry.js +3 -3
  437. package/dist/esm/rtk-channel-header.entry.js +2 -2
  438. package/dist/esm/rtk-channel-selector-ui.entry.js +6 -6
  439. package/dist/esm/rtk-chat-composer-ui.entry.js +3 -3
  440. package/dist/esm/rtk-chat-message.entry.js +4 -4
  441. package/dist/esm/rtk-chat-messages-ui.entry.js +5 -5
  442. package/dist/esm/rtk-chat-search-results.entry.js +3 -3
  443. package/dist/esm/rtk-chat-selector-ui.entry.js +3 -3
  444. package/dist/esm/rtk-chat-toggle.entry.js +30 -25
  445. package/dist/esm/rtk-clock.entry.js +5 -5
  446. package/dist/esm/rtk-controlbar-button.entry.js +3 -3
  447. package/dist/esm/rtk-controlbar.entry.js +3 -3
  448. package/dist/esm/rtk-debugger-audio_4.entry.js +2 -2
  449. package/dist/esm/rtk-debugger-toggle.entry.js +3 -3
  450. package/dist/esm/rtk-dialog-manager.entry.js +2 -2
  451. package/dist/esm/rtk-dialog.entry.js +2 -2
  452. package/dist/esm/rtk-ended-screen.entry.js +2 -2
  453. package/dist/esm/rtk-file-dropzone.entry.js +3 -3
  454. package/dist/esm/rtk-file-message_3.entry.js +12 -12
  455. package/dist/esm/rtk-fullscreen-toggle.entry.js +2 -2
  456. package/dist/esm/rtk-grid-pagination.entry.js +2 -2
  457. package/dist/esm/rtk-grid.entry.js +2 -2
  458. package/dist/esm/rtk-header.entry.js +3 -3
  459. package/dist/esm/rtk-idle-screen.entry.js +3 -3
  460. package/dist/esm/rtk-image-viewer.entry.js +3 -3
  461. package/dist/esm/rtk-information-tooltip.entry.js +3 -3
  462. package/dist/esm/rtk-leave-button.entry.js +3 -3
  463. package/dist/esm/rtk-livestream-indicator_3.entry.js +2 -2
  464. package/dist/esm/rtk-livestream-toggle.entry.js +2 -2
  465. package/dist/esm/rtk-logo.entry.js +2 -2
  466. package/dist/esm/rtk-meeting-title.entry.js +2 -2
  467. package/dist/esm/rtk-message-list-view.entry.js +6 -6
  468. package/dist/esm/rtk-mic-toggle.entry.js +2 -2
  469. package/dist/esm/rtk-mixed-grid.entry.js +2 -2
  470. package/dist/esm/rtk-more-toggle.entry.js +4 -4
  471. package/dist/esm/rtk-mute-all-button.entry.js +2 -2
  472. package/dist/esm/rtk-name-tag.entry.js +3 -3
  473. package/dist/esm/rtk-network-indicator.entry.js +2 -2
  474. package/dist/esm/rtk-notification.entry.js +6 -6
  475. package/dist/esm/rtk-notifications.entry.js +8 -5
  476. package/dist/esm/rtk-participant-count.entry.js +2 -2
  477. package/dist/esm/rtk-participant-setup.entry.js +4 -4
  478. package/dist/esm/rtk-participant_2.entry.js +17 -17
  479. package/dist/esm/rtk-participants-audio.entry.js +3 -3
  480. package/dist/esm/rtk-participants-stage-list_4.entry.js +3 -3
  481. package/dist/esm/rtk-participants-toggle.entry.js +3 -3
  482. package/dist/esm/rtk-participants.entry.js +3 -3
  483. package/dist/esm/rtk-pip-toggle.entry.js +2 -2
  484. package/dist/esm/rtk-plugin-main_2.entry.js +3 -3
  485. package/dist/esm/rtk-plugins-toggle.entry.js +3 -3
  486. package/dist/esm/rtk-plugins_2.entry.js +6 -6
  487. package/dist/esm/rtk-poll_2.entry.js +5 -5
  488. package/dist/esm/rtk-polls-toggle.entry.js +3 -3
  489. package/dist/esm/rtk-recording-indicator.entry.js +3 -3
  490. package/dist/esm/rtk-recording-toggle.entry.js +2 -2
  491. package/dist/esm/rtk-screen-share-toggle.entry.js +2 -2
  492. package/dist/esm/rtk-screenshare-view.entry.js +7 -7
  493. package/dist/esm/rtk-settings-audio_2.entry.js +2 -2
  494. package/dist/esm/rtk-settings-toggle.entry.js +3 -3
  495. package/dist/esm/rtk-settings.entry.js +2 -2
  496. package/dist/esm/rtk-setup-screen.entry.js +2 -2
  497. package/dist/esm/rtk-sidebar-ui.entry.js +4 -4
  498. package/dist/esm/rtk-sidebar.entry.js +3 -3
  499. package/dist/esm/rtk-simple-grid.entry.js +2 -2
  500. package/dist/esm/rtk-spotlight-grid.entry.js +4 -4
  501. package/dist/esm/rtk-spotlight-indicator.entry.js +2 -2
  502. package/dist/esm/rtk-stage-toggle.entry.js +2 -2
  503. package/dist/esm/rtk-stage.entry.js +3 -3
  504. package/dist/esm/rtk-transcript.entry.js +3 -3
  505. package/dist/esm/rtk-transcripts.entry.js +2 -2
  506. package/dist/esm/rtk-ui-provider.entry.js +13 -3
  507. package/dist/esm/rtk-waiting-screen.entry.js +3 -3
  508. package/dist/esm/{sidebar-030fff49.js → sidebar-376c9917.js} +1 -1
  509. package/dist/esm/{ui-store-9e486e1b.js → ui-store-12132d9c.js} +11 -3
  510. package/dist/realtimekit-ui/index.esm.js +1 -1
  511. package/dist/realtimekit-ui/{p-385fddbd.entry.js → p-00445029.entry.js} +1 -1
  512. package/dist/realtimekit-ui/{p-74e1b5a6.entry.js → p-05d1b9d5.entry.js} +1 -1
  513. package/dist/realtimekit-ui/{p-95f05e26.entry.js → p-0baa78d7.entry.js} +1 -1
  514. package/dist/realtimekit-ui/{p-12e4cb4a.js → p-11a469d9.js} +1 -1
  515. package/dist/realtimekit-ui/{p-8f512d69.entry.js → p-14569a57.entry.js} +1 -1
  516. package/dist/realtimekit-ui/{p-2b373e53.entry.js → p-1462cbd9.entry.js} +1 -1
  517. package/dist/realtimekit-ui/{p-2fc5ef84.entry.js → p-1669c53d.entry.js} +1 -1
  518. package/dist/realtimekit-ui/{p-b387e9a1.entry.js → p-1834416c.entry.js} +1 -1
  519. package/dist/realtimekit-ui/{p-0b8c47d9.entry.js → p-1fe6003b.entry.js} +1 -1
  520. package/dist/realtimekit-ui/p-21d4bb9c.entry.js +1 -0
  521. package/dist/realtimekit-ui/{p-61a53713.entry.js → p-2441260e.entry.js} +1 -1
  522. package/dist/realtimekit-ui/p-25c4d10f.js +1 -0
  523. package/dist/realtimekit-ui/{p-53ac3d30.entry.js → p-2b054928.entry.js} +1 -1
  524. package/dist/realtimekit-ui/{p-62e0a141.entry.js → p-30dcb4cc.entry.js} +1 -1
  525. package/dist/realtimekit-ui/p-322957ed.entry.js +1 -0
  526. package/dist/realtimekit-ui/{p-36c8dfa0.entry.js → p-323d1aa4.entry.js} +1 -1
  527. package/dist/realtimekit-ui/p-342b4926.entry.js +1 -0
  528. package/dist/realtimekit-ui/p-369648b9.entry.js +1 -0
  529. package/dist/realtimekit-ui/{p-4eba1baa.entry.js → p-3dd04263.entry.js} +1 -1
  530. package/dist/realtimekit-ui/{p-60a29b69.entry.js → p-3f4120cc.entry.js} +1 -1
  531. package/dist/realtimekit-ui/{p-3a325310.entry.js → p-426bf45e.entry.js} +1 -1
  532. package/dist/realtimekit-ui/{p-a9126c12.entry.js → p-43530cd3.entry.js} +1 -1
  533. package/dist/realtimekit-ui/p-44531a97.entry.js +1 -0
  534. package/dist/realtimekit-ui/p-4485414e.entry.js +1 -0
  535. package/dist/realtimekit-ui/p-44d69c6b.entry.js +1 -0
  536. package/dist/realtimekit-ui/p-45f90b95.js +1 -0
  537. package/dist/realtimekit-ui/{p-951a7b06.entry.js → p-48c87789.entry.js} +1 -1
  538. package/dist/realtimekit-ui/{p-949b2b6a.entry.js → p-4b33b435.entry.js} +1 -1
  539. package/dist/realtimekit-ui/{p-8b189438.entry.js → p-4b638184.entry.js} +1 -1
  540. package/dist/realtimekit-ui/{p-9ad2c746.entry.js → p-515a17ce.entry.js} +1 -1
  541. package/dist/realtimekit-ui/{p-7b999408.entry.js → p-532e1a53.entry.js} +1 -1
  542. package/dist/realtimekit-ui/{p-38f4773b.entry.js → p-53680d55.entry.js} +1 -1
  543. package/dist/realtimekit-ui/{p-5383fe87.entry.js → p-54a88fdf.entry.js} +1 -1
  544. package/dist/realtimekit-ui/{p-c7711712.entry.js → p-573187b4.entry.js} +1 -1
  545. package/dist/realtimekit-ui/{p-f5aa8af7.entry.js → p-5892c1e0.entry.js} +1 -1
  546. package/dist/realtimekit-ui/{p-54a31e02.entry.js → p-5b00a8fa.entry.js} +1 -1
  547. package/dist/realtimekit-ui/{p-aa70de39.entry.js → p-612a8d25.entry.js} +1 -1
  548. package/dist/realtimekit-ui/{p-6adb2de4.entry.js → p-616dc312.entry.js} +1 -1
  549. package/dist/realtimekit-ui/{p-a9dd63ef.entry.js → p-639601b7.entry.js} +1 -1
  550. package/dist/realtimekit-ui/{p-c638f666.entry.js → p-64206b62.entry.js} +1 -1
  551. package/dist/realtimekit-ui/{p-1666857d.entry.js → p-67ead213.entry.js} +1 -1
  552. package/dist/realtimekit-ui/{p-882d07c9.entry.js → p-685adc5f.entry.js} +1 -1
  553. package/dist/realtimekit-ui/p-6896e819.entry.js +1 -0
  554. package/dist/realtimekit-ui/{p-09869644.entry.js → p-6914a616.entry.js} +1 -1
  555. package/dist/realtimekit-ui/{p-9cbf286a.entry.js → p-701cdf1b.entry.js} +1 -1
  556. package/dist/realtimekit-ui/p-7108d1cd.entry.js +1 -0
  557. package/dist/realtimekit-ui/{p-a319e81f.entry.js → p-75f53ae6.entry.js} +1 -1
  558. package/dist/realtimekit-ui/{p-c1b81873.entry.js → p-7a9a226e.entry.js} +1 -1
  559. package/dist/realtimekit-ui/{p-3d0c4257.entry.js → p-7d01d588.entry.js} +1 -1
  560. package/dist/realtimekit-ui/{p-8b341608.entry.js → p-80e51a73.entry.js} +1 -1
  561. package/dist/realtimekit-ui/p-820dad23.entry.js +1 -0
  562. package/dist/realtimekit-ui/p-85b3c0c4.entry.js +1 -0
  563. package/dist/realtimekit-ui/{p-f0f6c282.entry.js → p-85b45c3b.entry.js} +1 -1
  564. package/dist/realtimekit-ui/{p-2a0ec1c6.entry.js → p-8778b3e6.entry.js} +1 -1
  565. package/dist/realtimekit-ui/{p-c5c965b8.entry.js → p-94a37c73.entry.js} +1 -1
  566. package/dist/realtimekit-ui/{p-3369f405.entry.js → p-95fb25d6.entry.js} +1 -1
  567. package/dist/realtimekit-ui/{p-80c856cd.js → p-9b550ec4.js} +1 -1
  568. package/dist/realtimekit-ui/{p-643194e4.entry.js → p-a0d39ea3.entry.js} +1 -1
  569. package/dist/realtimekit-ui/{p-639ab9ad.entry.js → p-a1408db4.entry.js} +1 -1
  570. package/dist/realtimekit-ui/{p-d0384d90.entry.js → p-a40cc665.entry.js} +1 -1
  571. package/dist/realtimekit-ui/{p-084b6f30.js → p-a5900df2.js} +1 -1
  572. package/dist/realtimekit-ui/{p-a1203856.entry.js → p-a67e2a25.entry.js} +1 -1
  573. package/dist/realtimekit-ui/{p-31f58b98.entry.js → p-a680da64.entry.js} +1 -1
  574. package/dist/realtimekit-ui/{p-61a16ccf.entry.js → p-a7172c2d.entry.js} +1 -1
  575. package/dist/realtimekit-ui/{p-91ea043c.js → p-a7e0277f.js} +1 -1
  576. package/dist/realtimekit-ui/p-a852e0cf.entry.js +1 -0
  577. package/dist/realtimekit-ui/{p-ae7319ac.entry.js → p-a9190330.entry.js} +1 -1
  578. package/dist/realtimekit-ui/{p-7613857e.entry.js → p-ac6c8ebe.entry.js} +1 -1
  579. package/dist/realtimekit-ui/{p-e7b83772.entry.js → p-ad5e9fdb.entry.js} +1 -1
  580. package/dist/realtimekit-ui/{p-98ee3341.entry.js → p-af58f450.entry.js} +1 -1
  581. package/dist/realtimekit-ui/{p-6a45f305.js → p-afa7211c.js} +1 -1
  582. package/dist/realtimekit-ui/{p-4eee77b0.entry.js → p-b25f7d7b.entry.js} +1 -1
  583. package/dist/realtimekit-ui/p-b51e813e.entry.js +1 -0
  584. package/dist/realtimekit-ui/{p-38aec474.entry.js → p-be03944b.entry.js} +1 -1
  585. package/dist/realtimekit-ui/{p-3eefefa3.entry.js → p-be5bdd0a.entry.js} +1 -1
  586. package/dist/realtimekit-ui/p-bf717b8c.entry.js +1 -0
  587. package/dist/realtimekit-ui/p-c5f704a3.entry.js +1 -0
  588. package/dist/realtimekit-ui/{p-de75d48d.entry.js → p-c8773db0.entry.js} +1 -1
  589. package/dist/realtimekit-ui/{p-5a2d8313.entry.js → p-cb54bd67.entry.js} +1 -1
  590. package/dist/realtimekit-ui/{p-ba51770e.entry.js → p-cc226b51.entry.js} +1 -1
  591. package/dist/realtimekit-ui/{p-91fd286c.js → p-cd0c5440.js} +1 -1
  592. package/dist/realtimekit-ui/{p-e925ca8a.entry.js → p-cd56beb7.entry.js} +1 -1
  593. package/dist/realtimekit-ui/{p-d7f16f24.entry.js → p-cda276d6.entry.js} +1 -1
  594. package/dist/realtimekit-ui/{p-93b84c22.js → p-d3e520e5.js} +1 -1
  595. package/dist/realtimekit-ui/p-d880fb69.entry.js +1 -0
  596. package/dist/realtimekit-ui/{p-11c964cf.entry.js → p-e0c73820.entry.js} +1 -1
  597. package/dist/realtimekit-ui/{p-e62593a2.entry.js → p-e5b426fa.entry.js} +1 -1
  598. package/dist/realtimekit-ui/{p-61d3f74f.entry.js → p-e78ba202.entry.js} +1 -1
  599. package/dist/realtimekit-ui/{p-7786e9a7.entry.js → p-ebfde234.entry.js} +1 -1
  600. package/dist/realtimekit-ui/p-ec5ed8a4.entry.js +1 -0
  601. package/dist/realtimekit-ui/{p-9c1f42dd.entry.js → p-f266302c.entry.js} +1 -1
  602. package/dist/realtimekit-ui/{p-d9cad67f.entry.js → p-f32aecbc.entry.js} +1 -1
  603. package/dist/realtimekit-ui/{p-7f76de48.entry.js → p-f6c82f1b.entry.js} +1 -1
  604. package/dist/realtimekit-ui/p-fa86682c.entry.js +1 -0
  605. package/dist/realtimekit-ui/{p-788f26c4.entry.js → p-fcb7a6e2.entry.js} +1 -1
  606. package/dist/realtimekit-ui/realtimekit-ui.esm.js +1 -1
  607. package/dist/types/components/rtk-chat/rtk-chat.d.ts +6 -1
  608. package/dist/types/components/rtk-chat-composer-view/rtk-chat-composer-view.d.ts +1 -0
  609. package/dist/types/components/rtk-chat-messages-ui-paginated/rtk-chat-messages-ui-paginated.d.ts +2 -0
  610. package/dist/types/components/rtk-chat-toggle/rtk-chat-toggle.d.ts +4 -6
  611. package/dist/types/components/rtk-meeting/rtk-meeting.d.ts +4 -0
  612. package/dist/types/components/rtk-menu-item/rtk-menu-item.d.ts +2 -0
  613. package/dist/types/components/rtk-menu-list/rtk-menu-list.d.ts +2 -0
  614. package/dist/types/components/rtk-message-view/rtk-message-view.d.ts +7 -0
  615. package/dist/types/components/rtk-paginated-list/rtk-paginated-list.d.ts +55 -54
  616. package/dist/types/components/rtk-ui-provider/rtk-ui-provider.d.ts +4 -1
  617. package/dist/types/components.d.ts +84 -7
  618. package/dist/types/exports.d.ts +2 -1
  619. package/dist/types/lib/overrides.d.ts +16 -0
  620. package/dist/types/utils/flags.d.ts +0 -1
  621. package/dist/types/utils/sync-with-store/ui-store.d.ts +4 -1
  622. package/package.json +1 -1
  623. package/dist/components/p-a9540d93.js +0 -357
  624. package/dist/components/p-d4e2ac64.js +0 -203
  625. package/dist/realtimekit-ui/p-0689d68b.entry.js +0 -1
  626. package/dist/realtimekit-ui/p-1bf58a84.entry.js +0 -1
  627. package/dist/realtimekit-ui/p-2f641bfa.entry.js +0 -1
  628. package/dist/realtimekit-ui/p-33228f0a.entry.js +0 -1
  629. package/dist/realtimekit-ui/p-3e02ec0b.entry.js +0 -1
  630. package/dist/realtimekit-ui/p-481549ac.entry.js +0 -1
  631. package/dist/realtimekit-ui/p-50157a65.entry.js +0 -1
  632. package/dist/realtimekit-ui/p-50e861f9.entry.js +0 -1
  633. package/dist/realtimekit-ui/p-57277553.entry.js +0 -1
  634. package/dist/realtimekit-ui/p-5dc40f1a.entry.js +0 -1
  635. package/dist/realtimekit-ui/p-77e04fb7.entry.js +0 -1
  636. package/dist/realtimekit-ui/p-7a8ca3f2.entry.js +0 -1
  637. package/dist/realtimekit-ui/p-930f0255.entry.js +0 -1
  638. package/dist/realtimekit-ui/p-941f159e.entry.js +0 -1
  639. package/dist/realtimekit-ui/p-a4e223e8.entry.js +0 -1
  640. package/dist/realtimekit-ui/p-b564d931.entry.js +0 -1
  641. package/dist/realtimekit-ui/p-e720b51e.js +0 -1
  642. package/dist/realtimekit-ui/p-e87928f7.js +0 -1
  643. package/dist/realtimekit-ui/p-f40a55e3.entry.js +0 -1
  644. package/dist/realtimekit-ui/p-f645b8bb.entry.js +0 -1
@@ -1,17 +1,16 @@
1
1
  import { r as registerInstance, h, H as Host, c as createEvent, a as getElement, w as writeTask } from './index-c1fb98bb.js';
2
- import { e as defaultIconPack, h as useLanguage, c as createDefaultConfig, H as FlagsmithFeatureFlags, G as chatUnreadTimestamps, I as gracefulStorage, u as uiStore, b as createPeerStore } from './ui-store-9e486e1b.js';
2
+ import { e as defaultIconPack, i as useLanguage, c as createDefaultConfig, f as defaultOverrides, I as FlagsmithFeatureFlags, H as chatUnreadTimestamps, J as gracefulStorage, u as uiStore, b as createPeerStore } from './ui-store-12132d9c.js';
3
3
  import { f as formatName, g as getInitials, s as sanitizeLink, h as hasOnlyEmojis } from './string-068ce30a.js';
4
- import { S as SyncWithStore } from './index-e65afca5.js';
5
- import { d as debounce } from './debounce-3ea4df36.js';
6
- import { h as handleFilesDataTransfer, g as generateChatGroupKey, T as TEMPORARY_CHANNEL_PREFIX, i as isDirectMessageChannel, d as alphabeticalSorter, e as getDMComparator, p as parseMessageForTarget, M as MAX_TEXT_LENGTH, f as parseRichText, j as extractReplyBlock, s as stripOutReplyBlock } from './chat-ff185374.js';
4
+ import { S as SyncWithStore } from './index-6eb882e7.js';
5
+ import { d as debounce } from './debounce-3139f9e3.js';
6
+ import { h as handleFilesDataTransfer, g as generateChatGroupKey, T as TEMPORARY_CHANNEL_PREFIX, i as isDirectMessageChannel, d as alphabeticalSorter, e as getDMComparator, p as parseMessageForTarget, M as MAX_TEXT_LENGTH, f as parseRichText, j as extractReplyBlock, s as stripOutReplyBlock } from './chat-b2bea75f.js';
7
7
  import { g as getExtension, a as getFileSize, d as downloadFile } from './file-6114f1a9.js';
8
- import { p as provideRtkDesignSystem, d as deepMerge } from './merge-7ffc04b3.js';
8
+ import { p as provideRtkDesignSystem, d as deepMerge } from './merge-bc2a0775.js';
9
9
  import { R as Render } from './index-d31a2e33.js';
10
- import { g as generateConfig } from './config-e684aa4d.js';
10
+ import { g as generateConfig } from './config-325caca3.js';
11
11
  import { i as index } from './ResizeObserver.es-02979d4e.js';
12
12
  import { c as computePosition, o as offset, f as flip, s as shift, a as arrow } from './floating-ui.dom.esm-21c3d54e.js';
13
13
  import { f as formatDateTime, e as elapsedDuration } from './date-b1f78dea.js';
14
- import { s as smoothScrollToBottom } from './scroll-2d8e810c.js';
15
14
 
16
15
  const rtkAvatarCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}:host{display:flex;height:var(--rtk-space-32, 128px);width:var(--rtk-space-32, 128px);align-items:center;justify-content:center;font-size:28px;--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));overflow:clip;border-radius:9999px;-webkit-user-select:none;-moz-user-select:none;user-select:none}rtk-icon{height:50%;width:50%}.image-ctr{display:flex;height:100%;width:100%;align-items:center;justify-content:center;--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-600, 255 255 255 / 0.52))}img{height:var(--rtk-space-0, 0px);width:var(--rtk-space-0, 0px);-o-object-fit:cover;object-fit:cover}img.loaded{height:100%;width:100%}.initials{display:flex;height:100%;width:100%;align-items:center;justify-content:center;text-transform:uppercase}.image{display:flex;height:100%;width:100%;align-items:center;justify-content:center}.image img{display:none;height:100%;width:100%;-o-object-fit:cover;object-fit:cover}.image img.loaded{display:block}:host([variant='hexagon']){border-radius:var(--rtk-border-radius-none, 0);clip-path:polygon(50% 0, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%)}:host([variant='square']){border-radius:var(--rtk-border-radius-none, 0);clip-path:polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)}:host([size='sm']){height:var(--rtk-space-14, 56px);width:var(--rtk-space-14, 56px);font-size:12px}:host([size='md']){height:var(--rtk-space-28, 112px);width:var(--rtk-space-28, 112px)}:host([size='lg']){height:var(--rtk-space-32, 128px);width:var(--rtk-space-32, 128px)}";
17
16
  const RtkAvatarStyle0 = rtkAvatarCss;
@@ -51,7 +50,7 @@ const RtkAvatar = class {
51
50
  };
52
51
  }
53
52
  render() {
54
- return (h(Host, { key: 'c1a0be37edb75c40b275ad59af85cee7df3f1cdf' }, this.getAvatar(), h("slot", { key: '1cd71e7494a09d68a52051edc279911dc3168515' })));
53
+ return (h(Host, { key: 'd7d3a7b03a3807984dc6798b5e35cec4418e06e7' }, this.getAvatar(), h("slot", { key: '25aa9fe632a132c1e2f8ef88ac98043bb8ef085a' })));
55
54
  }
56
55
  };
57
56
  __decorate$h([
@@ -86,7 +85,7 @@ const RtkButton = class {
86
85
  };
87
86
  RtkButton.style = RtkButtonStyle0;
88
87
 
89
- const rtkChannelSelectorViewCss = ".scrollbar {\n /* For Firefox */\n scrollbar-width: thin;\n scrollbar-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent);\n}\n\n/* For WebKit */\n.scrollbar::-webkit-scrollbar {\n height: var(--rtk-space-1\\.5, 6px);\n width: var(--rtk-space-1\\.5, 6px);\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-background, transparent);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)));\n}\n\n\n:host {\n display: flex;\n flex-direction: column;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-900, 26 26 26) / var(--tw-bg-opacity));\n position: relative;\n z-index: 10;\n height: var(--rtk-space-12, 48px);\n min-height: 48px;\n}\n\n.dropdown-trigger {\n height: 100%;\n width: 100%;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n padding: var(--rtk-space-4, 16px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));\n font-size: 14px;\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n cursor: pointer;\n position: absolute;\n z-index: 20;\n}\n\n.dropdown-trigger span {\n display: flex;\n flex: 1 1 0%;\n align-items: center;\n justify-content: space-between;\n}\n\n.dropdown-trigger rtk-icon {\n margin-left: var(--rtk-space-1, 4px);\n height: var(--rtk-space-5, 20px);\n width: var(--rtk-space-5, 20px);\n flex-shrink: 0;\n}\n\n@container chatcontainer (height < 360px) {\n .dropdown-trigger {\n padding: var(--rtk-space-2, 8px);\n }\n .dropdown {\n top: var(--rtk-space-8, 32px) !important;\n }\n .search-container {\n padding-left: var(--rtk-space-0, 0px) !important;\n padding-right: var(--rtk-space-0, 0px) !important;\n padding-top: var(--rtk-space-0, 0px) !important;\n padding-bottom: var(--rtk-space-0, 0px) !important;\n }\n input {\n height: var(--rtk-space-8, 32px) !important;\n border-radius: var(--rtk-border-radius-none, 0) !important;\n }\n .channel {\n height: var(--rtk-space-8, 32px) !important;\n border-radius: var(--rtk-border-radius-sm, 4px) !important;\n }\n .avatar-icon {\n height: var(--rtk-space-3, 12px) !important;\n width: var(--rtk-space-3, 12px) !important;\n padding: var(--rtk-space-1, 4px) !important;\n }\n\n rtk-avatar {\n height: var(--rtk-space-5, 20px) !important;\n width: var(--rtk-space-5, 20px) !important;\n }\n}\n\n.dropdown {\n position: absolute;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-900, 26 26 26) / var(--tw-bg-opacity));\n top: var(--rtk-space-12, 48px);\n z-index: 10;\n animation: 0.3s slide-down ease;\n}\n\n.dropdown .channels-container {\n max-height: var(--rtk-space-80, 320px);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n}\n\n.list .channel .channel-data {\n align-items: flex-start;\n}\n\n.unread-count {\n display: flex;\n justify-content: center;\n height: var(--rtk-space-5, 20px);\n min-width: var(--rtk-space-3, 12px);\n border-radius: 9999px;\n padding-left: var(--rtk-space-1, 4px);\n padding-right: var(--rtk-space-1, 4px);\n font-size: 12px;\n line-height: 1.25rem;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\ninput {\n height: var(--rtk-space-9, 36px);\n width: 100%;\n padding-left: var(--rtk-space-3, 12px);\n padding-right: var(--rtk-space-3, 12px);\n box-sizing: border-box;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n outline: 2px solid transparent;\n outline-offset: 2px;\n border-radius: var(--rtk-border-radius-sm, 4px);\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\n.search-container {\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n align-items: center;\n padding-top: var(--rtk-space-3, 12px);\n padding-bottom: var(--rtk-space-3, 12px);\n padding-left: var(--rtk-space-2, 8px);\n padding-right: var(--rtk-space-2, 8px);\n border-bottom: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-700, 44 44 44));\n}\n\n.search-container rtk-icon {\n margin-left: calc(var(--rtk-space-8, 32px) * -1);\n height: var(--rtk-space-5, 20px);\n width: var(--rtk-space-5, 20px);\n color: rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76));\n}\n\n.channels-container {\n display: flex;\n flex-direction: column;\n gap: var(--rtk-space-1, 4px);\n padding: var(--rtk-space-2, 8px);\n flex: 1 1 auto;\n overflow-y: auto;\n}\n\n.channel {\n flex-shrink: 0;\n box-sizing: border-box;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n background-color: transparent;\n outline: 2px solid transparent;\n outline-offset: 2px;\n cursor: pointer;\n border-radius: var(--rtk-border-radius-md, 8px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--rtk-space-2, 8px);\n height: var(--rtk-space-16, 64px);\n width: 100%;\n padding-left: var(--rtk-space-2, 8px);\n padding-right: var(--rtk-space-3, 12px);\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.channel:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));\n}\n\n.channel .channel-data {\n flex: 1 1 0%;\n align-items: center;\n justify-content: space-between;\n display: flex;\n gap: var(--rtk-space-2, 8px);\n}\n\n.channel .name {\n font-size: 16px;\n}\n\n.channel .name, \n .channel .last-message {\n max-width: var(--rtk-space-40, 160px);\n text-align: left;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n}\n\n.channel .no-message {\n font-style: italic;\n}\n\n.channel rtk-avatar {\n height: var(--rtk-space-12, 48px);\n width: var(--rtk-space-12, 48px);\n overflow: clip;\n border-radius: 9999px;\n font-size: 14px;\n}\n\n.channel .avatar-icon {\n height: var(--rtk-space-6, 24px);\n width: var(--rtk-space-6, 24px);\n padding: var(--rtk-space-3, 12px);\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n overflow: clip;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n}\n\n.channel time, \n .channel .last-message {\n font-size: 12px;\n color: rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76));\n}\n\n.channel.active {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\n.channel.active .unread-count {\n background-color: rgb(var(--rtk-colors-text-on-brand-800, var(--rtk-colors-text-800, 255 255 255 / 0.76)));\n --tw-text-opacity: 1;\n color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-text-opacity));\n}\n\n.channel.active time {\n color: rgb(var(--rtk-colors-text-on-brand-800, var(--rtk-colors-text-800, 255 255 255 / 0.76)));\n}\n\n.channel.active .last-message {\n color: rgb(var(--rtk-colors-text-on-brand-700, var(--rtk-colors-text-700, 255 255 255 / 0.64)));\n}\n\n.channel.active rtk-avatar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\n.col {\n gap: var(--rtk-space-1, 4px);\n display: flex;\n flex-direction: column;\n}\n\n.channel-meta {\n flex-shrink: 0;\n align-items: flex-end;\n}\n\n@keyframes slide-down {\n from {\n transform: translateY(-50px);\n }\n to {\n transform: translateY(0%);\n }\n}\n";
88
+ const rtkChannelSelectorViewCss = ".scrollbar {\n /* For Firefox */\n scrollbar-width: thin;\n scrollbar-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent);\n}\n\n/* For WebKit */\n.scrollbar::-webkit-scrollbar {\n height: var(--rtk-space-1\\.5, 6px);\n width: var(--rtk-space-1\\.5, 6px);\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-background, transparent);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)));\n}\n\n\n:host {\n display: flex;\n flex-direction: column;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-1000, 8 8 8) / var(--tw-bg-opacity));\n position: relative;\n z-index: 10;\n height: var(--rtk-space-12, 48px);\n min-height: 48px;\n}\n\n.dropdown-trigger {\n height: 100%;\n width: 100%;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n padding: var(--rtk-space-4, 16px);\n padding-left: var(--rtk-space-3, 12px);\n padding-right: var(--rtk-space-3, 12px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));\n font-size: 14px;\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n cursor: pointer;\n position: absolute;\n z-index: 20;\n}\n\n.dropdown-trigger span {\n display: flex;\n flex: 1 1 0%;\n align-items: center;\n justify-content: flex-start;\n gap: var(--rtk-space-2, 8px);\n}\n\n.dropdown-trigger rtk-icon {\n margin-left: var(--rtk-space-1, 4px);\n height: var(--rtk-space-4, 16px);\n width: var(--rtk-space-4, 16px);\n flex-shrink: 0;\n}\n\n@container chatcontainer (height < 360px) {\n .dropdown-trigger {\n padding: var(--rtk-space-2, 8px);\n }\n .dropdown {\n top: var(--rtk-space-8, 32px) !important;\n }\n .search-container {\n padding-left: var(--rtk-space-0, 0px) !important;\n padding-right: var(--rtk-space-0, 0px) !important;\n padding-top: var(--rtk-space-0, 0px) !important;\n padding-bottom: var(--rtk-space-0, 0px) !important;\n }\n input {\n height: var(--rtk-space-8, 32px) !important;\n border-radius: var(--rtk-border-radius-none, 0) !important;\n }\n .avatar-icon {\n height: var(--rtk-space-3, 12px) !important;\n width: var(--rtk-space-3, 12px) !important;\n padding: var(--rtk-space-1, 4px) !important;\n }\n}\n\n.dropdown {\n position: absolute;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-1000, 8 8 8) / var(--tw-bg-opacity));\n border-bottom-width: var(--rtk-border-width-sm, 1px);\n border-right-width: var(--rtk-border-width-none, 0);\n border-left-width: var(--rtk-border-width-none, 0);\n border-top-width: var(--rtk-border-width-none, 0);\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-border-opacity));\n top: var(--rtk-space-12, 48px);\n z-index: 10;\n animation: 0.3s slide-down ease;\n}\n\n.dropdown .channels-container {\n max-height: var(--rtk-space-80, 320px);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n}\n\n.list .channel .channel-data {\n align-items: flex-start;\n}\n\n.unread-count {\n display: flex;\n justify-content: center;\n height: var(--rtk-space-5, 20px);\n min-width: var(--rtk-space-3, 12px);\n border-radius: 9999px;\n padding-left: var(--rtk-space-1, 4px);\n padding-right: var(--rtk-space-1, 4px);\n font-size: 12px;\n line-height: 1.25rem;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\ninput {\n height: var(--rtk-space-9, 36px);\n width: 100%;\n padding-left: var(--rtk-space-3, 12px);\n padding-right: var(--rtk-space-3, 12px);\n box-sizing: border-box;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n outline: 2px solid transparent;\n outline-offset: 2px;\n border-radius: var(--rtk-border-radius-sm, 4px);\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\n.search-container {\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n align-items: center;\n padding-top: var(--rtk-space-3, 12px);\n padding-bottom: var(--rtk-space-3, 12px);\n padding-left: var(--rtk-space-2, 8px);\n padding-right: var(--rtk-space-2, 8px);\n border-bottom: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-700, 44 44 44));\n}\n\n.search-container rtk-icon {\n margin-left: calc(var(--rtk-space-8, 32px) * -1);\n height: var(--rtk-space-5, 20px);\n width: var(--rtk-space-5, 20px);\n color: rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76));\n}\n\n.channels-container {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n overflow-y: auto;\n}\n\nrtk-avatar {\n height: var(--rtk-space-4, 16px) !important;\n width: var(--rtk-space-4, 16px) !important;\n overflow: clip;\n border-radius: 9999px;\n padding: var(--rtk-space-2, 8px);\n font-size: 12px;\n}\n\n.channel {\n flex-shrink: 0;\n padding-top: var(--rtk-space-2, 8px);\n padding-bottom: var(--rtk-space-2, 8px);\n box-sizing: border-box;\n border-width: var(--rtk-border-width-none, 0);\n border-style: none;\n background-color: transparent;\n outline: 2px solid transparent;\n outline-offset: 2px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--rtk-space-2, 8px);\n width: 100%;\n padding-left: var(--rtk-space-2, 8px);\n padding-right: var(--rtk-space-3, 12px);\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.channel:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));\n}\n\n.channel .channel-data {\n flex: 1 1 0%;\n align-items: center;\n justify-content: space-between;\n display: flex;\n gap: var(--rtk-space-2, 8px);\n}\n\n.channel .name {\n font-size: 16px;\n}\n\n.channel .name, \n .channel .last-message {\n max-width: var(--rtk-space-40, 160px);\n text-align: left;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n}\n\n.channel .no-message {\n font-style: italic;\n}\n\n.channel .avatar-icon {\n height: var(--rtk-space-4, 16px);\n width: var(--rtk-space-4, 16px);\n padding: var(--rtk-space-2, 8px);\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n overflow: clip;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n}\n\n.channel time, \n .channel .last-message {\n font-size: 12px;\n color: rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76));\n}\n\n.channel.active {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\n.channel.active .unread-count {\n background-color: rgb(var(--rtk-colors-text-on-brand-800, var(--rtk-colors-text-800, 255 255 255 / 0.76)));\n --tw-text-opacity: 1;\n color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-text-opacity));\n}\n\n.channel.active time {\n color: rgb(var(--rtk-colors-text-on-brand-800, var(--rtk-colors-text-800, 255 255 255 / 0.76)));\n}\n\n.channel.active .last-message {\n color: rgb(var(--rtk-colors-text-on-brand-700, var(--rtk-colors-text-700, 255 255 255 / 0.64)));\n}\n\n.channel.active rtk-avatar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));\n}\n\n.col {\n gap: var(--rtk-space-1, 4px);\n display: flex;\n flex-direction: column;\n}\n\n.channel-meta {\n flex-shrink: 0;\n align-items: flex-end;\n}\n\n@keyframes slide-down {\n from {\n transform: translateY(-50px);\n }\n to {\n transform: translateY(0%);\n }\n}\n";
90
89
  const RtkChannelSelectorViewStyle0 = rtkChannelSelectorViewCss;
91
90
 
92
91
  var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -201,11 +200,11 @@ const RtkChannelSelectorView = class {
201
200
  render() {
202
201
  const filteredChannels = this.getFilteredChannels();
203
202
  const shouldShowDropdown = this.viewAs === 'list' || (this.viewAs === 'dropdown' && this.showDropdown);
204
- return (h(Host, { key: 'adc8ab4b9c8c865998588fbd9766296f18b3e48e' }, this.viewAs === 'list' && h("slot", { key: 'e5740725a4349472ca2eb1fb0816eb2311a99838', name: "header" }), shouldShowDropdown && (h("div", { key: '425adc920c28e0421e07bb0bd9f61b31c42fcda9', class: {
203
+ return (h(Host, { key: '2c491dbe0ac19cb386f0880fff81f4501648a6ae' }, this.viewAs === 'list' && h("slot", { key: '0e87d59c7522543b19711813474738f75a0e02fe', name: "header" }), shouldShowDropdown && (h("div", { key: 'c60692c7f75aa9febd73c134cd79aab020f7c2a5', class: {
205
204
  dropdown: this.viewAs === 'dropdown',
206
205
  scrollbar: this.viewAs === 'dropdown',
207
206
  list: this.viewAs === 'list',
208
- } }, !this.disableSearch && (h("div", { key: '9fbbc48d8489f2a6490729fac1fecdef1838e84a', class: "search-container", ref: (el) => (this.$searchEl = el) }, h("input", { key: 'f7fb43662d50274f80380b735ef9f5fc0b215442', type: "text", placeholder: this.t('chat.search_conversations'), value: this.searchQuery, onInput: (e) => (this.searchQuery = e.target.value) }), h("rtk-icon", { key: 'af76e65a1397d2a6e557a28b687e26aef641c568', icon: this.iconPack.search }))), h("div", { key: '0711a9cfcc811269a5020dc41030c0daee5cc8bf', class: "channels-container scrollbar", ref: (el) => (this.$listEl = el) }, filteredChannels.map((channel) => {
207
+ } }, !this.disableSearch && (h("div", { key: '74c50b2fad4cba26a20278f87c77a1672a1d748d', class: "search-container", ref: (el) => (this.$searchEl = el) }, h("input", { key: 'ff22698874ed7df9d91e72cb485ec2901ddf2b3b', type: "text", placeholder: this.t('chat.search_conversations'), value: this.searchQuery, onInput: (e) => (this.searchQuery = e.target.value) }), h("rtk-icon", { key: '9c8a9dffc0cea5e56aeb828ee198d0582024f1fa', icon: this.iconPack.search }))), h("div", { key: '04607e8d3cd62f4e6ca10c2748d6e100a4df4039', class: "channels-container scrollbar", ref: (el) => (this.$listEl = el) }, filteredChannels.map((channel) => {
209
208
  return (h("button", { class: { channel: true, active: this.selectedChannelId === channel.id }, onClick: () => this.onChannelClickHandler(channel) }, !this.hideAvatar && (h("div", null, channel.icon ? (h("rtk-icon", { class: "avatar-icon", icon: this.iconPack[channel.icon] })) : (h("rtk-avatar", { participant: {
210
209
  name: channel.name,
211
210
  picture: channel.avatarUrl,
@@ -213,8 +212,8 @@ const RtkChannelSelectorView = class {
213
212
  'last-message': true,
214
213
  'no-message': !channel.latestMessage,
215
214
  } }, h("rtk-text-message-view", { isMarkdown: true, text: channel.latestMessage })))), h("div", { class: "col channel-meta" }, channel.latestMessageTime && (h("time", { class: "time" }, this.getTimeLabel(channel.latestMessageTime))), channel.unreadCount > 0 && (h("div", { class: "unread-count" }, channel.unreadCount))))));
216
- })))), this.viewAs === 'dropdown' && (h("button", { key: '0c87f90d6d0fe22284995ab7259689f80a862829', class: "dropdown-trigger", onClick: this.toggleDropdown }, h("span", { key: 'd1a364f2c5c57d19702d0b8707ca661c1dc4c14f' }, this.selectedChannelId &&
217
- `${this.t('to')} ${this.getChannelById(this.selectedChannelId).name}`, this.getTotalUnreads() > 0 && (h("div", { key: 'bf789f9df82851825bc6ea12a19a5f37ab74aefe', class: "unread-count" }, this.getTotalUnreads()))), h("rtk-icon", { key: 'c0d03f883f4c46b2698be0f197751fc0470717ea', icon: this.showDropdown ? this.iconPack.chevron_up : this.iconPack.chevron_down })))));
215
+ })))), this.viewAs === 'dropdown' && (h("button", { key: 'f710577dda08fe51f169c85318b9c51b89e765bb', class: "dropdown-trigger", onClick: this.toggleDropdown }, h("span", { key: '9bebec13a0bacb5651ef598ff47b96a2903ccf0f' }, h("rtk-icon", { key: '0ec4a41bcb7fa3086cdeacc0d6671c23c43a857f', icon: this.iconPack.participants }), this.selectedChannelId &&
216
+ `${this.t('to')} ${this.getChannelById(this.selectedChannelId).name}`, this.getTotalUnreads() > 0 && (h("div", { key: '043033c796d39c07a290350c5b7f92eafe03bbd2', class: "unread-count" }, this.getTotalUnreads()))), h("rtk-icon", { key: '12a2a92172d5741ac6ee99a39ee83158b98a8745', icon: this.showDropdown ? this.iconPack.chevron_up : this.iconPack.chevron_down })))));
218
217
  }
219
218
  get $el() { return getElement(this); }
220
219
  };
@@ -226,7 +225,7 @@ __decorate$g([
226
225
  ], RtkChannelSelectorView.prototype, "t", void 0);
227
226
  RtkChannelSelectorView.style = RtkChannelSelectorViewStyle0;
228
227
 
229
- const rtkChatCss = ":host {\n line-height: initial;\n font-family: var(--rtk-font-family, sans-serif);\n\n font-feature-settings: normal;\n font-variation-settings: normal;\n}\n\np {\n margin: var(--rtk-space-0, 0px);\n padding: var(--rtk-space-0, 0px);\n}\n\n.scrollbar {\n /* For Firefox */\n scrollbar-width: thin;\n scrollbar-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent);\n}\n\n/* For WebKit */\n.scrollbar::-webkit-scrollbar {\n height: var(--rtk-space-1\\.5, 6px);\n width: var(--rtk-space-1\\.5, 6px);\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-background, transparent);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)));\n}\n\n\n:host {\n display: flex;\n height: 100%;\n width: 100%;\n flex-direction: column;\n font-size: 14px;\n position: relative;\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\nh3 {\n margin: var(--rtk-space-0, 0px);\n display: flex;\n height: var(--rtk-space-12, 48px);\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 400;\n color: rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));\n text-align: center;\n}\n\n#dropzone {\n position: absolute;\n top: var(--rtk-space-0, 0px);\n right: var(--rtk-space-0, 0px);\n bottom: var(--rtk-space-0, 0px);\n left: var(--rtk-space-0, 0px);\n z-index: 10;\n display: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-700, 255 255 255 / 0.64));\n}\n\n#dropzone.active {\n display: flex;\n animation: 0.2s slide-up ease-in;\n}\n\nrtk-chat-messages-ui,\nrtk-chat-messages-ui-paginated {\n flex: 1 0 0;\n}\n\nrtk-chat-composer-view {\n margin: var(--rtk-space-2, 8px);\n}\n\n.chat-container {\n display: flex;\n height: 100%;\n width: 100%;\n flex-direction: row;\n container-type: size;\n container-name: chatcontainer;\n}\n\n@container chatcontainer (height < 360px) {\n rtk-channel-selector-view {\n height: var(--rtk-space-8, 32px);\n min-height: 24px;\n }\n}\n\n.chat {\n display: flex;\n flex: 1 1 0%;\n flex-direction: column;\n}\n\n.banner {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.banner .welcome-new-channel {\n width: var(--rtk-space-48, 192px);\n}\n\n.banner .create-channel-illustration {\n height: var(--rtk-space-40, 160px);\n width: var(--rtk-space-40, 160px);\n}\n\n.channel-selector-header {\n box-sizing: border-box;\n height: var(--rtk-space-16, 64px);\n padding: var(--rtk-space-4, 16px);\n display: flex;\n justify-content: space-between;\n border-bottom: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-700, 44 44 44));\n}\n\n.channel-selector-header .channel-create-btn {\n width: var(--rtk-space-8, 32px);\n justify-content: center;\n}\n\n.channel-selector-header .channel-create-btn:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-text-opacity));\n}\n\n.view-chats-btn {\n margin-top: var(--rtk-space-4, 16px);\n}\n\n.selector-container {\n z-index: 50;\n width: 100%;\n max-width: var(--rtk-space-80, 320px);\n border-right: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-600, 60 60 60));\n}\n\n.selector-container.hide {\n display: none;\n}\n\n.mobile-close-btn {\n display: none;\n}\n\n.selector-container.mobile {\n height: 100%;\n width: 100%;\n max-width: 100%;\n position: absolute;\n top: var(--rtk-space-0, 0px);\n right: var(--rtk-space-0, 0px);\n bottom: var(--rtk-space-0, 0px);\n left: var(--rtk-space-0, 0px);\n background-color: rgba(var(--rtk-colors-background-1000, 8 8 8) / 0.6);\n display: flex;\n}\n\n.selector-container.mobile rtk-channel-selector-view {\n max-width: var(--rtk-space-96, 384px);\n animation: 0.3s swipe-in;\n}\n\n.selector-container.mobile .mobile-close-btn {\n margin-top: var(--rtk-space-4, 16px);\n margin-bottom: var(--rtk-space-4, 16px);\n margin-left: var(--rtk-space-6, 24px);\n margin-right: var(--rtk-space-6, 24px);\n display: block;\n}\n\n.pinned-messages-header {\n display: flex;\n align-items: center;\n gap: var(--rtk-space-2, 8px);\n padding: var(--rtk-space-2, 8px);\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));\n font-size: 12px;\n cursor: pointer;\n}\n\n.pinned-messages-header rtk-icon {\n height: var(--rtk-space-3, 12px);\n width: var(--rtk-space-3, 12px);\n}\n\n.pinned-messages-header:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n}\n\n.pinned-messages-header.active {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));\n}\n\n@keyframes swipe-in {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n";
228
+ const rtkChatCss = ":host {\n line-height: initial;\n font-family: var(--rtk-font-family, sans-serif);\n\n font-feature-settings: normal;\n font-variation-settings: normal;\n}\n\np {\n margin: var(--rtk-space-0, 0px);\n padding: var(--rtk-space-0, 0px);\n}\n\n.scrollbar {\n /* For Firefox */\n scrollbar-width: thin;\n scrollbar-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent);\n}\n\n/* For WebKit */\n.scrollbar::-webkit-scrollbar {\n height: var(--rtk-space-1\\.5, 6px);\n width: var(--rtk-space-1\\.5, 6px);\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-background, transparent);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 9999px;\n background-color: var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)));\n}\n\n\n:host {\n display: flex;\n height: 100%;\n width: 100%;\n flex-direction: column;\n font-size: 14px;\n position: relative;\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\nh3 {\n margin: var(--rtk-space-0, 0px);\n display: flex;\n height: var(--rtk-space-12, 48px);\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 400;\n color: rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));\n text-align: center;\n}\n\n#dropzone {\n position: absolute;\n top: var(--rtk-space-0, 0px);\n right: var(--rtk-space-0, 0px);\n bottom: var(--rtk-space-0, 0px);\n left: var(--rtk-space-0, 0px);\n z-index: 10;\n display: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-700, 255 255 255 / 0.64));\n}\n\n#dropzone.active {\n display: flex;\n animation: 0.2s slide-up ease-in;\n}\n\nrtk-chat-messages-ui,\nrtk-chat-messages-ui-paginated {\n flex: 1 0 0;\n}\n\nrtk-chat-composer-view {\n margin: var(--rtk-space-2, 8px);\n}\n\n.chat-container {\n display: flex;\n height: 100%;\n width: 100%;\n flex-direction: row;\n container-type: size;\n container-name: chatcontainer;\n}\n\n@container chatcontainer (height < 360px) {\n rtk-channel-selector-view {\n height: var(--rtk-space-8, 32px);\n min-height: 24px;\n }\n}\n\n.chat {\n display: flex;\n flex: 1 1 0%;\n flex-direction: column;\n}\n\n.banner {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.banner .welcome-new-channel {\n width: var(--rtk-space-48, 192px);\n}\n\n.banner .create-channel-illustration {\n height: var(--rtk-space-40, 160px);\n width: var(--rtk-space-40, 160px);\n}\n\n.channel-selector-header {\n box-sizing: border-box;\n height: var(--rtk-space-16, 64px);\n padding: var(--rtk-space-4, 16px);\n display: flex;\n justify-content: space-between;\n border-bottom: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-700, 44 44 44));\n}\n\n.channel-selector-header .channel-create-btn {\n width: var(--rtk-space-8, 32px);\n justify-content: center;\n}\n\n.channel-selector-header .channel-create-btn:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-text-opacity));\n}\n\n.view-chats-btn {\n margin-top: var(--rtk-space-4, 16px);\n}\n\n.selector-container {\n z-index: 50;\n width: 100%;\n max-width: var(--rtk-space-80, 320px);\n border-right: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-600, 60 60 60));\n}\n\n.selector-container.hide {\n display: none;\n}\n\n.mobile-close-btn {\n display: none;\n}\n\n.selector-container.mobile {\n height: 100%;\n width: 100%;\n max-width: 100%;\n position: absolute;\n top: var(--rtk-space-0, 0px);\n right: var(--rtk-space-0, 0px);\n bottom: var(--rtk-space-0, 0px);\n left: var(--rtk-space-0, 0px);\n background-color: rgba(var(--rtk-colors-background-1000, 8 8 8) / 0.6);\n display: flex;\n}\n\n.selector-container.mobile rtk-channel-selector-view {\n max-width: var(--rtk-space-96, 384px);\n animation: 0.3s swipe-in;\n}\n\n.selector-container.mobile .mobile-close-btn {\n margin-top: var(--rtk-space-4, 16px);\n margin-bottom: var(--rtk-space-4, 16px);\n margin-left: var(--rtk-space-6, 24px);\n margin-right: var(--rtk-space-6, 24px);\n display: block;\n}\n\n.pinned-messages {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n\n.pinned-messages-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--rtk-space-2, 8px);\n padding: var(--rtk-space-4, 16px);\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));\n font-size: 14px;\n cursor: pointer;\n}\n\n.pinned-messages-header div {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--rtk-space-2, 8px);\n}\n\n.pinned-messages-header rtk-icon {\n height: var(--rtk-space-3, 12px);\n width: var(--rtk-space-3, 12px);\n}\n\n.pinned-messages-content {\n --tw-border-opacity: 1;\n border-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-1000, 8 8 8) / var(--tw-bg-opacity));\n position: absolute;\n left: var(--rtk-space-0, 0px);\n top: 100%;\n z-index: 50;\n max-height: 30vh;\n width: 100%;\n overflow: auto;\n}\n\n.pinned-message {\n display: flex;\n cursor: pointer;\n flex-direction: row;\n align-items: center;\n gap: var(--rtk-space-2, 8px);\n --tw-border-opacity: 1;\n border-color: rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-border-opacity));\n padding: var(--rtk-space-4, 16px);\n border-bottom-width: var(--rtk-border-width-sm, 1px);\n border-right-width: var(--rtk-border-width-none, 0);\n border-left-width: var(--rtk-border-width-none, 0);\n border-top-width: var(--rtk-border-width-none, 0);\n border-style: solid;\n}\n\n.pinned-message-avatar {\n height: var(--rtk-space-6, 24px) !important;\n width: var(--rtk-space-6, 24px) !important;\n}\n\n@keyframes swipe-in {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n";
230
229
  const RtkChatStyle0 = rtkChatCss;
231
230
 
232
231
  var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -263,6 +262,8 @@ const RtkChat = class {
263
262
  this.iconPack = defaultIconPack;
264
263
  /** Language */
265
264
  this.t = useLanguage();
265
+ /** UI Overrides */
266
+ this.overrides = defaultOverrides;
266
267
  /** disables private chat */
267
268
  this.disablePrivateChat = false;
268
269
  /** Can current user pin/unpin messages */
@@ -300,6 +301,7 @@ const RtkChat = class {
300
301
  this.searchQuery = '';
301
302
  this.selectorState = 'hide';
302
303
  this.creatingChannel = false;
304
+ this.isSendingMessage = false;
303
305
  this.showPinnedMessages = false;
304
306
  this.channelMap = new Map();
305
307
  this.onDragOver = (e) => {
@@ -479,12 +481,24 @@ const RtkChat = class {
479
481
  };
480
482
  this.onNewMessageHandler = async (e) => {
481
483
  const message = e.detail;
482
- this.meeting.chat.sendMessage(message, this.getRecipientPeerIds());
484
+ this.isSendingMessage = true;
485
+ try {
486
+ await this.meeting.chat.sendMessage(message, this.getRecipientPeerIds());
487
+ }
488
+ finally {
489
+ this.isSendingMessage = false;
490
+ }
483
491
  };
484
492
  this.onEditMessageHandler = async (e) => {
485
493
  var _a, _b;
486
- await ((_b = (_a = this.meeting) === null || _a === void 0 ? void 0 : _a.chat) === null || _b === void 0 ? void 0 : _b.editTextMessage(this.editingMessage.id, e.detail, this.editingMessage.channelId));
487
- this.editingMessage = null;
494
+ this.isSendingMessage = true;
495
+ try {
496
+ await ((_b = (_a = this.meeting) === null || _a === void 0 ? void 0 : _a.chat) === null || _b === void 0 ? void 0 : _b.editTextMessage(this.editingMessage.id, e.detail, this.editingMessage.channelId));
497
+ }
498
+ finally {
499
+ this.isSendingMessage = false;
500
+ this.editingMessage = null;
501
+ }
488
502
  };
489
503
  this.onEditCancel = () => {
490
504
  this.editingMessage = null;
@@ -499,9 +513,35 @@ const RtkChat = class {
499
513
  }
500
514
  };
501
515
  this.onDeleteMessage = (event) => {
516
+ var _a;
502
517
  const message = event.detail;
518
+ if (((_a = this.editingMessage) === null || _a === void 0 ? void 0 : _a.id) === message.id) {
519
+ this.editingMessage = null;
520
+ }
521
+ try {
522
+ if (typeof localStorage !== 'undefined') {
523
+ const keysToRemove = [];
524
+ for (let i = 0; i < localStorage.length; i++) {
525
+ const key = localStorage.key(i);
526
+ if (key && key.startsWith('rtk-chat-edit-') && key.endsWith(`-${message.id}`)) {
527
+ keysToRemove.push(key);
528
+ }
529
+ }
530
+ keysToRemove.forEach((key) => localStorage.removeItem(key));
531
+ }
532
+ }
533
+ catch (_b) {
534
+ // ignore storage access errors
535
+ }
503
536
  this.meeting.chat.deleteMessage(message.id);
504
537
  };
538
+ this.onMessageEdit = (event) => {
539
+ const message = event.detail;
540
+ if (message.type !== 'text')
541
+ return;
542
+ this.replyMessage = null;
543
+ this.editingMessage = message;
544
+ };
505
545
  this.getPrivateChatRecipients = () => {
506
546
  const participants = this.getFilteredParticipants().map((participant) => {
507
547
  const key = generateChatGroupKey([participant.userId, this.meeting.self.userId]);
@@ -521,13 +561,25 @@ const RtkChat = class {
521
561
  };
522
562
  return [everyone, ...participants];
523
563
  };
524
- this.onTogglePinnedMessages = () => {
525
- this.showPinnedMessages = !this.showPinnedMessages;
564
+ this.getPinnedMessageLabel = (message) => {
565
+ if (message.type === 'text')
566
+ return message.message;
567
+ if (message.type === 'image')
568
+ return 'Image';
569
+ if (message.type === 'file')
570
+ return 'File';
571
+ return '';
526
572
  };
527
573
  this.renderPinnedMessagesHeader = () => {
528
574
  if (this.meeting.chat.pinned.length === 0)
529
575
  return null;
530
- return (h("rtk-tooltip", { label: this.t('chat.toggle_pinned_msgs') }, h("div", { class: { 'pinned-messages-header': true, active: this.showPinnedMessages }, onClick: this.onTogglePinnedMessages }, h("rtk-icon", { icon: this.iconPack.pin }), this.t('chat.pinned_msgs'), ` (${this.meeting.chat.pinned.length})`)));
576
+ /**
577
+ * We do not display a picture against the avatar because the chatMessage API does not provide it.
578
+ */
579
+ return (h("div", { class: "pinned-messages" }, h("div", { class: "pinned-messages-header", onClick: () => (this.showPinnedMessages = !this.showPinnedMessages) }, h("div", null, h("rtk-icon", { icon: this.iconPack.pin, size: "sm" }), this.t('chat.pinned_msgs'), ` (${this.meeting.chat.pinned.length})`), h("rtk-icon", { icon: this.showPinnedMessages ? this.iconPack.chevron_up : this.iconPack.chevron_down, size: "sm" })), this.showPinnedMessages && (h("div", { class: "pinned-messages-content scrollbar" }, this.meeting.chat.pinned.map((message) => {
580
+ const label = this.getPinnedMessageLabel(message);
581
+ return (h("div", { class: "pinned-message" }, h("rtk-avatar", { class: "pinned-message-avatar", participant: { name: message.displayName, picture: '' }, size: "sm" }), h("span", null, label.length > 20 ? `${label.substring(0, 20)}...` : label)));
582
+ })))));
531
583
  };
532
584
  }
533
585
  connectedCallback() {
@@ -662,7 +714,7 @@ const RtkChat = class {
662
714
  this.onChannelChanged(e);
663
715
  }
664
716
  renderComposerUI() {
665
- var _a, _b, _c;
717
+ var _a;
666
718
  if (this.chatRecipientId === 'everyone') {
667
719
  if (!this.canSendTextMessage && !this.canSendFiles)
668
720
  return null;
@@ -674,18 +726,21 @@ const RtkChat = class {
674
726
  const uiProps = { iconPack: this.iconPack, t: this.t, size: this.size };
675
727
  const message = this.editingMessage ? this.editingMessage.message : '';
676
728
  const quotedMessage = this.replyMessage ? this.replyMessage.message : '';
677
- return (h("rtk-chat-composer-view", Object.assign({ message: message, storageKey: (_a = this.selectedChannelId) !== null && _a !== void 0 ? _a : `draft-${this.selectedChannelId}`, quotedMessage: quotedMessage, isEditing: !!this.editingMessage, canSendTextMessage: this.isTextMessagingAllowed(), canSendFiles: this.isFileMessagingAllowed(), disableEmojiPicker: !!((_c = (_b = this.meeting) === null || _b === void 0 ? void 0 : _b.__internals__) === null || _c === void 0 ? void 0 : _c.features.hasFeature(FlagsmithFeatureFlags.DISABLE_EMOJI_PICKER)), maxLength: this.meeting.chat.maxTextLimit, rateLimits: this.meeting.chat.rateLimits, inputTextPlaceholder: this.t('chat.message_placeholder'), onNewMessage: this.onNewMessageHandler, onEditMessage: this.onEditMessageHandler, onEditCancel: this.onEditCancel, onQuotedMessageDismiss: this.onQuotedMessageDismiss }, uiProps), h("slot", { name: "chat-addon", slot: "chat-addon" })));
729
+ const draftStorageKey = this.selectedChannelId
730
+ ? `rtk-chat-draft-${this.selectedChannelId}`
731
+ : 'rtk-chat-draft';
732
+ const editStorageKey = this.editingMessage
733
+ ? `rtk-chat-edit-${(_a = this.selectedChannelId) !== null && _a !== void 0 ? _a : 'no-channel'}-${this.editingMessage.id}`
734
+ : 'rtk-chat-edit';
735
+ const storageKey = this.editingMessage ? editStorageKey : draftStorageKey;
736
+ return (h("rtk-chat-composer-view", Object.assign({ message: message, storageKey: storageKey, quotedMessage: quotedMessage, isEditing: !!this.editingMessage, isSending: this.isSendingMessage, canSendTextMessage: this.isTextMessagingAllowed(), canSendFiles: this.isFileMessagingAllowed(), disableEmojiPicker: this.overrides.disableEmojiPicker, maxLength: this.meeting.chat.maxTextLimit, rateLimits: this.meeting.chat.rateLimits, inputTextPlaceholder: this.t('chat.message_placeholder'), onNewMessage: this.onNewMessageHandler, onEditMessage: this.onEditMessageHandler, onEditCancel: this.onEditCancel, onQuotedMessageDismiss: this.onQuotedMessageDismiss }, uiProps), h("slot", { name: "chat-addon", slot: "chat-addon" })));
678
737
  }
679
738
  render() {
680
739
  var _a;
681
740
  if (!this.meeting) {
682
741
  return null;
683
742
  }
684
- let chatMessages = this.chatGroups[this.selectedGroup] || [];
685
- if (this.showPinnedMessages && this.meeting.chat.pinned.length !== 0) {
686
- chatMessages = chatMessages.filter((chat) => chat.type === 'chat' && chat.message.pinned);
687
- }
688
- return (h(Host, null, h("div", { class: "chat-container" }, h("div", { class: "chat" }, this.isFileMessagingAllowed() && (h("div", { id: "dropzone", class: { active: this.dropzoneActivated }, part: "dropzone" }, h("rtk-icon", { icon: this.iconPack.attach }), h("p", null, this.t('chat.send_attachment')))), this.renderPinnedMessagesHeader(), this.isPrivateChatSupported() && (h("rtk-channel-selector-view", { channels: this.getPrivateChatRecipients(), selectedChannelId: ((_a = this.selectedParticipant) === null || _a === void 0 ? void 0 : _a.userId) || 'everyone', onChannelChange: this.updateRecipients, t: this.t, viewAs: "dropdown" })), h("rtk-chat-messages-ui-paginated", { meeting: this.meeting, onPinMessage: this.onPinMessage, onDeleteMessage: this.onDeleteMessage, size: this.size, iconPack: this.iconPack, t: this.t }), this.renderComposerUI()))));
743
+ return (h(Host, null, h("div", { class: "chat-container" }, h("div", { class: "chat" }, this.isFileMessagingAllowed() && (h("div", { id: "dropzone", class: { active: this.dropzoneActivated }, part: "dropzone" }, h("rtk-icon", { icon: this.iconPack.attach }), h("p", null, this.t('chat.send_attachment')))), this.renderPinnedMessagesHeader(), this.isPrivateChatSupported() && (h("rtk-channel-selector-view", { channels: this.getPrivateChatRecipients(), selectedChannelId: ((_a = this.selectedParticipant) === null || _a === void 0 ? void 0 : _a.userId) || 'everyone', onChannelChange: this.updateRecipients, t: this.t, viewAs: "dropdown" })), h("rtk-chat-messages-ui-paginated", { meeting: this.meeting, onPinMessage: this.onPinMessage, onEditMessage: this.onMessageEdit, onDeleteMessage: this.onDeleteMessage, size: this.size, iconPack: this.iconPack, t: this.t }), this.renderComposerUI()))));
689
744
  }
690
745
  get host() { return getElement(this); }
691
746
  static get watchers() { return {
@@ -706,6 +761,9 @@ __decorate$f([
706
761
  __decorate$f([
707
762
  SyncWithStore()
708
763
  ], RtkChat.prototype, "t", void 0);
764
+ __decorate$f([
765
+ SyncWithStore()
766
+ ], RtkChat.prototype, "overrides", void 0);
709
767
  RtkChat.style = RtkChatStyle0;
710
768
 
711
769
  const rtkChatComposerViewCss = ":host {\n display: flex;\n flex-direction: column;\n font-family: var(--rtk-font-family, sans-serif);\n font-size: 14px;\n position: relative;\n}\n\n.quoted-message-container {\n margin-bottom: var(--rtk-space-2, 8px);\n display: flex;\n justify-content: space-between;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n border-radius: var(--rtk-border-radius-md, 8px);\n border: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-600, 60 60 60));\n}\n\n.quoted-message-container .quoted-message {\n flex: 1 1 0%;\n padding: var(--rtk-space-2, 8px);\n border-radius: var(--rtk-border-radius-md, 8px);\n max-height: var(--rtk-space-24, 96px);\n overflow-y: auto;\n word-break: break-all;\n}\n\n.quoted-message-container .quoted-message blockquote {\n display: none;\n}\n\n.quoted-message-container rtk-icon.dismiss {\n margin-left: auto;\n height: var(--rtk-space-5, 20px);\n width: var(--rtk-space-5, 20px);\n padding: var(--rtk-space-2, 8px);\n border-radius: var(--rtk-border-radius-md, 8px);\n color: rgb(var(--rtk-colors-text-600, 255 255 255 / 0.52));\n}\n\n.quoted-message-container rtk-icon.dismiss:hover {\n cursor: pointer;\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\n.quoted-message-container rtk-icon.dismiss {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.composer-container {\n position: relative;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));\n border-radius: var(--rtk-border-radius-md, 8px);\n overflow: hidden;\n border: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-600, 60 60 60));\n}\n\n.composer-container > .composers {\n min-height: 60px;\n }\n\n@container chatcontainer (height < 360px) {\n .composer-container > .composers {\n min-height: 30px;\n }\n}\n\n.chat-buttons {\n padding: var(--rtk-space-3, 12px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));\n color: rgb(var(--rtk-colors-text-1000, 255 255 255));\n}\n\n.chat-buttons .right {\n z-index: 10;\n}\n\n.chat-buttons .right .edit-buttons {\n display: flex;\n gap: var(--rtk-space-2, 8px);\n}\n\n.chat-buttons > div {\n display: flex;\n align-items: center;\n}\n\nrtk-emoji-picker {\n z-index: 20;\n position: absolute;\n top: calc(var(--rtk-space-72, 288px) * -1);\n border-top: var(--rtk-border-width-sm, 1px) solid rgb(var(--rtk-colors-background-600, 60 60 60));\n animation: 0.3s slide-up ease;\n}\n\n@keyframes slide-up {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n";
@@ -734,6 +792,7 @@ const RtkChatComposerView = class {
734
792
  this.onQuotedMessageDismiss = createEvent(this, "quotedMessageDismiss", 7);
735
793
  /** Whether user can send text messages */
736
794
  this.canSendTextMessage = true;
795
+ this.isSending = false;
737
796
  /** Whether user can send file messages */
738
797
  this.canSendFiles = true;
739
798
  /** Message to be pre-populated */
@@ -794,15 +853,7 @@ const RtkChatComposerView = class {
794
853
  messageLimits.messagesSent += 1;
795
854
  this.checkRateLimitBreached(currentTime);
796
855
  if (message.length > 0) {
797
- if (this.quotedMessage.length !== 0) {
798
- this.onNewMessage.emit({
799
- type: 'text',
800
- message,
801
- });
802
- }
803
- else {
804
- this.onNewMessage.emit({ type: 'text', message });
805
- }
856
+ this.onNewMessage.emit({ type: 'text', message });
806
857
  this.cleanup();
807
858
  }
808
859
  };
@@ -886,17 +937,17 @@ const RtkChatComposerView = class {
886
937
  render() {
887
938
  var _a;
888
939
  const uiProps = { iconPack: this.iconPack, t: this.t };
889
- return (h(Host, { key: '06455539e3067eb1c1c592b551d0ef99eba2f331' }, this.canSendTextMessage && this.isEmojiPickerOpen && (h("rtk-emoji-picker", Object.assign({ key: 'fe83b0ab9562cc0e1c61f89e4b441ef592edfa1a', part: "emoji-picker", onPickerClose: () => {
940
+ return (h(Host, { key: '2df23422579c855ced1cb6d24bb95786a1326baf' }, this.canSendTextMessage && this.isEmojiPickerOpen && (h("rtk-emoji-picker", Object.assign({ key: 'a7ed280a636d0207f58f0ad13f79c1eaed52ab9c', part: "emoji-picker", onPickerClose: () => {
890
941
  this.isEmojiPickerOpen = false;
891
942
  }, onRtkEmojiClicked: (e) => {
892
943
  this.textMessage += e.detail;
893
944
  this.$textComposer.setText(this.textMessage, true);
894
- } }, uiProps))), h("slot", { key: '8653c2e805e41adf5958941cc10ff01d43f97792', name: "chat-addon" }), this.quotedMessage && this.quotedMessage.length !== 0 && (h("div", { key: '82b9bf5203a799709e980d61ab827b9daf8292e6', class: "quoted-message-container", part: "quoted-message-container" }, h("div", { key: '4b9fe8f382da7075e815c329f2d7dca17ce0f694', class: "quoted-message scrollbar" }, h("rtk-text-message-view", { key: '7a16547e83d9bca43794e46e56c5a9c743a9929a', text: this.quotedMessage, isMarkdown: true })), h("div", { key: '5691b8d882016cda66cd2faf3858bc38cd53458c' }, h("rtk-icon", { key: '2d5b222bd5eaac6d46812b704674f52f86efdb92', "aria-label": this.t('dismiss'), class: "dismiss", icon: this.iconPack.dismiss, onClick: this.onQuotedMessageDismissHandler })))), h("div", { key: 'd7638411df9ae1b2cbef8cae66d0af2b7ad310e6', class: "composer-container" }, h("div", { key: 'ca1ee222584fdd27e53989d28b6ce583c6b0c400', class: "composers" }, this.fileToUpload && (h("rtk-draft-attachment-view", Object.assign({ key: 'd511c900c71a97f8f92640b73a7575dcd267de88' }, uiProps, { attachment: this.fileToUpload, onDeleteAttachment: () => (this.fileToUpload = null) }))), !this.fileToUpload && (h("rtk-text-composer-view", { key: '08f214184853dcedeccb5f07dac2a0a308269793', value: this.textMessage, placeholder: this.inputTextPlaceholder, onTextChange: this.onTextChangeHandler, keyDownHandler: this.onKeyDownHandler, maxLength: (_a = this.maxLength) !== null && _a !== void 0 ? _a : MAX_TEXT_LENGTH, rateLimitBreached: this.rateLimitsBreached, t: this.t, iconPack: this.iconPack, ref: (el) => (this.$textComposer = el) }))), h("div", { key: '9b6cbe7cb8529c8e60f8cc9e13cc95ca64504efc', class: "chat-buttons", part: "chat-buttons" }, h("div", { key: '30e24e8edf58179ef20ccd436d3833ba177ebb0d', class: "left", part: "chat-buttons-left" }, !this.fileToUpload && !this.isEditing && (h("div", { key: '54ad294bedab1c0bc7c02a72c4f3f51bc10bba85' }, this.canSendFiles && [
895
- h("rtk-file-picker-button", Object.assign({ key: '1a0760e05a183b6c8da2ff02e33ecd40bfdb6e97' }, uiProps, { onFileChange: (event) => this.onFileUploadHandler('file', event.detail) })),
896
- h("rtk-file-picker-button", Object.assign({ key: '5d6cf1928c8edb6737b367807c93152ad62cea36', filter: "image/*", label: this.t('chat.send_img'), icon: "image", onFileChange: (event) => this.onFileUploadHandler('image', event.detail) }, uiProps)),
897
- ], this.canSendTextMessage && !this.disableEmojiPicker && (h("rtk-emoji-picker-button", Object.assign({ key: '50f14152b8d15009104e9b1dd05ee5e1ec49ab16', isActive: this.isEmojiPickerOpen, onClick: () => {
945
+ } }, uiProps))), h("slot", { key: '759df2a2029fbba963cfc26cd871771881dd6c5e', name: "chat-addon" }), this.quotedMessage && this.quotedMessage.length !== 0 && (h("div", { key: '413be05a7374fc76f790ad3f6f5bef5a56a6ef97', class: "quoted-message-container", part: "quoted-message-container" }, h("div", { key: '7fb6b571103c675dca202b74bd07fd55062dab70', class: "quoted-message scrollbar" }, h("rtk-text-message-view", { key: '3997aa719a746234c5641e976dd0c27e68b69dae', text: this.quotedMessage, isMarkdown: true })), h("div", { key: 'f76ec54e3d67d6957d5d152b144b22d8cc122660' }, h("rtk-icon", { key: '897b52fc41814d2cb8beeb461c36c9843cb2869e', "aria-label": this.t('dismiss'), class: "dismiss", icon: this.iconPack.dismiss, onClick: this.onQuotedMessageDismissHandler })))), h("div", { key: '35447eb1fffffd372c231bc76ce741e483e7f26a', class: "composer-container" }, h("div", { key: '0f8f198df49fcc27f6c85b8d6909eb2a7c00e142', class: "composers" }, this.fileToUpload && (h("rtk-draft-attachment-view", Object.assign({ key: '9d325d05fecb12ecb41f02e54561d2e1b59b2c2f' }, uiProps, { attachment: this.fileToUpload, onDeleteAttachment: () => (this.fileToUpload = null) }))), !this.fileToUpload && (h("rtk-text-composer-view", { key: 'fbc870bb9d9c2418e528e64273edb67846e23e17', value: this.textMessage, placeholder: this.inputTextPlaceholder, onTextChange: this.onTextChangeHandler, keyDownHandler: this.onKeyDownHandler, maxLength: (_a = this.maxLength) !== null && _a !== void 0 ? _a : MAX_TEXT_LENGTH, rateLimitBreached: this.rateLimitsBreached, t: this.t, iconPack: this.iconPack, ref: (el) => (this.$textComposer = el) }))), h("div", { key: '20191403531eb87bca86d13387c7937153a4c99e', class: "chat-buttons", part: "chat-buttons" }, h("div", { key: '4914a61fea3f502dc14778a237e9ce35a97e3afc', class: "left", part: "chat-buttons-left" }, !this.fileToUpload && !this.isEditing && (h("div", { key: '76c843588f2f7d90f5e60a1e44955309026eda27' }, this.canSendFiles && [
946
+ h("rtk-file-picker-button", Object.assign({ key: 'cbb6f17b22f10b48ada27a4b4da3c1d5b2c7e320' }, uiProps, { onFileChange: (event) => this.onFileUploadHandler('file', event.detail) })),
947
+ h("rtk-file-picker-button", Object.assign({ key: '0868162a2da021dd4175e977adf47d72ca54044a', filter: "image/*", label: this.t('chat.send_img'), icon: "image", onFileChange: (event) => this.onFileUploadHandler('image', event.detail) }, uiProps)),
948
+ ], this.canSendTextMessage && !this.disableEmojiPicker && (h("rtk-emoji-picker-button", Object.assign({ key: 'a73378b5495dc3bfcde7dba335f674292ee6a96c', isActive: this.isEmojiPickerOpen, onClick: () => {
898
949
  this.isEmojiPickerOpen = !this.isEmojiPickerOpen;
899
- } }, uiProps))), h("slot", { key: '1e1fe81e1e196fc8d679bfc2d6ed0c6402c74a4a', name: "chat-buttons" })))), h("div", { key: '272526b7c81ed1acd028beceb3869c584e94308f', class: "right", part: "chat-buttons-right" }, !this.isEditing && (h("rtk-tooltip", { key: '6750abf323b2f1c951661c44390eb97d3ec71544', variant: "primary", label: this.t('chat.send_msg'), delay: 2000 }, h("rtk-button", { key: 'a159fa6dcc1f8ede64085abd8286a69ad86b7002', kind: "icon", disabled: this.disableSendButton, onClick: () => this.handleSendMessage(), title: this.t('chat.send_msg') }, h("rtk-icon", { key: 'bb26a3a7954727859f5566ecc60d746ac6700b7b', icon: this.iconPack.send })))), this.isEditing && (h("div", { key: '5ef512e3fc236510a518e76ce027f0c8fc1c9a0c', class: "edit-buttons" }, h("rtk-tooltip", { key: 'e18ae7567350d32b18a70de8cb2c1af0830353bc', variant: "secondary", label: this.t('cancel'), delay: 2000 }, h("rtk-button", { key: '4f4aa2e44308a393314ab95244c87a3b8d4b282c', kind: "icon", variant: "secondary", onClick: () => this.handleEditCancel(), title: this.t('cancel') }, h("rtk-icon", { key: 'a4a99fe9ae34707cb63f63461a4728baf70e3e7a', icon: this.iconPack.dismiss }))), h("rtk-tooltip", { key: '789315dbf551ba74d004459981532fa9a467ac45', variant: "primary", label: this.t('chat.update_msg'), delay: 2000 }, h("rtk-button", { key: '61da43993c2da9b8bd00796544030e9b4cb45f12', kind: "icon", onClick: () => this.handleEditMessage(), title: this.t('chat.send_msg') }, h("rtk-icon", { key: 'e45aab29b0f6553ed2d7f370a8817bdccdabe42e', icon: this.iconPack.checkmark }))))))))));
950
+ } }, uiProps))), h("slot", { key: '31208ad279dec430da4527d22730de8e418bc722', name: "chat-buttons" })))), h("div", { key: '04fcdd3f690548cbf1e257ffb2982785e557726b', class: "right", part: "chat-buttons-right" }, !this.isEditing && (h("rtk-tooltip", { key: '367bf710673a0a2276f46d52289409abb77fe27b', variant: "primary", label: this.t('chat.send_msg'), delay: 2000 }, h("rtk-button", { key: 'c677e3026636c375ed7eee411c596f6d2a802794', kind: "icon", disabled: this.disableSendButton || this.isSending, onClick: () => this.handleSendMessage(), title: this.t('chat.send_msg') }, this.isSending ? (h("rtk-spinner", { size: "sm" })) : (h("rtk-icon", { icon: this.iconPack.send }))))), this.isEditing && (h("div", { key: '1e09e8868e4ae048b36bc8198b8aa1de92209a00', class: "edit-buttons" }, h("rtk-tooltip", { key: '29ff7a39bd168169fa7d104357b529a2c9efe0fd', variant: "secondary", label: this.t('cancel'), delay: 2000 }, h("rtk-button", { key: '27cf5353d0e8c2620fd8d4213994a9dcc83f83f3', kind: "icon", variant: "secondary", onClick: () => this.handleEditCancel(), title: this.t('cancel') }, h("rtk-icon", { key: 'aeb4c9df3993c6cebf952f64f6676eb8a3866bb0', icon: this.iconPack.dismiss }))), h("rtk-tooltip", { key: '835195d0f51a1db81e66a1b2d9076a71f2aaee4e', variant: "primary", label: this.t('chat.update_msg'), delay: 2000 }, h("rtk-button", { key: 'd524f01ba5d7ca52224d39e23e7f963972ad80c9', kind: "icon", onClick: () => this.handleEditMessage(), title: this.t('chat.send_msg') }, this.isSending ? (h("rtk-spinner", { size: "sm" })) : (h("rtk-icon", { icon: this.iconPack.checkmark })))))))))));
900
951
  }
901
952
  };
902
953
  __decorate$e([
@@ -925,6 +976,7 @@ const RtkChatMessagesUiPaginated = class {
925
976
  registerInstance(this, hostRef);
926
977
  this.editMessageInit = createEvent(this, "editMessageInit", 7);
927
978
  this.onPinMessage = createEvent(this, "pinMessage", 7);
979
+ this.onEditMessage = createEvent(this, "editMessage", 7);
928
980
  this.onDeleteMessage = createEvent(this, "deleteMessage", 7);
929
981
  this.stateUpdate = createEvent(this, "rtkStateUpdate", 7);
930
982
  /** Icon pack */
@@ -975,22 +1027,18 @@ const RtkChatMessagesUiPaginated = class {
975
1027
  };
976
1028
  this.getMessageActions = (message) => {
977
1029
  const actions = [];
978
- // const isSelf = this.meeting.self.userId === message.userId;
979
- // const chatMessagePermissions = this.meeting.self.permissions?.chatMessage;
980
- // const canEdit =
981
- // chatMessagePermissions === undefined
982
- // ? isSelf
983
- // : chatMessagePermissions.canEdit === 'ALL' ||
984
- // (chatMessagePermissions.canEdit === 'SELF' && isSelf);
985
- const canDelete = message.userId === this.meeting.self.userId;
986
- if (this.meeting.self.permissions.pinParticipant) {
1030
+ const messageBelongsToSelf = message.userId === this.meeting.self.userId;
1031
+ actions.push({
1032
+ id: 'pin_message',
1033
+ label: message.pinned ? this.t('unpin') : this.t('pin'),
1034
+ icon: this.iconPack.pin,
1035
+ });
1036
+ if (messageBelongsToSelf) {
987
1037
  actions.push({
988
- id: 'pin_message',
989
- label: message.pinned ? this.t('unpin') : this.t('pin'),
990
- icon: this.iconPack.pin,
1038
+ id: 'edit_message',
1039
+ label: this.t('chat.edit_msg'),
1040
+ icon: this.iconPack.edit,
991
1041
  });
992
- }
993
- if (canDelete) {
994
1042
  actions.push({
995
1043
  id: 'delete_message',
996
1044
  label: this.t('chat.delete_msg'),
@@ -1004,6 +1052,9 @@ const RtkChatMessagesUiPaginated = class {
1004
1052
  case 'pin_message':
1005
1053
  this.onPinMessage.emit(message);
1006
1054
  break;
1055
+ case 'edit_message':
1056
+ this.onEditMessage.emit(message);
1057
+ break;
1007
1058
  case 'delete_message':
1008
1059
  this.onDeleteMessage.emit(message);
1009
1060
  break;
@@ -1032,9 +1083,9 @@ const RtkChatMessagesUiPaginated = class {
1032
1083
  }
1033
1084
  const isSelf = message.userId === this.meeting.self.userId;
1034
1085
  const viewType = isSelf ? 'outgoing' : 'incoming';
1035
- return (h("div", { class: { pinned: message.pinned } }, h("div", { class: "message-wrapper" }, h("rtk-message-view", { time: message.time, actions: this.getMessageActions(message), authorName: message.displayName, isSelf: isSelf, avatarUrl: displayPicture, hideAuthorName: isContinued, viewType: viewType, variant: "bubble", onAction: (event) => this.onMessageActionHandler(event.detail, message) }, h("div", null, h("div", { class: "body" }, message.type === 'text' && (h("rtk-text-message-view", { text: message.message, isMarkdown: true })), message.type === 'file' && (h("rtk-file-message-view", { name: message.name, url: message.link, size: message.size })), message.type === 'image' && (h("rtk-image-message-view", { url: message.link, onPreview: () => {
1086
+ return (h("div", null, h("div", { class: "message-wrapper", id: message.id }, h("rtk-message-view", { messageType: message.type, pinned: message.pinned, isEdited: message.isEdited, time: message.time, actions: this.getMessageActions(message), authorName: message.displayName, isSelf: isSelf, avatarUrl: displayPicture, hideAuthorName: isContinued, viewType: viewType, variant: "bubble", onAction: (event) => this.onMessageActionHandler(event.detail, message) }, h("div", null, h("div", { class: "body" }, message.type === 'text' && (h("rtk-text-message-view", { text: message.message, isMarkdown: true })), message.type === 'file' && (h("rtk-file-message-view", { name: message.name, url: message.link, size: message.size })), message.type === 'image' && (h("rtk-image-message-view", { url: message.link, onPreview: () => {
1036
1087
  this.stateUpdate.emit({ image: message });
1037
- } }))), message.pinned && (h("div", { class: "pin-icon", part: "pin-icon" }, h("rtk-icon", { icon: this.iconPack.pin, size: "sm" }))))))));
1088
+ } }))))))));
1038
1089
  };
1039
1090
  this.chatUpdateListener = (data) => {
1040
1091
  if (this.selectedChannelId && data.message.channelId !== this.selectedChannelId)
@@ -1080,7 +1131,7 @@ const RtkChatMessagesUiPaginated = class {
1080
1131
  this.lastReadMessageIndex = -1;
1081
1132
  }
1082
1133
  render() {
1083
- return (h(Host, { key: '732dea776303ba428aedc72608516a4e4dfc1591' }, h("rtk-paginated-list", { key: '6bc3cd1373ff487b897d3ca7a5bfbccfdbaa90da', ref: (el) => (this.$paginatedListRef = el), pageSize: this.pageSize, pagesAllowed: 3, fetchData: this.getChatMessages, createNodes: this.createChatNodes, selectedItemId: this.selectedChannelId, emptyListLabel: this.t('chat.empty_channel') }, h("slot", { key: 'f3cc795b3b39aa48f87f9908e3b205e2db6439b4' }))));
1134
+ return (h(Host, { key: '1cbb364021b79bd756621987ac03c2e852acf3bd' }, h("rtk-paginated-list", { key: 'b7896890b5e3ea9a190bfa9c86c825233b635aa4', ref: (el) => (this.$paginatedListRef = el), pageSize: this.pageSize, pagesAllowed: 3, fetchData: this.getChatMessages, createNodes: this.createChatNodes, selectedItemId: this.selectedChannelId, emptyListLabel: this.t('chat.empty_channel') }, h("slot", { key: 'b1255713fc172c4e35385021809d391a5fdf9acc' }))));
1084
1135
  }
1085
1136
  get host() { return getElement(this); }
1086
1137
  static get watchers() { return {
@@ -1153,7 +1204,7 @@ const RtkDraftAttachmentView = class {
1153
1204
  this.onAttachmentChange();
1154
1205
  }
1155
1206
  render() {
1156
- return (h(Host, { key: 'b23eb412c60a62f542aec0e3cd3b99fc72de48f0' }, h("div", { key: '04251f8d4b13325f8474110c89733369bd8904f2', class: "preview-overlay" }, h("div", { key: '51963510a704b19e7c591ea177018bae6e0317f5', class: "preview" }, h("rtk-tooltip", { key: '3a2167ea7a02f1d744462826084f0fef5c607ac9', label: this.t('chat.cancel_upload') }, h("rtk-button", { key: '634c9a7e0962ed82c36519e919eb597c9b603f51', variant: "secondary", kind: "icon", onClick: this.onDeleteClickHandler }, h("rtk-icon", { key: 'b936e54ae44e1d54b73adf38a92551fbea0299c5', icon: this.iconPack.dismiss }))), this.attachment.type === 'image' ? (h("img", { class: "preview-image", src: this.filePreview })) : (h("div", { class: "preview-file" }, h("span", null, this.filePreview)))))));
1207
+ return (h(Host, { key: 'f6ede093bcdf8100807baab4de2a296fc4960a07' }, h("div", { key: 'b19bbe9b2ea58ea4adccc2028a1b24ea6bc9f0a9', class: "preview-overlay" }, h("div", { key: 'cbb2bfcb3a50e6e7fbfd4109eb340ba51d6a162d', class: "preview" }, h("rtk-tooltip", { key: '15b50c547470b0fa22014e0992a1c7e26b234573', label: this.t('chat.cancel_upload') }, h("rtk-button", { key: '940332a51747af3368ffec497d5ef76fa64ecf75', variant: "secondary", kind: "icon", onClick: this.onDeleteClickHandler }, h("rtk-icon", { key: 'cc04b0ac70753e970ff638f187ad5f702dc3656b', icon: this.iconPack.dismiss }))), this.attachment.type === 'image' ? (h("img", { class: "preview-image", src: this.filePreview })) : (h("div", { class: "preview-file" }, h("span", null, this.filePreview)))))));
1157
1208
  }
1158
1209
  static get watchers() { return {
1159
1210
  "attachment": ["onAttachmentChange"]
@@ -1238,7 +1289,7 @@ const RtkEmojiPicker = class {
1238
1289
  return (h("div", { id: "emoji-grid", class: "scrollbar max-w-40" }, this.filteredEmojis.map((e) => (h("rtk-button", { key: `emoji-button-${e.name}`, class: "emoji", variant: "ghost", kind: "icon", title: e.name, onClick: () => this.handleEmojiClick(e.emoji) }, e.emoji)))));
1239
1290
  }
1240
1291
  render() {
1241
- return (h(Host, { key: 'e099d5996a16c659de17ca9a36fcd79a9f02f400' }, h("div", { key: '2a3e300c9625b877feb2b6780df7d1a9851cb7f3', class: 'close-parent' }, h("rtk-button", { key: '7ca8421704136d09d107d1f7392ba393d5f59a9a', variant: "ghost", kind: "icon", class: "close", onClick: () => { var _a; return (_a = this.pickerClose) === null || _a === void 0 ? void 0 : _a.emit(); }, "aria-label": this.t('close') }, h("rtk-icon", { key: '040069093f7243bf5075d55b2c081c564d885a8f', icon: this.iconPack.dismiss }))), h("div", { key: '372a32be35dea5200323720e221424b5138cc4ab', class: 'emoji-parent' }, h("input", { key: 'fae2be13d736adbb99212146498f00d4f395636e', value: this.filterVal, onInput: (event) => this.handleInputChange(event.target), placeholder: this.t('search'), ref: (el) => (this.inputElement = el) }), this.mapEmojiList())));
1292
+ return (h(Host, { key: '6581d26d75a7b869d0ba00243ec74ee06b927e7d' }, h("div", { key: '3705d8c557ac3e05769171998e9176e7e40a232c', class: 'close-parent' }, h("rtk-button", { key: 'b437e579cb828a709de255ddfa6b751e4bdfbe51', variant: "ghost", kind: "icon", class: "close", onClick: () => { var _a; return (_a = this.pickerClose) === null || _a === void 0 ? void 0 : _a.emit(); }, "aria-label": this.t('close') }, h("rtk-icon", { key: '7fac79a21c6be57156d17ceeff9ceb2834bbf709', icon: this.iconPack.dismiss }))), h("div", { key: '46cb2af6654ef36b7258baf47e3cd9e5bd60bf89', class: 'emoji-parent' }, h("input", { key: 'cfde33638d531f9bac1b1bf25d966a369f4dfb38', value: this.filterVal, onInput: (event) => this.handleInputChange(event.target), placeholder: this.t('search'), ref: (el) => (this.inputElement = el) }), this.mapEmojiList())));
1242
1293
  }
1243
1294
  };
1244
1295
  __decorate$b([
@@ -1271,7 +1322,7 @@ const RtkEmojiPickerButton = class {
1271
1322
  this.t = useLanguage();
1272
1323
  }
1273
1324
  render() {
1274
- return (h("rtk-tooltip", { key: 'bcde14fb2c3a6544882502e65ffda7a6b3b6f13d', label: this.t('chat.send_emoji') }, h("rtk-button", { key: 'd82fa78c4ffe48c24131a6e38f087548f540fefa', variant: "ghost", kind: "icon", class: { active: this.isActive }, title: this.t('chat.send_emoji') }, h("rtk-icon", { key: '791bbe2537f1aeb064c5e9ccbbf4af37b706ec2a', icon: this.iconPack.emoji_multiple }))));
1325
+ return (h("rtk-tooltip", { key: '45ef1f18da6d1ecc3c02882590cd22e930461562', label: this.t('chat.send_emoji') }, h("rtk-button", { key: '6504abab2f1c6537443699c53a8cbdcf13530cba', variant: "ghost", kind: "icon", class: { active: this.isActive }, title: this.t('chat.send_emoji') }, h("rtk-icon", { key: 'd730c81abce72d9c3226f1f666941e1136bee77f', icon: this.iconPack.emoji_multiple }))));
1275
1326
  }
1276
1327
  };
1277
1328
  __decorate$a([
@@ -1302,7 +1353,7 @@ const RtkFileMessageView = class {
1302
1353
  this.iconPack = defaultIconPack;
1303
1354
  }
1304
1355
  render() {
1305
- return (h("div", { key: 'cdd46a1be912f807688dc86671dddd2fa5b9e7c9', class: "file" }, h("rtk-button", { key: '20bd6c448ec64902989cd742a8f18de32e368194', variant: "secondary", kind: "icon", onClick: () => downloadFile(sanitizeLink(this.url), { name: this.name, fallbackName: 'file' }), part: "button" }, h("rtk-icon", { key: '11ac30db5146132be8aaba67a79f66f8aba7bb8d', icon: this.iconPack.download })), h("div", { key: '342dd8daa944a5857a6519339b4d3bfb6c369eda', class: "file-data" }, h("div", { key: 'e161743b75677b1e81d09d7c373be494ccf8411a', class: "name" }, this.name), h("div", { key: '99f2d8d77ef3c129aa0c229260f6e79901ce268c', class: "file-data-split" }, h("div", { key: '7b9beadca2a810c151fb1ad43ee7c47ba451a37a', class: "ext" }, getExtension(this.name)), h("span", { key: 'd55f69a96bbe26c262461fa87f1a0a506854cf59', class: "divider" }), h("div", { key: 'cad33d263ab75aeb3083886e83063b8ccb2ea976', class: "size" }, getFileSize(this.size))))));
1356
+ return (h("div", { key: '5cc29b4780f581a2f8b045e5051bcc66f3fdaf55', class: "file" }, h("rtk-button", { key: '4100b47bc1d72f08ec5fe645291bfbb58e3a6486', variant: "secondary", kind: "icon", onClick: () => downloadFile(sanitizeLink(this.url), { name: this.name, fallbackName: 'file' }), part: "button" }, h("rtk-icon", { key: '52ae14abb7c27b89861d5ba4c907d606257628c9', icon: this.iconPack.download })), h("div", { key: '02c9ad8d173172a85cc474273a966607d456360e', class: "file-data" }, h("div", { key: '6ceca21685d04f175006ba35a6de194cc98879ad', class: "name" }, this.name), h("div", { key: 'b07d07bcaedee3fd6fbcfe81ce2f6bf757655b5f', class: "file-data-split" }, h("div", { key: '280635ef486de02bc68ca3e774be14fa5a461d1c', class: "ext" }, getExtension(this.name)), h("span", { key: '84f72d8b37b7d15c257faed036b76c737eec780b', class: "divider" }), h("div", { key: '1b88f48f51afe3fceb57920c3d17f586e848a25f', class: "size" }, getFileSize(this.size))))));
1306
1357
  }
1307
1358
  };
1308
1359
  __decorate$9([
@@ -1358,7 +1409,7 @@ const RtkFilePickerButton = class {
1358
1409
  render() {
1359
1410
  const label = this.label || this.t('chat.send_file');
1360
1411
  const icon = this.iconPack[this.icon];
1361
- return (h("rtk-tooltip", { key: '78ef1fd3a42656601c94561bbfc63f888d8180d3', label: label }, h("rtk-button", { key: 'a0a82e689c2e3a344936db1b3253e36def3a0ce5', variant: "ghost", kind: "icon", onClick: () => this.uploadFile(), title: label }, h("rtk-icon", { key: '1651a9f460e3851ff5296f05cf08554f9da21703', icon: icon }))));
1412
+ return (h("rtk-tooltip", { key: '057a0a5a714dbbde228e3481e53adea4f88fb3ad', label: label }, h("rtk-button", { key: '04193df1053b14687fb9464a122b9158707bdda1', variant: "ghost", kind: "icon", onClick: () => this.uploadFile(), title: label }, h("rtk-icon", { key: 'ed2fce30b93dfce9dd6b967d5993c93496cf3388', icon: icon }))));
1362
1413
  }
1363
1414
  };
1364
1415
  __decorate$8([
@@ -1389,7 +1440,7 @@ const RtkIcon = class {
1389
1440
  this.size = 'lg';
1390
1441
  }
1391
1442
  render() {
1392
- return (h(Host, { key: 'fbacb1ee3dd4c1ca7aa612f08e938601df73036c' }, h("div", { key: '04c026967cb7aa3acb3fba09fcf5b0d33f45e2b0', class: "icon-wrapper", innerHTML: parseIcon(this.icon), part: "wrapper" })));
1443
+ return (h(Host, { key: 'fdbe6fd9647bae7cfdf02ba6a250aa3c0c39ad85' }, h("div", { key: '114baca2f9ce9376e69073b40170473cc359915f', class: "icon-wrapper", innerHTML: parseIcon(this.icon), part: "wrapper" })));
1393
1444
  }
1394
1445
  };
1395
1446
  RtkIcon.style = RtkIconStyle0;
@@ -1418,7 +1469,7 @@ const RtkImageMessageView = class {
1418
1469
  this.status = 'loading';
1419
1470
  }
1420
1471
  render() {
1421
- return (h("div", { key: '47b2dd8f8dfc0d2aa20e80b513f802e1ebc09153', class: { image: true, loaded: this.status === 'loaded' } }, h("img", { key: 'fba4cfc015beb86040ec74b2a44e2163744a67c6', src: sanitizeLink(this.url), onLoad: () => {
1472
+ return (h("div", { key: '066606e6ae62634b2466bb46b453e0c2d91b17ea', class: { image: true, loaded: this.status === 'loaded' } }, h("img", { key: 'f042e5d3c1a6341e9fc0845e6643016f1be5b5f7', src: sanitizeLink(this.url), onLoad: () => {
1422
1473
  this.status = 'loaded';
1423
1474
  }, onError: () => {
1424
1475
  this.status = 'errored';
@@ -1426,9 +1477,9 @@ const RtkImageMessageView = class {
1426
1477
  if (this.status === 'loaded') {
1427
1478
  this.onPreview.emit(this.url);
1428
1479
  }
1429
- } }), this.status === 'loading' && (h("div", { key: '4da0a3ab39d782e9affe7702a19232747bb4581c', class: "image-spinner", title: this.t('chat.img.loading'), "aria-label": this.t('chat.img.loading') }, h("rtk-spinner", { key: 'dea7afe2c92dd5c7c71620bc7b9089f743ef1aa2', iconPack: this.iconPack }))), this.status === 'errored' && (h("div", { key: 'ab303ce11b7182d20c64b00638a1c8be59aea774', class: "image-errored", title: this.t('chat.error.img_not_found'), "aria-label": this.t('chat.error.img_not_found') }, h("rtk-icon", { key: 'e14eb63cc4b2d18a5abd921e25ef305095f61c17', icon: this.iconPack.image_off }))), this.status === 'loaded' && (h("div", { key: 'ccceaa5cc5821ce9b4ddab742001cee78135636a', class: "actions" }, h("rtk-button", { key: 'de49516247d9655cc74afcd58bc50771e2594dca', class: "action", variant: "secondary", kind: "icon", onClick: () => {
1480
+ } }), this.status === 'loading' && (h("div", { key: 'd4a5030468fbf70afae62bd55ae4d0fa989e15c2', class: "image-spinner", title: this.t('chat.img.loading'), "aria-label": this.t('chat.img.loading') }, h("rtk-spinner", { key: '216aba361a46cc100e7d26cc2daf1ffb0948d695', iconPack: this.iconPack }))), this.status === 'errored' && (h("div", { key: '01f5da8f70872c9fa22dc9a9b70b046b0001d05b', class: "image-errored", title: this.t('chat.error.img_not_found'), "aria-label": this.t('chat.error.img_not_found') }, h("rtk-icon", { key: '0f7e6fed2730f6366d07fc6afddb2b247e9b7d3a', icon: this.iconPack.image_off }))), this.status === 'loaded' && (h("div", { key: '5ac0e61c65a88a8d6b9ee54c900b856854d1b84b', class: "actions" }, h("rtk-button", { key: 'fd83dfecd7b5d9c3976374c3c55731b1f026fc0a', class: "action", variant: "secondary", kind: "icon", onClick: () => {
1430
1481
  this.onPreview.emit(this.url);
1431
- } }, h("rtk-icon", { key: 'bd1ea608e4846d994a418236dca7856570bd689d', icon: this.iconPack.full_screen_maximize })), h("rtk-button", { key: '266a860a4ab4d6cf76bd89bb35c987efbc89a593', class: "action", variant: "secondary", kind: "icon", onClick: () => downloadFile(this.url, { fallbackName: 'image' }) }, h("rtk-icon", { key: 'ec26862ff95e116d519280c7e62ed7a7e1ede273', icon: this.iconPack.download }))))));
1482
+ } }, h("rtk-icon", { key: '3ca7384fa28e6716345acacf9225ae9471ff8d63', icon: this.iconPack.full_screen_maximize })), h("rtk-button", { key: '198787808c389e4df48d3609a53c2d27cf2e7fb3', class: "action", variant: "secondary", kind: "icon", onClick: () => downloadFile(this.url, { fallbackName: 'image' }) }, h("rtk-icon", { key: 'f38fe3da48d1fc854001c719164c95f0673808c5', icon: this.iconPack.download }))))));
1432
1483
  }
1433
1484
  };
1434
1485
  __decorate$7([
@@ -1519,7 +1570,7 @@ const RtkMarkdownView = class {
1519
1570
  const slicedMessage = this.text.slice(0, this.maxLength);
1520
1571
  const withReply = extractReplyBlock(slicedMessage, true);
1521
1572
  const withoutReply = stripOutReplyBlock(slicedMessage);
1522
- return (h("p", { key: 'c33735507a0798dffc360f01793bc7b0caaac159' }, withReply.length !== 0 && h("blockquote", { key: 'c0a4271ee4c843b6e73c8300a8026a3ec8dd5fe3' }, this.renderMessage(withReply)), withoutReply.length !== 0 && this.renderMessage(withoutReply)));
1573
+ return (h("p", { key: '787e6d3177f4faf1c8dcd7c73d83a6de9c57b42b' }, withReply.length !== 0 && h("blockquote", { key: '1c4b82fb870994e6707d35adcd5e6f2f0e65dd26' }, this.renderMessage(withReply)), withoutReply.length !== 0 && this.renderMessage(withoutReply)));
1523
1574
  }
1524
1575
  };
1525
1576
  RtkMarkdownView.style = RtkMarkdownViewStyle0;
@@ -1606,6 +1657,8 @@ const RtkMeeting = class {
1606
1657
  this.gridLayout = 'row';
1607
1658
  /** Icon pack */
1608
1659
  this.iconPack = defaultIconPack;
1660
+ /** UI Kit Overrides */
1661
+ this.overrides = defaultOverrides;
1609
1662
  this.handleChangingMeeting = (destinationMeetingId) => {
1610
1663
  const currentStates = (this.peerStore || uiStore).state.states;
1611
1664
  this.updateStates({
@@ -1634,6 +1687,7 @@ const RtkMeeting = class {
1634
1687
  this.iconPackChanged(this.iconPack);
1635
1688
  this.tChanged(this.t);
1636
1689
  this.configChanged(this.config);
1690
+ this.overridesChanged(this.overrides);
1637
1691
  this.resizeObserver = new index(() => this.handleResize());
1638
1692
  this.resizeObserver.observe(this.host);
1639
1693
  if (this.applyDesignSystem &&
@@ -1718,6 +1772,7 @@ const RtkMeeting = class {
1718
1772
  iconPack: this.iconPack,
1719
1773
  t: this.t,
1720
1774
  providerId: this.providerId,
1775
+ overrides: deepMerge(Object.assign({}, defaultOverrides), this.overrides),
1721
1776
  });
1722
1777
  // Notify components that peer specific store is now available
1723
1778
  document.dispatchEvent(new CustomEvent('rtkPeerStoreReady', {
@@ -1789,6 +1844,11 @@ const RtkMeeting = class {
1789
1844
  provideRtkDesignSystem(document.documentElement, config.designTokens);
1790
1845
  }
1791
1846
  }
1847
+ overridesChanged(overrides) {
1848
+ if (this.peerStore) {
1849
+ this.peerStore.state.overrides = deepMerge(Object.assign({}, defaultOverrides), overrides);
1850
+ }
1851
+ }
1792
1852
  handleResize() {
1793
1853
  this.size = getSize(this.host.clientWidth);
1794
1854
  }
@@ -1831,7 +1891,8 @@ const RtkMeeting = class {
1831
1891
  "meeting": ["meetingChanged"],
1832
1892
  "iconPack": ["iconPackChanged"],
1833
1893
  "t": ["tChanged"],
1834
- "config": ["configChanged"]
1894
+ "config": ["configChanged"],
1895
+ "overrides": ["overridesChanged"]
1835
1896
  }; }
1836
1897
  };
1837
1898
  RtkMeeting.style = RtkMeetingStyle0;
@@ -1890,7 +1951,7 @@ const RtkMenu$1 = class {
1890
1951
  });
1891
1952
  }
1892
1953
  render() {
1893
- return (h(Host, { key: 'b019210ff85bde38c61855f8ac38aa8b927aa857' }, h("span", { key: '14f689eed0672642c3a181ee5d197d7a9b5c00a8', id: "trigger", ref: (el) => (this.triggerEl = el), onClick: () => {
1954
+ return (h(Host, { key: '15461c803838be1651df6116a61598ce8ab988f9' }, h("span", { key: 'f36cdd2f1141f46a993daa880682382904a72509', id: "trigger", ref: (el) => (this.triggerEl = el), onClick: () => {
1894
1955
  this.clickedThis = true;
1895
1956
  if (this.menuListEl.style.display !== 'block') {
1896
1957
  this.menuListEl.style.display = 'block';
@@ -1899,7 +1960,7 @@ const RtkMenu$1 = class {
1899
1960
  else {
1900
1961
  this.menuListEl.style.display = 'none';
1901
1962
  }
1902
- } }, h("slot", { key: 'f1ab2111e0ad309df5b38e4f189d821b8ab50a4a', name: "trigger" })), h("span", { key: 'ec03b8c7ff60dd21dce3bc1f9b473ab59ec37ace', part: "menu-list", id: "menu-list", ref: (el) => (this.menuListEl = el) }, h("slot", { key: 'bc05fba324ccf4360340b070c8d4f3723a72cf6e' }))));
1963
+ } }, h("slot", { key: 'af622c9dbb3394cb46a6bb909a45c5e3248b1a09', name: "trigger" })), h("span", { key: '445258e31b4b775fbc22b268234fe15a33f809c9', part: "menu-list", id: "menu-list", ref: (el) => (this.menuListEl = el) }, h("slot", { key: '87396622c6078253736cbe43a1cac55c6f90754f' }))));
1903
1964
  }
1904
1965
  };
1905
1966
  __decorate$6([
@@ -1910,7 +1971,7 @@ __decorate$6([
1910
1971
  ], RtkMenu$1.prototype, "t", void 0);
1911
1972
  RtkMenu$1.style = RtkMenuStyle0;
1912
1973
 
1913
- const rtkMenuItemCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}:host{display:flex;align-items:center;padding-left:var(--rtk-space-3, 12px);padding-right:var(--rtk-space-3, 12px);padding-top:var(--rtk-space-2, 8px);padding-bottom:var(--rtk-space-2, 8px);cursor:pointer;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;color:rgb(var(--rtk-colors-text-1000, 255 255 255));font-size:14px}::slotted([slot='start']){margin-right:var(--rtk-space-2, 8px)}::slotted([slot='end']){margin-left:var(--rtk-space-2, 8px)}:host(:hover){--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}:host(.red){--tw-text-opacity:1;color:rgba(var(--rtk-colors-danger, 255 45 45) / var(--tw-text-opacity))}";
1974
+ const rtkMenuItemCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}:host{display:flex;align-items:center;padding-left:var(--rtk-space-3, 12px);padding-right:var(--rtk-space-3, 12px);padding-top:var(--rtk-space-2, 8px);padding-bottom:var(--rtk-space-2, 8px);cursor:pointer;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;color:rgb(var(--rtk-colors-text-1000, 255 255 255));font-size:14px}::slotted([slot='start']){margin-right:var(--rtk-space-2, 8px)}::slotted([slot='end']){margin-left:var(--rtk-space-2, 8px)}:host(:hover){--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-900, 26 26 26) / var(--tw-bg-opacity))}:host(.primary:hover){--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-bg-opacity))}:host(.red){--tw-text-opacity:1;color:rgba(var(--rtk-colors-danger, 255 45 45) / var(--tw-text-opacity))}";
1914
1975
  const RtkMenuItemStyle0 = rtkMenuItemCss;
1915
1976
 
1916
1977
  var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -1926,13 +1987,15 @@ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators,
1926
1987
  const RtkMenuItem = class {
1927
1988
  constructor(hostRef) {
1928
1989
  registerInstance(this, hostRef);
1990
+ /** Variant */
1991
+ this.menuVariant = 'secondary';
1929
1992
  /** Icon pack */
1930
1993
  this.iconPack = defaultIconPack;
1931
1994
  /** Language */
1932
1995
  this.t = useLanguage();
1933
1996
  }
1934
1997
  render() {
1935
- return (h(Host, { key: 'a5c802aa2cb8cb235dc1e68d54ec9703c57df0b9' }, h("slot", { key: 'b448160fdd220fd814d471ddc08d7f784af10c49', name: "start" }), h("slot", { key: '0b342d2547a7835ea23d1974c3fd1b2e3507e779' }), h("slot", { key: '6670a8ed947d2bd6fb1651e9c6c1cd52f5ca419c', name: "end" })));
1998
+ return (h(Host, { key: '8679dae05e846bb8b83a1dbc9580aa2dcad18ccd', class: { [this.menuVariant]: true } }, h("slot", { key: 'da53376b8188bfc47f904d348212fedff932b03a', name: "start" }), h("slot", { key: '4394a3afa13bd298880c1be5255f5a004c5ed42e' }), h("slot", { key: '2be62c70172912e6516ce207b571ea4794aa4f6c', name: "end" })));
1936
1999
  }
1937
2000
  };
1938
2001
  __decorate$5([
@@ -1943,7 +2006,7 @@ __decorate$5([
1943
2006
  ], RtkMenuItem.prototype, "t", void 0);
1944
2007
  RtkMenuItem.style = RtkMenuItemStyle0;
1945
2008
 
1946
- const rtkMenuListCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}:host{display:flex;width:-moz-max-content;width:max-content;flex-direction:column;padding-top:var(--rtk-space-2, 8px);padding-bottom:var(--rtk-space-2, 8px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-1000, 255 255 255));overflow:hidden;border-radius:var(--rtk-border-radius-sm, 4px);--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}";
2009
+ const rtkMenuListCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}:host{display:flex;width:-moz-max-content;width:max-content;flex-direction:column;padding:var(--rtk-space-0, 0px);color:rgb(var(--rtk-colors-text-1000, 255 255 255));border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-1000, 8 8 8) / var(--tw-bg-opacity));overflow:hidden;border-radius:var(--rtk-border-radius-sm, 4px);--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);-webkit-backdrop-filter:blur(60px);backdrop-filter:blur(60px)}:host(.primary){--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-brand-600, 13 81 253) / var(--tw-border-opacity));background-color:rgba(var(--rtk-colors-brand-300, 73 124 253) / 0.3)}";
1947
2010
  const RtkMenuListStyle0 = rtkMenuListCss;
1948
2011
 
1949
2012
  var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -1961,11 +2024,13 @@ const RtkMenuList = class {
1961
2024
  registerInstance(this, hostRef);
1962
2025
  /** Icon pack */
1963
2026
  this.iconPack = defaultIconPack;
2027
+ /** Variant */
2028
+ this.menuVariant = 'secondary';
1964
2029
  /** Language */
1965
2030
  this.t = useLanguage();
1966
2031
  }
1967
2032
  render() {
1968
- return (h(Host, { key: '1357690e48bef0c8c0e953886f1fd7754f0e4e4d' }, h("slot", { key: 'f3a221b7a4d28f53add6b658a0510294a998d6c1' })));
2033
+ return (h(Host, { key: 'b743da0bae39c93cff7896968a64c84166b8a751', class: { [this.menuVariant]: true } }, h("slot", { key: '46ca973e68fccbf5c8c7544f61bb9745840d0054' })));
1969
2034
  }
1970
2035
  };
1971
2036
  __decorate$4([
@@ -1976,7 +2041,7 @@ __decorate$4([
1976
2041
  ], RtkMenuList.prototype, "t", void 0);
1977
2042
  RtkMenuList.style = RtkMenuListStyle0;
1978
2043
 
1979
- const rtkMessageViewCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}.scrollbar{scrollbar-width:thin;scrollbar-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar{height:var(--rtk-space-1\\.5, 6px);width:var(--rtk-space-1\\.5, 6px);border-radius:9999px;background-color:var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))}:host{max-width:var(--rtk-space-96, 384px)}.message-wrapper{display:flex;flex-direction:row-reverse;align-items:flex-start;gap:var(--rtk-space-2, 8px)}.message-wrapper.incoming{flex-direction:row}.message{display:flex;flex-direction:column;align-items:flex-end}.incoming .message{display:flex;flex-direction:column;align-items:flex-start}.header{margin-top:var(--rtk-space-1, 4px);margin-bottom:var(--rtk-space-1, 4px);align-self:flex-end;color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));font-size:12px;font-weight:600}.incoming .header{align-self:flex-start}.body{display:flex;flex-direction:column;min-width:var(--rtk-space-24, 96px);font-family:var(--rtk-font-family, sans-serif);color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));font-size:14px;line-height:1.375;position:relative}.bubble{max-width:90%;padding:var(--rtk-space-2, 8px);border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-brand-600, 13 81 253) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));border-radius:var(--rtk-border-radius-md, 8px)}.incoming .bubble{--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88))}.metadata{margin-top:var(--rtk-space-2, 8px);align-self:flex-end;font-size:10px;color:rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76))}.avatar{display:none}rtk-menu{position:absolute;right:var(--rtk-space-0, 0px);top:var(--rtk-space-0, 0px);border-radius:var(--rtk-border-radius-lg, 12px)}rtk-menu rtk-icon{height:var(--rtk-space-4, 16px);width:var(--rtk-space-4, 16px);cursor:pointer}.actions{display:flex;align-items:center;justify-content:center;padding-left:var(--rtk-space-2, 8px);padding-bottom:var(--rtk-space-2, 8px);padding-top:var(--rtk-space-1, 4px);padding-right:var(--rtk-space-1, 4px);border-radius:var(--rtk-border-radius-md, 8px);border-width:var(--rtk-border-width-none, 0);border-style:none;background:radial-gradient(\n at top right,\n rgb(var(--rtk-colors-brand-300, 73 124 253)) 60%,\n rgba(255, 255, 255, 0) 80%\n )}.actions rtk-icon{height:var(--rtk-space-4, 16px);width:var(--rtk-space-4, 16px);color:rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)))}.incoming .actions{background:radial-gradient(\n at top right,\n rgb(var(--rtk-colors-background-800, 30 30 30)) 60%,\n rgba(255, 255, 255, 0) 80%\n )}.incoming .actions rtk-icon{color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88))}.incoming rtk-avatar{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88))}@media (min-width: 400px){.avatar{display:flex;width:var(--rtk-space-6, 24px)}.avatar rtk-avatar{height:var(--rtk-space-6, 24px);width:var(--rtk-space-6, 24px);font-size:10px;overflow:clip;border-radius:9999px}}@media (hover: hover){rtk-menu{visibility:hidden}.body:hover rtk-menu{visibility:visible}}";
2044
+ const rtkMessageViewCss = ":host{line-height:initial;font-family:var(--rtk-font-family, sans-serif);font-feature-settings:normal;font-variation-settings:normal}p{margin:var(--rtk-space-0, 0px);padding:var(--rtk-space-0, 0px)}.scrollbar{scrollbar-width:thin;scrollbar-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar{height:var(--rtk-space-1\\.5, 6px);width:var(--rtk-space-1\\.5, 6px);border-radius:9999px;background-color:var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))}:host{max-width:var(--rtk-space-96, 384px)}.message-wrapper{display:flex;flex-direction:row-reverse;align-items:flex-start;gap:var(--rtk-space-2, 8px)}.message-wrapper.incoming{flex-direction:row}.message{display:flex;flex-direction:column;align-items:flex-end}.incoming .message{display:flex;flex-direction:column;align-items:flex-start}.header{margin-top:var(--rtk-space-1, 4px);margin-bottom:var(--rtk-space-1, 4px);align-self:flex-end;color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));font-size:12px;font-weight:600}.incoming .header{align-self:flex-start}.body{display:flex;flex-direction:column;min-width:var(--rtk-space-24, 96px);font-family:var(--rtk-font-family, sans-serif);color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));font-size:14px;line-height:1.375;position:relative}.bubble{max-width:90%;padding:var(--rtk-space-2, 8px);border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-brand-600, 13 81 253) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)));border-radius:var(--rtk-border-radius-md, 8px)}.incoming .bubble{--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88))}.metadata{margin-top:var(--rtk-space-2, 8px);display:flex;flex-direction:row;align-items:center;gap:var(--rtk-space-1, 4px);align-self:flex-end;font-size:11px;color:rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76))}.metadata-content{display:flex;flex-direction:row;align-items:center;gap:var(--rtk-space-1, 4px)}.avatar{display:none}rtk-menu{position:absolute;right:var(--rtk-space-1, 4px);top:var(--rtk-space-1, 4px);border-radius:var(--rtk-border-radius-lg, 12px)}rtk-menu rtk-icon{height:var(--rtk-space-4, 16px);width:var(--rtk-space-4, 16px);cursor:pointer}.actions{display:flex;align-items:center;justify-content:center;border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-brand-600, 13 81 253) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-bg-opacity));padding:var(--rtk-space-1, 4px);border-radius:var(--rtk-border-radius-md, 8px);border-width:var(--rtk-border-width-none, 0);border-style:none}.actions rtk-icon{height:var(--rtk-space-4, 16px);width:var(--rtk-space-4, 16px);color:rgb(var(--rtk-colors-text-on-brand-1000, var(--rtk-colors-text-1000, 255 255 255)))}.incoming rtk-avatar{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88))}.incoming .actions{--tw-border-opacity:1;border-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-1000, 8 8 8) / var(--tw-bg-opacity))}@media (min-width: 400px){.avatar{display:flex;width:var(--rtk-space-6, 24px)}.avatar rtk-avatar{height:var(--rtk-space-6, 24px);width:var(--rtk-space-6, 24px);font-size:10px;overflow:clip;border-radius:9999px}}@media (hover: hover){rtk-menu{visibility:hidden}.body:hover rtk-menu{visibility:visible}}";
1980
2045
  const RtkMessageViewStyle0 = rtkMessageViewCss;
1981
2046
 
1982
2047
  var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -1997,6 +2062,8 @@ const RtkMessageView = class {
1997
2062
  this.actions = [];
1998
2063
  /** Appearance */
1999
2064
  this.variant = 'bubble';
2065
+ /** Is message pinned */
2066
+ this.pinned = false;
2000
2067
  /** Render */
2001
2068
  this.viewType = 'outgoing';
2002
2069
  /** Hides avatar */
@@ -2011,10 +2078,14 @@ const RtkMessageView = class {
2011
2078
  this.iconPack = defaultIconPack;
2012
2079
  }
2013
2080
  renderActions() {
2014
- return (h("rtk-menu", { placement: "top-end", offset: 1 }, h("button", { slot: "trigger", class: "actions" }, h("rtk-icon", { icon: this.iconPack.chevron_down })), h("rtk-menu-list", null, this.actions.map((action) => (h("rtk-menu-item", { onClick: () => this.onAction.emit(action.id) }, action.icon && h("rtk-icon", { icon: action.icon, slot: "start" }), action.label))))));
2081
+ return (h("rtk-menu", { placement: this.isSelf ? 'bottom-start' : 'bottom-end', offset: 1 }, h("button", { slot: "trigger", class: "actions" }, h("rtk-icon", { icon: this.iconPack.chevron_down })), h("rtk-menu-list", { menuVariant: this.isSelf ? 'primary' : 'secondary' }, this.actions.map((action) => {
2082
+ if (action.id === 'edit_message' && this.messageType !== 'text')
2083
+ return;
2084
+ return (h("rtk-menu-item", { menuVariant: this.isSelf ? 'primary' : 'secondary', onClick: () => this.onAction.emit(action.id) }, action.icon && h("rtk-icon", { icon: action.icon, slot: "start" }), action.label));
2085
+ }))));
2015
2086
  }
2016
2087
  render() {
2017
- return (h(Host, { key: '61882011f477f816296277a4f2d5622d224e47f0' }, h("div", { key: 'ae21bfc0c499879da6a2167f0cad5203475de696', class: { 'message-wrapper': true, [this.viewType]: true } }, !this.hideAvatar && (h("aside", { key: '73b10ebb1dccdc4e2c9258f185eb14f07d11d542', class: "avatar", part: "avatar" }, h("rtk-avatar", { key: 'e07971bf9d7738fb2dcc015d339a13d5dca7c6f7', participant: { name: this.authorName, picture: this.avatarUrl }, size: "sm" }))), h("div", { key: '1e24801f717589e598c4160bea7ab10a59acfcc2', class: "message", part: "message" }, !this.hideAuthorName && (h("div", { key: '3178f750ad798b7d83508f82ead36ee5407fee4c', class: "header" }, this.authorName, " ", this.isSelf ? ' (You)' : '')), h("div", { key: '056445ef0c557d7d756330df5778ad8bc2d41e60', class: { body: true, bubble: this.variant === 'bubble' } }, h("slot", { key: '6d5486666ce2238e4387c2621d562b24704a9317' }), !this.hideMetadata && !!this.time && (h("div", { key: '1d4b9bdbb3aaf288dce4b43a31354df3d413b2b4', class: "metadata", title: formatDateTime(this.time) }, elapsedDuration(this.time, new Date(Date.now())))), this.actions.length !== 0 && this.renderActions())))));
2088
+ return (h(Host, { key: '4ea54e7662406a5a3897295972506c043d54598c' }, h("div", { key: 'e8734f99436b9bd16b8c7a801dfb018eb5e07f20', class: { 'message-wrapper': true, [this.viewType]: true } }, !this.hideAvatar && (h("aside", { key: 'ad92c5ee28a635070e5fe2517dd2c01185082f88', class: "avatar", part: "avatar" }, h("rtk-avatar", { key: '7da7496c3613a2280dc5fb1ba383790eb7efacf5', participant: { name: this.authorName, picture: this.avatarUrl }, size: "sm" }))), h("div", { key: '969bc1103c403ea477147d34cd0992114a713d70', class: "message", part: "message" }, !this.hideAuthorName && (h("div", { key: 'b99ea9217f1b641e67e509bba4c56d936e2af7b0', class: "header" }, this.authorName, " ", this.isSelf ? ' (You)' : '')), h("div", { key: '2dad045ba207872c932a38ab4c52e3b0e25af024', class: { body: true, bubble: this.variant === 'bubble' } }, h("slot", { key: '64e80b06045b8e624df64090b5104e828ccc130e' }), !this.hideMetadata && !!this.time && (h("div", { key: 'b362dd31d38f3729da45be1150c34a1cea2cd394', class: "metadata", title: formatDateTime(this.time) }, this.pinned && (h("span", { key: '70940e475a08ba64a53300516c64f23549a0b856', class: "metadata-content" }, h("rtk-icon", { key: 'be9561043f9c0814ae38d9eeadf2ff1c5ccae52c', icon: this.iconPack.pin, size: "sm" }), " \u2022")), this.isEdited && (h("span", { key: '0abe565d472751a6a341ca6beaf9fc6d50f2f3e0', class: "metadata-content" }, h("span", { key: 'e89ebd6a787ad2c1d7961209f9052e31e374eec3' }, "Edited"), " \u2022")), elapsedDuration(this.time, new Date(Date.now())))), this.actions.length !== 0 && this.renderActions())))));
2018
2089
  }
2019
2090
  };
2020
2091
  __decorate$3([
@@ -2022,9 +2093,35 @@ __decorate$3([
2022
2093
  ], RtkMessageView.prototype, "iconPack", void 0);
2023
2094
  RtkMessageView.style = RtkMessageViewStyle0;
2024
2095
 
2025
- const rtkPaginatedListCss = ".scrollbar{scrollbar-width:thin;scrollbar-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar{height:var(--rtk-space-1\\.5, 6px);width:var(--rtk-space-1\\.5, 6px);border-radius:9999px;background-color:var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))}:host{position:relative;display:flex;flex-direction:column;flex:1}.container{box-sizing:border-box;display:flex;flex-direction:column-reverse;padding-top:var(--rtk-space-4, 16px);padding-bottom:var(--rtk-space-4, 16px);padding-left:var(--rtk-space-2, 8px);padding-right:var(--rtk-space-2, 8px);flex:1 0 0px;overflow-y:scroll}.file-picker{display:none}.chat *:first-child{margin-top:var(--rtk-space-0, 0px)}.chat .head{display:flex;align-items:center}.chat .head .name{margin-right:var(--rtk-space-4, 16px);font-size:12px;font-weight:700}.chat .head .time{font-size:12px;color:rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76))}.chat .body{margin-top:var(--rtk-space-2, 8px);margin-bottom:var(--rtk-space-2, 8px);overflow-wrap:break-word;font-size:14px;line-height:1.375}.chat .body .emoji{font-size:24px}p{margin-top:var(--rtk-space-0, 0px);margin-bottom:var(--rtk-space-3, 12px)}rtk-text-message,rtk-image-message,rtk-file-message{margin-top:var(--rtk-space-4, 16px);display:block;padding-left:var(--rtk-space-3, 12px);padding-right:var(--rtk-space-3, 12px);font-family:var(--rtk-font-family, sans-serif);color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));box-sizing:border-box}*[is-continued]{margin-top:var(--rtk-space-3, 12px)}rtk-text-message[is-continued]{margin-top:var(--rtk-space-2, 8px)}.chat .image{position:relative;height:var(--rtk-space-40, 160px);max-width:var(--rtk-space-64, 256px);cursor:pointer}.chat .image img{display:none;height:100%;width:100%;border-radius:var(--rtk-border-radius-sm, 4px);-o-object-fit:cover;object-fit:cover}.chat .image .image-spinner{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity))}.chat .image .image-spinner rtk-spinner{--tw-text-opacity:1;color:rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-text-opacity))}.chat .image .image-errored{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--rtk-border-radius-sm, 4px);background-color:rgba(var(--rtk-colors-danger, 255 45 45) / 0.1);--tw-text-opacity:1;color:rgba(var(--rtk-colors-danger, 255 45 45) / var(--tw-text-opacity))}.chat .image .actions{display:none;height:var(--rtk-space-8, 32px);align-items:center;position:absolute;top:var(--rtk-space-2, 8px);right:var(--rtk-space-2, 8px);border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-900, 26 26 26) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-1000, 255 255 255));overflow:hidden;--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.chat .image .actions .action{height:var(--rtk-space-8, 32px);width:var(--rtk-space-8, 32px);border-radius:var(--rtk-border-radius-none, 0);border-width:var(--rtk-border-width-none, 0);border-style:none;background-color:transparent;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.chat .image .actions .action:hover{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}.image.loaded img{display:block}.image.loaded .image-spinner{display:none}.image:hover .actions,.image:focus .actions{display:flex}.chat .file{display:flex;align-items:center;gap:var(--rtk-space-1, 4px);padding-left:var(--rtk-space-2, 8px);padding-right:var(--rtk-space-2, 8px);padding-top:var(--rtk-space-1\\.5, 6px);padding-bottom:var(--rtk-space-1\\.5, 6px);border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-700, 255 255 255 / 0.64))}.chat .file .file-data{flex:1 1 0%}.chat .file .file-data .name{word-break:break-all;color:rgb(var(--rtk-colors-text-1000, 255 255 255));overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chat .file .file-data .file-data-split{margin-top:var(--rtk-space-0\\.5, 2px);display:flex;align-items:center;font-size:12px}.chat .file .file-data .file-data-split .ext{margin-right:var(--rtk-space-2, 8px);text-transform:uppercase;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chat .file .file-data .file-data-split .divider{height:var(--rtk-space-4, 16px);width:var(--rtk-space-0\\.5, 2px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}.chat .file .file-data .file-data-split .size{margin-left:var(--rtk-space-2, 8px)}.smallest-dom-element{width:1px}#top-scroll{transform:translateY(20vh)}#bottom-scroll{transform:translateY(-20vh)}a{--tw-text-opacity:1;color:rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-text-opacity));text-decoration-line:none}a:hover{text-decoration-line:underline}.show-new-messages-ctr{pointer-events:none;position:absolute;bottom:var(--rtk-space-2, 8px);right:var(--rtk-space-4, 16px);z-index:10;margin-top:calc(var(--rtk-space-14, 56px) * -1);--tw-translate-y:var(--rtk-space-28, 112px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:0;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.show-new-messages-ctr.active{--tw-translate-y:var(--rtk-space-0, 0px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:1}.show-new-messages{pointer-events:auto;border-radius:9999px}.show-new-messages:hover{border-radius:9999px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-ring-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}rtk-spinner,.empty-list{margin:auto}.page-wrapper{margin-left:var(--rtk-space-1, 4px);margin-right:var(--rtk-space-1, 4px)}.message-wrapper{margin-bottom:var(--rtk-space-2, 8px)}.pinned .message-wrapper{position:relative}.pinned .pin-icon{position:absolute;right:calc(var(--rtk-space-1, 4px) * -1);top:calc(var(--rtk-space-1, 4px) * -1);display:flex;border-radius:var(--rtk-border-radius-sm, 4px)}.pinned rtk-message-view{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));padding-top:var(--rtk-space-1, 4px);padding-bottom:var(--rtk-space-1, 4px)}.load-more-on-top-container{pointer-events:none;position:absolute;top:var(--rtk-space-2, 8px);right:var(--rtk-space-4, 16px);z-index:10}.load-more-icon{pointer-events:auto;border-radius:9999px}.load-more-icon:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-ring-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}";
2096
+ const rtkPaginatedListCss = ".scrollbar{scrollbar-width:thin;scrollbar-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))\n var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar{height:var(--rtk-space-1\\.5, 6px);width:var(--rtk-space-1\\.5, 6px);border-radius:9999px;background-color:var(--rtk-scrollbar-background, transparent)}.scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--rtk-scrollbar-color, rgb(var(--rtk-colors-background-600, 60 60 60)))}:host{position:relative;display:flex;flex-direction:column;flex:1}.container{box-sizing:border-box;display:flex;flex-direction:column-reverse;padding-top:var(--rtk-space-4, 16px);padding-bottom:var(--rtk-space-4, 16px);padding-left:var(--rtk-space-2, 8px);padding-right:var(--rtk-space-2, 8px);flex:1 0 0px;overflow-y:scroll}.file-picker{display:none}.chat *:first-child{margin-top:var(--rtk-space-0, 0px)}.chat .head{display:flex;align-items:center}.chat .head .name{margin-right:var(--rtk-space-4, 16px);font-size:12px;font-weight:700}.chat .head .time{font-size:12px;color:rgb(var(--rtk-colors-text-800, 255 255 255 / 0.76))}.chat .body{margin-top:var(--rtk-space-2, 8px);margin-bottom:var(--rtk-space-2, 8px);overflow-wrap:break-word;font-size:14px;line-height:1.375}.chat .body .emoji{font-size:24px}p{margin-top:var(--rtk-space-0, 0px);margin-bottom:var(--rtk-space-3, 12px)}rtk-text-message,rtk-image-message,rtk-file-message{margin-top:var(--rtk-space-4, 16px);display:block;padding-left:var(--rtk-space-3, 12px);padding-right:var(--rtk-space-3, 12px);font-family:var(--rtk-font-family, sans-serif);color:rgb(var(--rtk-colors-text-900, 255 255 255 / 0.88));box-sizing:border-box}*[is-continued]{margin-top:var(--rtk-space-3, 12px)}rtk-text-message[is-continued]{margin-top:var(--rtk-space-2, 8px)}.chat .image{position:relative;height:var(--rtk-space-40, 160px);max-width:var(--rtk-space-64, 256px);cursor:pointer}.chat .image img{display:none;height:100%;width:100%;border-radius:var(--rtk-border-radius-sm, 4px);-o-object-fit:cover;object-fit:cover}.chat .image .image-spinner{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-800, 30 30 30) / var(--tw-bg-opacity))}.chat .image .image-spinner rtk-spinner{--tw-text-opacity:1;color:rgba(var(--rtk-colors-brand-500, 33 96 253) / var(--tw-text-opacity))}.chat .image .image-errored{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--rtk-border-radius-sm, 4px);background-color:rgba(var(--rtk-colors-danger, 255 45 45) / 0.1);--tw-text-opacity:1;color:rgba(var(--rtk-colors-danger, 255 45 45) / var(--tw-text-opacity))}.chat .image .actions{display:none;height:var(--rtk-space-8, 32px);align-items:center;position:absolute;top:var(--rtk-space-2, 8px);right:var(--rtk-space-2, 8px);border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-900, 26 26 26) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-1000, 255 255 255));overflow:hidden;--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.chat .image .actions .action{height:var(--rtk-space-8, 32px);width:var(--rtk-space-8, 32px);border-radius:var(--rtk-border-radius-none, 0);border-width:var(--rtk-border-width-none, 0);border-style:none;background-color:transparent;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.chat .image .actions .action:hover{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}.image.loaded img{display:block}.image.loaded .image-spinner{display:none}.image:hover .actions,.image:focus .actions{display:flex}.chat .file{display:flex;align-items:center;gap:var(--rtk-space-1, 4px);padding-left:var(--rtk-space-2, 8px);padding-right:var(--rtk-space-2, 8px);padding-top:var(--rtk-space-1\\.5, 6px);padding-bottom:var(--rtk-space-1\\.5, 6px);border-radius:var(--rtk-border-radius-sm, 4px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));color:rgb(var(--rtk-colors-text-700, 255 255 255 / 0.64))}.chat .file .file-data{flex:1 1 0%}.chat .file .file-data .name{word-break:break-all;color:rgb(var(--rtk-colors-text-1000, 255 255 255));overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chat .file .file-data .file-data-split{margin-top:var(--rtk-space-0\\.5, 2px);display:flex;align-items:center;font-size:12px}.chat .file .file-data .file-data-split .ext{margin-right:var(--rtk-space-2, 8px);text-transform:uppercase;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chat .file .file-data .file-data-split .divider{height:var(--rtk-space-4, 16px);width:var(--rtk-space-0\\.5, 2px);--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}.chat .file .file-data .file-data-split .size{margin-left:var(--rtk-space-2, 8px)}.smallest-dom-element{width:1px}#top-scroll{transform:translateY(20vh);transform:translateY(20px)}a{--tw-text-opacity:1;color:rgba(var(--rtk-colors-brand-300, 73 124 253) / var(--tw-text-opacity));text-decoration-line:none}a:hover{text-decoration-line:underline}.show-new-messages-ctr{position:absolute;bottom:var(--rtk-space-4, 16px);right:var(--rtk-space-4, 16px);z-index:10;margin-top:calc(var(--rtk-space-14, 56px) * -1);--tw-translate-y:var(--rtk-space-28, 112px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:0;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.show-new-messages-ctr.active{--tw-translate-y:var(--rtk-space-0, 0px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:pointer;opacity:1}.show-new-messages{pointer-events:auto;border-radius:9999px}.show-new-messages:hover{border-radius:9999px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-ring-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}rtk-spinner,.empty-list{margin:auto}.page-wrapper{margin-left:var(--rtk-space-1, 4px);margin-right:var(--rtk-space-1, 4px);display:flex;flex-direction:column-reverse}.message-wrapper{margin-bottom:var(--rtk-space-2, 8px)}.pinned .message-wrapper{position:relative}.pinned .pin-icon{position:absolute;right:calc(var(--rtk-space-1, 4px) * -1);top:calc(var(--rtk-space-1, 4px) * -1);display:flex;border-radius:var(--rtk-border-radius-sm, 4px)}.pinned rtk-message-view{--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-700, 44 44 44) / var(--tw-bg-opacity));padding-top:var(--rtk-space-1, 4px);padding-bottom:var(--rtk-space-1, 4px)}.load-more-on-top-container{pointer-events:none;position:absolute;top:var(--rtk-space-2, 8px);right:var(--rtk-space-4, 16px);z-index:10}.load-more-icon{pointer-events:auto;border-radius:9999px}.load-more-icon:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-ring-opacity));--tw-bg-opacity:1;background-color:rgba(var(--rtk-colors-background-600, 60 60 60) / var(--tw-bg-opacity))}";
2026
2097
  const RtkPaginatedListStyle0 = rtkPaginatedListCss;
2027
2098
 
2099
+ /**
2100
+ * NOTE(ikabra): INFINITE SCROLL IMPLEMENTATION:
2101
+ *
2102
+ * Uses scrollend listener for 2way scrolling.
2103
+ * Empty divs ($topRef, $bottomRef) act as scroll triggers to fetch new messages.
2104
+ *
2105
+ * UPWARD SCROLLING:
2106
+ * - Fetch top anchor (element currently visible to the user near top)
2107
+ * - Fetch older messages, push to end of 2D array
2108
+ * - When exceeding pagesAllowed, delete pages and scroll back to anchor
2109
+ *
2110
+ * DOWNWARD SCROLLING:
2111
+ * - Fetch bottom anchor (element currently visible to the user near bottom)
2112
+ * - Fetch new page, insert at the start
2113
+ * - Update timestamps & firstEmptyIndex, then rerender
2114
+ * - When exceeding pagesAllowed, delete pages and scroll back to anchor
2115
+ *
2116
+ * ADDING NEW NODES:
2117
+ * - If no pages exist, load old page
2118
+ * - If on 1st page, append messages till page size is full and then load new page
2119
+ *
2120
+ * DELETE NODE:
2121
+ * - If deleting the only available node, reset to initial state
2122
+ * - If page is empty, delete it
2123
+ * - Update timestamp curors
2124
+ */
2028
2125
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2029
2126
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2030
2127
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -2038,274 +2135,306 @@ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators,
2038
2135
  const RtkPaginatedList = class {
2039
2136
  constructor(hostRef) {
2040
2137
  registerInstance(this, hostRef);
2138
+ // Timestamp pertaining to the oldest stored message
2139
+ this.oldestPaginatedTimestamp = null;
2140
+ // Timestamp pertaining to the latest stored message
2141
+ this.latestPaginatedTimestamp = null;
2142
+ // Timestamp pertaining to the latest message stored in backend
2143
+ this.latestMessageTimestamp = null;
2144
+ // the length of pages will always be pageSize + 2
2145
+ this.pages = [];
2146
+ // Controls whether to keep auto-scrolling when a new page load.
2147
+ this.shouldScrollToBottom = false;
2148
+ // Shows "scroll to bottom" button when new nodes arrive and autoscroll is off.
2149
+ this.showNewMessagesCTR = false;
2150
+ /** label to show when empty */
2151
+ this.emptyListLabel = null;
2041
2152
  /** Icon pack */
2042
2153
  this.iconPack = defaultIconPack;
2043
2154
  /** Language */
2044
2155
  this.t = useLanguage();
2045
- /** label to show when empty */
2046
- this.emptyListLabel = null;
2156
+ this.rerenderBoolean = false;
2157
+ this.showEmptyListLabel = false;
2047
2158
  this.isLoading = false;
2048
2159
  this.isLoadingTop = false;
2049
2160
  this.isLoadingBottom = false;
2050
- this.hasMoreDataAtTop = false;
2051
- this.rerenderBoolean = false;
2052
- /**
2053
- * This gets disabled when the user scrolls up and the bottom node
2054
- * is not visible anymore.
2055
- */
2056
- this.shouldRenderNewNodes = true;
2057
- /**
2058
- * This gets disabled when the user scrolls up and the bottom node
2059
- * is not visible anymore.
2060
- */
2061
- this.hasNewNodesToRender = false;
2062
- this.showEmptyListLabel = false;
2063
- /**
2064
- * This is a private variable not a state
2065
- * since we want to debounce rerenders
2066
- *
2067
- * A list of pages where each page contains a number of Nodes
2068
- * [
2069
- * [Node 1, Node 2, Node 3.... Node N],
2070
- * [Node 1, Node 2, Node 3.... Node N],
2071
- * ]
2072
- */
2073
- this.pagesToRender = [[]];
2074
- this.currentTime = () => {
2075
- return new Date().getTime();
2076
- };
2077
- this.observe = (el) => {
2078
- if (!el)
2079
- return;
2080
- this.intersectionObserver.observe(el);
2161
+ // Tells us if we need to scroll to a specific anchor after a rerender
2162
+ this.pendingScrollAnchor = null;
2163
+ this.isInView = (el) => {
2164
+ const rect = el.getBoundingClientRect();
2165
+ return rect.top >= 0 && rect.bottom <= window.innerHeight;
2081
2166
  };
2082
2167
  }
2083
2168
  /**
2084
- * On a new node created
2169
+ * Adds a new node to the beginning of the paginated list
2170
+ * @param {DataNode} node - The data node to add to the beginning of the list
2085
2171
  */
2086
2172
  async onNewNode(node) {
2087
- if (!this.shouldRenderNewNodes) {
2088
- this.hasNewNodesToRender = true;
2089
- return;
2173
+ // if there are no pages, append to the first page
2174
+ if (this.pages.length < 1) {
2175
+ this.oldestPaginatedTimestamp = node.timeMs;
2176
+ this.pages.unshift([node]);
2177
+ this.latestPaginatedTimestamp = node.timeMs;
2178
+ this.latestMessageTimestamp = node.timeMs;
2179
+ this.rerender();
2180
+ if (this.autoScroll)
2181
+ this.$bottomRef.scrollIntoView({ behavior: 'smooth' });
2090
2182
  }
2091
- this.addNodeToRender(node, false);
2092
- this.rerender();
2183
+ else if (this.latestMessageTimestamp === this.latestPaginatedTimestamp) {
2184
+ // append messages to the page if page has not reached full capacity
2185
+ if (this.pages[0].length < this.pageSize) {
2186
+ this.pages[0].unshift(node);
2187
+ this.latestPaginatedTimestamp = node.timeMs;
2188
+ this.latestMessageTimestamp = node.timeMs;
2189
+ this.rerender();
2190
+ }
2191
+ else {
2192
+ // if page is at full capacity, load next page
2193
+ this.pages.unshift([node]);
2194
+ this.latestPaginatedTimestamp = node.timeMs;
2195
+ this.latestMessageTimestamp = node.timeMs;
2196
+ // remove pages if out of bounds
2197
+ if (this.pages.length > this.pagesAllowed)
2198
+ this.pages.pop();
2199
+ // update timestamps
2200
+ const lastPage = this.pages[this.pages.length - 1];
2201
+ this.oldestPaginatedTimestamp = lastPage[lastPage.length - 1].timeMs;
2202
+ this.rerender();
2203
+ }
2204
+ if (this.autoScroll)
2205
+ this.$bottomRef.scrollIntoView({ behavior: 'smooth' });
2206
+ }
2207
+ else {
2208
+ if (this.autoScroll)
2209
+ this.scrollToBottom();
2210
+ }
2211
+ this.pendingScrollAnchor = null;
2093
2212
  }
2094
2213
  /**
2095
- * On node deleted
2096
- */
2097
- async onNodeDelete(key) {
2098
- const oldLength = this.pagesToRender.flat().length;
2099
- this.pagesToRender = this.pagesToRender.map((page) => page.filter((item) => item.id !== key));
2100
- if (oldLength !== this.pagesToRender.flat().length) {
2214
+ * Deletes a node anywhere from the list
2215
+ * @param {string} id - The id of the node to delete
2216
+ * */
2217
+ async onNodeDelete(id) {
2218
+ var _a, _b;
2219
+ for (let i = this.pages.length - 1; i >= 0; i--) {
2220
+ const index = this.pages[i].findIndex((node) => node.id === id);
2221
+ // if message not found, move on
2222
+ if (index === -1)
2223
+ continue;
2224
+ // delete message
2225
+ this.pages[i].splice(index, 1);
2226
+ // if page is empty, delete it
2227
+ if (this.pages[i].length === 0)
2228
+ this.pages.splice(i, 1);
2229
+ // update timestamps
2230
+ const firstPage = this.pages[0];
2231
+ const lastPage = this.pages[this.pages.length - 1];
2232
+ this.latestPaginatedTimestamp = (_a = firstPage === null || firstPage === void 0 ? void 0 : firstPage[0]) === null || _a === void 0 ? void 0 : _a.timeMs;
2233
+ this.oldestPaginatedTimestamp = (_b = lastPage === null || lastPage === void 0 ? void 0 : lastPage[lastPage.length - 1]) === null || _b === void 0 ? void 0 : _b.timeMs;
2234
+ // if I have deleted the latest message, update latestMessageTimestamp
2235
+ if (index === 0 && i === 0)
2236
+ this.latestMessageTimestamp = this.latestPaginatedTimestamp;
2101
2237
  this.rerender();
2238
+ break;
2102
2239
  }
2103
2240
  }
2104
2241
  /**
2105
- * On node updated
2106
- */
2107
- async onNodeUpdate(key, newItem) {
2108
- let shouldRerender = false;
2109
- this.pagesToRender = this.pagesToRender.map((page) => page.map((item) => {
2110
- if (item.id === key) {
2111
- shouldRerender = true;
2112
- return newItem;
2113
- }
2114
- return item;
2115
- }));
2116
- if (shouldRerender)
2242
+ * Updates a new node anywhere in the list
2243
+ * @param {string} id - The id of the node to update
2244
+ * @param {DataNode} node - The updated data node
2245
+ * */
2246
+ async onNodeUpdate(id, node) {
2247
+ for (let i = this.pages.length - 1; i >= 0; i--) {
2248
+ const index = this.pages[i].findIndex((node) => node.id === id);
2249
+ // if message not found, move on
2250
+ if (index === -1)
2251
+ continue;
2252
+ // edit message
2253
+ this.pages[i][index] = node;
2117
2254
  this.rerender();
2118
- }
2119
- onItemChanged(newItemId, oldItemId) {
2120
- if (newItemId !== oldItemId) {
2121
- this.pagesToRender = [[]];
2122
- this.loadFirstPage().then(() => this.rerender());
2255
+ break;
2123
2256
  }
2124
2257
  }
2125
2258
  connectedCallback() {
2126
2259
  this.rerender = debounce(this.rerender.bind(this), 50, { maxWait: 200 });
2127
- this.autoScroll = true;
2128
- this.intersectionObserver = new IntersectionObserver((entries) => {
2129
- writeTask(() => {
2130
- for (const entry of entries) {
2131
- if (entry.target.id === 'bottom-scroll') {
2132
- if (entry.isIntersecting)
2133
- this.loadBottom();
2134
- else
2135
- this.shouldRenderNewNodes = false;
2136
- }
2137
- if (entry.target.id === 'top-scroll' && entry.isIntersecting) {
2138
- this.loadTop();
2139
- }
2140
- }
2141
- });
2142
- });
2143
- }
2144
- disconnectedCallback() {
2145
- this.intersectionObserver.disconnect();
2146
2260
  }
2147
2261
  componentDidLoad() {
2148
- /**
2149
- * Adding observes here so that on the first render we scroll down
2150
- * and shouldRenderNewNodes remains true
2151
- */
2152
- this.loadFirstPage();
2153
- this.observe(this.$topRef);
2154
- this.observe(this.$bottomRef);
2262
+ // initial load
2263
+ this.loadPrevPage();
2264
+ if (this.$containerRef) {
2265
+ this.$containerRef.onscrollend = async () => {
2266
+ // do not do anything if we are scrolling to bottom
2267
+ if (this.shouldScrollToBottom)
2268
+ return;
2269
+ // handle top and bottom scroll
2270
+ if (this.isInView(this.$bottomRef) &&
2271
+ this.latestMessageTimestamp > this.latestPaginatedTimestamp) {
2272
+ await this.loadNextPage();
2273
+ }
2274
+ else if (this.isInView(this.$topRef)) {
2275
+ this.showNewMessagesCTR = true;
2276
+ await this.loadPrevPage();
2277
+ }
2278
+ };
2279
+ }
2155
2280
  }
2156
2281
  componentDidRender() {
2157
- if (this.shouldRenderNewNodes && this.autoScroll)
2158
- smoothScrollToBottom(this.$paginatedList);
2159
- }
2160
- loadFirstPage() {
2161
- return this.loadPage(this.currentTime(), this.pageSize, true, (data) => {
2162
- if (data.length === 0) {
2163
- this.showEmptyListLabel = true;
2164
- }
2165
- });
2166
- }
2167
- loadTop() {
2168
- /**
2169
- * If there is only one unfilled page or no page, no need to check
2170
- * for top since it will be empty
2171
- */
2172
- if (this.pagesToRender.length === 0)
2282
+ if (!this.pendingScrollAnchor)
2173
2283
  return;
2174
- if (this.pagesToRender.length === 1 && this.pagesToRender[0].length < this.pageSize)
2175
- return;
2176
- /**
2177
- * TODO: Make this more flexible currently this only works with chat
2178
- */
2179
- const oldestVNode = this.pagesToRender[0][0];
2180
- const oldestTimestamp = oldestVNode.timeMs;
2181
- // TODO: scrollIntoView
2182
- const onPageRendered = () => { }; // oldestVNode.$elm$?.scrollIntoView();
2183
- this.isLoadingTop = true;
2184
- this.loadPage(oldestTimestamp - 1, this.pageSize, true, onPageRendered, 'top');
2284
+ const anchor = this.pendingScrollAnchor;
2285
+ this.pendingScrollAnchor = null;
2286
+ this.restoreScrollToAnchor(anchor);
2185
2287
  }
2186
- loadBottom() {
2187
- /**
2188
- * If there is only one unfilled page or no page, no need to check
2189
- * for top since it will be empty
2190
- */
2191
- if (this.pagesToRender.length === 0) {
2192
- this.shouldRenderNewNodes = true;
2288
+ async loadPrevPage() {
2289
+ if (this.isLoading)
2193
2290
  return;
2194
- }
2195
- if (this.pagesToRender.length === 1 && this.pagesToRender[0].length < this.pageSize) {
2196
- this.shouldRenderNewNodes = true;
2291
+ const scrollAnchor = this.getScrollAnchor('top');
2292
+ // if no old timestamp, it means we are at initial state
2293
+ if (!this.oldestPaginatedTimestamp)
2294
+ this.oldestPaginatedTimestamp = new Date().getTime();
2295
+ // load data
2296
+ this.isLoading = true;
2297
+ this.isLoadingTop = true;
2298
+ const data = await this.fetchData(this.oldestPaginatedTimestamp - 1, this.pageSize, true);
2299
+ this.isLoading = false;
2300
+ this.isLoadingTop = false;
2301
+ // no more old messages to show, we are at the top of the page
2302
+ if (!data.length)
2197
2303
  return;
2304
+ // add old data to the end of the array
2305
+ this.pages.push(data);
2306
+ // clear old pages when we reach the limit
2307
+ if (this.pages.length > this.pagesAllowed)
2308
+ this.pages.shift();
2309
+ // update timestamps
2310
+ const lastPage = this.pages[this.pages.length - 1];
2311
+ this.oldestPaginatedTimestamp = lastPage[lastPage.length - 1].timeMs;
2312
+ this.latestPaginatedTimestamp = this.pages[0][0].timeMs;
2313
+ if (!this.latestMessageTimestamp)
2314
+ this.latestMessageTimestamp = this.latestPaginatedTimestamp;
2315
+ this.rerender();
2316
+ // fix scroll position
2317
+ if (scrollAnchor)
2318
+ this.pendingScrollAnchor = scrollAnchor;
2319
+ }
2320
+ async loadNextPage() {
2321
+ if (this.isLoading)
2322
+ return [];
2323
+ // Do nothing. New timestamp needs to be assigned by loadPrevPage method
2324
+ if (!this.latestPaginatedTimestamp) {
2325
+ this.showNewMessagesCTR = false;
2326
+ return [];
2198
2327
  }
2199
- const newestVNode = this.pagesToRender.at(-1).at(-1);
2200
- const newestTimestamp = newestVNode.timeMs;
2201
- // TODO: scrollIntoView
2202
- const onPageRendered = () => smoothScrollToBottom(this.$paginatedList);
2328
+ this.isLoading = true;
2203
2329
  this.isLoadingBottom = true;
2204
- this.loadPage(newestTimestamp + 1, this.pageSize, false, onPageRendered, 'bottom');
2330
+ const scrollAnchor = this.getScrollAnchor('bottom');
2331
+ const data = await this.fetchData(this.latestPaginatedTimestamp + 1, this.pageSize, false);
2332
+ this.isLoading = false;
2333
+ this.isLoadingBottom = false;
2334
+ // no more new messages to load
2335
+ if (!data.length) {
2336
+ this.latestMessageTimestamp = this.latestPaginatedTimestamp;
2337
+ this.showNewMessagesCTR = false;
2338
+ return [];
2339
+ }
2340
+ // load new messages and append to the start
2341
+ const incoming = [...data].reverse();
2342
+ if (this.pages.length === 0)
2343
+ this.pages.unshift([]);
2344
+ const firstPage = this.pages[0];
2345
+ const spaceInFirstPage = this.pageSize - firstPage.length;
2346
+ if (spaceInFirstPage > 0) {
2347
+ const toFill = incoming.splice(0, spaceInFirstPage);
2348
+ firstPage.unshift(...toFill);
2349
+ }
2350
+ while (incoming.length > 0) {
2351
+ this.pages.unshift(incoming.splice(0, this.pageSize));
2352
+ }
2353
+ // remove pages if out of bounds
2354
+ if (this.pages.length > this.pagesAllowed)
2355
+ this.pages.pop();
2356
+ // update timestamps
2357
+ const lastPage = this.pages[this.pages.length - 1];
2358
+ this.oldestPaginatedTimestamp = lastPage[lastPage.length - 1].timeMs;
2359
+ this.latestPaginatedTimestamp = this.pages[0][0].timeMs;
2360
+ this.rerender();
2361
+ this.pendingScrollAnchor = scrollAnchor;
2362
+ return data;
2205
2363
  }
2206
- addNodeToRender(node, addToStart) {
2207
- if (addToStart) {
2208
- const firstPage = this.pagesToRender[0];
2209
- if (firstPage && (firstPage === null || firstPage === void 0 ? void 0 : firstPage.length) < this.pageSize) {
2210
- /**
2211
- * If first page is not full then just add to that page
2212
- */
2213
- firstPage.unshift(node);
2214
- }
2215
- else {
2216
- /**
2217
- * If first page is full then add a new page to the start
2218
- */
2219
- const newPage = [node];
2220
- this.pagesToRender.unshift(newPage);
2221
- this.removeLastPageIfNeeded(false);
2222
- }
2223
- }
2224
- else {
2225
- const [lastPage] = this.pagesToRender.slice(-1);
2226
- if (lastPage && (lastPage === null || lastPage === void 0 ? void 0 : lastPage.length) < this.pageSize) {
2227
- /**
2228
- * If last page is not full then just add it
2229
- */
2230
- lastPage.push(node);
2364
+ // Find the element that is closest to the top/bottom of the container
2365
+ getScrollAnchor(edge = 'top') {
2366
+ if (!this.$containerRef)
2367
+ return null;
2368
+ const containerRect = this.$containerRef.getBoundingClientRect();
2369
+ const candidates = Array.from(this.$containerRef.querySelectorAll('[id]')).filter((el) => el.id !== 'top-scroll' && el.id !== 'bottom-scroll');
2370
+ let best = null;
2371
+ for (const el of candidates) {
2372
+ const rect = el.getBoundingClientRect();
2373
+ const isVisibleInContainer = rect.bottom > containerRect.top && rect.top < containerRect.bottom;
2374
+ if (!isVisibleInContainer)
2375
+ continue;
2376
+ if (edge === 'top') {
2377
+ const offsetTop = rect.top - containerRect.top;
2378
+ if (best == null || (best.edge === 'top' && offsetTop < best.offsetTop)) {
2379
+ best = { id: el.id, edge: 'top', offsetTop };
2380
+ }
2231
2381
  }
2232
2382
  else {
2233
- /**
2234
- * If last page is full add a new page with just
2235
- * this node
2236
- */
2237
- const newPage = [node];
2238
- this.pagesToRender.push(newPage);
2239
- this.removeLastPageIfNeeded(true);
2383
+ const offsetBottom = containerRect.bottom - rect.bottom;
2384
+ if (best == null || (best.edge === 'bottom' && offsetBottom < best.offsetBottom)) {
2385
+ best = { id: el.id, edge: 'bottom', offsetBottom };
2386
+ }
2240
2387
  }
2241
2388
  }
2389
+ return best;
2242
2390
  }
2243
- /**
2244
- * @param start
2245
- * @param end
2246
- * @param reversed Defines whether to add the page at the beginning or the end
2247
- * @param onPageLoaded Callback for when all new nodes are rendered
2248
- * @param direction Indicates if loading from 'top' or 'bottom'
2249
- */
2250
- async loadPage(timestamp, size, reversed, onPageRendered = () => { }, direction) {
2251
- this.isLoading = true;
2252
- const data = (await this.fetchData(timestamp, size, reversed));
2253
- this.isLoading = false;
2254
- if (direction === 'top') {
2255
- this.isLoadingTop = false;
2256
- this.hasMoreDataAtTop = (data === null || data === void 0 ? void 0 : data.length) > 0;
2391
+ //instant scroll to anchor to make sure we are at the same position after a rerender
2392
+ restoreScrollToAnchor(anchor) {
2393
+ if (!this.$containerRef)
2394
+ return;
2395
+ // make element id safe to use inside a CSS selector
2396
+ const escapeId = (id) => {
2397
+ var _a;
2398
+ const cssEscape = (_a = globalThis.CSS) === null || _a === void 0 ? void 0 : _a.escape;
2399
+ return typeof cssEscape === 'function'
2400
+ ? cssEscape(id)
2401
+ : id.replace(/[^a-zA-Z0-9_-]/g, '\\$&');
2402
+ };
2403
+ const el = this.$containerRef.querySelector(`#${escapeId(anchor.id)}`);
2404
+ if (!el)
2405
+ return;
2406
+ const containerRect = this.$containerRef.getBoundingClientRect();
2407
+ const rect = el.getBoundingClientRect();
2408
+ if (anchor.edge === 'top') {
2409
+ const newOffsetTop = rect.top - containerRect.top;
2410
+ this.$containerRef.scrollTop += newOffsetTop - anchor.offsetTop;
2257
2411
  }
2258
- if (direction === 'bottom') {
2259
- this.isLoadingBottom = false;
2412
+ else {
2413
+ const newOffsetBottom = containerRect.bottom - rect.bottom;
2414
+ this.$containerRef.scrollTop += anchor.offsetBottom - newOffsetBottom;
2260
2415
  }
2261
- if (!(data === null || data === void 0 ? void 0 : data.length)) {
2262
- /**
2263
- * While scrolling down if there were no new items found
2264
- * then start rendering new nodes;
2265
- */
2266
- if (!reversed) {
2267
- this.hasNewNodesToRender = false;
2268
- this.shouldRenderNewNodes = true;
2269
- }
2270
- onPageRendered([]);
2271
- return;
2416
+ }
2417
+ // this method is called recursively based on shouldScrollToBottom (see loadNextPage)
2418
+ async scrollToBottom() {
2419
+ this.shouldScrollToBottom = true;
2420
+ while (this.shouldScrollToBottom) {
2421
+ const response = await this.loadNextPage();
2422
+ this.$bottomRef.scrollIntoView({ behavior: 'smooth' });
2423
+ if (response.length === 0)
2424
+ this.shouldScrollToBottom = false;
2272
2425
  }
2273
- data.forEach((node) => this.addNodeToRender(node, reversed));
2274
- this.rerender();
2275
- onPageRendered(data);
2276
2426
  }
2277
2427
  rerender() {
2278
2428
  this.rerenderBoolean = !this.rerenderBoolean;
2279
2429
  }
2280
- removeLastPageIfNeeded(removeFromStart) {
2281
- if (this.pagesToRender.length > this.pagesAllowed) {
2282
- if (removeFromStart)
2283
- this.pagesToRender.shift();
2284
- else
2285
- this.pagesToRender.pop();
2286
- }
2287
- }
2288
- onDownArrowClicked() {
2289
- /**
2290
- * Load the freshest pages
2291
- */
2292
- this.loadBottom();
2293
- }
2294
- onLoadMoreOnTopClicked() {
2295
- this.loadTop();
2296
- }
2297
2430
  render() {
2298
- var _a;
2299
2431
  /**
2300
- * div.container is flex=column-reverse
2301
- * which is why div#bottom-scroll comes before div#top-scroll
2302
- * div.page-wrapper prevents reversal of messages
2432
+ * div.container is flex=column-reversewhich is why div#bottom-scroll comes before div#top-scroll
2303
2433
  */
2304
- return (h(Host, { key: '23e10f12b079213650cf9c947d30650ba8c95a4d' }, h("div", { key: 'b5406069fd69ff117b19d437184c38b3c7d2fc28', class: "scrollbar container", part: "container", ref: (el) => (this.$paginatedList = el) }, h("div", { key: '7be947f2409ff810e0d10beea53ace8fdec334ce', class: { 'show-new-messages-ctr': true, active: !this.shouldRenderNewNodes } }, h("rtk-button", { key: '45c43d6ca1cc39376334dffa10f3f2c137d65add', class: "show-new-messages", kind: "icon", variant: "secondary", part: "show-new-messages", onClick: () => this.onDownArrowClicked() }, h("rtk-icon", { key: '519b0db80f7d16cc4d03983e227d4897a5868ec9', icon: this.iconPack.chevron_down }))), h("div", { key: '53691e3943b90ef9e422c8da8f5facaa23f01920', class: "smallest-dom-element", id: "bottom-scroll", ref: (el) => (this.$bottomRef = el) }), this.isLoadingBottom && h("rtk-spinner", { key: '2a393cb0bbb07c356144464dcc7c597f5cc9771b', size: "sm" }), this.isLoading && this.pagesToRender.flat().length === 0 && h("rtk-spinner", { key: '4ce03be69368db0d6d0d4ad079b14f2c7d93f26d', size: "lg" }), this.pagesToRender.flat().length === 0 && this.showEmptyListLabel ? (h("div", { class: "empty-list" }, (_a = this.emptyListLabel) !== null && _a !== void 0 ? _a : this.t('list.empty'))) : (h("div", { class: "page-wrapper" }, this.pagesToRender.map((page) => this.createNodes(page)))), this.hasMoreDataAtTop && !this.isLoadingTop && (h("div", { key: '5c85806854687efe098e4bd6d06d109060445378', class: "load-more-on-top-container" }, h("rtk-button", { key: '6d73a030fad5ba133aa2841b2feb196646592ada', class: "load-more-icon", kind: "icon", variant: "secondary", part: "load-more-icon", onClick: () => this.onLoadMoreOnTopClicked() }, h("rtk-icon", { key: '61a4f376749938df280e5c734dd3fa8a9b0b7201', icon: this.iconPack.chevron_up })))), this.isLoadingTop && h("rtk-spinner", { key: '3e55b99c60ed7bc2cd937091a33663dd19c9ca68', size: "sm" }), h("div", { key: 'a69e0a3a26d295783f4f729b33770b206ab5d46b', class: "smallest-dom-element", id: "top-scroll", ref: (el) => (this.$topRef = el) }))));
2434
+ return (h(Host, { key: 'd3a69c210794a552e1a45d0d184b16657cbfde79' }, h("div", { key: 'c9cdb45d5cea872660bc8e2170c3d94c9331a861', class: "scrollbar container", part: "container", ref: (el) => (this.$containerRef = el) }, h("div", { key: '1bacf2a627e8a7f11f75e0ecbda873609cd347b9', class: { 'show-new-messages-ctr': true, active: this.showNewMessagesCTR } }, h("rtk-button", { key: '0c4e3f79e2a7447f1195e03aa026d0f228d09f90', class: "show-new-messages", kind: "icon", variant: "secondary", part: "show-new-messages", onClick: () => {
2435
+ this.scrollToBottom();
2436
+ } }, this.shouldScrollToBottom ? (h("rtk-spinner", { size: "sm" })) : (h("rtk-icon", { icon: this.iconPack.chevron_down })))), h("div", { key: '439f9e943266f60c933812771682bc414b86d418', class: "smallest-dom-element", id: "bottom-scroll", ref: (el) => (this.$bottomRef = el) }), this.isLoadingBottom && this.pages.length > 0 && h("rtk-spinner", { key: 'd79aa2e74a62b14a456c8437362bb01a9df933e1', size: "sm" }), this.isLoading && this.pages.length < 1 && h("rtk-spinner", { key: '7ccfd41966d0337a8abe9a3086ca3f07fe051dc0', size: "lg" }), !this.isLoading && this.pages.flat().length === 0 ? (h("div", { class: "empty-list" }, this.t('list.empty'))) : (h("div", { class: "page-wrapper" }, this.pages.map((page, pageIndex) => (h("div", { class: "page", "data-page-index": pageIndex }, this.createNodes([...page].reverse())))))), this.isLoadingTop && this.pages.length > 0 && h("rtk-spinner", { key: '1c6c11863adba0205d0dd2ce649f3bdf51c9df60', size: "sm" }), h("div", { key: '413506236882f6d516967db0f642f5db63c7971f', class: "smallest-dom-element", id: "top-scroll", ref: (el) => (this.$topRef = el) }))));
2305
2437
  }
2306
- static get watchers() { return {
2307
- "selectedItemId": ["onItemChanged"]
2308
- }; }
2309
2438
  };
2310
2439
  __decorate$2([
2311
2440
  SyncWithStore()
@@ -2337,7 +2466,7 @@ const RtkSpinner = class {
2337
2466
  this.size = 'md';
2338
2467
  }
2339
2468
  render() {
2340
- return (h(Host, { key: '2eb8672a849f85e2c207ec9331d1093b7deefaa3' }, h("rtk-icon", { key: '5a2f292ddd7a5c52709ce41f47422f08bdf82852', class: "spinner", icon: this.iconPack.spinner })));
2469
+ return (h(Host, { key: 'c042cbd31d8fa9e58c0cbbc5646575a3172fc824' }, h("rtk-icon", { key: '0171ba3d5f7506e2c67eb813c5ad5b263352088d', class: "spinner", icon: this.iconPack.spinner })));
2341
2470
  }
2342
2471
  };
2343
2472
  __decorate$1([
@@ -2415,7 +2544,7 @@ const RtkTextComposerView = class {
2415
2544
  }
2416
2545
  }
2417
2546
  render() {
2418
- return (h("div", { key: '1b51f7d6ffbe8069172a5dc51f291988000c898a', class: "chat-input", part: "chat-input-container" }, this.maxLengthBreached > 0 && (h("div", { key: 'fe75f8333a7643458d5077fec968464327e65ca3', class: 'text-error ' + (this.maxLengthBreached === this.maxLength ? 'breached' : '') }, h("rtk-icon", { key: '669066f9983f226d96baeebdfa10ffb1fc8001b7', id: "warning-indicator", icon: this.iconPack.warning, part: "warning-indicator" }), ' ', this.maxLengthBreached, " / ", this.maxLength, " ", this.t('chat.max_limit_warning'))), this.rateLimitBreached && (h("div", { key: '0024d3b4e8d5eda5f94ff2fe9d8aa18cfb9297a7', class: 'text-error breached' }, h("rtk-icon", { key: 'bc3a0417a81de43b67595cde79dfe7aba21a6601', id: "warning-indicator", icon: this.iconPack.warning, part: "warning-indicator" }), ' ', this.t('chat.rate_limit_error'))), h("textarea", { key: 'c6077b3128eeea4be2358ab557062df322a8ffa9', ref: (el) => (this.$textArea = el), placeholder: this.placeholder, disabled: this.disabled, onInput: this.onInputHandler, onKeyDown: this.keyDownHandler, part: "chat-input", value: this.value })));
2547
+ return (h("div", { key: 'e5f7fa2bd4a2386ff5185001981477ccacf24556', class: "chat-input", part: "chat-input-container" }, this.maxLengthBreached > 0 && (h("div", { key: '4c06c853ddc7bebafe45fdb2e2c5c9e1c20021fe', class: 'text-error ' + (this.maxLengthBreached === this.maxLength ? 'breached' : '') }, h("rtk-icon", { key: '524037dc257f0aea206fbc3503d1fe1cb03449be', id: "warning-indicator", icon: this.iconPack.warning, part: "warning-indicator" }), ' ', this.maxLengthBreached, " / ", this.maxLength, " ", this.t('chat.max_limit_warning'))), this.rateLimitBreached && (h("div", { key: 'cf975664f367f2621593239ab1cf2e73f5acdb45', class: 'text-error breached' }, h("rtk-icon", { key: '70a6555f1fa9752f91951181b46e0ed0e7eb8679', id: "warning-indicator", icon: this.iconPack.warning, part: "warning-indicator" }), ' ', this.t('chat.rate_limit_error'))), h("textarea", { key: '7fc7280dd143cd701d5037e04c2b36c3ea8ec023', ref: (el) => (this.$textArea = el), placeholder: this.placeholder, disabled: this.disabled, onInput: this.onInputHandler, onKeyDown: this.keyDownHandler, part: "chat-input", value: this.value })));
2419
2548
  }
2420
2549
  };
2421
2550
  __decorate([
@@ -2436,7 +2565,7 @@ const RtkTextMessageView = class {
2436
2565
  this.isMarkdown = false;
2437
2566
  }
2438
2567
  render() {
2439
- return (h("p", { key: '90e03b1cdd7271004b0ba2932d7e00342d0b884d', class: { text: true, emoji: hasOnlyEmojis(this.text) } }, this.isMarkdown ? h("rtk-markdown-view", { text: this.text }) : this.text));
2568
+ return (h("p", { key: 'b4cbabb44d32f96a23cd72f108d6a36b05491c97', class: { text: true, emoji: hasOnlyEmojis(this.text) } }, this.isMarkdown ? h("rtk-markdown-view", { text: this.text }) : this.text));
2440
2569
  }
2441
2570
  };
2442
2571
  RtkTextMessageView.style = RtkTextMessageViewStyle0;
@@ -2542,7 +2671,7 @@ const RtkMenu = class {
2542
2671
  });
2543
2672
  }
2544
2673
  render() {
2545
- return (h(Host, { key: '32f792b447497e62bc776085657de62b8d6213bf' }, h("span", { key: '96f014373662e86cadb00d5a0b981246d3a7cac4', part: "trigger", id: "trigger", ref: (el) => (this.triggerEl = el) }, h("slot", { key: '218a47538fad33071c2ed20d83610b36e8c5a8f4' })), h("div", { key: 'c338da352126320e70333ad8ae814667e53dc5b4', part: "tooltip", class: "tooltip", id: "tooltip", role: "tooltip", ref: (el) => (this.tooltipEl = el) }, h("div", { key: 'bd0fe7c880bf999ba565959e84cc78412d008fb7', id: "arrow", ref: (el) => (this.arrowEl = el), part: "arrow" }), this.label, h("slot", { key: '67fcc99de5f9db145ce832b7eb46aa0e587ed101', name: "tooltip" }))));
2674
+ return (h(Host, { key: '5278137bc9b99d9fe9ffeb0fc30bd887d600494d' }, h("span", { key: 'cbefda068a15340dad76668c3696a10bd94cb8e9', part: "trigger", id: "trigger", ref: (el) => (this.triggerEl = el) }, h("slot", { key: 'f160cf29ece64145e795a9a11459bd458482c446' })), h("div", { key: '1056b2bbc8cbacd3c32280d334d9f703a578b5ef', part: "tooltip", class: "tooltip", id: "tooltip", role: "tooltip", ref: (el) => (this.tooltipEl = el) }, h("div", { key: '6c6816fa1b18d49fa22ab6ffb600aaa23c5b9ec5', id: "arrow", ref: (el) => (this.arrowEl = el), part: "arrow" }), this.label, h("slot", { key: '3c2d3425b2e8b4d810de2ce40394491c4698aede', name: "tooltip" }))));
2546
2675
  }
2547
2676
  static get watchers() { return {
2548
2677
  "open": ["openChanged"]