@memberjunction/ng-conversations 6.2.0-edge.6 → 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.
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +1 -0
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +174 -2
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +1266 -443
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-mode-picker.component.js +2 -2
- package/dist/lib/components/conversation/conversation-mode-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts +109 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.js +298 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.js.map +1 -0
- package/dist/lib/components/message/agent-handoff-card.component.d.ts +102 -0
- package/dist/lib/components/message/agent-handoff-card.component.d.ts.map +1 -0
- package/dist/lib/components/message/agent-handoff-card.component.js +439 -0
- package/dist/lib/components/message/agent-handoff-card.component.js.map +1 -0
- package/dist/lib/components/message/message-input.component.d.ts +80 -53
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +381 -277
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +18 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +548 -426
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +8 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +40 -2
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js +1 -1
- package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js.map +1 -1
- package/dist/lib/components/realtime/media/media-channel-state.d.ts +5 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/media-channel-state.js +27 -1
- package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.js +7 -2
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +19 -2
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +59 -10
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +17 -6
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +61 -27
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +26 -3
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +196 -102
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +53 -15
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +125 -51
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +9 -12
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.js +38 -18
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +27 -4
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts +8 -2
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js +51 -10
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts +46 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts.map +1 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js +64 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js.map +1 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +131 -9
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +347 -38
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +2 -1
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +9 -4
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/events/chat-events.d.ts +5 -4
- package/dist/lib/events/chat-events.d.ts.map +1 -1
- package/dist/lib/events/chat-events.js +2 -2
- package/dist/lib/events/chat-events.js.map +1 -1
- package/dist/lib/models/agent-turn.model.d.ts +11 -7
- package/dist/lib/models/agent-turn.model.d.ts.map +1 -1
- package/dist/lib/models/agent-turn.model.js.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +5 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js +16 -0
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +7 -1
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-permission.service.js +2 -0
- package/dist/lib/services/artifact-permission.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +1 -0
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
- package/dist/lib/services/collection-permission.service.js +1 -0
- package/dist/lib/services/collection-permission.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +1 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +7 -45
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/realtime-session-review.service.d.ts +2 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +1 -0
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/utils/agent-handoff-map.d.ts +52 -0
- package/dist/lib/utils/agent-handoff-map.d.ts.map +1 -0
- package/dist/lib/utils/agent-handoff-map.js +270 -0
- package/dist/lib/utils/agent-handoff-map.js.map +1 -0
- package/dist/lib/utils/agent-turn-routing.d.ts +62 -7
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -1
- package/dist/lib/utils/agent-turn-routing.js +147 -6
- package/dist/lib/utils/agent-turn-routing.js.map +1 -1
- package/dist/lib/utils/decision-routing.d.ts +17 -9
- package/dist/lib/utils/decision-routing.d.ts.map +1 -1
- package/dist/lib/utils/decision-routing.js +23 -14
- package/dist/lib/utils/decision-routing.js.map +1 -1
- package/dist/lib/utils/thread-replies.d.ts +34 -0
- package/dist/lib/utils/thread-replies.d.ts.map +1 -0
- package/dist/lib/utils/thread-replies.js +49 -0
- package/dist/lib/utils/thread-replies.js.map +1 -0
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +5 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
|
@@ -7,79 +7,121 @@ 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
|
|
10
|
+
function RealtimeComposerComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
11
11
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
12
|
-
i0.ɵɵelementStart(0, "
|
|
13
|
-
i0.ɵɵlistener("
|
|
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);
|
|
14
15
|
i0.ɵɵelementEnd();
|
|
15
16
|
} if (rf & 2) {
|
|
16
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);
|
|
17
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);
|
|
18
28
|
} }
|
|
19
|
-
function
|
|
20
|
-
const
|
|
29
|
+
function RealtimeComposerComponent_Conditional_0_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
21
31
|
i0.ɵɵelementStart(0, "button", 18);
|
|
22
|
-
i0.ɵɵlistener("click", function
|
|
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); });
|
|
23
33
|
i0.ɵɵelement(1, "i", 19);
|
|
24
34
|
i0.ɵɵelementStart(2, "small");
|
|
25
35
|
i0.ɵɵtext(3, "Details");
|
|
26
36
|
i0.ɵɵelementEnd()();
|
|
27
37
|
} if (rf & 2) {
|
|
28
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
38
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
29
39
|
i0.ɵɵclassProp("lean-sheet__btn--on", ctx_r1.DetailsOn);
|
|
30
40
|
i0.ɵɵproperty("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
|
|
31
41
|
i0.ɵɵattribute("aria-pressed", ctx_r1.DetailsOn);
|
|
32
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();
|
|
83
|
+
} }
|
|
33
84
|
function RealtimeComposerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
34
85
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
35
86
|
i0.ɵɵelementStart(0, "div", 1)(1, "mj-media-controls", 4);
|
|
36
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)); });
|
|
37
88
|
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵ
|
|
39
|
-
i0.ɵɵ
|
|
40
|
-
i0.ɵɵ
|
|
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);
|
|
41
92
|
i0.ɵɵelementEnd();
|
|
42
|
-
i0.ɵɵelementStart(4, "div", 7)(5, "div", 8);
|
|
43
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_div_click_5_listener($event) { return $event.stopPropagation(); });
|
|
44
|
-
i0.ɵɵconditionalCreate(6, RealtimeComposerComponent_Conditional_0_Conditional_6_Template, 1, 7, "mj-media-controls", 9);
|
|
45
|
-
i0.ɵɵconditionalCreate(7, RealtimeComposerComponent_Conditional_0_Conditional_7_Template, 4, 4, "button", 10);
|
|
46
|
-
i0.ɵɵelementStart(8, "button", 11);
|
|
47
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.OpenChanged.emit(true); return i0.ɵɵresetView(ctx_r1.MoreOpen = false); });
|
|
48
|
-
i0.ɵɵelement(9, "i", 12);
|
|
49
|
-
i0.ɵɵelementStart(10, "small");
|
|
50
|
-
i0.ɵɵtext(11, "Type");
|
|
51
|
-
i0.ɵɵelementEnd()()();
|
|
52
|
-
i0.ɵɵelementStart(12, "button", 13);
|
|
53
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleMore($event)); });
|
|
54
|
-
i0.ɵɵelement(13, "i", 14);
|
|
55
|
-
i0.ɵɵelementEnd()();
|
|
56
|
-
i0.ɵɵelementStart(14, "button", 15);
|
|
57
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.EndRequested.emit()); });
|
|
58
|
-
i0.ɵɵelement(15, "i", 16);
|
|
59
|
-
i0.ɵɵelementEnd()();
|
|
60
93
|
} if (rf & 2) {
|
|
61
94
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
62
95
|
i0.ɵɵadvance();
|
|
63
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);
|
|
64
97
|
i0.ɵɵadvance();
|
|
65
|
-
i0.ɵɵ
|
|
66
|
-
i0.ɵɵadvance(2);
|
|
67
|
-
i0.ɵɵclassProp("lean-more--open", ctx_r1.MoreOpen);
|
|
68
|
-
i0.ɵɵadvance(2);
|
|
69
|
-
i0.ɵɵconditional(ctx_r1.ShowCamera && !ctx_r1.CameraOn || ctx_r1.ShowShare && !ctx_r1.Sharing ? 6 : -1);
|
|
98
|
+
i0.ɵɵconditional(ctx_r1.ShowCaptionsControl ? 2 : -1);
|
|
70
99
|
i0.ɵɵadvance();
|
|
71
|
-
i0.ɵɵconditional(ctx_r1.
|
|
72
|
-
i0.ɵɵadvance(
|
|
73
|
-
i0.ɵɵ
|
|
74
|
-
i0.ɵɵattribute("aria-expanded", ctx_r1.MoreOpen);
|
|
100
|
+
i0.ɵɵconditional(ctx_r1.HasMoreItems ? 3 : -1);
|
|
101
|
+
i0.ɵɵadvance();
|
|
102
|
+
i0.ɵɵconditional(ctx_r1.ShowEnd ? 4 : -1);
|
|
75
103
|
} }
|
|
76
|
-
function
|
|
77
|
-
const
|
|
78
|
-
i0.ɵɵelementStart(0, "div",
|
|
79
|
-
i0.ɵɵlistener("click", function
|
|
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");
|
|
112
|
+
i0.ɵɵelementEnd()();
|
|
113
|
+
} if (rf & 2) {
|
|
114
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
115
|
+
i0.ɵɵadvance();
|
|
116
|
+
i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.CaptionsOn)("title", ctx_r1.CaptionsTitle);
|
|
117
|
+
} }
|
|
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()); });
|
|
80
122
|
i0.ɵɵelement(2, "i", 19);
|
|
81
123
|
i0.ɵɵelementEnd();
|
|
82
|
-
i0.ɵɵelementStart(3, "span",
|
|
124
|
+
i0.ɵɵelementStart(3, "span", 27);
|
|
83
125
|
i0.ɵɵtext(4, "Details");
|
|
84
126
|
i0.ɵɵelementEnd()();
|
|
85
127
|
} if (rf & 2) {
|
|
@@ -87,94 +129,115 @@ function RealtimeComposerComponent_Conditional_1_Conditional_7_Template(rf, ctx)
|
|
|
87
129
|
i0.ɵɵadvance();
|
|
88
130
|
i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.DetailsOn)("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
|
|
89
131
|
} }
|
|
90
|
-
function
|
|
91
|
-
const
|
|
92
|
-
i0.ɵɵelementStart(0, "div",
|
|
93
|
-
i0.ɵɵlistener("
|
|
94
|
-
i0.ɵɵ
|
|
95
|
-
i0.ɵɵelementStart(2, "div", 21)(3, "button", 22);
|
|
96
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleCaptions()); });
|
|
97
|
-
i0.ɵɵelement(4, "i", 6);
|
|
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);
|
|
98
137
|
i0.ɵɵelementEnd();
|
|
99
|
-
i0.ɵɵelementStart(
|
|
100
|
-
i0.ɵɵtext(
|
|
138
|
+
i0.ɵɵelementStart(3, "span", 27);
|
|
139
|
+
i0.ɵɵtext(4, "Type");
|
|
101
140
|
i0.ɵɵelementEnd()();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
i0.ɵɵ
|
|
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);
|
|
106
147
|
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵelementStart(
|
|
108
|
-
i0.ɵɵtext(
|
|
148
|
+
i0.ɵɵelementStart(3, "span", 30);
|
|
149
|
+
i0.ɵɵtext(4, "End call");
|
|
109
150
|
i0.ɵɵelementEnd()();
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
i0.ɵɵ
|
|
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);
|
|
113
161
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(16, "span", 25);
|
|
115
|
-
i0.ɵɵtext(17, "End call");
|
|
116
|
-
i0.ɵɵelementEnd()()();
|
|
117
162
|
} if (rf & 2) {
|
|
118
163
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
119
164
|
i0.ɵɵadvance();
|
|
120
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);
|
|
121
|
-
i0.ɵɵadvance(
|
|
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);
|
|
174
|
+
} }
|
|
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);
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
} if (rf & 2) {
|
|
182
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
122
183
|
i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.CaptionsOn)("title", ctx_r1.CaptionsTitle);
|
|
123
|
-
i0.ɵɵadvance(4);
|
|
124
|
-
i0.ɵɵconditional(ctx_r1.ShowDetails ? 7 : -1);
|
|
125
184
|
} }
|
|
126
|
-
function
|
|
127
|
-
const
|
|
128
|
-
i0.ɵɵelementStart(0, "button",
|
|
129
|
-
i0.ɵɵlistener("click", function
|
|
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()); });
|
|
130
189
|
i0.ɵɵelement(1, "i", 19);
|
|
131
190
|
i0.ɵɵelementEnd();
|
|
132
191
|
} if (rf & 2) {
|
|
133
192
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
134
193
|
i0.ɵɵproperty("Toggleable", true)("Selected", ctx_r1.DetailsOn)("title", ctx_r1.DetailsOn ? "Hide the session panels" : "Show the session panels");
|
|
135
194
|
} }
|
|
136
|
-
function
|
|
137
|
-
const
|
|
138
|
-
i0.ɵɵelementStart(0, "
|
|
139
|
-
i0.ɵɵlistener("
|
|
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);
|
|
140
200
|
i0.ɵɵelementEnd();
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
i0.ɵɵ
|
|
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()); });
|
|
144
206
|
i0.ɵɵelementEnd();
|
|
145
|
-
i0.ɵɵconditionalCreate(
|
|
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);
|
|
146
209
|
i0.ɵɵelementEnd();
|
|
147
|
-
i0.ɵɵelementStart(
|
|
148
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
149
|
-
i0.ɵɵlistener("keydown", function
|
|
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()); });
|
|
150
213
|
i0.ɵɵelementEnd();
|
|
151
|
-
i0.ɵɵelementStart(
|
|
152
|
-
i0.ɵɵtext(
|
|
214
|
+
i0.ɵɵelementStart(8, "span", 37);
|
|
215
|
+
i0.ɵɵtext(9, "\u21B5 send");
|
|
153
216
|
i0.ɵɵelementEnd();
|
|
154
|
-
i0.ɵɵelementStart(
|
|
155
|
-
i0.ɵɵlistener("click", function
|
|
156
|
-
i0.ɵɵelement(
|
|
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);
|
|
157
220
|
i0.ɵɵelementEnd()();
|
|
158
|
-
i0.ɵɵelementStart(
|
|
159
|
-
i0.ɵɵlistener("click", function
|
|
160
|
-
i0.ɵɵelement(
|
|
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);
|
|
161
226
|
i0.ɵɵelementEnd();
|
|
162
|
-
i0.ɵɵelementStart(15, "button", 38);
|
|
163
|
-
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.EndRequested.emit()); });
|
|
164
|
-
i0.ɵɵelement(16, "i", 16);
|
|
165
|
-
i0.ɵɵelementEnd()();
|
|
166
227
|
} if (rf & 2) {
|
|
167
228
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
168
229
|
i0.ɵɵadvance(2);
|
|
169
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);
|
|
170
231
|
i0.ɵɵadvance();
|
|
171
|
-
i0.ɵɵ
|
|
172
|
-
i0.ɵɵadvance(
|
|
173
|
-
i0.ɵɵconditional(ctx_r1.ShowDetails ?
|
|
232
|
+
i0.ɵɵconditional(ctx_r1.ShowCaptionsControl ? 3 : -1);
|
|
233
|
+
i0.ɵɵadvance();
|
|
234
|
+
i0.ɵɵconditional(ctx_r1.ShowDetails ? 4 : -1);
|
|
174
235
|
i0.ɵɵadvance(2);
|
|
175
236
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.Draft);
|
|
176
237
|
i0.ɵɵadvance(4);
|
|
177
238
|
i0.ɵɵproperty("disabled", !ctx_r1.CanSend);
|
|
239
|
+
i0.ɵɵadvance(4);
|
|
240
|
+
i0.ɵɵconditional(ctx_r1.ShowEnd ? 14 : -1);
|
|
178
241
|
} }
|
|
179
242
|
/**
|
|
180
243
|
* The call overlay's BOTTOM DOCK — the progressive-disclosure composer
|
|
@@ -216,6 +279,23 @@ export class RealtimeComposerComponent {
|
|
|
216
279
|
* Default `false` (the full 5-button strip is unchanged).
|
|
217
280
|
*/
|
|
218
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;
|
|
219
299
|
/** Emitted when the user opens (Type control / typing) or closes (hide control) the dock. */
|
|
220
300
|
OpenChanged = new EventEmitter();
|
|
221
301
|
/** Whether captions are currently shown (drives the captions control's active state). */
|
|
@@ -285,10 +365,18 @@ export class RealtimeComposerComponent {
|
|
|
285
365
|
return !this.Open;
|
|
286
366
|
}
|
|
287
367
|
/**
|
|
288
|
-
* Whether the compact "•••" overflow sheet (
|
|
289
|
-
* 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.
|
|
290
370
|
*/
|
|
291
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
|
+
}
|
|
292
380
|
/** Open/close the compact overflow sheet (stops propagation so the outside-click close skips it). */
|
|
293
381
|
ToggleMore(event) {
|
|
294
382
|
event.stopPropagation();
|
|
@@ -369,19 +457,25 @@ export class RealtimeComposerComponent {
|
|
|
369
457
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dockInput = _t.first);
|
|
370
458
|
} }, hostBindings: function RealtimeComposerComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
371
459
|
i0.ɵɵlistener("click", function RealtimeComposerComponent_click_HostBindingHandler() { return ctx.OnDocumentClick(); }, i0.ɵɵresolveDocument);
|
|
372
|
-
} }, 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"], ["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, "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"
|
|
373
|
-
i0.ɵɵconditionalCreate(0, RealtimeComposerComponent_Conditional_0_Template,
|
|
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);
|
|
374
462
|
} if (rf & 2) {
|
|
375
463
|
i0.ɵɵconditional(ctx.StripMode && ctx.Compact ? 0 : ctx.StripMode ? 1 : 2);
|
|
376
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}"] });
|
|
377
465
|
}
|
|
378
466
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RealtimeComposerComponent, [{
|
|
379
467
|
type: Component,
|
|
380
|
-
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 <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 <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 <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 <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 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"] }]
|
|
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"] }]
|
|
381
469
|
}], null, { Open: [{
|
|
382
470
|
type: Input
|
|
383
471
|
}], Compact: [{
|
|
384
472
|
type: Input
|
|
473
|
+
}], AllowTyping: [{
|
|
474
|
+
type: Input
|
|
475
|
+
}], ShowEnd: [{
|
|
476
|
+
type: Input
|
|
477
|
+
}], ShowCaptionsControl: [{
|
|
478
|
+
type: Input
|
|
385
479
|
}], OpenChanged: [{
|
|
386
480
|
type: Output
|
|
387
481
|
}], CaptionsOn: [{
|