@memberjunction/ng-conversations 5.40.1 → 5.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +57 -0
  2. package/dist/__tests__/channel-optional-surface.test.d.ts +2 -0
  3. package/dist/__tests__/channel-optional-surface.test.d.ts.map +1 -0
  4. package/dist/__tests__/channel-optional-surface.test.js +53 -0
  5. package/dist/__tests__/channel-optional-surface.test.js.map +1 -0
  6. package/dist/__tests__/chat-events.test.d.ts +14 -0
  7. package/dist/__tests__/chat-events.test.d.ts.map +1 -0
  8. package/dist/__tests__/chat-events.test.js +109 -0
  9. package/dist/__tests__/chat-events.test.js.map +1 -0
  10. package/dist/__tests__/conversation-naming.test.d.ts +2 -0
  11. package/dist/__tests__/conversation-naming.test.d.ts.map +1 -0
  12. package/dist/__tests__/conversation-naming.test.js +110 -0
  13. package/dist/__tests__/conversation-naming.test.js.map +1 -0
  14. package/dist/__tests__/delegation-result-parser.test.d.ts +2 -0
  15. package/dist/__tests__/delegation-result-parser.test.d.ts.map +1 -0
  16. package/dist/__tests__/delegation-result-parser.test.js +107 -0
  17. package/dist/__tests__/delegation-result-parser.test.js.map +1 -0
  18. package/dist/__tests__/event-wiring.test.d.ts +15 -0
  19. package/dist/__tests__/event-wiring.test.d.ts.map +1 -0
  20. package/dist/__tests__/event-wiring.test.js +100 -0
  21. package/dist/__tests__/event-wiring.test.js.map +1 -0
  22. package/dist/__tests__/narration-template.test.d.ts +2 -0
  23. package/dist/__tests__/narration-template.test.d.ts.map +1 -0
  24. package/dist/__tests__/narration-template.test.js +76 -0
  25. package/dist/__tests__/narration-template.test.js.map +1 -0
  26. package/dist/__tests__/realtime-agent-picker-models.test.d.ts +2 -0
  27. package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +1 -0
  28. package/dist/__tests__/realtime-agent-picker-models.test.js +49 -0
  29. package/dist/__tests__/realtime-agent-picker-models.test.js.map +1 -0
  30. package/dist/__tests__/realtime-audio-visuals.test.d.ts +2 -0
  31. package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +1 -0
  32. package/dist/__tests__/realtime-audio-visuals.test.js +123 -0
  33. package/dist/__tests__/realtime-audio-visuals.test.js.map +1 -0
  34. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +2 -0
  35. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +1 -0
  36. package/dist/__tests__/realtime-delegation-card-cancel.test.js +48 -0
  37. package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +1 -0
  38. package/dist/__tests__/realtime-disclosure.test.d.ts +2 -0
  39. package/dist/__tests__/realtime-disclosure.test.d.ts.map +1 -0
  40. package/dist/__tests__/realtime-disclosure.test.js +164 -0
  41. package/dist/__tests__/realtime-disclosure.test.js.map +1 -0
  42. package/dist/__tests__/realtime-pairing.test.d.ts +2 -0
  43. package/dist/__tests__/realtime-pairing.test.d.ts.map +1 -0
  44. package/dist/__tests__/realtime-pairing.test.js +207 -0
  45. package/dist/__tests__/realtime-pairing.test.js.map +1 -0
  46. package/dist/__tests__/realtime-review-lifecycle.test.d.ts +2 -0
  47. package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +1 -0
  48. package/dist/__tests__/realtime-review-lifecycle.test.js +154 -0
  49. package/dist/__tests__/realtime-review-lifecycle.test.js.map +1 -0
  50. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +2 -0
  51. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +1 -0
  52. package/dist/__tests__/realtime-session-cancel-usage.test.js +230 -0
  53. package/dist/__tests__/realtime-session-cancel-usage.test.js.map +1 -0
  54. package/dist/__tests__/realtime-session-channels.test.d.ts +2 -0
  55. package/dist/__tests__/realtime-session-channels.test.d.ts.map +1 -0
  56. package/dist/__tests__/realtime-session-channels.test.js +252 -0
  57. package/dist/__tests__/realtime-session-channels.test.js.map +1 -0
  58. package/dist/__tests__/realtime-session-client-tools.test.d.ts +2 -0
  59. package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +1 -0
  60. package/dist/__tests__/realtime-session-client-tools.test.js +103 -0
  61. package/dist/__tests__/realtime-session-client-tools.test.js.map +1 -0
  62. package/dist/__tests__/realtime-session-minimized.test.d.ts +2 -0
  63. package/dist/__tests__/realtime-session-minimized.test.d.ts.map +1 -0
  64. package/dist/__tests__/realtime-session-minimized.test.js +32 -0
  65. package/dist/__tests__/realtime-session-minimized.test.js.map +1 -0
  66. package/dist/__tests__/realtime-session-mint.test.d.ts +2 -0
  67. package/dist/__tests__/realtime-session-mint.test.d.ts.map +1 -0
  68. package/dist/__tests__/realtime-session-mint.test.js +69 -0
  69. package/dist/__tests__/realtime-session-mint.test.js.map +1 -0
  70. package/dist/__tests__/realtime-session-policy.test.d.ts +2 -0
  71. package/dist/__tests__/realtime-session-policy.test.d.ts.map +1 -0
  72. package/dist/__tests__/realtime-session-policy.test.js +303 -0
  73. package/dist/__tests__/realtime-session-policy.test.js.map +1 -0
  74. package/dist/__tests__/realtime-session-review.service.test.d.ts +2 -0
  75. package/dist/__tests__/realtime-session-review.service.test.d.ts.map +1 -0
  76. package/dist/__tests__/realtime-session-review.service.test.js +743 -0
  77. package/dist/__tests__/realtime-session-review.service.test.js.map +1 -0
  78. package/dist/__tests__/realtime-session-state.test.d.ts +2 -0
  79. package/dist/__tests__/realtime-session-state.test.d.ts.map +1 -0
  80. package/dist/__tests__/realtime-session-state.test.js +83 -0
  81. package/dist/__tests__/realtime-session-state.test.js.map +1 -0
  82. package/dist/__tests__/realtime-session-timeline-card.test.d.ts +2 -0
  83. package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +1 -0
  84. package/dist/__tests__/realtime-session-timeline-card.test.js +106 -0
  85. package/dist/__tests__/realtime-session-timeline-card.test.js.map +1 -0
  86. package/dist/__tests__/realtime-session-timeline.test.d.ts +2 -0
  87. package/dist/__tests__/realtime-session-timeline.test.d.ts.map +1 -0
  88. package/dist/__tests__/realtime-session-timeline.test.js +142 -0
  89. package/dist/__tests__/realtime-session-timeline.test.js.map +1 -0
  90. package/dist/__tests__/realtime-sessions-adapter.test.d.ts +19 -0
  91. package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +1 -0
  92. package/dist/__tests__/realtime-sessions-adapter.test.js +188 -0
  93. package/dist/__tests__/realtime-sessions-adapter.test.js.map +1 -0
  94. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +2 -0
  95. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +1 -0
  96. package/dist/__tests__/realtime-surface-panel-prefs.test.js +100 -0
  97. package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +1 -0
  98. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +2 -0
  99. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +1 -0
  100. package/dist/__tests__/realtime-surface-tabs-model.test.js +193 -0
  101. package/dist/__tests__/realtime-surface-tabs-model.test.js.map +1 -0
  102. package/dist/__tests__/remote-browser-audio-player.test.d.ts +2 -0
  103. package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +1 -0
  104. package/dist/__tests__/remote-browser-audio-player.test.js +137 -0
  105. package/dist/__tests__/remote-browser-audio-player.test.js.map +1 -0
  106. package/dist/__tests__/remote-browser-channel.test.d.ts +2 -0
  107. package/dist/__tests__/remote-browser-channel.test.d.ts.map +1 -0
  108. package/dist/__tests__/remote-browser-channel.test.js +423 -0
  109. package/dist/__tests__/remote-browser-channel.test.js.map +1 -0
  110. package/dist/__tests__/slot-defaults.test.d.ts +24 -0
  111. package/dist/__tests__/slot-defaults.test.d.ts.map +1 -0
  112. package/dist/__tests__/slot-defaults.test.js +63 -0
  113. package/dist/__tests__/slot-defaults.test.js.map +1 -0
  114. package/dist/__tests__/user-authorization.test.d.ts +2 -0
  115. package/dist/__tests__/user-authorization.test.d.ts.map +1 -0
  116. package/dist/__tests__/user-authorization.test.js +97 -0
  117. package/dist/__tests__/user-authorization.test.js.map +1 -0
  118. package/dist/__tests__/voice-session-narration.test.d.ts +2 -0
  119. package/dist/__tests__/voice-session-narration.test.d.ts.map +1 -0
  120. package/dist/__tests__/voice-session-narration.test.js +609 -0
  121. package/dist/__tests__/voice-session-narration.test.js.map +1 -0
  122. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +2 -0
  123. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +1 -0
  124. package/dist/__tests__/whiteboard-artifact-viewer.test.js +101 -0
  125. package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +1 -0
  126. package/dist/__tests__/whiteboard-channel.test.d.ts +2 -0
  127. package/dist/__tests__/whiteboard-channel.test.d.ts.map +1 -0
  128. package/dist/__tests__/whiteboard-channel.test.js +260 -0
  129. package/dist/__tests__/whiteboard-channel.test.js.map +1 -0
  130. package/dist/__tests__/whiteboard-restore-state.test.d.ts +2 -0
  131. package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +1 -0
  132. package/dist/__tests__/whiteboard-restore-state.test.js +108 -0
  133. package/dist/__tests__/whiteboard-restore-state.test.js.map +1 -0
  134. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +205 -3
  135. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  136. package/dist/lib/components/conversation/conversation-chat-area.component.js +911 -342
  137. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  138. package/dist/lib/components/mention/mention-dropdown.component.js +35 -17
  139. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
  140. package/dist/lib/components/mention/mention-editor.component.d.ts +4 -0
  141. package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
  142. package/dist/lib/components/mention/mention-editor.component.js +43 -19
  143. package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
  144. package/dist/lib/components/message/message-input-box.component.d.ts +17 -1
  145. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  146. package/dist/lib/components/message/message-input-box.component.js +73 -15
  147. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  148. package/dist/lib/components/message/message-input.component.d.ts +142 -6
  149. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  150. package/dist/lib/components/message/message-input.component.js +328 -82
  151. package/dist/lib/components/message/message-input.component.js.map +1 -1
  152. package/dist/lib/components/message/message-item.component.d.ts +28 -3
  153. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  154. package/dist/lib/components/message/message-item.component.js +180 -108
  155. package/dist/lib/components/message/message-item.component.js.map +1 -1
  156. package/dist/lib/components/message/message-list.component.d.ts +81 -2
  157. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  158. package/dist/lib/components/message/message-list.component.js +252 -87
  159. package/dist/lib/components/message/message-list.component.js.map +1 -1
  160. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +282 -0
  161. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -0
  162. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +158 -0
  163. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -0
  164. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.d.ts +25 -0
  165. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.d.ts.map +1 -0
  166. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.js +140 -0
  167. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.js.map +1 -0
  168. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts +35 -0
  169. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts.map +1 -0
  170. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js +58 -0
  171. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js.map +1 -0
  172. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +63 -0
  173. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -0
  174. package/dist/lib/components/realtime/realtime-activity-rail.component.js +260 -0
  175. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -0
  176. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +117 -0
  177. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -0
  178. package/dist/lib/components/realtime/realtime-agent-banner.component.js +504 -0
  179. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -0
  180. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +168 -0
  181. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -0
  182. package/dist/lib/components/realtime/realtime-agent-picker.component.js +556 -0
  183. package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -0
  184. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +97 -0
  185. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -0
  186. package/dist/lib/components/realtime/realtime-audio-visuals.js +139 -0
  187. package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -0
  188. package/dist/lib/components/realtime/realtime-channel-strip.component.d.ts +29 -0
  189. package/dist/lib/components/realtime/realtime-channel-strip.component.d.ts.map +1 -0
  190. package/dist/lib/components/realtime/realtime-channel-strip.component.js +69 -0
  191. package/dist/lib/components/realtime/realtime-channel-strip.component.js.map +1 -0
  192. package/dist/lib/components/realtime/realtime-composer.component.d.ts +65 -0
  193. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -0
  194. package/dist/lib/components/realtime/realtime-composer.component.js +256 -0
  195. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -0
  196. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +71 -0
  197. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -0
  198. package/dist/lib/components/realtime/realtime-delegation-card.component.js +324 -0
  199. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -0
  200. package/dist/lib/components/realtime/realtime-disclosure.d.ts +135 -0
  201. package/dist/lib/components/realtime/realtime-disclosure.d.ts.map +1 -0
  202. package/dist/lib/components/realtime/realtime-disclosure.js +188 -0
  203. package/dist/lib/components/realtime/realtime-disclosure.js.map +1 -0
  204. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +491 -0
  205. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -0
  206. package/dist/lib/components/realtime/realtime-session-overlay.component.js +1274 -0
  207. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -0
  208. package/dist/lib/components/realtime/realtime-session-state.d.ts +191 -0
  209. package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -0
  210. package/dist/lib/components/realtime/realtime-session-state.js +244 -0
  211. package/dist/lib/components/realtime/realtime-session-state.js.map +1 -0
  212. package/dist/lib/components/realtime/realtime-session-thread.component.d.ts +56 -0
  213. package/dist/lib/components/realtime/realtime-session-thread.component.d.ts.map +1 -0
  214. package/dist/lib/components/realtime/realtime-session-thread.component.js +246 -0
  215. package/dist/lib/components/realtime/realtime-session-thread.component.js.map +1 -0
  216. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +51 -0
  217. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -0
  218. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +193 -0
  219. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -0
  220. package/dist/lib/components/realtime/realtime-surface-panel-prefs.d.ts +77 -0
  221. package/dist/lib/components/realtime/realtime-surface-panel-prefs.d.ts.map +1 -0
  222. package/dist/lib/components/realtime/realtime-surface-panel-prefs.js +114 -0
  223. package/dist/lib/components/realtime/realtime-surface-panel-prefs.js.map +1 -0
  224. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +173 -0
  225. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -0
  226. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +496 -0
  227. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -0
  228. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +181 -0
  229. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -0
  230. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +223 -0
  231. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -0
  232. package/dist/lib/components/realtime/remote-browser/remote-browser-audio-player.d.ts +163 -0
  233. package/dist/lib/components/realtime/remote-browser/remote-browser-audio-player.d.ts.map +1 -0
  234. package/dist/lib/components/realtime/remote-browser/remote-browser-audio-player.js +309 -0
  235. package/dist/lib/components/realtime/remote-browser/remote-browser-audio-player.js.map +1 -0
  236. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts +168 -0
  237. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -0
  238. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +524 -0
  239. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -0
  240. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts +346 -0
  241. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts.map +1 -0
  242. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js +851 -0
  243. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js.map +1 -0
  244. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts +86 -0
  245. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts.map +1 -0
  246. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js +210 -0
  247. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js.map +1 -0
  248. package/dist/lib/components/realtime/whiteboard/whiteboard-artifact-viewer.component.d.ts +48 -0
  249. package/dist/lib/components/realtime/whiteboard/whiteboard-artifact-viewer.component.d.ts.map +1 -0
  250. package/dist/lib/components/realtime/whiteboard/whiteboard-artifact-viewer.component.js +180 -0
  251. package/dist/lib/components/realtime/whiteboard/whiteboard-artifact-viewer.component.js.map +1 -0
  252. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +119 -0
  253. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -0
  254. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +274 -0
  255. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -0
  256. package/dist/lib/components/slots/mj-chat-agent-presence-default.component.d.ts +11 -0
  257. package/dist/lib/components/slots/mj-chat-agent-presence-default.component.d.ts.map +1 -0
  258. package/dist/lib/components/slots/mj-chat-agent-presence-default.component.js +98 -0
  259. package/dist/lib/components/slots/mj-chat-agent-presence-default.component.js.map +1 -0
  260. package/dist/lib/components/slots/mj-chat-demonstration-surface-default.component.d.ts +9 -0
  261. package/dist/lib/components/slots/mj-chat-demonstration-surface-default.component.d.ts.map +1 -0
  262. package/dist/lib/components/slots/mj-chat-demonstration-surface-default.component.js +35 -0
  263. package/dist/lib/components/slots/mj-chat-demonstration-surface-default.component.js.map +1 -0
  264. package/dist/lib/components/slots/mj-chat-empty-state-default.component.d.ts +28 -0
  265. package/dist/lib/components/slots/mj-chat-empty-state-default.component.d.ts.map +1 -0
  266. package/dist/lib/components/slots/mj-chat-empty-state-default.component.js +104 -0
  267. package/dist/lib/components/slots/mj-chat-empty-state-default.component.js.map +1 -0
  268. package/dist/lib/components/slots/mj-chat-header-default.component.d.ts +11 -0
  269. package/dist/lib/components/slots/mj-chat-header-default.component.d.ts.map +1 -0
  270. package/dist/lib/components/slots/mj-chat-header-default.component.js +103 -0
  271. package/dist/lib/components/slots/mj-chat-header-default.component.js.map +1 -0
  272. package/dist/lib/components/slots/mj-chat-message-bubble-default.component.d.ts +15 -0
  273. package/dist/lib/components/slots/mj-chat-message-bubble-default.component.d.ts.map +1 -0
  274. package/dist/lib/components/slots/mj-chat-message-bubble-default.component.js +73 -0
  275. package/dist/lib/components/slots/mj-chat-message-bubble-default.component.js.map +1 -0
  276. package/dist/lib/components/slots/mj-chat-message-extra-default.component.d.ts +9 -0
  277. package/dist/lib/components/slots/mj-chat-message-extra-default.component.d.ts.map +1 -0
  278. package/dist/lib/components/slots/mj-chat-message-extra-default.component.js +34 -0
  279. package/dist/lib/components/slots/mj-chat-message-extra-default.component.js.map +1 -0
  280. package/dist/lib/components/slots/slot-interfaces.d.ts +95 -0
  281. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -0
  282. package/dist/lib/components/slots/slot-interfaces.js +18 -0
  283. package/dist/lib/components/slots/slot-interfaces.js.map +1 -0
  284. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +11 -0
  285. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  286. package/dist/lib/components/workspace/conversation-workspace.component.js +28 -4
  287. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  288. package/dist/lib/conversations.module.d.ts +12 -1
  289. package/dist/lib/conversations.module.d.ts.map +1 -1
  290. package/dist/lib/conversations.module.js +93 -5
  291. package/dist/lib/conversations.module.js.map +1 -1
  292. package/dist/lib/directives/chat-slot.directive.d.ts +44 -0
  293. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -0
  294. package/dist/lib/directives/chat-slot.directive.js +54 -0
  295. package/dist/lib/directives/chat-slot.directive.js.map +1 -0
  296. package/dist/lib/events/chat-events.d.ts +137 -0
  297. package/dist/lib/events/chat-events.d.ts.map +1 -0
  298. package/dist/lib/events/chat-events.js +189 -0
  299. package/dist/lib/events/chat-events.js.map +1 -0
  300. package/dist/lib/models/conversation-state.model.d.ts +2 -1
  301. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  302. package/dist/lib/models/conversation-state.model.js.map +1 -1
  303. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  304. package/dist/lib/services/artifact-state.service.js +23 -6
  305. package/dist/lib/services/artifact-state.service.js.map +1 -1
  306. package/dist/lib/services/conversation-agent.service.d.ts +60 -74
  307. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  308. package/dist/lib/services/conversation-agent.service.js +100 -313
  309. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  310. package/dist/lib/services/conversation-bridge.service.d.ts +11 -70
  311. package/dist/lib/services/conversation-bridge.service.d.ts.map +1 -1
  312. package/dist/lib/services/conversation-bridge.service.js +51 -85
  313. package/dist/lib/services/conversation-bridge.service.js.map +1 -1
  314. package/dist/lib/services/conversation-naming.d.ts +63 -0
  315. package/dist/lib/services/conversation-naming.d.ts.map +1 -0
  316. package/dist/lib/services/conversation-naming.js +58 -0
  317. package/dist/lib/services/conversation-naming.js.map +1 -0
  318. package/dist/lib/services/conversation-streaming.service.d.ts +24 -154
  319. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  320. package/dist/lib/services/conversation-streaming.service.js +39 -361
  321. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  322. package/dist/lib/services/conversations-runtime-bootstrap.service.d.ts +10 -0
  323. package/dist/lib/services/conversations-runtime-bootstrap.service.d.ts.map +1 -0
  324. package/dist/lib/services/conversations-runtime-bootstrap.service.js +104 -0
  325. package/dist/lib/services/conversations-runtime-bootstrap.service.js.map +1 -0
  326. package/dist/lib/services/delegation-result-parser.d.ts +45 -0
  327. package/dist/lib/services/delegation-result-parser.d.ts.map +1 -0
  328. package/dist/lib/services/delegation-result-parser.js +48 -0
  329. package/dist/lib/services/delegation-result-parser.js.map +1 -0
  330. package/dist/lib/services/mention-autocomplete.service.d.ts +19 -4
  331. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  332. package/dist/lib/services/mention-autocomplete.service.js +65 -4
  333. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  334. package/dist/lib/services/mention-parser.service.d.ts +8 -53
  335. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  336. package/dist/lib/services/mention-parser.service.js +32 -243
  337. package/dist/lib/services/mention-parser.service.js.map +1 -1
  338. package/dist/lib/services/narration-template.d.ts +42 -0
  339. package/dist/lib/services/narration-template.d.ts.map +1 -0
  340. package/dist/lib/services/narration-template.js +73 -0
  341. package/dist/lib/services/narration-template.js.map +1 -0
  342. package/dist/lib/services/realtime-pairing.d.ts +120 -0
  343. package/dist/lib/services/realtime-pairing.d.ts.map +1 -0
  344. package/dist/lib/services/realtime-pairing.js +150 -0
  345. package/dist/lib/services/realtime-pairing.js.map +1 -0
  346. package/dist/lib/services/realtime-session-review.service.d.ts +233 -0
  347. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -0
  348. package/dist/lib/services/realtime-session-review.service.js +417 -0
  349. package/dist/lib/services/realtime-session-review.service.js.map +1 -0
  350. package/dist/lib/services/realtime-session.service.d.ts +739 -0
  351. package/dist/lib/services/realtime-session.service.d.ts.map +1 -0
  352. package/dist/lib/services/realtime-session.service.js +1647 -0
  353. package/dist/lib/services/realtime-session.service.js.map +1 -0
  354. package/dist/lib/services/realtime-sessions-adapter.d.ts +54 -0
  355. package/dist/lib/services/realtime-sessions-adapter.d.ts.map +1 -0
  356. package/dist/lib/services/realtime-sessions-adapter.js +154 -0
  357. package/dist/lib/services/realtime-sessions-adapter.js.map +1 -0
  358. package/dist/lib/services/user-authorization.d.ts +67 -0
  359. package/dist/lib/services/user-authorization.d.ts.map +1 -0
  360. package/dist/lib/services/user-authorization.js +66 -0
  361. package/dist/lib/services/user-authorization.js.map +1 -0
  362. package/dist/lib/utils/realtime-session-timeline.d.ts +84 -0
  363. package/dist/lib/utils/realtime-session-timeline.d.ts.map +1 -0
  364. package/dist/lib/utils/realtime-session-timeline.js +94 -0
  365. package/dist/lib/utils/realtime-session-timeline.js.map +1 -0
  366. package/dist/public-api.d.ts +41 -0
  367. package/dist/public-api.d.ts.map +1 -1
  368. package/dist/public-api.js +50 -0
  369. package/dist/public-api.js.map +1 -1
  370. package/package.json +27 -24
  371. package/dist/__tests__/conversation-bridge.service.test.d.ts +0 -2
  372. package/dist/__tests__/conversation-bridge.service.test.d.ts.map +0 -1
  373. package/dist/__tests__/conversation-bridge.service.test.js +0 -98
  374. package/dist/__tests__/conversation-bridge.service.test.js.map +0 -1
  375. package/dist/__tests__/mention-parser.test.d.ts +0 -2
  376. package/dist/__tests__/mention-parser.test.d.ts.map +0 -1
  377. package/dist/__tests__/mention-parser.test.js +0 -154
  378. package/dist/__tests__/mention-parser.test.js.map +0 -1
@@ -0,0 +1,346 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** A keyboard modifier held during a relayed human input (Shift-click selection, Ctrl/Cmd+key chords). */
4
+ export type RemoteBrowserModifier = 'Shift' | 'Control' | 'Alt' | 'Meta';
5
+ /**
6
+ * One human-takeover input the surface emits to the channel while the user "drives" the live view.
7
+ * Mirrors the server's `RemoteBrowserHumanInput` union (flattened for transport): pointer
8
+ * moves/clicks/down/up and scrolls carry VIEWPORT coordinates, a scroll also carries wheel deltas, a key
9
+ * carries the pressed key string. Pointer clicks/down/up and keys also carry any held `modifiers`.
10
+ */
11
+ export interface RemoteBrowserHumanInputEvent {
12
+ /** Which input occurred. */
13
+ kind: 'pointer-move' | 'pointer-click' | 'pointer-down' | 'pointer-up' | 'key' | 'scroll';
14
+ /** Viewport X (pointer + scroll kinds only). */
15
+ x?: number;
16
+ /** Viewport Y (pointer + scroll kinds only). */
17
+ y?: number;
18
+ /** Mouse button (pointer-click / -down / -up only). */
19
+ button?: 'left' | 'middle' | 'right';
20
+ /** The pressed key (key kind only). */
21
+ key?: string;
22
+ /** Horizontal wheel delta in pixels (scroll kind only; positive = right). */
23
+ deltaX?: number;
24
+ /** Vertical wheel delta in pixels (scroll kind only; positive = down). */
25
+ deltaY?: number;
26
+ /** Modifier keys held during the input (pointer-click / -down / -up and key kinds). */
27
+ modifiers?: RemoteBrowserModifier[];
28
+ }
29
+ /**
30
+ * Maps a display-space pointer position on the live canvas to the server browser's VIEWPORT pixel space.
31
+ *
32
+ * The canvas's internal resolution (`canvasWidth`/`canvasHeight`, set from each pushed frame) IS the
33
+ * viewport pixel space; the canvas is displayed scaled to its bounding rect. So a display point maps as
34
+ * `vx = (clientX - rect.left) / rect.width * canvasWidth` (and likewise for y), rounded to ints. Returns
35
+ * `null` for a zero-size rect or un-sized canvas (divide-by-zero / not-ready guard).
36
+ *
37
+ * Pure + framework-free so it's unit-testable without a DOM.
38
+ *
39
+ * @param clientX The pointer's viewport X in the DOM (`event.clientX`).
40
+ * @param clientY The pointer's viewport Y in the DOM (`event.clientY`).
41
+ * @param rect The canvas's bounding rect (`getBoundingClientRect()`).
42
+ * @param canvasWidth The canvas's internal pixel width (= frame/viewport width).
43
+ * @param canvasHeight The canvas's internal pixel height (= frame/viewport height).
44
+ * @returns Integer viewport coordinates, or `null` when mapping isn't possible.
45
+ */
46
+ export declare function MapToViewportCoords(clientX: number, clientY: number, rect: {
47
+ left: number;
48
+ top: number;
49
+ width: number;
50
+ height: number;
51
+ }, canvasWidth: number, canvasHeight: number): {
52
+ x: number;
53
+ y: number;
54
+ } | null;
55
+ /**
56
+ * One snapshot of the server-hosted browser — the shape the surface's {@link RemoteBrowserSurfaceComponent.Fetch}
57
+ * callback resolves to. Mirrors the server's `RemoteBrowserSnapshot` query payload.
58
+ */
59
+ export interface RemoteBrowserSnapshotView {
60
+ /** The current page screenshot as raw base64 PNG, or `null` when none is available yet. */
61
+ ScreenshotBase64: string | null;
62
+ /** The current page URL, or `null` when no page is loaded. */
63
+ CurrentUrl: string | null;
64
+ }
65
+ /**
66
+ * Fetches one {@link RemoteBrowserSnapshotView} from the server. Supplied by the channel
67
+ * plugin (it owns the session id + GraphQL provider). Best-effort by contract: resolves to
68
+ * `null` on any failure rather than throwing, so the surface keeps the last good frame.
69
+ */
70
+ export type RemoteBrowserSnapshotFetcher = () => Promise<RemoteBrowserSnapshotView | null>;
71
+ /**
72
+ * LIVE REMOTE-BROWSER surface (`mj-realtime-remote-browser-surface`) — the Browser channel
73
+ * tab's pane. It renders the SERVER-hosted browser the agent drives: a refreshing screenshot
74
+ * `<img>` with the current URL above it and a small "live" indicator. The agent's
75
+ * `browser_*` tools mutate the page through the channel plugin; this surface only PERCEIVES
76
+ * it, polling its {@link Fetch} callback every {@link SNAPSHOT_POLL_MS} ms while bound.
77
+ *
78
+ * The surface is transport-agnostic — it never touches GraphQL directly. The channel plugin
79
+ * wires the {@link Fetch} callback (closing over the session id + provider) in `BindSurface`
80
+ * before the surface's first change detection, so the `ngOnInit` poll has it. Polling stops
81
+ * in `ngOnDestroy` (pane collapsed / overlay torn down) so no traffic continues after unbind.
82
+ * View-only in v1 — there is no takeover input.
83
+ *
84
+ * ### Two render paths: pushed screencast (preferred) vs. snapshot poll (fallback)
85
+ * When the backend advertises the `ScreenStreaming` capability, the server PUSHES encoded CDP
86
+ * frames and the channel plugin sets {@link Streaming} = `true`. In that mode the surface paints
87
+ * each frame onto a `<canvas>` via {@link RenderFrame} and DOES NOT start the poll. When streaming
88
+ * is off (capability absent or start failed) the original behavior is unchanged: the surface polls
89
+ * {@link Fetch} every {@link SNAPSHOT_POLL_MS} ms and renders the screenshot `<img>`.
90
+ */
91
+ export declare class RemoteBrowserSurfaceComponent implements OnInit, OnDestroy {
92
+ /** Snapshot fetcher supplied by the channel plugin (closes over the session id + provider). */
93
+ Fetch: RemoteBrowserSnapshotFetcher | null;
94
+ /**
95
+ * Whether the server is PUSHING live screencast frames for this session (the backend advertised the
96
+ * `ScreenStreaming` capability and the start succeeded). When `true` the surface paints pushed frames
97
+ * onto its `<canvas>` via {@link RenderFrame} and does NOT poll; when `false` it uses the snapshot
98
+ * `<img>` poll fallback. Set by the channel plugin in `BindSurface` from the start-screencast result.
99
+ *
100
+ * The start-screencast result is async, so this may flip to `true` AFTER `ngOnInit` has already begun
101
+ * polling — the setter tears the poll down in that case so the two render paths never run at once.
102
+ */
103
+ set Streaming(value: boolean);
104
+ get Streaming(): boolean;
105
+ private _streaming;
106
+ /**
107
+ * Whether HUMAN TAKEOVER is enabled — the user watching the live view can click/type into the page and
108
+ * those events are relayed into the server browser (Collaborative control). Takeover only attaches to the
109
+ * canvas render path (pushed screencast); the `<img>` poll fallback stays view-only. When enabled while
110
+ * already streaming the setter attaches listeners; flipping it off (or streaming off) detaches them.
111
+ */
112
+ set Interactive(value: boolean);
113
+ get Interactive(): boolean;
114
+ private _interactive;
115
+ /** Emits each human-takeover input (pointer move/click, key) the user performs on the live canvas. */
116
+ HumanInput: EventEmitter<RemoteBrowserHumanInputEvent>;
117
+ /**
118
+ * Whether the live tab-audio stream is available — the channel sets this `true` when the server confirms
119
+ * it is pushing audio. Drives whether the speaker toggle renders in the live-view bar.
120
+ */
121
+ AudioAvailable: boolean;
122
+ /**
123
+ * Whether tab audio is currently muted. Two-way: the channel sets the initial value (un-muted when audio
124
+ * starts) and the toggle updates it; {@link AudioMutedChange} relays each user change to the channel,
125
+ * which mutes/unmutes the player.
126
+ */
127
+ AudioMuted: boolean;
128
+ /** Emits the new muted state each time the user toggles the speaker (two-way `AudioMuted`). */
129
+ AudioMutedChange: EventEmitter<boolean>;
130
+ /** Toggles the speaker mute state and relays it to the channel (which mutes/unmutes the audio player). */
131
+ ToggleAudioMuted(): void;
132
+ /** True when takeover is both enabled AND on the canvas path — drives the cursor + "driving" pill. */
133
+ get CanTakeOver(): boolean;
134
+ /**
135
+ * True while the user is actively driving the remote browser with the keyboard — the takeover canvas
136
+ * holds focus. The host overlay reads this to stand down its own global keyboard shortcuts (e.g.
137
+ * T-to-type opening the local composer) so keystrokes go to the remote page, not the local input.
138
+ */
139
+ get IsCapturingInput(): boolean;
140
+ /** The current screenshot as a `data:` URL, or `null` before the first snapshot arrives. */
141
+ ScreenshotDataUrl: string | null;
142
+ /** The current page URL reported by the server, or `null` when none. */
143
+ CurrentUrl: string | null;
144
+ /** Whether at least one pushed screencast frame has been painted (drives the canvas placeholder). */
145
+ HasFrame: boolean;
146
+ /** The canvas the pushed screencast frames are painted onto (present only while {@link Streaming}). */
147
+ private frameCanvas?;
148
+ /** The transparent overlay the synthetic cursor is drawn onto (present only while {@link CanTakeOver}). */
149
+ private cursorCanvas?;
150
+ /** Whether at least one screenshot OR frame has been rendered (drives the "Live" indicator). */
151
+ get HasSnapshot(): boolean;
152
+ private readonly cdr;
153
+ private readonly zone;
154
+ /** Active poll timer; `null` when polling is stopped. */
155
+ private pollTimer;
156
+ /** Guards against overlapping polls when a request runs longer than the interval. */
157
+ private polling;
158
+ /** Set on destroy so an in-flight poll's late resolution doesn't touch a torn-down view. */
159
+ private destroyed;
160
+ /** Reused decode target for pushed frames — avoids allocating an `Image` per frame. */
161
+ private readonly frameImage;
162
+ /** The most recent un-painted frame data URL, drained on the next animation frame (drop-old coalescing). */
163
+ private pendingFrameDataUrl;
164
+ /** True while a paint is scheduled, so rapid frames coalesce to one `requestAnimationFrame`. */
165
+ private framePaintScheduled;
166
+ /** The canvas element takeover listeners are currently bound to, or `null` when detached. */
167
+ private takeoverCanvas;
168
+ /** Timestamp (ms) of the last forwarded pointer-move, for throttling the high-frequency stream. */
169
+ private lastPointerMoveAt;
170
+ /** Timestamp (ms) of the last forwarded scroll, for throttling the high-frequency wheel stream. */
171
+ private lastScrollAt;
172
+ /** Horizontal wheel delta accumulated since the last forwarded scroll (coalesced across throttled events). */
173
+ private pendingScrollDeltaX;
174
+ /** Vertical wheel delta accumulated since the last forwarded scroll (coalesced across throttled events). */
175
+ private pendingScrollDeltaY;
176
+ /** Last canvas-relative mouse position in VIEWPORT pixel space, or `null` when the pointer is off-canvas. */
177
+ private cursorViewportPoint;
178
+ /** True while a synthetic-cursor repaint is queued, so rapid moves coalesce to one `requestAnimationFrame`. */
179
+ private cursorPaintScheduled;
180
+ /**
181
+ * True while the user is mid-drag on the canvas (a `mousedown` not yet released) — drives forwarding
182
+ * intermediate moves as a drag and emitting the closing `pointer-up`. Click-drag text selection relies on
183
+ * this so the drag relays as down → moves → up rather than a single discrete click.
184
+ */
185
+ private dragging;
186
+ /**
187
+ * True when the most recent `mousedown`→`mouseup` actually MOVED (a real drag), so the synthetic `click`
188
+ * the browser fires right after should be suppressed — the drag's down/move/up already conveyed the intent,
189
+ * and a trailing click would collapse a just-made text selection.
190
+ */
191
+ private suppressNextClick;
192
+ /** Viewport point of the active drag's mousedown, used to tell a real drag from a stationary click. */
193
+ private dragStartPoint;
194
+ /**
195
+ * True while the takeover canvas currently HOLDS keyboard focus. The host overlay reads this (via
196
+ * {@link IsCapturingInput}) to suppress its own global key shortcuts (e.g. T-to-type) so the user's
197
+ * keystrokes land in the remote browser, not the local composer — fixing the "greedy textbox" focus theft.
198
+ */
199
+ private surfaceFocused;
200
+ /** Bound handlers — stored so the exact same references can be removed on detach. */
201
+ private readonly onCanvasMouseMove;
202
+ private readonly onCanvasMouseDown;
203
+ private readonly onCanvasMouseUp;
204
+ private readonly onCanvasClick;
205
+ private readonly onCanvasKeyDown;
206
+ private readonly onCanvasMouseLeave;
207
+ private readonly onCanvasWheel;
208
+ private readonly onCanvasFocus;
209
+ private readonly onCanvasBlur;
210
+ ngOnInit(): void;
211
+ ngOnDestroy(): void;
212
+ /** Starts the interval poll OUTSIDE Angular's zone so it doesn't trigger CD on every tick. */
213
+ private startPolling;
214
+ /** Stops the interval poll (no further snapshot requests are issued). */
215
+ private stopPolling;
216
+ /**
217
+ * Fetches one snapshot and applies it to the view. Best-effort: the fetcher resolves to
218
+ * `null` on failure (the prior frame stays on screen) so a single failed poll never breaks
219
+ * the live view. Skips when a prior poll is still in flight, the fetcher isn't wired, or
220
+ * after destroy.
221
+ */
222
+ private pollOnce;
223
+ /** Applies a fetched snapshot to the view fields and triggers OnPush change detection. */
224
+ private applySnapshot;
225
+ /**
226
+ * Paints one PUSHED screencast frame (base64 JPEG) onto the canvas. Called by the channel plugin for
227
+ * each frame the server pushes while {@link Streaming}. Coalesces a burst of frames to one paint per
228
+ * animation frame (the newest wins) so a fast stream never floods the main thread, and reuses a single
229
+ * `Image` decode target to avoid per-frame allocation. No-op after destroy or when not in streaming mode.
230
+ *
231
+ * @param dataBase64 The frame image as raw base64 JPEG (no `data:` prefix).
232
+ */
233
+ RenderFrame(dataBase64: string): void;
234
+ /**
235
+ * Updates the URL shown above the live view. In streaming (canvas) mode the snapshot poll is stopped, so
236
+ * the channel pushes the current URL here after a navigation/action reports one — otherwise the bar would
237
+ * stay stuck on "No page loaded yet" even though the page is live. No-op for an unchanged / empty value.
238
+ *
239
+ * @param url The current page URL, or null/empty to leave the bar unchanged.
240
+ */
241
+ SetCurrentUrl(url: string | null | undefined): void;
242
+ /** Drains the most recent pending frame onto the canvas (drop-old coalescing target). */
243
+ private paintPendingFrame;
244
+ /** Draws the decoded frame image onto the canvas, sizing the canvas to the frame on the first paint. */
245
+ private drawFrameImage;
246
+ /**
247
+ * Attaches or detaches the canvas takeover listeners so they're bound exactly when takeover is live —
248
+ * {@link CanTakeOver} is true AND the canvas element exists. Idempotent: re-binds only when the target
249
+ * canvas changed, detaches when the conditions no longer hold. Safe to call from any state-flip path
250
+ * (the `Interactive`/`Streaming` setters, the first-frame paint, destroy).
251
+ */
252
+ private syncTakeoverListeners;
253
+ /** Binds the pointer/keyboard/wheel listeners to the canvas OUTSIDE the zone (mousemove/wheel are high-frequency). */
254
+ private attachTakeoverListeners;
255
+ /** Removes the listeners from the currently-bound canvas (no-op when none are bound) and clears the cursor. */
256
+ private detachTakeoverListeners;
257
+ /**
258
+ * Pointer-move → tracks the cursor for the synthetic-cursor overlay (every move, immediate, no
259
+ * round-trip) AND emits a throttled viewport-mapped move to the server. Runs outside the zone (no CD
260
+ * per move).
261
+ */
262
+ private handlePointerMove;
263
+ /** Mouse leaves the canvas → hide the synthetic cursor (nothing to relay). */
264
+ private handleMouseLeave;
265
+ /**
266
+ * Wheel/trackpad/Magic-Mouse scroll over the canvas → forwards a viewport-mapped scroll to the server.
267
+ * Calls `preventDefault` so the host page doesn't scroll while the user drives the live page. Throttled
268
+ * to {@link SCROLL_THROTTLE_MS}, coalescing the skipped deltas so no scroll distance is lost.
269
+ */
270
+ private handleWheel;
271
+ /**
272
+ * Mouse-down on the canvas → focuses the canvas (so subsequent keys are captured) and BEGINS a drag:
273
+ * emits a `pointer-down` and arms drag mode so the following moves relay as drag motion and the matching
274
+ * `pointer-up` closes it. This is what makes click-drag text selection work (rather than a discrete click).
275
+ */
276
+ private handlePointerDown;
277
+ /**
278
+ * Mouse-up on the canvas → closes a drag with a `pointer-up` at the release point, disarming drag mode.
279
+ * If the pointer actually moved between down and up, marks the following synthetic `click` to be suppressed
280
+ * (so the drag selection isn't immediately collapsed by a trailing click).
281
+ */
282
+ private handlePointerUp;
283
+ /**
284
+ * Click → emits a viewport-mapped click WITH any held modifiers (e.g. Shift-click text selection). The
285
+ * server browser receives the press/release of a drag via {@link handlePointerDown}/{@link handlePointerUp};
286
+ * a plain click (down+up with no motion) still fires this `click` event, so a simple click relays as one
287
+ * click action — but we skip emitting it when it terminates a real drag (where down/up already covered it).
288
+ */
289
+ private handlePointerClick;
290
+ /**
291
+ * Keydown → forwards printable keys, a curated set of control keys ({@link FORWARDED_CONTROL_KEYS}), AND
292
+ * any key combined with a Ctrl/Cmd/Alt modifier (so combos like Ctrl/Cmd+A select-all, Cmd+C/Cmd+V relay).
293
+ * Calls `preventDefault` + `stopPropagation` ONLY on forwarded keys, so (a) the host app keeps its own
294
+ * shortcuts on un-forwarded keys and (b) forwarded keys never bubble to the host overlay's global shortcuts
295
+ * (the T-to-type focus-steal). Lone modifier keys are never forwarded — they ride as `modifiers` on the
296
+ * next key/click.
297
+ */
298
+ private handleKeyDown;
299
+ /**
300
+ * Collects the modifier keys currently held during a DOM mouse/keyboard event into the relayed
301
+ * {@link RemoteBrowserModifier} list (empty when none are held).
302
+ *
303
+ * @param event The DOM event whose modifier flags to read.
304
+ * @returns The held modifiers, in a stable order.
305
+ */
306
+ private collectModifiers;
307
+ /** Re-enters the zone to emit one human input (so subscribers see it inside Angular). */
308
+ private emitInput;
309
+ /**
310
+ * Maps a DOM pointer event on the live canvas to VIEWPORT coordinates via {@link MapToViewportCoords}
311
+ * (the pure, unit-tested mapping). Returns `null` when no canvas is bound or mapping isn't possible yet.
312
+ *
313
+ * @param event The pointer event on the canvas.
314
+ * @returns The integer viewport coordinates, or `null` when mapping isn't possible yet.
315
+ */
316
+ private toViewportCoords;
317
+ /**
318
+ * Schedules a synthetic-cursor repaint on the next animation frame, coalescing a burst of moves to one
319
+ * paint (the newest position wins). Runs outside the zone — drawing the cursor never triggers Angular CD.
320
+ */
321
+ private scheduleCursorPaint;
322
+ /**
323
+ * Draws (or clears) the synthetic cursor on the overlay canvas at {@link cursorViewportPoint}. The overlay
324
+ * shares the frame canvas's internal resolution (sized here to match), so a point drawn at viewport coords
325
+ * aligns exactly with the page underneath. A small brand-tinted ring with a center dot reads as a pointer
326
+ * without obscuring what it's over. No-op after destroy or when the overlay isn't mounted.
327
+ */
328
+ private paintSyntheticCursor;
329
+ /** Clears the synthetic-cursor overlay (e.g. on detach). No-op when the overlay isn't mounted. */
330
+ private clearSyntheticCursor;
331
+ /**
332
+ * Resolves a CSS custom property (design token) to its computed color value off the host element, so the
333
+ * canvas-drawn cursor honors theming. Falls back to the supplied default when the token is unset or the
334
+ * host isn't measurable.
335
+ *
336
+ * @param token The CSS custom property name (e.g. `'--mj-brand-primary'`).
337
+ * @param fallback The color to use when the token resolves empty.
338
+ * @returns The resolved color string.
339
+ */
340
+ private resolveCssColor;
341
+ /** Maps a DOM `MouseEvent.button` (0/1/2) to the relayed button union, defaulting to `'left'`. */
342
+ private mapButton;
343
+ static ɵfac: i0.ɵɵFactoryDeclaration<RemoteBrowserSurfaceComponent, never>;
344
+ static ɵcmp: i0.ɵɵComponentDeclaration<RemoteBrowserSurfaceComponent, "mj-realtime-remote-browser-surface", never, { "Fetch": { "alias": "Fetch"; "required": false; }; "Streaming": { "alias": "Streaming"; "required": false; }; "Interactive": { "alias": "Interactive"; "required": false; }; "AudioAvailable": { "alias": "AudioAvailable"; "required": false; }; "AudioMuted": { "alias": "AudioMuted"; "required": false; }; }, { "HumanInput": "HumanInput"; "AudioMutedChange": "AudioMutedChange"; }, never, never, true, never>;
345
+ }
346
+ //# sourceMappingURL=remote-browser-surface.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-browser-surface.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/realtime/remote-browser/remote-browser-surface.component.ts"],"names":[],"mappings":"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"}