@memberjunction/ng-conversations 6.2.0-edge.5 → 6.2.0-edge.7

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 (164) hide show
  1. package/dist/lib/components/attachment/image-viewer.component.d.ts +3 -1
  2. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  3. package/dist/lib/components/attachment/image-viewer.component.js +5 -1
  4. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  5. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  6. package/dist/lib/components/collection/collection-view.component.js +1 -0
  7. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  8. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +188 -9
  9. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  10. package/dist/lib/components/conversation/conversation-chat-area.component.js +1333 -464
  11. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  12. package/dist/lib/components/conversation/conversation-mode-picker.component.js +2 -2
  13. package/dist/lib/components/conversation/conversation-mode-picker.component.js.map +1 -1
  14. package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts +109 -0
  15. package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts.map +1 -0
  16. package/dist/lib/components/conversation/conversation-remote-browser-controller.js +298 -0
  17. package/dist/lib/components/conversation/conversation-remote-browser-controller.js.map +1 -0
  18. package/dist/lib/components/message/agent-handoff-card.component.d.ts +102 -0
  19. package/dist/lib/components/message/agent-handoff-card.component.d.ts.map +1 -0
  20. package/dist/lib/components/message/agent-handoff-card.component.js +439 -0
  21. package/dist/lib/components/message/agent-handoff-card.component.js.map +1 -0
  22. package/dist/lib/components/message/message-input.component.d.ts +126 -59
  23. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  24. package/dist/lib/components/message/message-input.component.js +559 -554
  25. package/dist/lib/components/message/message-input.component.js.map +1 -1
  26. package/dist/lib/components/message/message-item.component.d.ts +34 -2
  27. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  28. package/dist/lib/components/message/message-item.component.js +678 -520
  29. package/dist/lib/components/message/message-item.component.js.map +1 -1
  30. package/dist/lib/components/message/message-list.component.d.ts +13 -1
  31. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  32. package/dist/lib/components/message/message-list.component.js +92 -39
  33. package/dist/lib/components/message/message-list.component.js.map +1 -1
  34. package/dist/lib/components/overlay/chat-overlay.component.d.ts +19 -0
  35. package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
  36. package/dist/lib/components/overlay/chat-overlay.component.js +125 -13
  37. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  38. package/dist/lib/components/project/project-form-modal.component.js +2 -2
  39. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  40. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js +1 -1
  41. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js.map +1 -1
  42. package/dist/lib/components/realtime/media/media-channel-state.d.ts +5 -0
  43. package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -1
  44. package/dist/lib/components/realtime/media/media-channel-state.js +27 -1
  45. package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -1
  46. package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
  47. package/dist/lib/components/realtime/media/media-channel.js +7 -2
  48. package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
  49. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +19 -2
  50. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -1
  51. package/dist/lib/components/realtime/media/realtime-media-surface.component.js +59 -10
  52. package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -1
  53. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +22 -6
  54. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
  55. package/dist/lib/components/realtime/realtime-agent-banner.component.js +160 -98
  56. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
  57. package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts +13 -0
  58. package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts.map +1 -0
  59. package/dist/lib/components/realtime/realtime-call-failure-notice.js +21 -0
  60. package/dist/lib/components/realtime/realtime-call-failure-notice.js.map +1 -0
  61. package/dist/lib/components/realtime/realtime-composer.component.d.ts +26 -3
  62. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
  63. package/dist/lib/components/realtime/realtime-composer.component.js +226 -120
  64. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
  65. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +73 -16
  66. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
  67. package/dist/lib/components/realtime/realtime-session-overlay.component.js +219 -108
  68. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  69. package/dist/lib/components/realtime/realtime-ui-config.d.ts +9 -12
  70. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  71. package/dist/lib/components/realtime/realtime-ui-config.js +38 -18
  72. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  73. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
  74. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +34 -5
  75. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
  76. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts +8 -2
  77. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts.map +1 -1
  78. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js +51 -10
  79. package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js.map +1 -1
  80. package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts +46 -0
  81. package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts.map +1 -0
  82. package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js +64 -0
  83. package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js.map +1 -0
  84. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +131 -9
  85. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  86. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +347 -38
  87. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  88. package/dist/lib/conversations.module.d.ts +2 -1
  89. package/dist/lib/conversations.module.d.ts.map +1 -1
  90. package/dist/lib/conversations.module.js +9 -4
  91. package/dist/lib/conversations.module.js.map +1 -1
  92. package/dist/lib/events/chat-events.d.ts +5 -4
  93. package/dist/lib/events/chat-events.d.ts.map +1 -1
  94. package/dist/lib/events/chat-events.js +2 -2
  95. package/dist/lib/events/chat-events.js.map +1 -1
  96. package/dist/lib/models/agent-turn.model.d.ts +11 -7
  97. package/dist/lib/models/agent-turn.model.d.ts.map +1 -1
  98. package/dist/lib/models/agent-turn.model.js.map +1 -1
  99. package/dist/lib/services/active-tasks.service.d.ts +5 -0
  100. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  101. package/dist/lib/services/active-tasks.service.js +16 -0
  102. package/dist/lib/services/active-tasks.service.js.map +1 -1
  103. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  104. package/dist/lib/services/agent-state.service.js +7 -1
  105. package/dist/lib/services/agent-state.service.js.map +1 -1
  106. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  107. package/dist/lib/services/artifact-permission.service.js +2 -0
  108. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  109. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  110. package/dist/lib/services/artifact-state.service.js +1 -0
  111. package/dist/lib/services/artifact-state.service.js.map +1 -1
  112. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  113. package/dist/lib/services/collection-permission.service.js +1 -0
  114. package/dist/lib/services/collection-permission.service.js.map +1 -1
  115. package/dist/lib/services/conversation-agent.service.d.ts +38 -16
  116. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  117. package/dist/lib/services/conversation-agent.service.js +57 -71
  118. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  119. package/dist/lib/services/conversation-detail-window.store.d.ts +5 -0
  120. package/dist/lib/services/conversation-detail-window.store.d.ts.map +1 -1
  121. package/dist/lib/services/conversation-detail-window.store.js +52 -5
  122. package/dist/lib/services/conversation-detail-window.store.js.map +1 -1
  123. package/dist/lib/services/realtime-session-review.service.d.ts +2 -1
  124. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
  125. package/dist/lib/services/realtime-session-review.service.js.map +1 -1
  126. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  127. package/dist/lib/services/realtime-session.service.js +2 -1
  128. package/dist/lib/services/realtime-session.service.js.map +1 -1
  129. package/dist/lib/services/search.service.d.ts.map +1 -1
  130. package/dist/lib/services/search.service.js +1 -0
  131. package/dist/lib/services/search.service.js.map +1 -1
  132. package/dist/lib/utils/agent-failure-display.d.ts +14 -0
  133. package/dist/lib/utils/agent-failure-display.d.ts.map +1 -0
  134. package/dist/lib/utils/agent-failure-display.js +26 -0
  135. package/dist/lib/utils/agent-failure-display.js.map +1 -0
  136. package/dist/lib/utils/agent-handoff-map.d.ts +52 -0
  137. package/dist/lib/utils/agent-handoff-map.d.ts.map +1 -0
  138. package/dist/lib/utils/agent-handoff-map.js +270 -0
  139. package/dist/lib/utils/agent-handoff-map.js.map +1 -0
  140. package/dist/lib/utils/agent-turn-routing.d.ts +62 -7
  141. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -1
  142. package/dist/lib/utils/agent-turn-routing.js +147 -6
  143. package/dist/lib/utils/agent-turn-routing.js.map +1 -1
  144. package/dist/lib/utils/decision-routing.d.ts +17 -9
  145. package/dist/lib/utils/decision-routing.d.ts.map +1 -1
  146. package/dist/lib/utils/decision-routing.js +23 -14
  147. package/dist/lib/utils/decision-routing.js.map +1 -1
  148. package/dist/lib/utils/message-list-order.d.ts +13 -0
  149. package/dist/lib/utils/message-list-order.d.ts.map +1 -0
  150. package/dist/lib/utils/message-list-order.js +31 -0
  151. package/dist/lib/utils/message-list-order.js.map +1 -0
  152. package/dist/lib/utils/pin-state.d.ts +11 -0
  153. package/dist/lib/utils/pin-state.d.ts.map +1 -0
  154. package/dist/lib/utils/pin-state.js +9 -0
  155. package/dist/lib/utils/pin-state.js.map +1 -0
  156. package/dist/lib/utils/thread-replies.d.ts +34 -0
  157. package/dist/lib/utils/thread-replies.d.ts.map +1 -0
  158. package/dist/lib/utils/thread-replies.js +49 -0
  159. package/dist/lib/utils/thread-replies.js.map +1 -0
  160. package/dist/public-api.d.ts +6 -0
  161. package/dist/public-api.d.ts.map +1 -1
  162. package/dist/public-api.js +6 -0
  163. package/dist/public-api.js.map +1 -1
  164. package/package.json +36 -36
@@ -7,162 +7,237 @@ import { RealtimeSessionService } from '../../services/realtime-session.service'
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/forms";
9
9
  const _c0 = ["dockInput"];
10
- function RealtimeComposerComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
11
- const _r2 = i0.ɵɵgetCurrentView();
12
- i0.ɵɵelementStart(0, "button", 16);
13
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.DetailsToggled.emit(); return i0.ɵɵresetView(ctx_r2.MoreOpen = false); });
14
- i0.ɵɵelement(1, "i", 17);
10
+ function RealtimeComposerComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11
+ const _r3 = i0.ɵɵgetCurrentView();
12
+ i0.ɵɵelementStart(0, "button", 8);
13
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCaptions()); });
14
+ i0.ɵɵelement(1, "i", 9);
15
+ i0.ɵɵelementEnd();
16
+ } if (rf & 2) {
17
+ const ctx_r1 = i0.ɵɵnextContext(2);
18
+ i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.CaptionsOn)("title", ctx_r1.CaptionsTitle);
19
+ } }
20
+ function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
21
+ const _r5 = i0.ɵɵgetCurrentView();
22
+ i0.ɵɵelementStart(0, "mj-media-controls", 17);
23
+ i0.ɵɵlistener("CameraToggled", function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_2_Template_mj_media_controls_CameraToggled_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.CameraToggled.emit($event); return i0.ɵɵresetView(ctx_r1.MoreOpen = false); })("ShareRequested", function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_2_Template_mj_media_controls_ShareRequested_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.ShareRequested.emit($event); return i0.ɵɵresetView(ctx_r1.MoreOpen = false); })("StopShareRequested", function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_2_Template_mj_media_controls_StopShareRequested_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.StopShareRequested.emit()); });
24
+ i0.ɵɵelementEnd();
25
+ } if (rf & 2) {
26
+ const ctx_r1 = i0.ɵɵnextContext(3);
27
+ i0.ɵɵproperty("ShowMicrophone", false)("ShowCamera", ctx_r1.ShowCamera && !ctx_r1.CameraOn)("ShowShare", ctx_r1.ShowShare && !ctx_r1.Sharing)("CameraOn", ctx_r1.CameraOn)("Sharing", ctx_r1.Sharing)("SharePanels", ctx_r1.SharePanels)("CameraOptional", true);
28
+ } }
29
+ function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
30
+ const _r6 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "button", 18);
32
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.DetailsToggled.emit(); return i0.ɵɵresetView(ctx_r1.MoreOpen = false); });
33
+ i0.ɵɵelement(1, "i", 19);
15
34
  i0.ɵɵelementStart(2, "small");
16
35
  i0.ɵɵtext(3, "Details");
17
36
  i0.ɵɵelementEnd()();
18
37
  } if (rf & 2) {
19
- const ctx_r2 = i0.ɵɵnextContext(2);
20
- i0.ɵɵclassProp("lean-sheet__btn--on", ctx_r2.DetailsOn);
21
- i0.ɵɵproperty("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
22
- i0.ɵɵattribute("aria-pressed", ctx_r2.DetailsOn);
38
+ const ctx_r1 = i0.ɵɵnextContext(3);
39
+ i0.ɵɵclassProp("lean-sheet__btn--on", ctx_r1.DetailsOn);
40
+ i0.ɵɵproperty("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
41
+ i0.ɵɵattribute("aria-pressed", ctx_r1.DetailsOn);
42
+ } }
43
+ function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
44
+ const _r7 = i0.ɵɵgetCurrentView();
45
+ i0.ɵɵelementStart(0, "button", 20);
46
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.OpenChanged.emit(true); return i0.ɵɵresetView(ctx_r1.MoreOpen = false); });
47
+ i0.ɵɵelement(1, "i", 21);
48
+ i0.ɵɵelementStart(2, "small");
49
+ i0.ɵɵtext(3, "Type");
50
+ i0.ɵɵelementEnd()();
51
+ } }
52
+ function RealtimeComposerComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
53
+ const _r4 = i0.ɵɵgetCurrentView();
54
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 11);
55
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Template_div_click_1_listener($event) { return $event.stopPropagation(); });
56
+ i0.ɵɵconditionalCreate(2, RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_2_Template, 1, 7, "mj-media-controls", 12);
57
+ i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_3_Template, 4, 4, "button", 13);
58
+ i0.ɵɵconditionalCreate(4, RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_4_Template, 4, 0, "button", 14);
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelementStart(5, "button", 15);
61
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Template_button_click_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleMore($event)); });
62
+ i0.ɵɵelement(6, "i", 16);
63
+ i0.ɵɵelementEnd()();
64
+ } if (rf & 2) {
65
+ const ctx_r1 = i0.ɵɵnextContext(2);
66
+ i0.ɵɵclassProp("lean-more--open", ctx_r1.MoreOpen);
67
+ i0.ɵɵadvance(2);
68
+ i0.ɵɵconditional(ctx_r1.ShowCamera && !ctx_r1.CameraOn || ctx_r1.ShowShare && !ctx_r1.Sharing ? 2 : -1);
69
+ i0.ɵɵadvance();
70
+ i0.ɵɵconditional(ctx_r1.ShowDetails ? 3 : -1);
71
+ i0.ɵɵadvance();
72
+ i0.ɵɵconditional(ctx_r1.AllowTyping ? 4 : -1);
73
+ i0.ɵɵadvance();
74
+ i0.ɵɵproperty("Variant", ctx_r1.MoreOpen ? "primary" : "secondary");
75
+ i0.ɵɵattribute("aria-expanded", ctx_r1.MoreOpen);
76
+ } }
77
+ function RealtimeComposerComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
78
+ const _r8 = i0.ɵɵgetCurrentView();
79
+ i0.ɵɵelementStart(0, "button", 22);
80
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.EndRequested.emit()); });
81
+ i0.ɵɵelement(1, "i", 23);
82
+ i0.ɵɵelementEnd();
23
83
  } }
24
84
  function RealtimeComposerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
25
85
  const _r1 = i0.ɵɵgetCurrentView();
26
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 4)(2, "div", 5);
27
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_div_click_2_listener($event) { return $event.stopPropagation(); });
28
- i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_0_Conditional_3_Template, 4, 4, "button", 6);
29
- i0.ɵɵelementStart(4, "button", 7);
30
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.OpenChanged.emit(true); return i0.ɵɵresetView(ctx_r2.MoreOpen = false); });
31
- i0.ɵɵelement(5, "i", 8);
32
- i0.ɵɵelementStart(6, "small");
33
- i0.ɵɵtext(7, "Type");
34
- i0.ɵɵelementEnd()()();
35
- i0.ɵɵelementStart(8, "button", 9);
36
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_8_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMore($event)); });
37
- i0.ɵɵelement(9, "i", 10);
38
- i0.ɵɵelementEnd()();
39
- i0.ɵɵelementStart(10, "button", 11);
40
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
41
- i0.ɵɵelement(11, "i", 12);
86
+ i0.ɵɵelementStart(0, "div", 1)(1, "mj-media-controls", 4);
87
+ i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_MicrophoneToggled_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_CameraToggled_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_ShareRequested_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_StopShareRequested_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.StopShareRequested.emit()); })("DeviceSelected", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_DeviceSelected_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.DeviceSelected.emit($event)); });
42
88
  i0.ɵɵelementEnd();
43
- i0.ɵɵelementStart(12, "mj-media-controls", 13);
44
- i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_MicrophoneToggled_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_CameraToggled_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_ShareRequested_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_StopShareRequested_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.StopShareRequested.emit()); })("DeviceSelected", function RealtimeComposerComponent_Conditional_0_Template_mj_media_controls_DeviceSelected_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.DeviceSelected.emit($event)); });
89
+ i0.ɵɵconditionalCreate(2, RealtimeComposerComponent_Conditional_0_Conditional_2_Template, 2, 3, "button", 5);
90
+ i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_0_Conditional_3_Template, 7, 7, "div", 6);
91
+ i0.ɵɵconditionalCreate(4, RealtimeComposerComponent_Conditional_0_Conditional_4_Template, 2, 0, "button", 7);
45
92
  i0.ɵɵelementEnd();
46
- i0.ɵɵelementStart(13, "button", 14);
47
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.EndRequested.emit()); });
48
- i0.ɵɵelement(14, "i", 15);
93
+ } if (rf & 2) {
94
+ const ctx_r1 = i0.ɵɵnextContext();
95
+ i0.ɵɵadvance();
96
+ i0.ɵɵproperty("MicrophoneOn", !ctx_r1.IsMuted)("ShowCamera", ctx_r1.ShowCamera && ctx_r1.CameraOn)("ShowShare", ctx_r1.ShowShare && ctx_r1.Sharing)("CameraOn", ctx_r1.CameraOn)("Sharing", ctx_r1.Sharing)("SharePanels", ctx_r1.SharePanels)("CameraOptional", true)("ShowDeviceMenu", true)("Devices", ctx_r1.Devices)("SelectedMicrophoneID", ctx_r1.SelectedMicrophoneID)("SelectedCameraID", ctx_r1.SelectedCameraID);
97
+ i0.ɵɵadvance();
98
+ i0.ɵɵconditional(ctx_r1.ShowCaptionsControl ? 2 : -1);
99
+ i0.ɵɵadvance();
100
+ i0.ɵɵconditional(ctx_r1.HasMoreItems ? 3 : -1);
101
+ i0.ɵɵadvance();
102
+ i0.ɵɵconditional(ctx_r1.ShowEnd ? 4 : -1);
103
+ } }
104
+ function RealtimeComposerComponent_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105
+ const _r10 = i0.ɵɵgetCurrentView();
106
+ i0.ɵɵelementStart(0, "div", 25)(1, "button", 26);
107
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCaptions()); });
108
+ i0.ɵɵelement(2, "i", 9);
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(3, "span", 27);
111
+ i0.ɵɵtext(4, "Captions");
49
112
  i0.ɵɵelementEnd()();
50
113
  } if (rf & 2) {
51
- const ctx_r2 = i0.ɵɵnextContext();
114
+ const ctx_r1 = i0.ɵɵnextContext(2);
52
115
  i0.ɵɵadvance();
53
- i0.ɵɵclassProp("lean-more--open", ctx_r2.MoreOpen);
54
- i0.ɵɵadvance(2);
55
- i0.ɵɵconditional(ctx_r2.ShowDetails ? 3 : -1);
56
- i0.ɵɵadvance(5);
57
- i0.ɵɵproperty("Variant", ctx_r2.MoreOpen ? "primary" : "secondary");
58
- i0.ɵɵattribute("aria-expanded", ctx_r2.MoreOpen);
59
- i0.ɵɵadvance(2);
60
- i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r2.CaptionsOn)("title", ctx_r2.CaptionsTitle);
61
- i0.ɵɵadvance(2);
62
- i0.ɵɵproperty("MicrophoneOn", !ctx_r2.IsMuted)("ShowCamera", ctx_r2.ShowCamera)("ShowShare", ctx_r2.ShowShare)("CameraOn", ctx_r2.CameraOn)("Sharing", ctx_r2.Sharing)("SharePanels", ctx_r2.SharePanels)("CameraOptional", true)("ShowDeviceMenu", true)("Devices", ctx_r2.Devices)("SelectedMicrophoneID", ctx_r2.SelectedMicrophoneID)("SelectedCameraID", ctx_r2.SelectedCameraID);
116
+ i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.CaptionsOn)("title", ctx_r1.CaptionsTitle);
63
117
  } }
64
- function RealtimeComposerComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
65
- const _r5 = i0.ɵɵgetCurrentView();
66
- i0.ɵɵelementStart(0, "div", 19)(1, "button", 24);
67
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.DetailsToggled.emit()); });
68
- i0.ɵɵelement(2, "i", 17);
118
+ function RealtimeComposerComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
119
+ const _r11 = i0.ɵɵgetCurrentView();
120
+ i0.ɵɵelementStart(0, "div", 25)(1, "button", 28);
121
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.DetailsToggled.emit()); });
122
+ i0.ɵɵelement(2, "i", 19);
69
123
  i0.ɵɵelementEnd();
70
- i0.ɵɵelementStart(3, "span", 21);
124
+ i0.ɵɵelementStart(3, "span", 27);
71
125
  i0.ɵɵtext(4, "Details");
72
126
  i0.ɵɵelementEnd()();
73
127
  } if (rf & 2) {
74
- const ctx_r2 = i0.ɵɵnextContext(2);
128
+ const ctx_r1 = i0.ɵɵnextContext(2);
75
129
  i0.ɵɵadvance();
76
- i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r2.DetailsOn)("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
130
+ i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.DetailsOn)("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
77
131
  } }
78
- function RealtimeComposerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
79
- const _r4 = i0.ɵɵgetCurrentView();
80
- i0.ɵɵelementStart(0, "div", 2)(1, "mj-media-controls", 18);
81
- i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_MicrophoneToggled_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_CameraToggled_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_ShareRequested_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_StopShareRequested_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.StopShareRequested.emit()); })("DeviceSelected", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_DeviceSelected_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.DeviceSelected.emit($event)); });
82
- i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(2, "div", 19)(3, "button", 20);
84
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
85
- i0.ɵɵelement(4, "i", 12);
132
+ function RealtimeComposerComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
133
+ const _r12 = i0.ɵɵgetCurrentView();
134
+ i0.ɵɵelementStart(0, "div", 25)(1, "button", 29);
135
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenChanged.emit(true)); });
136
+ i0.ɵɵelement(2, "i", 21);
86
137
  i0.ɵɵelementEnd();
87
- i0.ɵɵelementStart(5, "span", 21);
88
- i0.ɵɵtext(6, "Captions");
138
+ i0.ɵɵelementStart(3, "span", 27);
139
+ i0.ɵɵtext(4, "Type");
89
140
  i0.ɵɵelementEnd()();
90
- i0.ɵɵconditionalCreate(7, RealtimeComposerComponent_Conditional_1_Conditional_7_Template, 5, 3, "div", 19);
91
- i0.ɵɵelementStart(8, "div", 19)(9, "button", 22);
92
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenChanged.emit(true)); });
93
- i0.ɵɵelement(10, "i", 8);
141
+ } }
142
+ function RealtimeComposerComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
143
+ const _r13 = i0.ɵɵgetCurrentView();
144
+ i0.ɵɵelementStart(0, "div", 25)(1, "button", 22);
145
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.EndRequested.emit()); });
146
+ i0.ɵɵelement(2, "i", 23);
94
147
  i0.ɵɵelementEnd();
95
- i0.ɵɵelementStart(11, "span", 21);
96
- i0.ɵɵtext(12, "Type");
148
+ i0.ɵɵelementStart(3, "span", 30);
149
+ i0.ɵɵtext(4, "End call");
97
150
  i0.ɵɵelementEnd()();
98
- i0.ɵɵelementStart(13, "div", 19)(14, "button", 14);
99
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.EndRequested.emit()); });
100
- i0.ɵɵelement(15, "i", 15);
151
+ } }
152
+ function RealtimeComposerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
153
+ const _r9 = i0.ɵɵgetCurrentView();
154
+ i0.ɵɵelementStart(0, "div", 2)(1, "mj-media-controls", 24);
155
+ i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_MicrophoneToggled_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_CameraToggled_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_ShareRequested_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_StopShareRequested_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.StopShareRequested.emit()); })("DeviceSelected", function RealtimeComposerComponent_Conditional_1_Template_mj_media_controls_DeviceSelected_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.DeviceSelected.emit($event)); });
156
+ i0.ɵɵelementEnd();
157
+ i0.ɵɵconditionalCreate(2, RealtimeComposerComponent_Conditional_1_Conditional_2_Template, 5, 3, "div", 25);
158
+ i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_1_Conditional_3_Template, 5, 3, "div", 25);
159
+ i0.ɵɵconditionalCreate(4, RealtimeComposerComponent_Conditional_1_Conditional_4_Template, 5, 0, "div", 25);
160
+ i0.ɵɵconditionalCreate(5, RealtimeComposerComponent_Conditional_1_Conditional_5_Template, 5, 0, "div", 25);
101
161
  i0.ɵɵelementEnd();
102
- i0.ɵɵelementStart(16, "span", 23);
103
- i0.ɵɵtext(17, "End call");
104
- i0.ɵɵelementEnd()()();
105
162
  } if (rf & 2) {
106
- const ctx_r2 = i0.ɵɵnextContext();
163
+ const ctx_r1 = i0.ɵɵnextContext();
107
164
  i0.ɵɵadvance();
108
- i0.ɵɵproperty("ShowLabels", true)("MicrophoneOn", !ctx_r2.IsMuted)("ShowCamera", ctx_r2.ShowCamera)("ShowShare", ctx_r2.ShowShare)("CameraOn", ctx_r2.CameraOn)("Sharing", ctx_r2.Sharing)("SharePanels", ctx_r2.SharePanels)("CameraOptional", true)("ShowDeviceMenu", true)("Devices", ctx_r2.Devices)("SelectedMicrophoneID", ctx_r2.SelectedMicrophoneID)("SelectedCameraID", ctx_r2.SelectedCameraID);
109
- i0.ɵɵadvance(2);
110
- i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r2.CaptionsOn)("title", ctx_r2.CaptionsTitle);
111
- i0.ɵɵadvance(4);
112
- i0.ɵɵconditional(ctx_r2.ShowDetails ? 7 : -1);
165
+ i0.ɵɵproperty("ShowLabels", true)("MicrophoneOn", !ctx_r1.IsMuted)("ShowCamera", ctx_r1.ShowCamera)("ShowShare", ctx_r1.ShowShare)("CameraOn", ctx_r1.CameraOn)("Sharing", ctx_r1.Sharing)("SharePanels", ctx_r1.SharePanels)("CameraOptional", true)("ShowDeviceMenu", true)("Devices", ctx_r1.Devices)("SelectedMicrophoneID", ctx_r1.SelectedMicrophoneID)("SelectedCameraID", ctx_r1.SelectedCameraID);
166
+ i0.ɵɵadvance();
167
+ i0.ɵɵconditional(ctx_r1.ShowCaptionsControl ? 2 : -1);
168
+ i0.ɵɵadvance();
169
+ i0.ɵɵconditional(ctx_r1.ShowDetails ? 3 : -1);
170
+ i0.ɵɵadvance();
171
+ i0.ɵɵconditional(ctx_r1.AllowTyping ? 4 : -1);
172
+ i0.ɵɵadvance();
173
+ i0.ɵɵconditional(ctx_r1.ShowEnd ? 5 : -1);
113
174
  } }
114
- function RealtimeComposerComponent_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
115
- const _r7 = i0.ɵɵgetCurrentView();
116
- i0.ɵɵelementStart(0, "button", 37);
117
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.DetailsToggled.emit()); });
118
- i0.ɵɵelement(1, "i", 17);
175
+ function RealtimeComposerComponent_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
176
+ const _r15 = i0.ɵɵgetCurrentView();
177
+ i0.ɵɵelementStart(0, "button", 43);
178
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCaptions()); });
179
+ i0.ɵɵelement(1, "i", 9);
119
180
  i0.ɵɵelementEnd();
120
181
  } if (rf & 2) {
121
- const ctx_r2 = i0.ɵɵnextContext(2);
122
- i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r2.DetailsOn)("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Show the session panels");
182
+ const ctx_r1 = i0.ɵɵnextContext(2);
183
+ i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.CaptionsOn)("title", ctx_r1.CaptionsTitle);
123
184
  } }
124
- function RealtimeComposerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
125
- const _r6 = i0.ɵɵgetCurrentView();
126
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 25)(2, "mj-media-controls", 26);
127
- i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_MicrophoneToggled_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_CameraToggled_2_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_ShareRequested_2_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_StopShareRequested_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.StopShareRequested.emit()); });
185
+ function RealtimeComposerComponent_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
186
+ const _r16 = i0.ɵɵgetCurrentView();
187
+ i0.ɵɵelementStart(0, "button", 44);
188
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.DetailsToggled.emit()); });
189
+ i0.ɵɵelement(1, "i", 19);
128
190
  i0.ɵɵelementEnd();
129
- i0.ɵɵelementStart(3, "button", 27);
130
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
131
- i0.ɵɵelement(4, "i", 12);
191
+ } if (rf & 2) {
192
+ const ctx_r1 = i0.ɵɵnextContext(2);
193
+ i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.DetailsOn)("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Show the session panels");
194
+ } }
195
+ function RealtimeComposerComponent_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
196
+ const _r17 = i0.ɵɵgetCurrentView();
197
+ i0.ɵɵelementStart(0, "button", 45);
198
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.EndRequested.emit()); });
199
+ i0.ɵɵelement(1, "i", 23);
132
200
  i0.ɵɵelementEnd();
133
- i0.ɵɵconditionalCreate(5, RealtimeComposerComponent_Conditional_2_Conditional_5_Template, 2, 3, "button", 28);
201
+ } }
202
+ function RealtimeComposerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
203
+ const _r14 = i0.ɵɵgetCurrentView();
204
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 31)(2, "mj-media-controls", 32);
205
+ i0.ɵɵlistener("MicrophoneToggled", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_MicrophoneToggled_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleMute()); })("CameraToggled", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_CameraToggled_2_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CameraToggled.emit($event)); })("ShareRequested", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_ShareRequested_2_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShareRequested.emit($event)); })("StopShareRequested", function RealtimeComposerComponent_Conditional_2_Template_mj_media_controls_StopShareRequested_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.StopShareRequested.emit()); });
134
206
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(6, "div", 29)(7, "textarea", 30, 0);
136
- i0.ɵɵtwoWayListener("ngModelChange", function RealtimeComposerComponent_Conditional_2_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.Draft, $event) || (ctx_r2.Draft = $event); return i0.ɵɵresetView($event); });
137
- i0.ɵɵlistener("keydown", function RealtimeComposerComponent_Conditional_2_Template_textarea_keydown_7_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnKeydown($event)); })("input", function RealtimeComposerComponent_Conditional_2_Template_textarea_input_7_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.AutoResize()); });
207
+ i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_2_Conditional_3_Template, 2, 3, "button", 33);
208
+ i0.ɵɵconditionalCreate(4, RealtimeComposerComponent_Conditional_2_Conditional_4_Template, 2, 3, "button", 34);
138
209
  i0.ɵɵelementEnd();
139
- i0.ɵɵelementStart(9, "span", 31);
140
- i0.ɵɵtext(10, "\u21B5 send");
210
+ i0.ɵɵelementStart(5, "div", 35)(6, "textarea", 36, 0);
211
+ i0.ɵɵtwoWayListener("ngModelChange", function RealtimeComposerComponent_Conditional_2_Template_textarea_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.Draft, $event) || (ctx_r1.Draft = $event); return i0.ɵɵresetView($event); });
212
+ i0.ɵɵlistener("keydown", function RealtimeComposerComponent_Conditional_2_Template_textarea_keydown_6_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnKeydown($event)); })("input", function RealtimeComposerComponent_Conditional_2_Template_textarea_input_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.AutoResize()); });
141
213
  i0.ɵɵelementEnd();
142
- i0.ɵɵelementStart(11, "button", 32);
143
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Send()); });
144
- i0.ɵɵelement(12, "i", 33);
145
- i0.ɵɵelementEnd()();
146
- i0.ɵɵelementStart(13, "button", 34);
147
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenChanged.emit(false)); });
148
- i0.ɵɵelement(14, "i", 35);
214
+ i0.ɵɵelementStart(8, "span", 37);
215
+ i0.ɵɵtext(9, "\u21B5 send");
149
216
  i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(15, "button", 36);
151
- i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.EndRequested.emit()); });
152
- i0.ɵɵelement(16, "i", 15);
217
+ i0.ɵɵelementStart(10, "button", 38);
218
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Send()); });
219
+ i0.ɵɵelement(11, "i", 39);
153
220
  i0.ɵɵelementEnd()();
221
+ i0.ɵɵelementStart(12, "button", 40);
222
+ i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenChanged.emit(false)); });
223
+ i0.ɵɵelement(13, "i", 41);
224
+ i0.ɵɵelementEnd();
225
+ i0.ɵɵconditionalCreate(14, RealtimeComposerComponent_Conditional_2_Conditional_14_Template, 2, 0, "button", 42);
226
+ i0.ɵɵelementEnd();
154
227
  } if (rf & 2) {
155
- const ctx_r2 = i0.ɵɵnextContext();
228
+ const ctx_r1 = i0.ɵɵnextContext();
156
229
  i0.ɵɵadvance(2);
157
- i0.ɵɵproperty("MicrophoneOn", !ctx_r2.IsMuted)("ShowCamera", ctx_r2.ShowCamera)("ShowShare", ctx_r2.ShowShare)("ShowShareMenu", false)("CameraOn", ctx_r2.CameraOn)("Sharing", ctx_r2.Sharing)("CameraOptional", true);
230
+ i0.ɵɵproperty("MicrophoneOn", !ctx_r1.IsMuted)("ShowCamera", ctx_r1.ShowCamera)("ShowShare", ctx_r1.ShowShare)("ShowShareMenu", false)("CameraOn", ctx_r1.CameraOn)("Sharing", ctx_r1.Sharing)("CameraOptional", true);
158
231
  i0.ɵɵadvance();
159
- i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r2.CaptionsOn)("title", ctx_r2.CaptionsTitle);
160
- i0.ɵɵadvance(2);
161
- i0.ɵɵconditional(ctx_r2.ShowDetails ? 5 : -1);
232
+ i0.ɵɵconditional(ctx_r1.ShowCaptionsControl ? 3 : -1);
233
+ i0.ɵɵadvance();
234
+ i0.ɵɵconditional(ctx_r1.ShowDetails ? 4 : -1);
162
235
  i0.ɵɵadvance(2);
163
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.Draft);
236
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.Draft);
164
237
  i0.ɵɵadvance(4);
165
- i0.ɵɵproperty("disabled", !ctx_r2.CanSend);
238
+ i0.ɵɵproperty("disabled", !ctx_r1.CanSend);
239
+ i0.ɵɵadvance(4);
240
+ i0.ɵɵconditional(ctx_r1.ShowEnd ? 14 : -1);
166
241
  } }
167
242
  /**
168
243
  * The call overlay's BOTTOM DOCK — the progressive-disclosure composer
@@ -204,6 +279,23 @@ export class RealtimeComposerComponent {
204
279
  * Default `false` (the full 5-button strip is unchanged).
205
280
  */
206
281
  Compact = false;
282
+ /**
283
+ * Whether the Type buttons render (the strip's Type control and the lean dock's "Type" entry
284
+ * in the "•••" sheet). The overlay binds its resolved `allowTyping`. Only the controls that
285
+ * OPEN the typed-input dock are gated: an already-open dock keeps its hide control and Send.
286
+ * Default `true`.
287
+ */
288
+ AllowTyping = true;
289
+ /**
290
+ * Whether the End-call button renders in every layout. The overlay binds its resolved
291
+ * end-control switch; a host that ends the call elsewhere turns it off. Default `true`.
292
+ */
293
+ ShowEnd = true;
294
+ /**
295
+ * Whether the Captions toggle renders in every layout. This hides the control only; the
296
+ * caption state itself (`CaptionsOn`) is unaffected. Default `true`.
297
+ */
298
+ ShowCaptionsControl = true;
207
299
  /** Emitted when the user opens (Type control / typing) or closes (hide control) the dock. */
208
300
  OpenChanged = new EventEmitter();
209
301
  /** Whether captions are currently shown (drives the captions control's active state). */
@@ -273,10 +365,18 @@ export class RealtimeComposerComponent {
273
365
  return !this.Open;
274
366
  }
275
367
  /**
276
- * Whether the compact "•••" overflow sheet (Captions / Details / Type) is open. Only used
277
- * in {@link Compact} strip mode; any outside click or action selection closes it.
368
+ * Whether the compact "•••" overflow sheet (inactive Camera / Share, Details, Type) is open. Only
369
+ * used in {@link Compact} strip mode; any outside click or action selection closes it.
278
370
  */
279
371
  MoreOpen = false;
372
+ /**
373
+ * Whether the compact "•••" sheet has anything to hold: an inactive camera or share, Details, or
374
+ * Type. When the host switches all of them off, the "•••" itself goes, so it never opens an empty
375
+ * sheet. Mirrors the sheet's own `@if` blocks in the template, so keep the two in step.
376
+ */
377
+ get HasMoreItems() {
378
+ return this.AllowTyping || this.ShowDetails || (this.ShowCamera && !this.CameraOn) || (this.ShowShare && !this.Sharing);
379
+ }
280
380
  /** Open/close the compact overflow sheet (stops propagation so the outside-click close skips it). */
281
381
  ToggleMore(event) {
282
382
  event.stopPropagation();
@@ -357,19 +457,25 @@ export class RealtimeComposerComponent {
357
457
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dockInput = _t.first);
358
458
  } }, hostBindings: function RealtimeComposerComponent_HostBindings(rf, ctx) { if (rf & 1) {
359
459
  i0.ɵɵlistener("click", function RealtimeComposerComponent_click_HostBindingHandler() { return ctx.OnDocumentClick(); }, i0.ɵɵresolveDocument);
360
- } }, inputs: { Open: "Open", Compact: "Compact", CaptionsOn: "CaptionsOn", ShowDetails: "ShowDetails", DetailsOn: "DetailsOn", ShowCamera: "ShowCamera", ShowShare: "ShowShare", CameraOn: "CameraOn", Sharing: "Sharing", SharePanels: "SharePanels", Devices: "Devices", SelectedMicrophoneID: "SelectedMicrophoneID", SelectedCameraID: "SelectedCameraID", IsMuted: "IsMuted" }, outputs: { OpenChanged: "OpenChanged", CaptionsToggled: "CaptionsToggled", DetailsToggled: "DetailsToggled", EndRequested: "EndRequested", MuteChanged: "MuteChanged", CameraToggled: "CameraToggled", ShareRequested: "ShareRequested", StopShareRequested: "StopShareRequested", DeviceSelected: "DeviceSelected" }, decls: 3, vars: 1, consts: [["dockInput", ""], ["role", "group", "aria-label", "Call controls", 1, "dock-lean"], ["role", "group", "aria-label", "Call controls", 1, "strip"], [1, "dock"], [1, "lean-more"], ["role", "menu", "aria-label", "More call controls", 1, "lean-sheet", 3, "click"], ["type", "button", 1, "lean-sheet__btn", 3, "lean-sheet__btn--on", "title"], ["type", "button", "title", "Type into the live session", "aria-label", "Open the typed-input composer", 1, "lean-sheet__btn", 3, "click"], ["aria-hidden", "true", 1, "fa-regular", "fa-keyboard"], ["type", "button", "mjButton", "", "Shape", "circle", "AriaLabel", "More call controls", "title", "More controls", 3, "click", "Variant"], ["aria-hidden", "true", 1, "fa-solid", "fa-ellipsis"], ["type", "button", "mjButton", "", "Shape", "circle", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-closed-captioning"], ["Size", "lg", 1, "lean__media", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "DeviceSelected", "MicrophoneOn", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional", "ShowDeviceMenu", "Devices", "SelectedMicrophoneID", "SelectedCameraID"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "Variant", "danger", "AriaLabel", "End call", "title", "End call", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-phone-slash"], ["type", "button", 1, "lean-sheet__btn", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-table-columns"], ["Size", "lg", 1, "strip__media", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "DeviceSelected", "ShowLabels", "MicrophoneOn", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional", "ShowDeviceMenu", "Devices", "SelectedMicrophoneID", "SelectedCameraID"], [1, "ctrl-group"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["aria-hidden", "true", 1, "ctrl-label"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Open the typed-input composer", "title", "Type into the live session", 3, "click"], ["aria-hidden", "true", 1, "ctrl-label", "ctrl-label--end"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Details", 3, "click", "Toggleable", "Selected", "title"], [1, "dock__minis"], ["Size", "sm", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "MicrophoneOn", "ShowCamera", "ShowShare", "ShowShareMenu", "CameraOn", "Sharing", "CameraOptional"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Details", 3, "Toggleable", "Selected", "title"], [1, "dock__box"], ["rows", "1", "placeholder", "Type into the live session \u2014 joins this same voice call\u2026", "aria-label", "Type a message into the live voice session", 1, "dock__input", 3, "ngModelChange", "keydown", "input", "ngModel"], ["aria-hidden", "true", 1, "dock__hint"], ["type", "button", "title", "Send into live session", "aria-label", "Send", 1, "dock__send", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-paper-plane"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Close the typed-input composer", "title", "Hide typing \u2014 back to the voice controls", 1, "dock__hide", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "Variant", "danger", "AriaLabel", "End call", "title", "End call", 3, "click"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Details", 3, "click", "Toggleable", "Selected", "title"]], template: function RealtimeComposerComponent_Template(rf, ctx) { if (rf & 1) {
361
- i0.ɵɵconditionalCreate(0, RealtimeComposerComponent_Conditional_0_Template, 15, 19, "div", 1)(1, RealtimeComposerComponent_Conditional_1_Template, 18, 16, "div", 2)(2, RealtimeComposerComponent_Conditional_2_Template, 17, 13, "div", 3);
460
+ } }, inputs: { Open: "Open", Compact: "Compact", AllowTyping: "AllowTyping", ShowEnd: "ShowEnd", ShowCaptionsControl: "ShowCaptionsControl", CaptionsOn: "CaptionsOn", ShowDetails: "ShowDetails", DetailsOn: "DetailsOn", ShowCamera: "ShowCamera", ShowShare: "ShowShare", CameraOn: "CameraOn", Sharing: "Sharing", SharePanels: "SharePanels", Devices: "Devices", SelectedMicrophoneID: "SelectedMicrophoneID", SelectedCameraID: "SelectedCameraID", IsMuted: "IsMuted" }, outputs: { OpenChanged: "OpenChanged", CaptionsToggled: "CaptionsToggled", DetailsToggled: "DetailsToggled", EndRequested: "EndRequested", MuteChanged: "MuteChanged", CameraToggled: "CameraToggled", ShareRequested: "ShareRequested", StopShareRequested: "StopShareRequested", DeviceSelected: "DeviceSelected" }, decls: 3, vars: 1, consts: [["dockInput", ""], ["role", "group", "aria-label", "Call controls", 1, "dock-lean"], ["role", "group", "aria-label", "Call controls", 1, "strip"], [1, "dock"], ["Size", "lg", 1, "lean__media", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "DeviceSelected", "MicrophoneOn", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional", "ShowDeviceMenu", "Devices", "SelectedMicrophoneID", "SelectedCameraID"], ["type", "button", "mjButton", "", "Shape", "circle", "AriaLabel", "Captions", 3, "Toggleable", "Selected", "title"], [1, "lean-more", 3, "lean-more--open"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "Variant", "danger", "AriaLabel", "End call", "title", "End call"], ["type", "button", "mjButton", "", "Shape", "circle", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-closed-captioning"], [1, "lean-more"], ["role", "group", "aria-label", "More call controls", 1, "lean-sheet", 3, "click"], ["Size", "md", 1, "lean-sheet__media", 3, "ShowMicrophone", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional"], ["type", "button", 1, "lean-sheet__btn", 3, "lean-sheet__btn--on", "title"], ["type", "button", "title", "Type into the live session", "aria-label", "Open the typed-input composer", 1, "lean-sheet__btn"], ["type", "button", "mjButton", "", "Shape", "circle", "AriaLabel", "More call controls", "title", "More controls", 3, "click", "Variant"], ["aria-hidden", "true", 1, "fa-solid", "fa-ellipsis"], ["Size", "md", 1, "lean-sheet__media", 3, "CameraToggled", "ShareRequested", "StopShareRequested", "ShowMicrophone", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional"], ["type", "button", 1, "lean-sheet__btn", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-table-columns"], ["type", "button", "title", "Type into the live session", "aria-label", "Open the typed-input composer", 1, "lean-sheet__btn", 3, "click"], ["aria-hidden", "true", 1, "fa-regular", "fa-keyboard"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "Variant", "danger", "AriaLabel", "End call", "title", "End call", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-phone-slash"], ["Size", "lg", 1, "strip__media", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "DeviceSelected", "ShowLabels", "MicrophoneOn", "ShowCamera", "ShowShare", "CameraOn", "Sharing", "SharePanels", "CameraOptional", "ShowDeviceMenu", "Devices", "SelectedMicrophoneID", "SelectedCameraID"], [1, "ctrl-group"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["aria-hidden", "true", 1, "ctrl-label"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Details", 3, "click", "Toggleable", "Selected", "title"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "lg", "AriaLabel", "Open the typed-input composer", "title", "Type into the live session", 3, "click"], ["aria-hidden", "true", 1, "ctrl-label", "ctrl-label--end"], [1, "dock__minis"], ["Size", "sm", 3, "MicrophoneToggled", "CameraToggled", "ShareRequested", "StopShareRequested", "MicrophoneOn", "ShowCamera", "ShowShare", "ShowShareMenu", "CameraOn", "Sharing", "CameraOptional"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Captions", 3, "Toggleable", "Selected", "title"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Details", 3, "Toggleable", "Selected", "title"], [1, "dock__box"], ["rows", "1", "placeholder", "Type into the live session \u2014 joins this same voice call\u2026", "aria-label", "Type a message into the live voice session", 1, "dock__input", 3, "ngModelChange", "keydown", "input", "ngModel"], ["aria-hidden", "true", 1, "dock__hint"], ["type", "button", "title", "Send into live session", "aria-label", "Send", 1, "dock__send", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-paper-plane"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Close the typed-input composer", "title", "Hide typing \u2014 back to the voice controls", 1, "dock__hide", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "Variant", "danger", "AriaLabel", "End call", "title", "End call"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Captions", 3, "click", "Toggleable", "Selected", "title"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "AriaLabel", "Details", 3, "click", "Toggleable", "Selected", "title"], ["type", "button", "mjButton", "", "Shape", "circle", "Size", "sm", "Variant", "danger", "AriaLabel", "End call", "title", "End call", 3, "click"]], template: function RealtimeComposerComponent_Template(rf, ctx) { if (rf & 1) {
461
+ i0.ɵɵconditionalCreate(0, RealtimeComposerComponent_Conditional_0_Template, 5, 14, "div", 1)(1, RealtimeComposerComponent_Conditional_1_Template, 6, 16, "div", 2)(2, RealtimeComposerComponent_Conditional_2_Template, 15, 12, "div", 3);
362
462
  } if (rf & 2) {
363
463
  i0.ɵɵconditional(ctx.StripMode && ctx.Compact ? 0 : ctx.StripMode ? 1 : 2);
364
- } }, dependencies: [CommonModule, FormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, MJButtonDirective, MediaControlsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n \n container-type: inline-size;\n}\n\n\n.strip[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n\n\n.ctrl-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: var(--mj-space-1-5);\n font-weight: 500;\n}\n\n\n.strip__media[_ngcontent-%COMP%] {\n align-items: flex-start;\n gap: 22px;\n}\n\n\n@container (max-width: 600px) {\n .strip[_ngcontent-%COMP%], \n .strip__media[_ngcontent-%COMP%] {\n gap: 12px;\n }\n}\n@container (max-width: 480px) {\n .strip[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n row-gap: 12px;\n }\n}\n.ctrl-label--end[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n.dock[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: _ngcontent-%COMP%_dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes _ngcontent-%COMP%_dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis[_ngcontent-%COMP%] {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n\n\n.dock__box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-end;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 20px;\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease, border-radius 140ms ease;\n}\n\n@container (max-width: 520px) {\n .dock[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n row-gap: 8px;\n }\n .dock__box[_ngcontent-%COMP%] {\n order: 1;\n flex-basis: 100%;\n }\n}\n\n.dock__box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.45;\n resize: none;\n height: 24px;\n max-height: 140px;\n overflow-y: auto;\n padding: 3px 0 4px 0;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.dock__input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send[_ngcontent-%COMP%]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n\n\n\n\n\n.dock-lean[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 14px;\n row-gap: 10px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n\n\n\n@container (max-width: 490px) {\n .dock-lean[_ngcontent-%COMP%] {\n gap: 6px;\n row-gap: 10px;\n padding-inline: 12px;\n }\n .lean__media[_ngcontent-%COMP%] {\n gap: 4px;\n }\n}\n\n\n\n.lean-more[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet[_ngcontent-%COMP%] {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-more--open[_ngcontent-%COMP%] .lean-sheet[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}"] });
464
+ } }, dependencies: [CommonModule, FormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, MJButtonDirective, MediaControlsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n \n container-type: inline-size;\n}\n\n\n.strip[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n\n\n.ctrl-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: var(--mj-space-1-5);\n font-weight: 500;\n}\n\n\n.strip__media[_ngcontent-%COMP%] {\n align-items: flex-start;\n gap: 22px;\n}\n\n\n@container (max-width: 600px) {\n .strip[_ngcontent-%COMP%], \n .strip__media[_ngcontent-%COMP%] {\n gap: 12px;\n }\n}\n@container (max-width: 480px) {\n .strip[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n row-gap: 12px;\n }\n}\n.ctrl-label--end[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n.dock[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: _ngcontent-%COMP%_dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes _ngcontent-%COMP%_dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis[_ngcontent-%COMP%] {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n\n\n.dock__box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-end;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 20px;\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease, border-radius 140ms ease;\n}\n\n@container (max-width: 520px) {\n .dock[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n row-gap: 8px;\n }\n .dock__box[_ngcontent-%COMP%] {\n order: 1;\n flex-basis: 100%;\n }\n}\n\n.dock__box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.45;\n resize: none;\n height: 24px;\n max-height: 140px;\n overflow-y: auto;\n padding: 3px 0 4px 0;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.dock__input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send[_ngcontent-%COMP%]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n\n\n\n\n\n.dock-lean[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 14px;\n row-gap: 10px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n\n\n\n@container (max-width: 490px) {\n .dock-lean[_ngcontent-%COMP%] {\n gap: 6px;\n row-gap: 10px;\n padding-inline: 12px;\n }\n .lean__media[_ngcontent-%COMP%] {\n gap: 4px;\n }\n}\n\n\n\n.lean-more[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet[_ngcontent-%COMP%] {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-sheet__media[_ngcontent-%COMP%] {\n align-items: center;\n gap: 8px;\n}\n.lean-more--open[_ngcontent-%COMP%] .lean-sheet[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}"] });
365
465
  }
366
466
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RealtimeComposerComponent, [{
367
467
  type: Component,
368
- args: [{ standalone: true, selector: 'mj-realtime-composer', imports: [CommonModule, FormsModule, MJButtonDirective, MediaControlsComponent], template: "@if (StripMode && Compact) {\n <!-- COMPACT (Calm Orb \u00B7 overlay): the lean dock \u2014 a \"\u2022\u2022\u2022\" that blooms a small sheet with the secondary actions\n (Details / Type), a first-class Captions toggle (text stays ONE TAP in the overlay), the call's media controls\n (the microphone with its device chevron, and the camera and Share when offered) and a red End. Circles from the\n design system. -->\n <div class=\"dock-lean\" role=\"group\" aria-label=\"Call controls\">\n <div class=\"lean-more\" [class.lean-more--open]=\"MoreOpen\">\n <div class=\"lean-sheet\" (click)=\"$event.stopPropagation()\" role=\"menu\" aria-label=\"More call controls\">\n @if (ShowDetails) {\n <button type=\"button\" class=\"lean-sheet__btn\" [class.lean-sheet__btn--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit(); MoreOpen = false\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n <small>Details</small>\n </button>\n }\n <button type=\"button\" class=\"lean-sheet__btn\"\n (click)=\"OpenChanged.emit(true); MoreOpen = false\"\n title=\"Type into the live session\" aria-label=\"Open the typed-input composer\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n <small>Type</small>\n </button>\n </div>\n <button type=\"button\" mjButton Shape=\"circle\" [Variant]=\"MoreOpen ? 'primary' : 'secondary'\"\n AriaLabel=\"More call controls\" title=\"More controls\"\n [attr.aria-expanded]=\"MoreOpen\"\n (click)=\"ToggleMore($event)\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <!-- Captions: first-class in the lean dock (the overlay's only text toggle now). -->\n <button type=\"button\" mjButton Shape=\"circle\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n\n <mj-media-controls class=\"lean__media\"\n Size=\"lg\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera\"\n [ShowShare]=\"ShowShare\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [SharePanels]=\"SharePanels\"\n [CameraOptional]=\"true\"\n [ShowDeviceMenu]=\"true\"\n [Devices]=\"Devices\"\n [SelectedMicrophoneID]=\"SelectedMicrophoneID\"\n [SelectedCameraID]=\"SelectedCameraID\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"\n (DeviceSelected)=\"DeviceSelected.emit($event)\"></mj-media-controls>\n\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n </div>\n} @else if (StripMode) {\n <!-- Levels 0\u20131: phone-call strip \u2014 big labelled circles: the call's media controls (the microphone with its device\n chevron, and the camera and Share when the call offers them), Captions (level 1+, arriving WITH the text it\n controls), the Details peek at the surface panels, Type, and End call, the deliberate rightmost action. -->\n <div class=\"strip\" role=\"group\" aria-label=\"Call controls\">\n <mj-media-controls class=\"strip__media\"\n Size=\"lg\"\n [ShowLabels]=\"true\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera\"\n [ShowShare]=\"ShowShare\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [SharePanels]=\"SharePanels\"\n [CameraOptional]=\"true\"\n [ShowDeviceMenu]=\"true\"\n [Devices]=\"Devices\"\n [SelectedMicrophoneID]=\"SelectedMicrophoneID\"\n [SelectedCameraID]=\"SelectedCameraID\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"\n (DeviceSelected)=\"DeviceSelected.emit($event)\"></mj-media-controls>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Captions</span>\n </div>\n\n @if (ShowDetails) {\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" [Toggleable]=\"true\" [Selected]=\"DetailsOn\"\n AriaLabel=\"Details\" [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n (click)=\"DetailsToggled.emit()\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Details</span>\n </div>\n }\n\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\"\n AriaLabel=\"Open the typed-input composer\" title=\"Type into the live session\"\n (click)=\"OpenChanged.emit(true)\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Type</span>\n </div>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label ctrl-label--end\" aria-hidden=\"true\">End call</span>\n </div>\n </div>\n} @else {\n <!-- Level 2+: the fused dock \u2014 small circles and the in-call composer in ONE bottom bar. -->\n <div class=\"dock\">\n <div class=\"dock__minis\">\n <!-- No Share arrow and no device chevron in the dock, which is short of room: the browser's picker still offers\n every kind of surface, and Hide brings back the strip, which has the device menu. -->\n <mj-media-controls Size=\"sm\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera\"\n [ShowShare]=\"ShowShare\"\n [ShowShareMenu]=\"false\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [CameraOptional]=\"true\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"></mj-media-controls>\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n @if (ShowDetails) {\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" [Toggleable]=\"true\" [Selected]=\"DetailsOn\"\n AriaLabel=\"Details\" [title]=\"DetailsOn ? 'Hide the session panels' : 'Show the session panels'\"\n (click)=\"DetailsToggled.emit()\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <div class=\"dock__box\">\n <textarea\n #dockInput\n class=\"dock__input\"\n rows=\"1\"\n placeholder=\"Type into the live session \u2014 joins this same voice call\u2026\"\n [(ngModel)]=\"Draft\"\n (keydown)=\"OnKeydown($event)\"\n (input)=\"AutoResize()\"\n aria-label=\"Type a message into the live voice session\"></textarea>\n <span class=\"dock__hint\" aria-hidden=\"true\">\u21B5 send</span>\n <button\n class=\"dock__send\"\n type=\"button\"\n [disabled]=\"!CanSend\"\n (click)=\"Send()\"\n title=\"Send into live session\"\n aria-label=\"Send\">\n <i class=\"fa-solid fa-paper-plane\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" class=\"dock__hide\"\n AriaLabel=\"Close the typed-input composer\" title=\"Hide typing \u2014 back to the voice controls\"\n (click)=\"OpenChanged.emit(false)\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n </div>\n}\n", styles: [":host {\n display: block;\n /* The fused dock reflows by its own width, not the window's (the call column narrows when the panel opens). */\n container-type: inline-size;\n}\n\n/* ---------- Levels 0\u20131: phone-call strip (big round controls, centered) ---------- */\n.strip {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n\n/* Matches mj-media-controls' own labels, so every control in the strip is named alike. */\n.ctrl-label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: var(--mj-space-1-5);\n font-weight: 500;\n}\n\n/* The call's media controls sit in the strip like its other groups. */\n.strip__media {\n align-items: flex-start;\n gap: 22px;\n}\n\n/* A narrow strip tightens its gaps, then wraps onto a second row, rather than cutting off its first and last controls. */\n@container (max-width: 600px) {\n .strip,\n .strip__media {\n gap: 12px;\n }\n}\n@container (max-width: 480px) {\n .strip {\n flex-wrap: wrap;\n row-gap: 12px;\n }\n}\n.ctrl-label--end {\n color: var(--mj-status-error);\n}\n\n/* ---------- Level 2+: the fused dock (minis + composer in one bar) ---------- */\n.dock {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n\n/* min-width: 0 lets the box (and its text) give way to the controls on a narrow dock instead of pushing End out. */\n.dock__box {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-end;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 20px;\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease, border-radius 140ms ease;\n}\n/* On a narrow dock the text box takes a row of its own under the controls, so neither is squeezed. */\n@container (max-width: 520px) {\n .dock {\n flex-wrap: wrap;\n row-gap: 8px;\n }\n .dock__box {\n order: 1;\n flex-basis: 100%;\n }\n}\n\n.dock__box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.45;\n resize: none;\n height: 24px;\n max-height: 140px;\n overflow-y: auto;\n padding: 3px 0 4px 0;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.dock__input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n\n\n/* ============================================================= COMPACT (Calm Orb \u00B7 overlay)\n The lean dock \u2014 a \"\u2022\u2022\u2022\" that blooms a small sheet (Details / Type), Captions, the microphone and a red End.\n Design-system circles. No 5-button bar, no overlapping hint. */\n.dock-lean {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 14px;\n row-gap: 10px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n/* A narrow lean dock (the call column is at least 420px wide) tightens its gaps, so the microphone's device chevron and\n the Share arrow fit beside the other controls; where even that is not enough (larger touch targets), it wraps onto a\n second row rather than cutting off its first and last controls. */\n@container (max-width: 490px) {\n .dock-lean {\n gap: 6px;\n row-gap: 10px;\n padding-inline: 12px;\n }\n .lean__media {\n gap: 4px;\n }\n}\n\n\n/* The \"\u2022\u2022\u2022\" overflow + its blooming sheet. */\n.lean-more {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-more--open .lean-sheet {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn small {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on small {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n"] }]
468
+ args: [{ standalone: true, selector: 'mj-realtime-composer', imports: [CommonModule, FormsModule, MJButtonDirective, MediaControlsComponent], template: "@if (StripMode && Compact) {\n <!-- COMPACT / ORB (Calm Orb \u00B7 overlay): the lean dock \u2014 primary bar keeps only the microphone,\n Captions, active Camera/Share (while on), a \"\u2022\u2022\u2022\" that blooms a small sheet with secondary\n actions (inactive Camera/Share, Details, Type), and a red End. Circles from the design system. -->\n <div class=\"dock-lean\" role=\"group\" aria-label=\"Call controls\">\n <mj-media-controls class=\"lean__media\"\n Size=\"lg\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera && CameraOn\"\n [ShowShare]=\"ShowShare && Sharing\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [SharePanels]=\"SharePanels\"\n [CameraOptional]=\"true\"\n [ShowDeviceMenu]=\"true\"\n [Devices]=\"Devices\"\n [SelectedMicrophoneID]=\"SelectedMicrophoneID\"\n [SelectedCameraID]=\"SelectedCameraID\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"\n (DeviceSelected)=\"DeviceSelected.emit($event)\"></mj-media-controls>\n\n <!-- Captions: first-class in the lean dock (the overlay's only text toggle now). -->\n @if (ShowCaptionsControl) {\n <button type=\"button\" mjButton Shape=\"circle\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (HasMoreItems) {\n <div class=\"lean-more\" [class.lean-more--open]=\"MoreOpen\">\n <div class=\"lean-sheet\" (click)=\"$event.stopPropagation()\" role=\"group\" aria-label=\"More call controls\">\n @if ((ShowCamera && !CameraOn) || (ShowShare && !Sharing)) {\n <mj-media-controls class=\"lean-sheet__media\"\n Size=\"md\"\n [ShowMicrophone]=\"false\"\n [ShowCamera]=\"ShowCamera && !CameraOn\"\n [ShowShare]=\"ShowShare && !Sharing\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [SharePanels]=\"SharePanels\"\n [CameraOptional]=\"true\"\n (CameraToggled)=\"CameraToggled.emit($event); MoreOpen = false\"\n (ShareRequested)=\"ShareRequested.emit($event); MoreOpen = false\"\n (StopShareRequested)=\"StopShareRequested.emit()\"></mj-media-controls>\n }\n @if (ShowDetails) {\n <button type=\"button\" class=\"lean-sheet__btn\" [class.lean-sheet__btn--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit(); MoreOpen = false\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n <small>Details</small>\n </button>\n }\n @if (AllowTyping) {\n <button type=\"button\" class=\"lean-sheet__btn\"\n (click)=\"OpenChanged.emit(true); MoreOpen = false\"\n title=\"Type into the live session\" aria-label=\"Open the typed-input composer\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n <small>Type</small>\n </button>\n }\n </div>\n <button type=\"button\" mjButton Shape=\"circle\" [Variant]=\"MoreOpen ? 'primary' : 'secondary'\"\n AriaLabel=\"More call controls\" title=\"More controls\"\n [attr.aria-expanded]=\"MoreOpen\"\n (click)=\"ToggleMore($event)\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @if (ShowEnd) {\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n} @else if (StripMode) {\n <!-- Levels 0\u20131: phone-call strip \u2014 big labelled circles: the call's media controls (the microphone with its device\n chevron, and the camera and Share when the call offers them), Captions (level 1+, arriving WITH the text it\n controls), the Details peek at the surface panels, Type, and End call, the deliberate rightmost action. -->\n <div class=\"strip\" role=\"group\" aria-label=\"Call controls\">\n <mj-media-controls class=\"strip__media\"\n Size=\"lg\"\n [ShowLabels]=\"true\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera\"\n [ShowShare]=\"ShowShare\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [SharePanels]=\"SharePanels\"\n [CameraOptional]=\"true\"\n [ShowDeviceMenu]=\"true\"\n [Devices]=\"Devices\"\n [SelectedMicrophoneID]=\"SelectedMicrophoneID\"\n [SelectedCameraID]=\"SelectedCameraID\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"\n (DeviceSelected)=\"DeviceSelected.emit($event)\"></mj-media-controls>\n\n @if (ShowCaptionsControl) {\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Captions</span>\n </div>\n }\n\n @if (ShowDetails) {\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" [Toggleable]=\"true\" [Selected]=\"DetailsOn\"\n AriaLabel=\"Details\" [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n (click)=\"DetailsToggled.emit()\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Details</span>\n </div>\n }\n\n @if (AllowTyping) {\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\"\n AriaLabel=\"Open the typed-input composer\" title=\"Type into the live session\"\n (click)=\"OpenChanged.emit(true)\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\" aria-hidden=\"true\">Type</span>\n </div>\n }\n\n @if (ShowEnd) {\n <div class=\"ctrl-group\">\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"lg\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label ctrl-label--end\" aria-hidden=\"true\">End call</span>\n </div>\n }\n </div>\n} @else {\n <!-- Level 2+: the fused dock \u2014 small circles and the in-call composer in ONE bottom bar. -->\n <div class=\"dock\">\n <div class=\"dock__minis\">\n <!-- No Share arrow and no device chevron in the dock, which is short of room: the browser's picker still offers\n every kind of surface, and Hide brings back the strip, which has the device menu. -->\n <mj-media-controls Size=\"sm\"\n [MicrophoneOn]=\"!IsMuted\"\n [ShowCamera]=\"ShowCamera\"\n [ShowShare]=\"ShowShare\"\n [ShowShareMenu]=\"false\"\n [CameraOn]=\"CameraOn\"\n [Sharing]=\"Sharing\"\n [CameraOptional]=\"true\"\n (MicrophoneToggled)=\"ToggleMute()\"\n (CameraToggled)=\"CameraToggled.emit($event)\"\n (ShareRequested)=\"ShareRequested.emit($event)\"\n (StopShareRequested)=\"StopShareRequested.emit()\"></mj-media-controls>\n @if (ShowCaptionsControl) {\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" [Toggleable]=\"true\" [Selected]=\"CaptionsOn\"\n AriaLabel=\"Captions\" [title]=\"CaptionsTitle\"\n (click)=\"ToggleCaptions()\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n }\n @if (ShowDetails) {\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" [Toggleable]=\"true\" [Selected]=\"DetailsOn\"\n AriaLabel=\"Details\" [title]=\"DetailsOn ? 'Hide the session panels' : 'Show the session panels'\"\n (click)=\"DetailsToggled.emit()\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <div class=\"dock__box\">\n <textarea\n #dockInput\n class=\"dock__input\"\n rows=\"1\"\n placeholder=\"Type into the live session \u2014 joins this same voice call\u2026\"\n [(ngModel)]=\"Draft\"\n (keydown)=\"OnKeydown($event)\"\n (input)=\"AutoResize()\"\n aria-label=\"Type a message into the live voice session\"></textarea>\n <span class=\"dock__hint\" aria-hidden=\"true\">\u21B5 send</span>\n <button\n class=\"dock__send\"\n type=\"button\"\n [disabled]=\"!CanSend\"\n (click)=\"Send()\"\n title=\"Send into live session\"\n aria-label=\"Send\">\n <i class=\"fa-solid fa-paper-plane\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" class=\"dock__hide\"\n AriaLabel=\"Close the typed-input composer\" title=\"Hide typing \u2014 back to the voice controls\"\n (click)=\"OpenChanged.emit(false)\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n @if (ShowEnd) {\n <button type=\"button\" mjButton Shape=\"circle\" Size=\"sm\" Variant=\"danger\"\n AriaLabel=\"End call\" title=\"End call\" (click)=\"EndRequested.emit()\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n}\n", styles: [":host {\n display: block;\n /* The fused dock reflows by its own width, not the window's (the call column narrows when the panel opens). */\n container-type: inline-size;\n}\n\n/* ---------- Levels 0\u20131: phone-call strip (big round controls, centered) ---------- */\n.strip {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n\n/* Matches mj-media-controls' own labels, so every control in the strip is named alike. */\n.ctrl-label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: var(--mj-space-1-5);\n font-weight: 500;\n}\n\n/* The call's media controls sit in the strip like its other groups. */\n.strip__media {\n align-items: flex-start;\n gap: 22px;\n}\n\n/* A narrow strip tightens its gaps, then wraps onto a second row, rather than cutting off its first and last controls. */\n@container (max-width: 600px) {\n .strip,\n .strip__media {\n gap: 12px;\n }\n}\n@container (max-width: 480px) {\n .strip {\n flex-wrap: wrap;\n row-gap: 12px;\n }\n}\n.ctrl-label--end {\n color: var(--mj-status-error);\n}\n\n/* ---------- Level 2+: the fused dock (minis + composer in one bar) ---------- */\n.dock {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n\n/* min-width: 0 lets the box (and its text) give way to the controls on a narrow dock instead of pushing End out. */\n.dock__box {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-end;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 20px;\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease, border-radius 140ms ease;\n}\n/* On a narrow dock the text box takes a row of its own under the controls, so neither is squeezed. */\n@container (max-width: 520px) {\n .dock {\n flex-wrap: wrap;\n row-gap: 8px;\n }\n .dock__box {\n order: 1;\n flex-basis: 100%;\n }\n}\n\n.dock__box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.45;\n resize: none;\n height: 24px;\n max-height: 140px;\n overflow-y: auto;\n padding: 3px 0 4px 0;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.dock__input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n\n\n/* ============================================================= COMPACT (Calm Orb \u00B7 overlay)\n The lean dock \u2014 a \"\u2022\u2022\u2022\" that blooms a small sheet (Details / Type), Captions, the microphone and a red End.\n Design-system circles. No 5-button bar, no overlapping hint. */\n.dock-lean {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 14px;\n row-gap: 10px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n/* A narrow lean dock (the call column is at least 420px wide) tightens its gaps, so the microphone's device chevron and\n the Share arrow fit beside the other controls; where even that is not enough (larger touch targets), it wraps onto a\n second row rather than cutting off its first and last controls. */\n@container (max-width: 490px) {\n .dock-lean {\n gap: 6px;\n row-gap: 10px;\n padding-inline: 12px;\n }\n .lean__media {\n gap: 4px;\n }\n}\n\n\n/* The \"\u2022\u2022\u2022\" overflow + its blooming sheet. */\n.lean-more {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-sheet__media {\n align-items: center;\n gap: 8px;\n}\n.lean-more--open .lean-sheet {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn small {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on small {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n"] }]
369
469
  }], null, { Open: [{
370
470
  type: Input
371
471
  }], Compact: [{
372
472
  type: Input
473
+ }], AllowTyping: [{
474
+ type: Input
475
+ }], ShowEnd: [{
476
+ type: Input
477
+ }], ShowCaptionsControl: [{
478
+ type: Input
373
479
  }], OpenChanged: [{
374
480
  type: Output
375
481
  }], CaptionsOn: [{