@memberjunction/ng-explorer-core 5.42.0 → 5.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,17 +17,19 @@ import * as i2 from "@memberjunction/ng-ui-components";
17
17
  import * as i3 from "@memberjunction/ng-mj-livekit-room";
18
18
  const _forTrack0 = ($index, $item) => $item.ID;
19
19
  const _forTrack1 = ($index, $item) => $item.ModelID;
20
+ const _forTrack2 = ($index, $item) => $item.RoomName;
21
+ const _forTrack3 = ($index, $item) => $item.ConversationID;
20
22
  function LiveKitRoomResource_Case_0_Template(rf, ctx) { if (rf & 1) {
21
23
  const _r1 = i0.ɵɵgetCurrentView();
22
24
  i0.ɵɵelementStart(0, "mj-livekit-agent-room", 4);
23
- i0.ɵɵlistener("Connected", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_Connected_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NotifyLoadComplete()); })("ErrorOccurred", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_ErrorOccurred_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NotifyLoadComplete()); })("InvitePeopleRequested", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_InvitePeopleRequested_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openInvite($event)); });
25
+ i0.ɵɵlistener("Connected", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_Connected_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NotifyLoadComplete()); })("Disconnected", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_Disconnected_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRoomLeft()); })("ErrorOccurred", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_ErrorOccurred_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NotifyLoadComplete()); })("InvitePeopleRequested", function LiveKitRoomResource_Case_0_Template_mj_livekit_agent_room_InvitePeopleRequested_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openInvite($event)); });
24
26
  i0.ɵɵelementEnd();
25
27
  } if (rf & 2) {
26
28
  const ctx_r1 = i0.ɵɵnextContext();
27
29
  i0.ɵɵproperty("Mode", ctx_r1.roomMode)("RoomName", ctx_r1.joinRoomName)("AgentID", ctx_r1.agentId)("TargetAgentID", ctx_r1.targetAgentId)("AgentName", ctx_r1.targetAgentName)("AvailableAgents", ctx_r1.agents)("RealtimeModelID", ctx_r1.selectedModelId)("RealtimeVoice", ctx_r1.selectedVoice)("CanPickModelVoice", ctx_r1.canPickModelVoice)("AvailableModels", ctx_r1.realtimeModels)("Provider", ctx_r1.ProviderToUse)("ShowAgentState", true)("ShowWhiteboard", true)("EnableLayoutSwitcher", true)("EnablePinning", true);
28
30
  } }
29
- function LiveKitRoomResource_Case_1_For_12_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "option", 12);
31
+ function LiveKitRoomResource_Case_1_For_15_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "option", 14);
31
33
  i0.ɵɵtext(1);
32
34
  i0.ɵɵelementEnd();
33
35
  } if (rf & 2) {
@@ -37,8 +39,8 @@ function LiveKitRoomResource_Case_1_For_12_Template(rf, ctx) { if (rf & 1) {
37
39
  i0.ɵɵadvance();
38
40
  i0.ɵɵtextInterpolate(a_r4.Name);
39
41
  } }
40
- function LiveKitRoomResource_Case_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "p", 13);
42
+ function LiveKitRoomResource_Case_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "p", 15);
42
44
  i0.ɵɵtext(1);
43
45
  i0.ɵɵelementEnd();
44
46
  } if (rf & 2) {
@@ -46,8 +48,8 @@ function LiveKitRoomResource_Case_1_Conditional_13_Template(rf, ctx) { if (rf &
46
48
  i0.ɵɵadvance();
47
49
  i0.ɵɵtextInterpolate(ctx_r1.selectedDescription);
48
50
  } }
49
- function LiveKitRoomResource_Case_1_Conditional_14_For_8_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "option", 12);
51
+ function LiveKitRoomResource_Case_1_Conditional_17_For_8_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "option", 14);
51
53
  i0.ɵɵtext(1);
52
54
  i0.ɵɵelementEnd();
53
55
  } if (rf & 2) {
@@ -57,8 +59,8 @@ function LiveKitRoomResource_Case_1_Conditional_14_For_8_Template(rf, ctx) { if
57
59
  i0.ɵɵadvance();
58
60
  i0.ɵɵtextInterpolate(m_r6.ModelName);
59
61
  } }
60
- function LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_For_8_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelementStart(0, "option", 12);
62
+ function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_For_8_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "option", 14);
62
64
  i0.ɵɵtext(1);
63
65
  i0.ɵɵelementEnd();
64
66
  } if (rf & 2) {
@@ -68,40 +70,40 @@ function LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_For_8_Template(
68
70
  i0.ɵɵadvance();
69
71
  i0.ɵɵtextInterpolate(v_r8.Name);
70
72
  } }
71
- function LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
73
+ function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
72
74
  const _r7 = i0.ɵɵgetCurrentView();
73
- i0.ɵɵelementStart(0, "label", 20);
75
+ i0.ɵɵelementStart(0, "label", 22);
74
76
  i0.ɵɵtext(1, "Voice ");
75
- i0.ɵɵelementStart(2, "span", 17);
77
+ i0.ɵɵelementStart(2, "span", 19);
76
78
  i0.ɵɵtext(3, "dev");
77
79
  i0.ɵɵelementEnd()();
78
- i0.ɵɵelementStart(4, "select", 21);
79
- i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_Template_select_change_4_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onVoiceChange($event)); });
80
- i0.ɵɵelementStart(5, "option", 19);
80
+ i0.ɵɵelementStart(4, "select", 23);
81
+ i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template_select_change_4_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onVoiceChange($event)); });
82
+ i0.ɵɵelementStart(5, "option", 21);
81
83
  i0.ɵɵtext(6, "Default voice");
82
84
  i0.ɵɵelementEnd();
83
- i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_For_8_Template, 2, 3, "option", 12, _forTrack0);
85
+ i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_For_8_Template, 2, 3, "option", 14, _forTrack0);
84
86
  i0.ɵɵelementEnd();
85
87
  } if (rf & 2) {
86
88
  const ctx_r1 = i0.ɵɵnextContext(3);
87
89
  i0.ɵɵadvance(7);
88
90
  i0.ɵɵrepeater(ctx_r1.selectedModelVoices);
89
91
  } }
90
- function LiveKitRoomResource_Case_1_Conditional_14_Template(rf, ctx) { if (rf & 1) {
92
+ function LiveKitRoomResource_Case_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
91
93
  const _r5 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "label", 16);
94
+ i0.ɵɵelementStart(0, "label", 18);
93
95
  i0.ɵɵtext(1, "Model ");
94
- i0.ɵɵelementStart(2, "span", 17);
96
+ i0.ɵɵelementStart(2, "span", 19);
95
97
  i0.ɵɵtext(3, "dev");
96
98
  i0.ɵɵelementEnd()();
97
- i0.ɵɵelementStart(4, "select", 18);
98
- i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Conditional_14_Template_select_change_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelChange($event)); });
99
- i0.ɵɵelementStart(5, "option", 19);
99
+ i0.ɵɵelementStart(4, "select", 20);
100
+ i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Conditional_17_Template_select_change_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelChange($event)); });
101
+ i0.ɵɵelementStart(5, "option", 21);
100
102
  i0.ɵɵtext(6, "Default model");
101
103
  i0.ɵɵelementEnd();
102
- i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_14_For_8_Template, 2, 3, "option", 12, _forTrack1);
104
+ i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_For_8_Template, 2, 3, "option", 14, _forTrack1);
103
105
  i0.ɵɵelementEnd();
104
- i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Case_1_Conditional_14_Conditional_9_Template, 9, 0);
106
+ i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template, 9, 0);
105
107
  } if (rf & 2) {
106
108
  const ctx_r1 = i0.ɵɵnextContext(2);
107
109
  i0.ɵɵadvance(7);
@@ -111,43 +113,272 @@ function LiveKitRoomResource_Case_1_Conditional_14_Template(rf, ctx) { if (rf &
111
113
  } }
112
114
  function LiveKitRoomResource_Case_1_Template(rf, ctx) { if (rf & 1) {
113
115
  const _r3 = i0.ɵɵgetCurrentView();
114
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 5)(2, "div", 6);
116
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 5)(2, "button", 6);
117
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.backToLanding()); });
115
118
  i0.ɵɵelement(3, "i", 7);
119
+ i0.ɵɵtext(4, " Back");
116
120
  i0.ɵɵelementEnd();
117
- i0.ɵɵelementStart(4, "h2", 8);
118
- i0.ɵɵtext(5, "Start a call");
121
+ i0.ɵɵelementStart(5, "div", 8);
122
+ i0.ɵɵelement(6, "i", 9);
119
123
  i0.ɵɵelementEnd();
120
- i0.ɵɵelementStart(6, "p", 9);
121
- i0.ɵɵtext(7, " Choose the agent you want to talk to. You can add more agents (and invite people) once you're in the room. ");
124
+ i0.ɵɵelementStart(7, "h2", 10);
125
+ i0.ɵɵtext(8, "Start a call");
122
126
  i0.ɵɵelementEnd();
123
- i0.ɵɵelementStart(8, "label", 10);
124
- i0.ɵɵtext(9, "Agent");
127
+ i0.ɵɵelementStart(9, "p", 11);
128
+ i0.ɵɵtext(10, " Choose the agent you want to talk to. You can add more agents (and invite people) once you're in the room. ");
125
129
  i0.ɵɵelementEnd();
126
- i0.ɵɵelementStart(10, "select", 11);
127
- i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Template_select_change_10_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTargetChange($event)); });
128
- i0.ɵɵrepeaterCreate(11, LiveKitRoomResource_Case_1_For_12_Template, 2, 3, "option", 12, _forTrack0);
130
+ i0.ɵɵelementStart(11, "label", 12);
131
+ i0.ɵɵtext(12, "Agent");
129
132
  i0.ɵɵelementEnd();
130
- i0.ɵɵconditionalCreate(13, LiveKitRoomResource_Case_1_Conditional_13_Template, 2, 1, "p", 13);
131
- i0.ɵɵconditionalCreate(14, LiveKitRoomResource_Case_1_Conditional_14_Template, 10, 1);
132
- i0.ɵɵelementStart(15, "button", 14);
133
- i0.ɵɵlistener("click", function LiveKitRoomResource_Case_1_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startCall()); });
134
- i0.ɵɵelement(16, "i", 15);
135
- i0.ɵɵtext(17, " Start call ");
133
+ i0.ɵɵelementStart(13, "select", 13);
134
+ i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Template_select_change_13_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTargetChange($event)); });
135
+ i0.ɵɵrepeaterCreate(14, LiveKitRoomResource_Case_1_For_15_Template, 2, 3, "option", 14, _forTrack0);
136
+ i0.ɵɵelementEnd();
137
+ i0.ɵɵconditionalCreate(16, LiveKitRoomResource_Case_1_Conditional_16_Template, 2, 1, "p", 15);
138
+ i0.ɵɵconditionalCreate(17, LiveKitRoomResource_Case_1_Conditional_17_Template, 10, 1);
139
+ i0.ɵɵelementStart(18, "button", 16);
140
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_1_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startCall()); });
141
+ i0.ɵɵelement(19, "i", 17);
142
+ i0.ɵɵtext(20, " Start call ");
136
143
  i0.ɵɵelementEnd()()();
137
144
  } if (rf & 2) {
138
145
  const ctx_r1 = i0.ɵɵnextContext();
139
- i0.ɵɵadvance(11);
146
+ i0.ɵɵadvance(14);
140
147
  i0.ɵɵrepeater(ctx_r1.agents);
141
148
  i0.ɵɵadvance(2);
142
- i0.ɵɵconditional(ctx_r1.selectedDescription ? 13 : -1);
149
+ i0.ɵɵconditional(ctx_r1.selectedDescription ? 16 : -1);
143
150
  i0.ɵɵadvance();
144
- i0.ɵɵconditional(ctx_r1.canPickModelVoice && ctx_r1.realtimeModels.length ? 14 : -1);
151
+ i0.ɵɵconditional(ctx_r1.canPickModelVoice && ctx_r1.realtimeModels.length ? 17 : -1);
145
152
  i0.ɵɵadvance();
146
153
  i0.ɵɵproperty("disabled", !ctx_r1.selectedTargetId);
147
154
  } }
148
155
  function LiveKitRoomResource_Case_2_Template(rf, ctx) { if (rf & 1) {
156
+ const _r9 = i0.ɵɵgetCurrentView();
157
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 24)(2, "div", 8);
158
+ i0.ɵɵelement(3, "i", 9);
159
+ i0.ɵɵelementEnd();
160
+ i0.ɵɵelementStart(4, "h2", 10);
161
+ i0.ɵɵtext(5, "Meet");
162
+ i0.ɵɵelementEnd();
163
+ i0.ɵɵelementStart(6, "p", 11);
164
+ i0.ɵɵtext(7, "Start a live room with agents and people, join one that's in progress, or review a past meeting.");
165
+ i0.ɵɵelementEnd();
166
+ i0.ɵɵelementStart(8, "div", 25)(9, "button", 26);
167
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startNewRoom()); });
168
+ i0.ɵɵelement(10, "i", 27);
169
+ i0.ɵɵelementStart(11, "span", 28);
170
+ i0.ɵɵtext(12, "New room");
171
+ i0.ɵɵelementEnd();
172
+ i0.ɵɵelementStart(13, "span", 29);
173
+ i0.ɵɵtext(14, "Pick an agent and start a fresh call.");
174
+ i0.ɵɵelementEnd()();
175
+ i0.ɵɵelementStart(15, "button", 26);
176
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openExisting()); });
177
+ i0.ɵɵelement(16, "i", 30);
178
+ i0.ɵɵelementStart(17, "span", 28);
179
+ i0.ɵɵtext(18, "Join existing");
180
+ i0.ɵɵelementEnd();
181
+ i0.ɵɵelementStart(19, "span", 29);
182
+ i0.ɵɵtext(20, "Hop into a room that's live right now.");
183
+ i0.ɵɵelementEnd()();
184
+ i0.ɵɵelementStart(21, "button", 26);
185
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openHistory()); });
186
+ i0.ɵɵelement(22, "i", 31);
187
+ i0.ɵɵelementStart(23, "span", 28);
188
+ i0.ɵɵtext(24, "History");
189
+ i0.ɵɵelementEnd();
190
+ i0.ɵɵelementStart(25, "span", 29);
191
+ i0.ɵɵtext(26, "Read transcripts of past meetings.");
192
+ i0.ɵɵelementEnd()()()()();
193
+ } }
194
+ function LiveKitRoomResource_Case_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "div", 32);
196
+ i0.ɵɵelement(1, "i", 38);
197
+ i0.ɵɵtext(2, " Finding active rooms\u2026");
198
+ i0.ɵɵelementEnd();
199
+ } }
200
+ function LiveKitRoomResource_Case_3_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
201
+ const _r11 = i0.ɵɵgetCurrentView();
202
+ i0.ɵɵelementStart(0, "button", 40);
203
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Conditional_8_For_2_Template_button_click_0_listener() { const r_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(r_r12.RoomName)); });
204
+ i0.ɵɵelementStart(1, "span", 41);
205
+ i0.ɵɵelement(2, "i", 42);
206
+ i0.ɵɵtext(3);
207
+ i0.ɵɵelementEnd();
208
+ i0.ɵɵelementStart(4, "span", 43);
209
+ i0.ɵɵtext(5);
210
+ i0.ɵɵelementEnd()();
211
+ } if (rf & 2) {
212
+ const r_r12 = ctx.$implicit;
213
+ i0.ɵɵadvance(3);
214
+ i0.ɵɵtextInterpolate1(" ", r_r12.Label);
215
+ i0.ɵɵadvance(2);
216
+ i0.ɵɵtextInterpolate2("", r_r12.AgentCount, " agent", r_r12.AgentCount === 1 ? "" : "s", " \u00B7 Join");
217
+ } }
218
+ function LiveKitRoomResource_Case_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
219
+ i0.ɵɵelementStart(0, "div", 33);
220
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_3_Conditional_8_For_2_Template, 6, 3, "button", 39, _forTrack2);
221
+ i0.ɵɵelementEnd();
222
+ } if (rf & 2) {
223
+ const ctx_r1 = i0.ɵɵnextContext(2);
224
+ i0.ɵɵadvance();
225
+ i0.ɵɵrepeater(ctx_r1.activeRooms);
226
+ } }
227
+ function LiveKitRoomResource_Case_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
228
+ i0.ɵɵelementStart(0, "p", 15);
229
+ i0.ɵɵtext(1, "No rooms are active right now.");
230
+ i0.ɵɵelementEnd();
231
+ } }
232
+ function LiveKitRoomResource_Case_3_Template(rf, ctx) { if (rf & 1) {
233
+ const _r10 = i0.ɵɵgetCurrentView();
234
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 24)(2, "button", 6);
235
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.backToLanding()); });
236
+ i0.ɵɵelement(3, "i", 7);
237
+ i0.ɵɵtext(4, " Back");
238
+ i0.ɵɵelementEnd();
239
+ i0.ɵɵelementStart(5, "h2", 10);
240
+ i0.ɵɵtext(6, "Join a room");
241
+ i0.ɵɵelementEnd();
242
+ i0.ɵɵconditionalCreate(7, LiveKitRoomResource_Case_3_Conditional_7_Template, 3, 0, "div", 32)(8, LiveKitRoomResource_Case_3_Conditional_8_Template, 3, 0, "div", 33)(9, LiveKitRoomResource_Case_3_Conditional_9_Template, 2, 0, "p", 15);
243
+ i0.ɵɵelementStart(10, "label", 34);
244
+ i0.ɵɵtext(11, "Or join by name");
245
+ i0.ɵɵelementEnd();
246
+ i0.ɵɵelementStart(12, "div", 35)(13, "input", 36);
247
+ i0.ɵɵlistener("input", function LiveKitRoomResource_Case_3_Template_input_input_13_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.manualRoomName = $event.target.value); })("keydown.enter", function LiveKitRoomResource_Case_3_Template_input_keydown_enter_13_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(ctx_r1.manualRoomName)); });
248
+ i0.ɵɵelementEnd();
249
+ i0.ɵɵelementStart(14, "button", 37);
250
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(ctx_r1.manualRoomName)); });
251
+ i0.ɵɵtext(15, "Join");
252
+ i0.ɵɵelementEnd()()()();
253
+ } if (rf & 2) {
254
+ const ctx_r1 = i0.ɵɵnextContext();
255
+ i0.ɵɵadvance(7);
256
+ i0.ɵɵconditional(ctx_r1.loadingActive ? 7 : ctx_r1.activeRooms.length ? 8 : 9);
257
+ i0.ɵɵadvance(6);
258
+ i0.ɵɵproperty("value", ctx_r1.manualRoomName);
259
+ i0.ɵɵadvance();
260
+ i0.ɵɵproperty("disabled", !ctx_r1.manualRoomName.trim());
261
+ } }
262
+ function LiveKitRoomResource_Case_4_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
263
+ i0.ɵɵelementStart(0, "div", 32);
264
+ i0.ɵɵelement(1, "i", 38);
265
+ i0.ɵɵtext(2, " Loading\u2026");
266
+ i0.ɵɵelementEnd();
267
+ } }
268
+ function LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_For_2_Template(rf, ctx) { if (rf & 1) {
269
+ const _r14 = i0.ɵɵgetCurrentView();
270
+ i0.ɵɵelementStart(0, "button", 40);
271
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_For_2_Template_button_click_0_listener() { const h_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openTranscript(h_r15)); });
272
+ i0.ɵɵelementStart(1, "span", 41);
273
+ i0.ɵɵelement(2, "i", 44);
274
+ i0.ɵɵtext(3);
275
+ i0.ɵɵelementEnd();
276
+ i0.ɵɵelementStart(4, "span", 43);
277
+ i0.ɵɵtext(5);
278
+ i0.ɵɵelementEnd()();
279
+ } if (rf & 2) {
280
+ const h_r15 = ctx.$implicit;
281
+ const ctx_r1 = i0.ɵɵnextContext(4);
282
+ i0.ɵɵadvance(3);
283
+ i0.ɵɵtextInterpolate1(" ", h_r15.Name);
284
+ i0.ɵɵadvance(2);
285
+ i0.ɵɵtextInterpolate(ctx_r1.formatTime(h_r15.At));
286
+ } }
287
+ function LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
288
+ i0.ɵɵelementStart(0, "div", 33);
289
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_For_2_Template, 6, 2, "button", 39, _forTrack3);
290
+ i0.ɵɵelementEnd();
291
+ } if (rf & 2) {
292
+ const ctx_r1 = i0.ɵɵnextContext(3);
293
+ i0.ɵɵadvance();
294
+ i0.ɵɵrepeater(ctx_r1.historyRooms);
295
+ } }
296
+ function LiveKitRoomResource_Case_4_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "p", 15);
298
+ i0.ɵɵtext(1, "No past meetings yet.");
299
+ i0.ɵɵelementEnd();
300
+ } }
301
+ function LiveKitRoomResource_Case_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
302
+ const _r13 = i0.ɵɵgetCurrentView();
303
+ i0.ɵɵelementStart(0, "button", 6);
304
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.backToLanding()); });
305
+ i0.ɵɵelement(1, "i", 7);
306
+ i0.ɵɵtext(2, " Back");
307
+ i0.ɵɵelementEnd();
308
+ i0.ɵɵelementStart(3, "h2", 10);
309
+ i0.ɵɵtext(4, "Past meetings");
310
+ i0.ɵɵelementEnd();
311
+ i0.ɵɵconditionalCreate(5, LiveKitRoomResource_Case_4_Conditional_2_Conditional_5_Template, 3, 0, "div", 32)(6, LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_Template, 3, 0, "div", 33)(7, LiveKitRoomResource_Case_4_Conditional_2_Conditional_7_Template, 2, 0, "p", 15);
312
+ } if (rf & 2) {
313
+ const ctx_r1 = i0.ɵɵnextContext(2);
314
+ i0.ɵɵadvance(5);
315
+ i0.ɵɵconditional(ctx_r1.loadingHistory ? 5 : ctx_r1.historyRooms.length ? 6 : 7);
316
+ } }
317
+ function LiveKitRoomResource_Case_4_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "div", 32);
319
+ i0.ɵɵelement(1, "i", 38);
320
+ i0.ɵɵtext(2, " Loading transcript\u2026");
321
+ i0.ɵɵelementEnd();
322
+ } }
323
+ function LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_For_2_Template(rf, ctx) { if (rf & 1) {
324
+ i0.ɵɵelementStart(0, "div", 47)(1, "span", 48);
325
+ i0.ɵɵtext(2);
326
+ i0.ɵɵelementEnd();
327
+ i0.ɵɵelementStart(3, "span", 49);
328
+ i0.ɵɵtext(4);
329
+ i0.ɵɵelementEnd()();
330
+ } if (rf & 2) {
331
+ const line_r17 = ctx.$implicit;
332
+ i0.ɵɵclassProp("mj-lk-tline--agent", line_r17.Kind === "agent")("mj-lk-tline--error", line_r17.Kind === "error");
333
+ i0.ɵɵadvance(2);
334
+ i0.ɵɵtextInterpolate(line_r17.Speaker);
335
+ i0.ɵɵadvance(2);
336
+ i0.ɵɵtextInterpolate(line_r17.Message);
337
+ } }
338
+ function LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
339
+ i0.ɵɵelementStart(0, "div", 45);
340
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_For_2_Template, 5, 6, "div", 46, i0.ɵɵrepeaterTrackByIndex);
341
+ i0.ɵɵelementEnd();
342
+ } if (rf & 2) {
343
+ const ctx_r1 = i0.ɵɵnextContext(3);
344
+ i0.ɵɵadvance();
345
+ i0.ɵɵrepeater(ctx_r1.historyTranscript);
346
+ } }
347
+ function LiveKitRoomResource_Case_4_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
348
+ i0.ɵɵelementStart(0, "p", 15);
349
+ i0.ɵɵtext(1, "No transcript was captured for this meeting.");
350
+ i0.ɵɵelementEnd();
351
+ } }
352
+ function LiveKitRoomResource_Case_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
353
+ const _r16 = i0.ɵɵgetCurrentView();
354
+ i0.ɵɵelementStart(0, "button", 6);
355
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeTranscript()); });
356
+ i0.ɵɵelement(1, "i", 7);
357
+ i0.ɵɵtext(2, " All meetings");
358
+ i0.ɵɵelementEnd();
359
+ i0.ɵɵelementStart(3, "h2", 10);
360
+ i0.ɵɵtext(4);
361
+ i0.ɵɵelementEnd();
362
+ i0.ɵɵconditionalCreate(5, LiveKitRoomResource_Case_4_Conditional_3_Conditional_5_Template, 3, 0, "div", 32)(6, LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_Template, 3, 0, "div", 45)(7, LiveKitRoomResource_Case_4_Conditional_3_Conditional_7_Template, 2, 0, "p", 15);
363
+ } if (rf & 2) {
364
+ const ctx_r1 = i0.ɵɵnextContext(2);
365
+ i0.ɵɵadvance(4);
366
+ i0.ɵɵtextInterpolate(ctx_r1.openHistoryRoom.Name);
367
+ i0.ɵɵadvance();
368
+ i0.ɵɵconditional(ctx_r1.loadingTranscript ? 5 : ctx_r1.historyTranscript.length ? 6 : 7);
369
+ } }
370
+ function LiveKitRoomResource_Case_4_Template(rf, ctx) { if (rf & 1) {
371
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 24);
372
+ i0.ɵɵconditionalCreate(2, LiveKitRoomResource_Case_4_Conditional_2_Template, 8, 1)(3, LiveKitRoomResource_Case_4_Conditional_3_Template, 8, 2);
373
+ i0.ɵɵelementEnd()();
374
+ } if (rf & 2) {
375
+ const ctx_r1 = i0.ɵɵnextContext();
376
+ i0.ɵɵadvance(2);
377
+ i0.ɵɵconditional(!ctx_r1.openHistoryRoom ? 2 : 3);
378
+ } }
379
+ function LiveKitRoomResource_Case_5_Template(rf, ctx) { if (rf & 1) {
149
380
  i0.ɵɵelementStart(0, "div", 2);
150
- i0.ɵɵelement(1, "i", 22);
381
+ i0.ɵɵelement(1, "i", 50);
151
382
  i0.ɵɵelementStart(2, "span");
152
383
  i0.ɵɵtext(3);
153
384
  i0.ɵɵelementEnd()();
@@ -156,74 +387,74 @@ function LiveKitRoomResource_Case_2_Template(rf, ctx) { if (rf & 1) {
156
387
  i0.ɵɵadvance(3);
157
388
  i0.ɵɵtextInterpolate(ctx_r1.resolveError);
158
389
  } }
159
- function LiveKitRoomResource_Case_3_Template(rf, ctx) { if (rf & 1) {
390
+ function LiveKitRoomResource_Case_6_Template(rf, ctx) { if (rf & 1) {
160
391
  i0.ɵɵelementStart(0, "div", 2);
161
392
  i0.ɵɵtext(1, "Preparing room\u2026");
162
393
  i0.ɵɵelementEnd();
163
394
  } }
164
- function LiveKitRoomResource_Conditional_4_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
165
- const _r10 = i0.ɵɵgetCurrentView();
166
- i0.ɵɵelementStart(0, "span", 37);
395
+ function LiveKitRoomResource_Conditional_7_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
396
+ const _r19 = i0.ɵɵgetCurrentView();
397
+ i0.ɵɵelementStart(0, "span", 65);
167
398
  i0.ɵɵtext(1);
168
- i0.ɵɵelementStart(2, "button", 38);
169
- i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_4_Conditional_8_For_2_Template_button_click_2_listener() { const u_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeInvitee(u_r11.ID)); });
170
- i0.ɵɵelement(3, "i", 39);
399
+ i0.ɵɵelementStart(2, "button", 66);
400
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Conditional_8_For_2_Template_button_click_2_listener() { const u_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeInvitee(u_r20.ID)); });
401
+ i0.ɵɵelement(3, "i", 67);
171
402
  i0.ɵɵelementEnd()();
172
403
  } if (rf & 2) {
173
- const u_r11 = ctx.$implicit;
404
+ const u_r20 = ctx.$implicit;
174
405
  i0.ɵɵadvance();
175
- i0.ɵɵtextInterpolate1(" ", u_r11.Name, " ");
406
+ i0.ɵɵtextInterpolate1(" ", u_r20.Name, " ");
176
407
  } }
177
- function LiveKitRoomResource_Conditional_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
178
- i0.ɵɵelementStart(0, "div", 30);
179
- i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_4_Conditional_8_For_2_Template, 4, 1, "span", 37, _forTrack0);
408
+ function LiveKitRoomResource_Conditional_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
409
+ i0.ɵɵelementStart(0, "div", 58);
410
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_7_Conditional_8_For_2_Template, 4, 1, "span", 65, _forTrack0);
180
411
  i0.ɵɵelementEnd();
181
412
  } if (rf & 2) {
182
413
  const ctx_r1 = i0.ɵɵnextContext(2);
183
414
  i0.ɵɵadvance();
184
415
  i0.ɵɵrepeater(ctx_r1.selectedInvitees);
185
416
  } }
186
- function LiveKitRoomResource_Conditional_4_Conditional_9_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵelementStart(0, "span", 43);
417
+ function LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
418
+ i0.ɵɵelementStart(0, "span", 71);
188
419
  i0.ɵɵtext(1);
189
420
  i0.ɵɵelementEnd();
190
421
  } if (rf & 2) {
191
- const u_r13 = i0.ɵɵnextContext().$implicit;
422
+ const u_r22 = i0.ɵɵnextContext().$implicit;
192
423
  i0.ɵɵadvance();
193
- i0.ɵɵtextInterpolate(u_r13.Email);
424
+ i0.ɵɵtextInterpolate(u_r22.Email);
194
425
  } }
195
- function LiveKitRoomResource_Conditional_4_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
196
- const _r12 = i0.ɵɵgetCurrentView();
197
- i0.ɵɵelementStart(0, "button", 41);
198
- i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_4_Conditional_9_For_2_Template_button_click_0_listener() { const u_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addInvitee(u_r13)); });
199
- i0.ɵɵelementStart(1, "span", 42);
426
+ function LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
427
+ const _r21 = i0.ɵɵgetCurrentView();
428
+ i0.ɵɵelementStart(0, "button", 69);
429
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Template_button_click_0_listener() { const u_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addInvitee(u_r22)); });
430
+ i0.ɵɵelementStart(1, "span", 70);
200
431
  i0.ɵɵtext(2);
201
432
  i0.ɵɵelementEnd();
202
- i0.ɵɵconditionalCreate(3, LiveKitRoomResource_Conditional_4_Conditional_9_For_2_Conditional_3_Template, 2, 1, "span", 43);
433
+ i0.ɵɵconditionalCreate(3, LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Conditional_3_Template, 2, 1, "span", 71);
203
434
  i0.ɵɵelementEnd();
204
435
  } if (rf & 2) {
205
- const u_r13 = ctx.$implicit;
436
+ const u_r22 = ctx.$implicit;
206
437
  i0.ɵɵadvance(2);
207
- i0.ɵɵtextInterpolate(u_r13.Name);
438
+ i0.ɵɵtextInterpolate(u_r22.Name);
208
439
  i0.ɵɵadvance();
209
- i0.ɵɵconditional(u_r13.Email ? 3 : -1);
440
+ i0.ɵɵconditional(u_r22.Email ? 3 : -1);
210
441
  } }
211
- function LiveKitRoomResource_Conditional_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
212
- i0.ɵɵelementStart(0, "div", 31);
213
- i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_4_Conditional_9_For_2_Template, 4, 2, "button", 40, _forTrack0);
442
+ function LiveKitRoomResource_Conditional_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
443
+ i0.ɵɵelementStart(0, "div", 59);
444
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Template, 4, 2, "button", 68, _forTrack0);
214
445
  i0.ɵɵelementEnd();
215
446
  } if (rf & 2) {
216
447
  const ctx_r1 = i0.ɵɵnextContext(2);
217
448
  i0.ɵɵadvance();
218
449
  i0.ɵɵrepeater(ctx_r1.userResults);
219
450
  } }
220
- function LiveKitRoomResource_Conditional_4_Conditional_10_Template(rf, ctx) { if (rf & 1) {
221
- i0.ɵɵelementStart(0, "div", 32);
451
+ function LiveKitRoomResource_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
452
+ i0.ɵɵelementStart(0, "div", 60);
222
453
  i0.ɵɵtext(1, "No matching people.");
223
454
  i0.ɵɵelementEnd();
224
455
  } }
225
- function LiveKitRoomResource_Conditional_4_Conditional_11_Template(rf, ctx) { if (rf & 1) {
226
- i0.ɵɵelementStart(0, "div", 33);
456
+ function LiveKitRoomResource_Conditional_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
457
+ i0.ɵɵelementStart(0, "div", 61);
227
458
  i0.ɵɵtext(1);
228
459
  i0.ɵɵelementEnd();
229
460
  } if (rf & 2) {
@@ -231,30 +462,30 @@ function LiveKitRoomResource_Conditional_4_Conditional_11_Template(rf, ctx) { if
231
462
  i0.ɵɵadvance();
232
463
  i0.ɵɵtextInterpolate(ctx_r1.inviteMessage);
233
464
  } }
234
- function LiveKitRoomResource_Conditional_4_Template(rf, ctx) { if (rf & 1) {
235
- const _r9 = i0.ɵɵgetCurrentView();
236
- i0.ɵɵelementStart(0, "mj-dialog", 23);
237
- i0.ɵɵlistener("Close", function LiveKitRoomResource_Conditional_4_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
238
- i0.ɵɵelementStart(1, "div", 24)(2, "p", 25);
465
+ function LiveKitRoomResource_Conditional_7_Template(rf, ctx) { if (rf & 1) {
466
+ const _r18 = i0.ɵɵgetCurrentView();
467
+ i0.ɵɵelementStart(0, "mj-dialog", 51);
468
+ i0.ɵɵlistener("Close", function LiveKitRoomResource_Conditional_7_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
469
+ i0.ɵɵelementStart(1, "div", 52)(2, "p", 53);
239
470
  i0.ɵɵtext(3, "They'll get an in-app notification (and an email if Comms is set up) to join this room.");
240
471
  i0.ɵɵelementEnd();
241
- i0.ɵɵelementStart(4, "div", 26)(5, "input", 27);
242
- i0.ɵɵlistener("input", function LiveKitRoomResource_Conditional_4_Template_input_input_5_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.userSearch = $event.target.value); })("keydown.enter", function LiveKitRoomResource_Conditional_4_Template_input_keydown_enter_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
472
+ i0.ɵɵelementStart(4, "div", 54)(5, "input", 55);
473
+ i0.ɵɵlistener("input", function LiveKitRoomResource_Conditional_7_Template_input_input_5_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.userSearch = $event.target.value); })("keydown.enter", function LiveKitRoomResource_Conditional_7_Template_input_keydown_enter_5_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
243
474
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(6, "button", 28);
245
- i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_4_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
246
- i0.ɵɵelement(7, "i", 29);
475
+ i0.ɵɵelementStart(6, "button", 56);
476
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
477
+ i0.ɵɵelement(7, "i", 57);
247
478
  i0.ɵɵelementEnd()();
248
- i0.ɵɵconditionalCreate(8, LiveKitRoomResource_Conditional_4_Conditional_8_Template, 3, 0, "div", 30);
249
- i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Conditional_4_Conditional_9_Template, 3, 0, "div", 31)(10, LiveKitRoomResource_Conditional_4_Conditional_10_Template, 2, 0, "div", 32);
250
- i0.ɵɵconditionalCreate(11, LiveKitRoomResource_Conditional_4_Conditional_11_Template, 2, 1, "div", 33);
251
- i0.ɵɵelementStart(12, "div", 34)(13, "button", 35);
252
- i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_4_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.sendInvites()); });
253
- i0.ɵɵelement(14, "i", 29);
479
+ i0.ɵɵconditionalCreate(8, LiveKitRoomResource_Conditional_7_Conditional_8_Template, 3, 0, "div", 58);
480
+ i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Conditional_7_Conditional_9_Template, 3, 0, "div", 59)(10, LiveKitRoomResource_Conditional_7_Conditional_10_Template, 2, 0, "div", 60);
481
+ i0.ɵɵconditionalCreate(11, LiveKitRoomResource_Conditional_7_Conditional_11_Template, 2, 1, "div", 61);
482
+ i0.ɵɵelementStart(12, "div", 62)(13, "button", 63);
483
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.sendInvites()); });
484
+ i0.ɵɵelement(14, "i", 57);
254
485
  i0.ɵɵtext(15);
255
486
  i0.ɵɵelementEnd();
256
- i0.ɵɵelementStart(16, "button", 36);
257
- i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_4_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
487
+ i0.ɵɵelementStart(16, "button", 64);
488
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
258
489
  i0.ɵɵtext(17, "Cancel");
259
490
  i0.ɵɵelementEnd()()()();
260
491
  } if (rf & 2) {
@@ -291,8 +522,26 @@ function LiveKitRoomResource_Conditional_4_Template(rf, ctx) { if (rf & 1) {
291
522
  * Registered via `@RegisterClass(BaseResourceComponent, 'LiveKitRoomResource')`.
292
523
  */
293
524
  let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponent {
294
- /** Render phase: spinner while resolving → pre-join picker → live room (or an error message). */
525
+ /** Render phase: spinner while resolving → landing (new/existing/history) → picker/existing/history → live room. */
295
526
  phase = 'loading';
527
+ // ── "Join existing" state ─────────────────────────────────────────────────────────
528
+ /** Currently-active rooms (a distinct `ExternalConnectionID` with ≥1 connected agent bridge). */
529
+ activeRooms = [];
530
+ /** True while loading the active-rooms list. */
531
+ loadingActive = false;
532
+ /** Free-text room name to join directly (the "join by name/code" path). */
533
+ manualRoomName = '';
534
+ // ── "History" (past meetings) state ───────────────────────────────────────────────
535
+ /** Past meeting rooms (the `MJ: Conversations` of Type='Meeting Room' the bridge recorded). */
536
+ historyRooms = [];
537
+ /** True while loading the history list. */
538
+ loadingHistory = false;
539
+ /** The history room whose transcript is open (drill-in), or null for the list. */
540
+ openHistoryRoom = null;
541
+ /** The opened room's transcript lines. */
542
+ historyTranscript = [];
543
+ /** True while loading a room's transcript. */
544
+ loadingTranscript = false;
296
545
  /** `'agent'` to start/voice an agent (the default), or `'join'` when opened from an invite link. */
297
546
  roomMode = 'agent';
298
547
  /** The room to JOIN when opened via an invite link (`?room=…`); null in agent mode. */
@@ -421,9 +670,162 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
421
670
  // Default the picker to the general assistant "Sage" when present, else the first candidate.
422
671
  this.selectedTargetId =
423
672
  this.agents.find((a) => a.Name.trim().toLowerCase() === 'sage')?.ID ?? this.agents[0]?.ID ?? null;
424
- this.phase = 'picking';
673
+ // Land on the Meet home (start new / join existing / history) rather than jumping straight into the picker.
674
+ this.phase = 'landing';
425
675
  this.NotifyLoadComplete();
426
676
  }
677
+ // ── Meet landing navigation ─────────────────────────────────────────────────────────
678
+ /**
679
+ * The room disconnected (the user clicked **Leave** or **End meeting**, or the room dropped). Return to the
680
+ * Meet landing so they can start a new room, join another, or review history — rather than being stranded
681
+ * on a dead room. Resets the join state so the next "New room" / "Join existing" starts clean.
682
+ */
683
+ onRoomLeft() {
684
+ this.roomMode = 'agent';
685
+ this.joinRoomName = null;
686
+ this.phase = 'landing';
687
+ this.cdr.detectChanges();
688
+ }
689
+ /** Go to the "start a new room" picker. */
690
+ startNewRoom() {
691
+ this.phase = 'picking';
692
+ }
693
+ /** Open the "join existing room" view and load the active rooms. */
694
+ openExisting() {
695
+ this.phase = 'existing';
696
+ void this.loadActiveRooms();
697
+ }
698
+ /** Open the "past meetings" history view and load the list. */
699
+ openHistory() {
700
+ this.phase = 'history';
701
+ this.openHistoryRoom = null;
702
+ void this.loadHistory();
703
+ }
704
+ /** Back to the Meet home. */
705
+ backToLanding() {
706
+ this.phase = 'landing';
707
+ }
708
+ /** Joins an existing room by its LiveKit room name (the bridge `ExternalConnectionID`). */
709
+ joinExistingRoom(roomName) {
710
+ const name = roomName.trim();
711
+ if (!name) {
712
+ return;
713
+ }
714
+ this.roomMode = 'join';
715
+ this.joinRoomName = name;
716
+ this.phase = 'live';
717
+ }
718
+ /** Loads currently-active rooms: distinct rooms that have a Connected/Connecting agent bridge. */
719
+ async loadActiveRooms() {
720
+ this.loadingActive = true;
721
+ this.activeRooms = [];
722
+ try {
723
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
724
+ const res = await rv.RunView({
725
+ EntityName: 'MJ: AI Agent Session Bridges',
726
+ ExtraFilter: `Status IN ('Connected','Connecting') AND ExternalConnectionID IS NOT NULL`,
727
+ Fields: ['ExternalConnectionID', 'Agent'],
728
+ OrderBy: '__mj_CreatedAt DESC',
729
+ MaxRows: 500,
730
+ ResultType: 'simple',
731
+ }, this.ProviderToUse.CurrentUser);
732
+ if (res.Success) {
733
+ const byRoom = new Map();
734
+ for (const r of res.Results) {
735
+ const room = String(r['ExternalConnectionID'] ?? '');
736
+ if (!room) {
737
+ continue;
738
+ }
739
+ const entry = byRoom.get(room) ?? { count: 0, agents: new Set() };
740
+ entry.count += 1;
741
+ if (r['Agent']) {
742
+ entry.agents.add(String(r['Agent']));
743
+ }
744
+ byRoom.set(room, entry);
745
+ }
746
+ this.activeRooms = [...byRoom.entries()].map(([room, info]) => ({
747
+ RoomName: room,
748
+ Label: info.agents.size ? [...info.agents].join(', ') : room,
749
+ AgentCount: info.count,
750
+ }));
751
+ }
752
+ }
753
+ finally {
754
+ this.loadingActive = false;
755
+ this.cdr.detectChanges();
756
+ }
757
+ }
758
+ /** Loads past meetings: the `Meeting Room` conversations the bridge recorded, newest first. */
759
+ async loadHistory() {
760
+ this.loadingHistory = true;
761
+ this.historyRooms = [];
762
+ try {
763
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
764
+ const res = await rv.RunView({
765
+ EntityName: 'MJ: Conversations',
766
+ ExtraFilter: `Type='Meeting Room'`,
767
+ Fields: ['ID', 'Name', '__mj_UpdatedAt'],
768
+ OrderBy: '__mj_UpdatedAt DESC',
769
+ MaxRows: 200,
770
+ ResultType: 'simple',
771
+ }, this.ProviderToUse.CurrentUser);
772
+ if (res.Success) {
773
+ this.historyRooms = res.Results.map((r) => ({
774
+ ConversationID: String(r['ID']),
775
+ Name: String(r['Name'] ?? 'Meeting'),
776
+ At: new Date(String(r['__mj_UpdatedAt'] ?? '')),
777
+ }));
778
+ }
779
+ }
780
+ finally {
781
+ this.loadingHistory = false;
782
+ this.cdr.detectChanges();
783
+ }
784
+ }
785
+ /** Opens a past meeting's transcript (drill-in). */
786
+ async openTranscript(room) {
787
+ this.openHistoryRoom = room;
788
+ this.historyTranscript = [];
789
+ this.loadingTranscript = true;
790
+ this.cdr.detectChanges();
791
+ try {
792
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
793
+ const res = await rv.RunView({
794
+ EntityName: 'MJ: Conversation Details',
795
+ ExtraFilter: `ConversationID='${room.ConversationID.replace(/'/g, "''")}'`,
796
+ Fields: ['Role', 'Message', 'AgentID', 'Error', '__mj_CreatedAt'],
797
+ OrderBy: '__mj_CreatedAt ASC',
798
+ MaxRows: 5000,
799
+ ResultType: 'simple',
800
+ }, this.ProviderToUse.CurrentUser);
801
+ if (res.Success) {
802
+ this.historyTranscript = res.Results.map((d) => {
803
+ const role = String(d['Role'] ?? 'User');
804
+ if (role === 'Error') {
805
+ return { Kind: 'error', Speaker: 'Error', Message: String(d['Error'] ?? d['Message'] ?? '') };
806
+ }
807
+ if (role === 'AI') {
808
+ const agentId = String(d['AgentID'] ?? '').toLowerCase();
809
+ const name = AIEngineBase.Instance.Agents.find((a) => a.ID.toLowerCase() === agentId)?.Name ?? 'Agent';
810
+ return { Kind: 'agent', Speaker: name, Message: String(d['Message'] ?? '') };
811
+ }
812
+ return { Kind: 'human', Speaker: 'Participant', Message: String(d['Message'] ?? '') };
813
+ });
814
+ }
815
+ }
816
+ finally {
817
+ this.loadingTranscript = false;
818
+ this.cdr.detectChanges();
819
+ }
820
+ }
821
+ /** Back to the history list from a transcript drill-in. */
822
+ closeTranscript() {
823
+ this.openHistoryRoom = null;
824
+ }
825
+ /** Formats a meeting timestamp for the history list (avoids a `date` pipe / CommonModule dependency). */
826
+ formatTime(d) {
827
+ return d && !isNaN(d.getTime()) ? d.toLocaleString() : '';
828
+ }
427
829
  /** Picker selection handler (native select; avoids a FormsModule dependency). */
428
830
  onTargetChange(event) {
429
831
  this.selectedTargetId = event.target.value || null;
@@ -548,15 +950,15 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
548
950
  return 'fa-solid fa-video';
549
951
  }
550
952
  static ɵfac = /*@__PURE__*/ (() => { let ɵLiveKitRoomResource_BaseFactory; return function LiveKitRoomResource_Factory(__ngFactoryType__) { return (ɵLiveKitRoomResource_BaseFactory || (ɵLiveKitRoomResource_BaseFactory = i0.ɵɵgetInheritedFactory(LiveKitRoomResource)))(__ngFactoryType__ || LiveKitRoomResource); }; })();
551
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LiveKitRoomResource, selectors: [["mj-livekit-room-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [[1, "mj-livekit-room-resource", 3, "Mode", "RoomName", "AgentID", "TargetAgentID", "AgentName", "AvailableAgents", "RealtimeModelID", "RealtimeVoice", "CanPickModelVoice", "AvailableModels", "Provider", "ShowAgentState", "ShowWhiteboard", "EnableLayoutSwitcher", "EnablePinning"], [1, "mj-lk-prejoin"], [1, "mj-livekit-room-resource__message"], ["Title", "Invite people", "Size", "auto", 3, "Visible", "Width"], [1, "mj-livekit-room-resource", 3, "Connected", "ErrorOccurred", "InvitePeopleRequested", "Mode", "RoomName", "AgentID", "TargetAgentID", "AgentName", "AvailableAgents", "RealtimeModelID", "RealtimeVoice", "CanPickModelVoice", "AvailableModels", "Provider", "ShowAgentState", "ShowWhiteboard", "EnableLayoutSwitcher", "EnablePinning"], [1, "mj-lk-prejoin__card"], [1, "mj-lk-prejoin__icon"], [1, "fa-solid", "fa-video"], [1, "mj-lk-prejoin__title"], [1, "mj-lk-prejoin__subtitle"], ["for", "mj-lk-target", 1, "mj-lk-prejoin__label"], ["id", "mj-lk-target", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], [3, "value", "selected"], [1, "mj-lk-prejoin__desc"], ["type", "button", 1, "mj-lk-prejoin__start", 3, "click", "disabled"], [1, "fa-solid", "fa-phone"], ["for", "mj-lk-model", 1, "mj-lk-prejoin__label"], [1, "mj-lk-prejoin__dev"], ["id", "mj-lk-model", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], ["value", ""], ["for", "mj-lk-voice", 1, "mj-lk-prejoin__label"], ["id", "mj-lk-voice", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], [1, "fa-solid", "fa-circle-exclamation"], ["Title", "Invite people", "Size", "auto", 3, "Close", "Visible", "Width"], [1, "mj-lk-invite"], [1, "mj-lk-invite__hint"], [1, "mj-lk-invite__search"], ["type", "text", "placeholder", "Search people by name or email\u2026", 1, "mj-input", 3, "input", "keydown.enter", "value"], ["type", "button", 1, "mj-lk-invite__searchbtn", 3, "click", "disabled"], [1, "fa-solid"], [1, "mj-lk-invite__chips"], [1, "mj-lk-invite__results"], [1, "mj-lk-invite__empty"], [1, "mj-lk-invite__msg"], [1, "mj-lk-invite__actions"], ["type", "button", 1, "mj-lk-invite__send", 3, "click", "disabled"], ["type", "button", 1, "mj-lk-invite__cancel", 3, "click"], [1, "mj-lk-invite__chip"], ["type", "button", 1, "mj-lk-invite__chipx", 3, "click"], [1, "fa-solid", "fa-xmark"], ["type", "button", 1, "mj-lk-invite__result"], ["type", "button", 1, "mj-lk-invite__result", 3, "click"], [1, "mj-lk-invite__rname"], [1, "mj-lk-invite__remail"]], template: function LiveKitRoomResource_Template(rf, ctx) { if (rf & 1) {
552
- i0.ɵɵconditionalCreate(0, LiveKitRoomResource_Case_0_Template, 1, 15, "mj-livekit-agent-room", 0)(1, LiveKitRoomResource_Case_1_Template, 18, 3, "div", 1)(2, LiveKitRoomResource_Case_2_Template, 4, 1, "div", 2)(3, LiveKitRoomResource_Case_3_Template, 2, 0, "div", 2);
553
- i0.ɵɵconditionalCreate(4, LiveKitRoomResource_Conditional_4_Template, 18, 21, "mj-dialog", 3);
953
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LiveKitRoomResource, selectors: [["mj-livekit-room-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 2, consts: [[1, "mj-livekit-room-resource", 3, "Mode", "RoomName", "AgentID", "TargetAgentID", "AgentName", "AvailableAgents", "RealtimeModelID", "RealtimeVoice", "CanPickModelVoice", "AvailableModels", "Provider", "ShowAgentState", "ShowWhiteboard", "EnableLayoutSwitcher", "EnablePinning"], [1, "mj-lk-prejoin"], [1, "mj-livekit-room-resource__message"], ["Title", "Invite people", "Size", "auto", 3, "Visible", "Width"], [1, "mj-livekit-room-resource", 3, "Connected", "Disconnected", "ErrorOccurred", "InvitePeopleRequested", "Mode", "RoomName", "AgentID", "TargetAgentID", "AgentName", "AvailableAgents", "RealtimeModelID", "RealtimeVoice", "CanPickModelVoice", "AvailableModels", "Provider", "ShowAgentState", "ShowWhiteboard", "EnableLayoutSwitcher", "EnablePinning"], [1, "mj-lk-prejoin__card"], ["type", "button", 1, "mj-lk-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "mj-lk-prejoin__icon"], [1, "fa-solid", "fa-video"], [1, "mj-lk-prejoin__title"], [1, "mj-lk-prejoin__subtitle"], ["for", "mj-lk-target", 1, "mj-lk-prejoin__label"], ["id", "mj-lk-target", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], [3, "value", "selected"], [1, "mj-lk-prejoin__desc"], ["type", "button", 1, "mj-lk-prejoin__start", 3, "click", "disabled"], [1, "fa-solid", "fa-phone"], ["for", "mj-lk-model", 1, "mj-lk-prejoin__label"], [1, "mj-lk-prejoin__dev"], ["id", "mj-lk-model", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], ["value", ""], ["for", "mj-lk-voice", 1, "mj-lk-prejoin__label"], ["id", "mj-lk-voice", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], [1, "mj-lk-prejoin__card", "mj-lk-prejoin__card--wide"], [1, "mj-lk-cards"], ["type", "button", 1, "mj-lk-card", 3, "click"], [1, "fa-solid", "fa-circle-plus"], [1, "mj-lk-card__t"], [1, "mj-lk-card__d"], [1, "fa-solid", "fa-door-open"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "mj-lk-listmsg"], [1, "mj-lk-list"], ["for", "mj-lk-room", 1, "mj-lk-prejoin__label"], [1, "mj-lk-joinrow"], ["id", "mj-lk-room", "type", "text", "placeholder", "Room name\u2026", 1, "mj-input", "mj-lk-joinrow__input", 3, "input", "keydown.enter", "value"], ["type", "button", 1, "mj-lk-prejoin__start", "mj-lk-joinrow__btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "mj-lk-list__row"], ["type", "button", 1, "mj-lk-list__row", 3, "click"], [1, "mj-lk-list__name"], [1, "fa-solid", "fa-circle", "mj-lk-livedot"], [1, "mj-lk-list__meta"], [1, "fa-solid", "fa-comments"], [1, "mj-lk-transcript"], [1, "mj-lk-tline", 3, "mj-lk-tline--agent", "mj-lk-tline--error"], [1, "mj-lk-tline"], [1, "mj-lk-tline__who"], [1, "mj-lk-tline__msg"], [1, "fa-solid", "fa-circle-exclamation"], ["Title", "Invite people", "Size", "auto", 3, "Close", "Visible", "Width"], [1, "mj-lk-invite"], [1, "mj-lk-invite__hint"], [1, "mj-lk-invite__search"], ["type", "text", "placeholder", "Search people by name or email\u2026", 1, "mj-input", 3, "input", "keydown.enter", "value"], ["type", "button", 1, "mj-lk-invite__searchbtn", 3, "click", "disabled"], [1, "fa-solid"], [1, "mj-lk-invite__chips"], [1, "mj-lk-invite__results"], [1, "mj-lk-invite__empty"], [1, "mj-lk-invite__msg"], [1, "mj-lk-invite__actions"], ["type", "button", 1, "mj-lk-invite__send", 3, "click", "disabled"], ["type", "button", 1, "mj-lk-invite__cancel", 3, "click"], [1, "mj-lk-invite__chip"], ["type", "button", 1, "mj-lk-invite__chipx", 3, "click"], [1, "fa-solid", "fa-xmark"], ["type", "button", 1, "mj-lk-invite__result"], ["type", "button", 1, "mj-lk-invite__result", 3, "click"], [1, "mj-lk-invite__rname"], [1, "mj-lk-invite__remail"]], template: function LiveKitRoomResource_Template(rf, ctx) { if (rf & 1) {
954
+ i0.ɵɵconditionalCreate(0, LiveKitRoomResource_Case_0_Template, 1, 15, "mj-livekit-agent-room", 0)(1, LiveKitRoomResource_Case_1_Template, 21, 3, "div", 1)(2, LiveKitRoomResource_Case_2_Template, 27, 0, "div", 1)(3, LiveKitRoomResource_Case_3_Template, 16, 3, "div", 1)(4, LiveKitRoomResource_Case_4_Template, 4, 1, "div", 1)(5, LiveKitRoomResource_Case_5_Template, 4, 1, "div", 2)(6, LiveKitRoomResource_Case_6_Template, 2, 0, "div", 2);
955
+ i0.ɵɵconditionalCreate(7, LiveKitRoomResource_Conditional_7_Template, 18, 21, "mj-dialog", 3);
554
956
  } if (rf & 2) {
555
957
  let tmp_0_0;
556
- i0.ɵɵconditional((tmp_0_0 = ctx.phase) === "live" ? 0 : tmp_0_0 === "picking" ? 1 : tmp_0_0 === "error" ? 2 : 3);
557
- i0.ɵɵadvance(4);
558
- i0.ɵɵconditional(ctx.showInvite ? 4 : -1);
559
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.MJDialogComponent, i3.MJLiveKitRoomComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource__message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n height: 100%;\n padding: 1.5rem;\n text-align: center;\n color: var(--mj-text-secondary);\n }\n .mj-livekit-room-resource__message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n }\n .mj-lk-prejoin[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 1.5rem;\n background: var(--mj-bg-page);\n }\n .mj-lk-prejoin__card[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 440px;\n padding: 2rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.12));\n text-align: center;\n }\n .mj-lk-prejoin__icon[_ngcontent-%COMP%] {\n font-size: 1.75rem;\n color: var(--mj-brand-primary);\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: var(--mj-text-primary);\n font-size: 1.25rem;\n }\n .mj-lk-prejoin__subtitle[_ngcontent-%COMP%] {\n margin: 0 0 1.5rem;\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__label[_ngcontent-%COMP%] {\n display: block;\n text-align: left;\n margin-bottom: 0.35rem;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n font-weight: 600;\n }\n .mj-lk-prejoin__dev[_ngcontent-%COMP%] {\n margin-left: 0.35rem;\n padding: 0 0.35rem;\n border-radius: 999px;\n font-size: 0.625rem;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n vertical-align: middle;\n }\n .mj-lk-prejoin__select[_ngcontent-%COMP%] {\n width: 100%;\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__desc[_ngcontent-%COMP%] {\n text-align: left;\n margin: 0 0 1.25rem;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%] {\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: none;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 360px;\n padding: 0.25rem;\n }\n .mj-lk-invite__hint[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__search[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n }\n .mj-lk-invite__search[_ngcontent-%COMP%] .mj-input[_ngcontent-%COMP%] {\n flex: 1;\n }\n .mj-lk-invite__searchbtn[_ngcontent-%COMP%], \n .mj-lk-invite__send[_ngcontent-%COMP%], \n .mj-lk-invite__cancel[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n padding: 0.5rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n cursor: pointer;\n font-size: 0.875rem;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-lk-invite__send[_ngcontent-%COMP%] {\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .mj-lk-invite__send[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite__chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n }\n .mj-lk-invite__chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.2rem 0.5rem;\n border-radius: 999px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n }\n .mj-lk-invite__chipx[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n }\n .mj-lk-invite__results[_ngcontent-%COMP%] {\n max-height: 220px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n }\n .mj-lk-invite__result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.1rem;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n background: transparent;\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-invite__result[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n .mj-lk-invite__rname[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n }\n .mj-lk-invite__remail[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.75rem;\n }\n .mj-lk-invite__empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n padding: 0.25rem;\n }\n .mj-lk-invite__msg[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.25rem;\n }"] });
958
+ i0.ɵɵconditional((tmp_0_0 = ctx.phase) === "live" ? 0 : tmp_0_0 === "picking" ? 1 : tmp_0_0 === "landing" ? 2 : tmp_0_0 === "existing" ? 3 : tmp_0_0 === "history" ? 4 : tmp_0_0 === "error" ? 5 : 6);
959
+ i0.ɵɵadvance(7);
960
+ i0.ɵɵconditional(ctx.showInvite ? 7 : -1);
961
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.MJDialogComponent, i3.MJLiveKitRoomComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource__message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n height: 100%;\n padding: 1.5rem;\n text-align: center;\n color: var(--mj-text-secondary);\n }\n .mj-livekit-room-resource__message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n }\n .mj-lk-prejoin[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 1.5rem;\n background: var(--mj-bg-page);\n }\n .mj-lk-prejoin__card[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 440px;\n padding: 2rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.12));\n text-align: center;\n }\n .mj-lk-prejoin__icon[_ngcontent-%COMP%] {\n font-size: 1.75rem;\n color: var(--mj-brand-primary);\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: var(--mj-text-primary);\n font-size: 1.25rem;\n }\n .mj-lk-prejoin__subtitle[_ngcontent-%COMP%] {\n margin: 0 0 1.5rem;\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__label[_ngcontent-%COMP%] {\n display: block;\n text-align: left;\n margin-bottom: 0.35rem;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n font-weight: 600;\n }\n .mj-lk-prejoin__dev[_ngcontent-%COMP%] {\n margin-left: 0.35rem;\n padding: 0 0.35rem;\n border-radius: 999px;\n font-size: 0.625rem;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n vertical-align: middle;\n }\n .mj-lk-prejoin__select[_ngcontent-%COMP%] {\n width: 100%;\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__desc[_ngcontent-%COMP%] {\n text-align: left;\n margin: 0 0 1.25rem;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%] {\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: none;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n .mj-lk-prejoin__start[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-prejoin__card--wide[_ngcontent-%COMP%] {\n max-width: 560px;\n text-align: left;\n }\n .mj-lk-back[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 0.75rem;\n padding: 4px 8px;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-back[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n .mj-lk-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 0.75rem;\n margin-top: 1.25rem;\n }\n .mj-lk-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n padding: 1.25rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface-card);\n cursor: pointer;\n text-align: center;\n }\n .mj-lk-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover, var(--mj-bg-surface-card));\n }\n .mj-lk-card[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { font-size: 1.4rem; color: var(--mj-brand-primary); }\n .mj-lk-card__t[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); font-size: 0.9rem; }\n .mj-lk-card__d[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 0.78rem; line-height: 1.3; }\n .mj-lk-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin: 0.5rem 0 1rem;\n max-height: 320px;\n overflow-y: auto;\n }\n .mj-lk-list__row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-list__row[_ngcontent-%COMP%]:hover { border-color: var(--mj-brand-primary); background: var(--mj-bg-surface-hover, var(--mj-bg-surface-card)); }\n .mj-lk-list__name[_ngcontent-%COMP%] { color: var(--mj-text-primary); font-size: 0.875rem; display: inline-flex; align-items: center; gap: 8px; }\n .mj-lk-list__meta[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 0.78rem; white-space: nowrap; }\n .mj-lk-livedot[_ngcontent-%COMP%] { color: var(--mj-status-success); font-size: 0.5rem; }\n .mj-lk-listmsg[_ngcontent-%COMP%] { padding: 1rem; color: var(--mj-text-secondary); text-align: center; }\n .mj-lk-joinrow[_ngcontent-%COMP%] { display: flex; gap: 8px; }\n .mj-lk-joinrow__input[_ngcontent-%COMP%] { flex: 1; }\n .mj-lk-joinrow__btn[_ngcontent-%COMP%] { white-space: nowrap; }\n .mj-lk-transcript[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 0.5rem;\n max-height: 60vh;\n overflow-y: auto;\n }\n .mj-lk-tline[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 10px;\n border-radius: 8px;\n background: var(--mj-bg-surface-card);\n }\n .mj-lk-tline--agent[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface)); }\n .mj-lk-tline--error[_ngcontent-%COMP%] { background: var(--mj-status-error-bg, color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface))); }\n .mj-lk-tline__who[_ngcontent-%COMP%] { font-size: 0.72rem; font-weight: 600; color: var(--mj-text-secondary); }\n .mj-lk-tline__msg[_ngcontent-%COMP%] { font-size: 0.875rem; color: var(--mj-text-primary); }\n .mj-lk-invite[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 360px;\n padding: 0.25rem;\n }\n .mj-lk-invite__hint[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__search[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n }\n .mj-lk-invite__search[_ngcontent-%COMP%] .mj-input[_ngcontent-%COMP%] {\n flex: 1;\n }\n .mj-lk-invite__searchbtn[_ngcontent-%COMP%], \n .mj-lk-invite__send[_ngcontent-%COMP%], \n .mj-lk-invite__cancel[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n padding: 0.5rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n cursor: pointer;\n font-size: 0.875rem;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-lk-invite__send[_ngcontent-%COMP%] {\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .mj-lk-invite__send[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite__chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n }\n .mj-lk-invite__chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.2rem 0.5rem;\n border-radius: 999px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n }\n .mj-lk-invite__chipx[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n }\n .mj-lk-invite__results[_ngcontent-%COMP%] {\n max-height: 220px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n }\n .mj-lk-invite__result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.1rem;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n background: transparent;\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-invite__result[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n .mj-lk-invite__rname[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n }\n .mj-lk-invite__remail[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.75rem;\n }\n .mj-lk-invite__empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n padding: 0.25rem;\n }\n .mj-lk-invite__msg[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.25rem;\n }"] });
560
962
  };
561
963
  LiveKitRoomResource = __decorate([
562
964
  RegisterClass(BaseResourceComponent, 'LiveKitRoomResource')
@@ -585,6 +987,7 @@ export { LiveKitRoomResource };
585
987
  [EnableLayoutSwitcher]="true"
586
988
  [EnablePinning]="true"
587
989
  (Connected)="NotifyLoadComplete()"
990
+ (Disconnected)="onRoomLeft()"
588
991
  (ErrorOccurred)="NotifyLoadComplete()"
589
992
  (InvitePeopleRequested)="openInvite($event)"
590
993
  ></mj-livekit-agent-room>
@@ -592,6 +995,7 @@ export { LiveKitRoomResource };
592
995
  @case ('picking') {
593
996
  <div class="mj-lk-prejoin">
594
997
  <div class="mj-lk-prejoin__card">
998
+ <button type="button" class="mj-lk-back" (click)="backToLanding()"><i class="fa-solid fa-arrow-left"></i> Back</button>
595
999
  <div class="mj-lk-prejoin__icon"><i class="fa-solid fa-video"></i></div>
596
1000
  <h2 class="mj-lk-prejoin__title">Start a call</h2>
597
1001
  <p class="mj-lk-prejoin__subtitle">
@@ -631,6 +1035,101 @@ export { LiveKitRoomResource };
631
1035
  </div>
632
1036
  </div>
633
1037
  }
1038
+ @case ('landing') {
1039
+ <div class="mj-lk-prejoin">
1040
+ <div class="mj-lk-prejoin__card mj-lk-prejoin__card--wide">
1041
+ <div class="mj-lk-prejoin__icon"><i class="fa-solid fa-video"></i></div>
1042
+ <h2 class="mj-lk-prejoin__title">Meet</h2>
1043
+ <p class="mj-lk-prejoin__subtitle">Start a live room with agents and people, join one that's in progress, or review a past meeting.</p>
1044
+ <div class="mj-lk-cards">
1045
+ <button type="button" class="mj-lk-card" (click)="startNewRoom()">
1046
+ <i class="fa-solid fa-circle-plus"></i>
1047
+ <span class="mj-lk-card__t">New room</span>
1048
+ <span class="mj-lk-card__d">Pick an agent and start a fresh call.</span>
1049
+ </button>
1050
+ <button type="button" class="mj-lk-card" (click)="openExisting()">
1051
+ <i class="fa-solid fa-door-open"></i>
1052
+ <span class="mj-lk-card__t">Join existing</span>
1053
+ <span class="mj-lk-card__d">Hop into a room that's live right now.</span>
1054
+ </button>
1055
+ <button type="button" class="mj-lk-card" (click)="openHistory()">
1056
+ <i class="fa-solid fa-clock-rotate-left"></i>
1057
+ <span class="mj-lk-card__t">History</span>
1058
+ <span class="mj-lk-card__d">Read transcripts of past meetings.</span>
1059
+ </button>
1060
+ </div>
1061
+ </div>
1062
+ </div>
1063
+ }
1064
+ @case ('existing') {
1065
+ <div class="mj-lk-prejoin">
1066
+ <div class="mj-lk-prejoin__card mj-lk-prejoin__card--wide">
1067
+ <button type="button" class="mj-lk-back" (click)="backToLanding()"><i class="fa-solid fa-arrow-left"></i> Back</button>
1068
+ <h2 class="mj-lk-prejoin__title">Join a room</h2>
1069
+ @if (loadingActive) {
1070
+ <div class="mj-lk-listmsg"><i class="fa-solid fa-spinner fa-spin"></i> Finding active rooms…</div>
1071
+ } @else if (activeRooms.length) {
1072
+ <div class="mj-lk-list">
1073
+ @for (r of activeRooms; track r.RoomName) {
1074
+ <button type="button" class="mj-lk-list__row" (click)="joinExistingRoom(r.RoomName)">
1075
+ <span class="mj-lk-list__name"><i class="fa-solid fa-circle mj-lk-livedot"></i> {{ r.Label }}</span>
1076
+ <span class="mj-lk-list__meta">{{ r.AgentCount }} agent{{ r.AgentCount === 1 ? '' : 's' }} · Join</span>
1077
+ </button>
1078
+ }
1079
+ </div>
1080
+ } @else {
1081
+ <p class="mj-lk-prejoin__desc">No rooms are active right now.</p>
1082
+ }
1083
+ <label class="mj-lk-prejoin__label" for="mj-lk-room">Or join by name</label>
1084
+ <div class="mj-lk-joinrow">
1085
+ <input id="mj-lk-room" class="mj-input mj-lk-joinrow__input" type="text" placeholder="Room name…" [value]="manualRoomName"
1086
+ (input)="manualRoomName = $any($event.target).value" (keydown.enter)="joinExistingRoom(manualRoomName)" />
1087
+ <button type="button" class="mj-lk-prejoin__start mj-lk-joinrow__btn" [disabled]="!manualRoomName.trim()" (click)="joinExistingRoom(manualRoomName)">Join</button>
1088
+ </div>
1089
+ </div>
1090
+ </div>
1091
+ }
1092
+ @case ('history') {
1093
+ <div class="mj-lk-prejoin">
1094
+ <div class="mj-lk-prejoin__card mj-lk-prejoin__card--wide">
1095
+ @if (!openHistoryRoom) {
1096
+ <button type="button" class="mj-lk-back" (click)="backToLanding()"><i class="fa-solid fa-arrow-left"></i> Back</button>
1097
+ <h2 class="mj-lk-prejoin__title">Past meetings</h2>
1098
+ @if (loadingHistory) {
1099
+ <div class="mj-lk-listmsg"><i class="fa-solid fa-spinner fa-spin"></i> Loading…</div>
1100
+ } @else if (historyRooms.length) {
1101
+ <div class="mj-lk-list">
1102
+ @for (h of historyRooms; track h.ConversationID) {
1103
+ <button type="button" class="mj-lk-list__row" (click)="openTranscript(h)">
1104
+ <span class="mj-lk-list__name"><i class="fa-solid fa-comments"></i> {{ h.Name }}</span>
1105
+ <span class="mj-lk-list__meta">{{ formatTime(h.At) }}</span>
1106
+ </button>
1107
+ }
1108
+ </div>
1109
+ } @else {
1110
+ <p class="mj-lk-prejoin__desc">No past meetings yet.</p>
1111
+ }
1112
+ } @else {
1113
+ <button type="button" class="mj-lk-back" (click)="closeTranscript()"><i class="fa-solid fa-arrow-left"></i> All meetings</button>
1114
+ <h2 class="mj-lk-prejoin__title">{{ openHistoryRoom.Name }}</h2>
1115
+ @if (loadingTranscript) {
1116
+ <div class="mj-lk-listmsg"><i class="fa-solid fa-spinner fa-spin"></i> Loading transcript…</div>
1117
+ } @else if (historyTranscript.length) {
1118
+ <div class="mj-lk-transcript">
1119
+ @for (line of historyTranscript; track $index) {
1120
+ <div class="mj-lk-tline" [class.mj-lk-tline--agent]="line.Kind === 'agent'" [class.mj-lk-tline--error]="line.Kind === 'error'">
1121
+ <span class="mj-lk-tline__who">{{ line.Speaker }}</span>
1122
+ <span class="mj-lk-tline__msg">{{ line.Message }}</span>
1123
+ </div>
1124
+ }
1125
+ </div>
1126
+ } @else {
1127
+ <p class="mj-lk-prejoin__desc">No transcript was captured for this meeting.</p>
1128
+ }
1129
+ }
1130
+ </div>
1131
+ </div>
1132
+ }
634
1133
  @case ('error') {
635
1134
  <div class="mj-livekit-room-resource__message">
636
1135
  <i class="fa-solid fa-circle-exclamation"></i>
@@ -692,7 +1191,7 @@ export { LiveKitRoomResource };
692
1191
  </div>
693
1192
  </mj-dialog>
694
1193
  }
695
- `, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource__message {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n height: 100%;\n padding: 1.5rem;\n text-align: center;\n color: var(--mj-text-secondary);\n }\n .mj-livekit-room-resource__message i {\n color: var(--mj-status-warning);\n }\n .mj-lk-prejoin {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 1.5rem;\n background: var(--mj-bg-page);\n }\n .mj-lk-prejoin__card {\n width: 100%;\n max-width: 440px;\n padding: 2rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.12));\n text-align: center;\n }\n .mj-lk-prejoin__icon {\n font-size: 1.75rem;\n color: var(--mj-brand-primary);\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__title {\n margin: 0 0 0.5rem;\n color: var(--mj-text-primary);\n font-size: 1.25rem;\n }\n .mj-lk-prejoin__subtitle {\n margin: 0 0 1.5rem;\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__label {\n display: block;\n text-align: left;\n margin-bottom: 0.35rem;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n font-weight: 600;\n }\n .mj-lk-prejoin__dev {\n margin-left: 0.35rem;\n padding: 0 0.35rem;\n border-radius: 999px;\n font-size: 0.625rem;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n vertical-align: middle;\n }\n .mj-lk-prejoin__select {\n width: 100%;\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__desc {\n text-align: left;\n margin: 0 0 1.25rem;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__start {\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: none;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n }\n .mj-lk-prejoin__start:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n .mj-lk-prejoin__start:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 360px;\n padding: 0.25rem;\n }\n .mj-lk-invite__hint {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__search {\n display: flex;\n gap: 0.5rem;\n }\n .mj-lk-invite__search .mj-input {\n flex: 1;\n }\n .mj-lk-invite__searchbtn,\n .mj-lk-invite__send,\n .mj-lk-invite__cancel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n padding: 0.5rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n cursor: pointer;\n font-size: 0.875rem;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-lk-invite__send {\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .mj-lk-invite__send:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite__chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n }\n .mj-lk-invite__chip {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.2rem 0.5rem;\n border-radius: 999px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n }\n .mj-lk-invite__chipx {\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n }\n .mj-lk-invite__results {\n max-height: 220px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n }\n .mj-lk-invite__result {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.1rem;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n background: transparent;\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-invite__result:hover {\n background: var(--mj-bg-surface-hover);\n }\n .mj-lk-invite__rname {\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n }\n .mj-lk-invite__remail {\n color: var(--mj-text-muted);\n font-size: 0.75rem;\n }\n .mj-lk-invite__empty {\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n padding: 0.25rem;\n }\n .mj-lk-invite__msg {\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__actions {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.25rem;\n }\n "] }]
1194
+ `, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource {\n display: block;\n height: 100%;\n }\n .mj-livekit-room-resource__message {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n height: 100%;\n padding: 1.5rem;\n text-align: center;\n color: var(--mj-text-secondary);\n }\n .mj-livekit-room-resource__message i {\n color: var(--mj-status-warning);\n }\n .mj-lk-prejoin {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 1.5rem;\n background: var(--mj-bg-page);\n }\n .mj-lk-prejoin__card {\n width: 100%;\n max-width: 440px;\n padding: 2rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.12));\n text-align: center;\n }\n .mj-lk-prejoin__icon {\n font-size: 1.75rem;\n color: var(--mj-brand-primary);\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__title {\n margin: 0 0 0.5rem;\n color: var(--mj-text-primary);\n font-size: 1.25rem;\n }\n .mj-lk-prejoin__subtitle {\n margin: 0 0 1.5rem;\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__label {\n display: block;\n text-align: left;\n margin-bottom: 0.35rem;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n font-weight: 600;\n }\n .mj-lk-prejoin__dev {\n margin-left: 0.35rem;\n padding: 0 0.35rem;\n border-radius: 999px;\n font-size: 0.625rem;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n vertical-align: middle;\n }\n .mj-lk-prejoin__select {\n width: 100%;\n margin-bottom: 0.75rem;\n }\n .mj-lk-prejoin__desc {\n text-align: left;\n margin: 0 0 1.25rem;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n line-height: 1.4;\n }\n .mj-lk-prejoin__start {\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: none;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n }\n .mj-lk-prejoin__start:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n .mj-lk-prejoin__start:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-prejoin__card--wide {\n max-width: 560px;\n text-align: left;\n }\n .mj-lk-back {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 0.75rem;\n padding: 4px 8px;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-back:hover { color: var(--mj-text-primary); }\n .mj-lk-cards {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 0.75rem;\n margin-top: 1.25rem;\n }\n .mj-lk-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n padding: 1.25rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 12px);\n background: var(--mj-bg-surface-card);\n cursor: pointer;\n text-align: center;\n }\n .mj-lk-card:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover, var(--mj-bg-surface-card));\n }\n .mj-lk-card > i { font-size: 1.4rem; color: var(--mj-brand-primary); }\n .mj-lk-card__t { font-weight: 600; color: var(--mj-text-primary); font-size: 0.9rem; }\n .mj-lk-card__d { color: var(--mj-text-muted); font-size: 0.78rem; line-height: 1.3; }\n .mj-lk-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin: 0.5rem 0 1rem;\n max-height: 320px;\n overflow-y: auto;\n }\n .mj-lk-list__row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-list__row:hover { border-color: var(--mj-brand-primary); background: var(--mj-bg-surface-hover, var(--mj-bg-surface-card)); }\n .mj-lk-list__name { color: var(--mj-text-primary); font-size: 0.875rem; display: inline-flex; align-items: center; gap: 8px; }\n .mj-lk-list__meta { color: var(--mj-text-muted); font-size: 0.78rem; white-space: nowrap; }\n .mj-lk-livedot { color: var(--mj-status-success); font-size: 0.5rem; }\n .mj-lk-listmsg { padding: 1rem; color: var(--mj-text-secondary); text-align: center; }\n .mj-lk-joinrow { display: flex; gap: 8px; }\n .mj-lk-joinrow__input { flex: 1; }\n .mj-lk-joinrow__btn { white-space: nowrap; }\n .mj-lk-transcript {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 0.5rem;\n max-height: 60vh;\n overflow-y: auto;\n }\n .mj-lk-tline {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 10px;\n border-radius: 8px;\n background: var(--mj-bg-surface-card);\n }\n .mj-lk-tline--agent { background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface)); }\n .mj-lk-tline--error { background: var(--mj-status-error-bg, color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface))); }\n .mj-lk-tline__who { font-size: 0.72rem; font-weight: 600; color: var(--mj-text-secondary); }\n .mj-lk-tline__msg { font-size: 0.875rem; color: var(--mj-text-primary); }\n .mj-lk-invite {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 360px;\n padding: 0.25rem;\n }\n .mj-lk-invite__hint {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__search {\n display: flex;\n gap: 0.5rem;\n }\n .mj-lk-invite__search .mj-input {\n flex: 1;\n }\n .mj-lk-invite__searchbtn,\n .mj-lk-invite__send,\n .mj-lk-invite__cancel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n padding: 0.5rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n cursor: pointer;\n font-size: 0.875rem;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-lk-invite__send {\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .mj-lk-invite__send:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .mj-lk-invite__chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.4rem;\n }\n .mj-lk-invite__chip {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.2rem 0.5rem;\n border-radius: 999px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n }\n .mj-lk-invite__chipx {\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n }\n .mj-lk-invite__results {\n max-height: 220px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n }\n .mj-lk-invite__result {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.1rem;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n background: transparent;\n cursor: pointer;\n text-align: left;\n }\n .mj-lk-invite__result:hover {\n background: var(--mj-bg-surface-hover);\n }\n .mj-lk-invite__rname {\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n }\n .mj-lk-invite__remail {\n color: var(--mj-text-muted);\n font-size: 0.75rem;\n }\n .mj-lk-invite__empty {\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n padding: 0.25rem;\n }\n .mj-lk-invite__msg {\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n }\n .mj-lk-invite__actions {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.25rem;\n }\n "] }]
696
1195
  }], null, null); })();
697
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LiveKitRoomResource, { className: "LiveKitRoomResource", filePath: "src/lib/resource-wrappers/livekit-room-resource.component.ts", lineNumber: 390 }); })();
1196
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LiveKitRoomResource, { className: "LiveKitRoomResource", filePath: "src/lib/resource-wrappers/livekit-room-resource.component.ts", lineNumber: 577 }); })();
698
1197
  //# sourceMappingURL=livekit-room-resource.component.js.map