@memberjunction/ng-explorer-core 6.2.0-edge.2 → 6.2.0-edge.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +10 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +5 -0
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +12 -2
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/guards/moved-nav-item-redirect.d.ts +15 -0
  10. package/dist/lib/guards/moved-nav-item-redirect.d.ts.map +1 -0
  11. package/dist/lib/guards/moved-nav-item-redirect.js +37 -0
  12. package/dist/lib/guards/moved-nav-item-redirect.js.map +1 -0
  13. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts +34 -0
  14. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts.map +1 -0
  15. package/dist/lib/omnibar/omnibar-dashboard-matches.js +70 -0
  16. package/dist/lib/omnibar/omnibar-dashboard-matches.js.map +1 -0
  17. package/dist/lib/omnibar/omnibar-palette.component.d.ts +27 -2
  18. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
  19. package/dist/lib/omnibar/omnibar-palette.component.js +126 -65
  20. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
  21. package/dist/lib/omnibar/omnibar-provider.d.ts +4 -0
  22. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -1
  23. package/dist/lib/omnibar/omnibar-provider.js.map +1 -1
  24. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +2 -2
  25. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -1
  26. package/dist/lib/omnibar/providers/omnibar-record.provider.js +3 -7
  27. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -1
  28. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +15 -2
  29. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -1
  30. package/dist/lib/omnibar/providers/omnibar-search.provider.js +59 -7
  31. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -1
  32. package/dist/lib/profile/forking-setting.d.ts +8 -0
  33. package/dist/lib/profile/forking-setting.d.ts.map +1 -0
  34. package/dist/lib/profile/forking-setting.js +18 -0
  35. package/dist/lib/profile/forking-setting.js.map +1 -0
  36. package/dist/lib/profile/profile-dialog.component.d.ts +8 -0
  37. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  38. package/dist/lib/profile/profile-dialog.component.js +182 -92
  39. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +23 -4
  41. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/artifact-resource.component.js +36 -8
  43. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -18
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -41
  47. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +10 -3
  49. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-search-routing.js +11 -4
  51. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -1
  52. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts +29 -0
  53. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts.map +1 -0
  54. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js +141 -0
  55. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js.map +1 -0
  56. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts +28 -0
  57. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts.map +1 -0
  58. package/dist/lib/resource-wrappers/dashboard-part-config.js +150 -0
  59. package/dist/lib/resource-wrappers/dashboard-part-config.js.map +1 -0
  60. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +361 -56
  61. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/dashboard-resource.component.js +1312 -361
  63. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts +86 -0
  65. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts.map +1 -0
  66. package/dist/lib/resource-wrappers/dashboard-source-search.js +136 -0
  67. package/dist/lib/resource-wrappers/dashboard-source-search.js.map +1 -0
  68. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts +30 -0
  69. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts.map +1 -0
  70. package/dist/lib/resource-wrappers/dashboard-studio-pane.js +55 -0
  71. package/dist/lib/resource-wrappers/dashboard-studio-pane.js.map +1 -0
  72. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts +135 -0
  73. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts.map +1 -0
  74. package/dist/lib/resource-wrappers/dashboard-studio-tools.js +856 -0
  75. package/dist/lib/resource-wrappers/dashboard-studio-tools.js.map +1 -0
  76. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts +87 -0
  77. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts.map +1 -0
  78. package/dist/lib/resource-wrappers/dashboard-tab-agent.js +125 -0
  79. package/dist/lib/resource-wrappers/dashboard-tab-agent.js.map +1 -0
  80. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.d.ts +32 -0
  81. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.d.ts.map +1 -0
  82. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.js +114 -0
  83. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.js.map +1 -0
  84. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +40 -6
  85. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  86. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +287 -147
  87. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  88. package/dist/lib/resource-wrappers/meetings-resource.component.d.ts +42 -0
  89. package/dist/lib/resource-wrappers/meetings-resource.component.d.ts.map +1 -0
  90. package/dist/lib/resource-wrappers/meetings-resource.component.js +225 -0
  91. package/dist/lib/resource-wrappers/meetings-resource.component.js.map +1 -0
  92. package/dist/lib/resource-wrappers/record-resource.component.d.ts +27 -2
  93. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  94. package/dist/lib/resource-wrappers/record-resource.component.js +58 -6
  95. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  96. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  97. package/dist/lib/resource-wrappers/search-results-resource.component.js +5 -4
  98. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  99. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  100. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  101. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +38 -0
  102. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  103. package/dist/lib/shell/components/tabs/tab-container.component.js +77 -4
  104. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  105. package/dist/lib/shell/dashboard-tab-for-url.d.ts +35 -0
  106. package/dist/lib/shell/dashboard-tab-for-url.d.ts.map +1 -0
  107. package/dist/lib/shell/dashboard-tab-for-url.js +39 -0
  108. package/dist/lib/shell/dashboard-tab-for-url.js.map +1 -0
  109. package/dist/lib/shell/shell.component.d.ts +31 -2
  110. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  111. package/dist/lib/shell/shell.component.js +119 -42
  112. package/dist/lib/shell/shell.component.js.map +1 -1
  113. package/dist/lib/shell/shell.module.d.ts +2 -1
  114. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  115. package/dist/lib/shell/shell.module.js +6 -2
  116. package/dist/lib/shell/shell.module.js.map +1 -1
  117. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  118. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  119. package/dist/lib/single-record/single-record.component.d.ts +29 -3
  120. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  121. package/dist/lib/single-record/single-record.component.js +44 -4
  122. package/dist/lib/single-record/single-record.component.js.map +1 -1
  123. package/dist/lib/template-user/template-user-banner.component.d.ts +20 -0
  124. package/dist/lib/template-user/template-user-banner.component.d.ts.map +1 -0
  125. package/dist/lib/template-user/template-user-banner.component.js +67 -0
  126. package/dist/lib/template-user/template-user-banner.component.js.map +1 -0
  127. package/dist/lib/user-notifications/user-notifications.component.d.ts +13 -0
  128. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  129. package/dist/lib/user-notifications/user-notifications.component.js +67 -0
  130. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  131. package/dist/module.d.ts +61 -56
  132. package/dist/module.d.ts.map +1 -1
  133. package/dist/module.js +32 -4
  134. package/dist/module.js.map +1 -1
  135. package/dist/public-api.d.ts +2 -0
  136. package/dist/public-api.d.ts.map +1 -1
  137. package/dist/public-api.js +2 -0
  138. package/dist/public-api.js.map +1 -1
  139. package/package.json +58 -52
@@ -6,19 +6,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Component, ChangeDetectorRef, inject } from '@angular/core';
8
8
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
9
+ import { ConversationEngine } from '@memberjunction/core-entities';
9
10
  import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
10
11
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
11
12
  import { RunView } from '@memberjunction/core';
12
13
  import { GraphQLLiveKitClient } from '@memberjunction/graphql-dataprovider';
13
14
  import { UserHoldsAuthorization, REALTIME_ADVANCED_SESSION_CONTROLS } from '@memberjunction/ng-conversations';
15
+ import { ParseTurnAddressing, ParseTurnMode, TURN_ADDRESSING_OPTIONS, TURN_MODE_OPTIONS, } from '@memberjunction/ng-mj-livekit-room';
14
16
  import * as i0 from "@angular/core";
15
17
  import * as i1 from "@angular/forms";
16
18
  import * as i2 from "@memberjunction/ng-ui-components";
17
19
  import * as i3 from "@memberjunction/ng-mj-livekit-room";
18
20
  const _forTrack0 = ($index, $item) => $item.ID;
19
- const _forTrack1 = ($index, $item) => $item.ModelID;
20
- const _forTrack2 = ($index, $item) => $item.RoomName;
21
- const _forTrack3 = ($index, $item) => $item.ConversationID;
21
+ const _forTrack1 = ($index, $item) => $item.Value;
22
+ const _forTrack2 = ($index, $item) => $item.ModelID;
23
+ const _forTrack3 = ($index, $item) => $item.PersonaID ?? $item.ID;
24
+ const _forTrack4 = ($index, $item) => $item.RoomName;
25
+ const _forTrack5 = ($index, $item) => $item.ConversationID;
22
26
  function LiveKitRoomResource_Case_0_Template(rf, ctx) { if (rf & 1) {
23
27
  const _r1 = i0.ɵɵgetCurrentView();
24
28
  i0.ɵɵelementStart(0, "mj-livekit-agent-room", 4);
@@ -26,7 +30,7 @@ function LiveKitRoomResource_Case_0_Template(rf, ctx) { if (rf & 1) {
26
30
  i0.ɵɵelementEnd();
27
31
  } if (rf & 2) {
28
32
  const ctx_r1 = i0.ɵɵnextContext();
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);
33
+ 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)("TurnMode", ctx_r1.SelectedTurnMode)("TurnAddressing", ctx_r1.SelectedTurnAddressing)("Provider", ctx_r1.ProviderToUse)("ShowAgentState", true)("ShowWhiteboard", true)("EnableLayoutSwitcher", true)("EnablePinning", true);
30
34
  } }
31
35
  function LiveKitRoomResource_Case_1_For_15_Template(rf, ctx) { if (rf & 1) {
32
36
  i0.ɵɵelementStart(0, "option", 14);
@@ -66,23 +70,23 @@ function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_For_8_Template(
66
70
  } if (rf & 2) {
67
71
  const v_r8 = ctx.$implicit;
68
72
  const ctx_r1 = i0.ɵɵnextContext(4);
69
- i0.ɵɵproperty("value", v_r8.ID)("selected", v_r8.ID === ctx_r1.selectedVoice);
73
+ i0.ɵɵproperty("value", v_r8.ID)("selected", v_r8 === ctx_r1.SelectedVoiceOption);
70
74
  i0.ɵɵadvance();
71
75
  i0.ɵɵtextInterpolate(v_r8.Name);
72
76
  } }
73
77
  function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
74
78
  const _r7 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "label", 22);
79
+ i0.ɵɵelementStart(0, "label", 26);
76
80
  i0.ɵɵtext(1, "Voice ");
77
- i0.ɵɵelementStart(2, "span", 19);
81
+ i0.ɵɵelementStart(2, "span", 24);
78
82
  i0.ɵɵtext(3, "dev");
79
83
  i0.ɵɵelementEnd()();
80
- i0.ɵɵelementStart(4, "select", 23);
84
+ i0.ɵɵelementStart(4, "select", 27);
81
85
  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);
86
+ i0.ɵɵelementStart(5, "option", 18);
83
87
  i0.ɵɵtext(6, "Default voice");
84
88
  i0.ɵɵelementEnd();
85
- i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_For_8_Template, 2, 3, "option", 14, _forTrack0);
89
+ i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_For_8_Template, 2, 3, "option", 14, _forTrack3);
86
90
  i0.ɵɵelementEnd();
87
91
  } if (rf & 2) {
88
92
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -91,17 +95,17 @@ function LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template(rf, ct
91
95
  } }
92
96
  function LiveKitRoomResource_Case_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
93
97
  const _r5 = i0.ɵɵgetCurrentView();
94
- i0.ɵɵelementStart(0, "label", 18);
98
+ i0.ɵɵelementStart(0, "label", 23);
95
99
  i0.ɵɵtext(1, "Model ");
96
- i0.ɵɵelementStart(2, "span", 19);
100
+ i0.ɵɵelementStart(2, "span", 24);
97
101
  i0.ɵɵtext(3, "dev");
98
102
  i0.ɵɵelementEnd()();
99
- i0.ɵɵelementStart(4, "select", 20);
103
+ i0.ɵɵelementStart(4, "select", 25);
100
104
  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);
105
+ i0.ɵɵelementStart(5, "option", 18);
102
106
  i0.ɵɵtext(6, "Default model");
103
107
  i0.ɵɵelementEnd();
104
- i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_For_8_Template, 2, 3, "option", 14, _forTrack1);
108
+ i0.ɵɵrepeaterCreate(7, LiveKitRoomResource_Case_1_Conditional_17_For_8_Template, 2, 3, "option", 14, _forTrack2);
105
109
  i0.ɵɵelementEnd();
106
110
  i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Case_1_Conditional_17_Conditional_9_Template, 9, 0);
107
111
  } if (rf & 2) {
@@ -111,6 +115,28 @@ function LiveKitRoomResource_Case_1_Conditional_17_Template(rf, ctx) { if (rf &
111
115
  i0.ɵɵadvance(2);
112
116
  i0.ɵɵconditional(ctx_r1.selectedModelVoices.length ? 9 : -1);
113
117
  } }
118
+ function LiveKitRoomResource_Case_1_For_24_Template(rf, ctx) { if (rf & 1) {
119
+ i0.ɵɵelementStart(0, "option", 19);
120
+ i0.ɵɵtext(1);
121
+ i0.ɵɵelementEnd();
122
+ } if (rf & 2) {
123
+ const o_r9 = ctx.$implicit;
124
+ const ctx_r1 = i0.ɵɵnextContext(2);
125
+ i0.ɵɵproperty("value", o_r9.Value)("title", o_r9.Hint)("selected", o_r9.Value === ctx_r1.SelectedTurnMode);
126
+ i0.ɵɵadvance();
127
+ i0.ɵɵtextInterpolate(o_r9.Label);
128
+ } }
129
+ function LiveKitRoomResource_Case_1_For_29_Template(rf, ctx) { if (rf & 1) {
130
+ i0.ɵɵelementStart(0, "option", 19);
131
+ i0.ɵɵtext(1);
132
+ i0.ɵɵelementEnd();
133
+ } if (rf & 2) {
134
+ const o_r10 = ctx.$implicit;
135
+ const ctx_r1 = i0.ɵɵnextContext(2);
136
+ i0.ɵɵproperty("value", o_r10.Value)("title", o_r10.Hint)("selected", o_r10.Value === ctx_r1.SelectedTurnAddressing);
137
+ i0.ɵɵadvance();
138
+ i0.ɵɵtextInterpolate(o_r10.Label);
139
+ } }
114
140
  function LiveKitRoomResource_Case_1_Template(rf, ctx) { if (rf & 1) {
115
141
  const _r3 = i0.ɵɵgetCurrentView();
116
142
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 5)(2, "button", 6);
@@ -136,10 +162,27 @@ function LiveKitRoomResource_Case_1_Template(rf, ctx) { if (rf & 1) {
136
162
  i0.ɵɵelementEnd();
137
163
  i0.ɵɵconditionalCreate(16, LiveKitRoomResource_Case_1_Conditional_16_Template, 2, 1, "p", 15);
138
164
  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 ");
165
+ i0.ɵɵelementStart(18, "label", 16);
166
+ i0.ɵɵtext(19, "Turn-taking");
167
+ i0.ɵɵelementEnd();
168
+ i0.ɵɵelementStart(20, "select", 17);
169
+ i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Template_select_change_20_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTurnModeChange($event)); });
170
+ i0.ɵɵelementStart(21, "option", 18);
171
+ i0.ɵɵtext(22, "Default turn mode");
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵrepeaterCreate(23, LiveKitRoomResource_Case_1_For_24_Template, 2, 4, "option", 19, _forTrack1);
174
+ i0.ɵɵelementEnd();
175
+ i0.ɵɵelementStart(25, "select", 20);
176
+ i0.ɵɵlistener("change", function LiveKitRoomResource_Case_1_Template_select_change_25_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTurnAddressingChange($event)); });
177
+ i0.ɵɵelementStart(26, "option", 18);
178
+ i0.ɵɵtext(27, "Default addressing");
179
+ i0.ɵɵelementEnd();
180
+ i0.ɵɵrepeaterCreate(28, LiveKitRoomResource_Case_1_For_29_Template, 2, 4, "option", 19, _forTrack1);
181
+ i0.ɵɵelementEnd();
182
+ i0.ɵɵelementStart(30, "button", 21);
183
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_1_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startCall()); });
184
+ i0.ɵɵelement(31, "i", 22);
185
+ i0.ɵɵtext(32, " Start call ");
143
186
  i0.ɵɵelementEnd()()();
144
187
  } if (rf & 2) {
145
188
  const ctx_r1 = i0.ɵɵnextContext();
@@ -149,12 +192,30 @@ function LiveKitRoomResource_Case_1_Template(rf, ctx) { if (rf & 1) {
149
192
  i0.ɵɵconditional(ctx_r1.selectedDescription ? 16 : -1);
150
193
  i0.ɵɵadvance();
151
194
  i0.ɵɵconditional(ctx_r1.canPickModelVoice && ctx_r1.realtimeModels.length ? 17 : -1);
152
- i0.ɵɵadvance();
195
+ i0.ɵɵadvance(6);
196
+ i0.ɵɵrepeater(ctx_r1.TurnModeOptions);
197
+ i0.ɵɵadvance(5);
198
+ i0.ɵɵrepeater(ctx_r1.TurnAddressingOptions);
199
+ i0.ɵɵadvance(2);
153
200
  i0.ɵɵproperty("disabled", !ctx_r1.selectedTargetId);
154
201
  } }
202
+ function LiveKitRoomResource_Case_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
203
+ const _r12 = i0.ɵɵgetCurrentView();
204
+ i0.ɵɵelementStart(0, "button", 37);
205
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Conditional_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenPreviewRoom()); });
206
+ i0.ɵɵelement(1, "i", 38);
207
+ i0.ɵɵelementStart(2, "span", 39)(3, "span", 32);
208
+ i0.ɵɵtext(4, "Preview room");
209
+ i0.ɵɵelementStart(5, "span", 24);
210
+ i0.ɵɵtext(6, "dev");
211
+ i0.ɵɵelementEnd()();
212
+ i0.ɵɵelementStart(7, "span", 33);
213
+ i0.ɵɵtext(8, "Try the room with your camera and simulated people. No server needed.");
214
+ i0.ɵɵelementEnd()()();
215
+ } }
155
216
  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);
217
+ const _r11 = i0.ɵɵgetCurrentView();
218
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 28)(2, "div", 8);
158
219
  i0.ɵɵelement(3, "i", 9);
159
220
  i0.ɵɵelementEnd();
160
221
  i0.ɵɵelementStart(4, "h2", 10);
@@ -163,61 +224,67 @@ function LiveKitRoomResource_Case_2_Template(rf, ctx) { if (rf & 1) {
163
224
  i0.ɵɵelementStart(6, "p", 11);
164
225
  i0.ɵɵtext(7, "Start a live room with agents and people, join one that's in progress, or review a past meeting.");
165
226
  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);
227
+ i0.ɵɵelementStart(8, "div", 29)(9, "button", 30);
228
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startNewRoom()); });
229
+ i0.ɵɵelement(10, "i", 31);
230
+ i0.ɵɵelementStart(11, "span", 32);
170
231
  i0.ɵɵtext(12, "New room");
171
232
  i0.ɵɵelementEnd();
172
- i0.ɵɵelementStart(13, "span", 29);
233
+ i0.ɵɵelementStart(13, "span", 33);
173
234
  i0.ɵɵtext(14, "Pick an agent and start a fresh call.");
174
235
  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);
236
+ i0.ɵɵelementStart(15, "button", 30);
237
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openExisting()); });
238
+ i0.ɵɵelement(16, "i", 34);
239
+ i0.ɵɵelementStart(17, "span", 32);
179
240
  i0.ɵɵtext(18, "Join existing");
180
241
  i0.ɵɵelementEnd();
181
- i0.ɵɵelementStart(19, "span", 29);
242
+ i0.ɵɵelementStart(19, "span", 33);
182
243
  i0.ɵɵtext(20, "Hop into a room that's live right now.");
183
244
  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);
245
+ i0.ɵɵelementStart(21, "button", 30);
246
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_2_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openHistory()); });
247
+ i0.ɵɵelement(22, "i", 35);
248
+ i0.ɵɵelementStart(23, "span", 32);
188
249
  i0.ɵɵtext(24, "History");
189
250
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(25, "span", 29);
251
+ i0.ɵɵelementStart(25, "span", 33);
191
252
  i0.ɵɵtext(26, "Read transcripts of past meetings.");
192
- i0.ɵɵelementEnd()()()()();
253
+ i0.ɵɵelementEnd()();
254
+ i0.ɵɵconditionalCreate(27, LiveKitRoomResource_Case_2_Conditional_27_Template, 9, 0, "button", 36);
255
+ i0.ɵɵelementEnd()()();
256
+ } if (rf & 2) {
257
+ const ctx_r1 = i0.ɵɵnextContext();
258
+ i0.ɵɵadvance(27);
259
+ i0.ɵɵconditional(ctx_r1.CanOpenPreviewRoom ? 27 : -1);
193
260
  } }
194
261
  function LiveKitRoomResource_Case_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
195
- i0.ɵɵelementStart(0, "div", 32);
196
- i0.ɵɵelement(1, "i", 38);
262
+ i0.ɵɵelementStart(0, "div", 40);
263
+ i0.ɵɵelement(1, "i", 46);
197
264
  i0.ɵɵtext(2, " Finding active rooms\u2026");
198
265
  i0.ɵɵelementEnd();
199
266
  } }
200
267
  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);
268
+ const _r14 = i0.ɵɵgetCurrentView();
269
+ i0.ɵɵelementStart(0, "button", 48);
270
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Conditional_8_For_2_Template_button_click_0_listener() { const r_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(r_r15.RoomName)); });
271
+ i0.ɵɵelementStart(1, "span", 49);
272
+ i0.ɵɵelement(2, "i", 50);
206
273
  i0.ɵɵtext(3);
207
274
  i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(4, "span", 43);
275
+ i0.ɵɵelementStart(4, "span", 51);
209
276
  i0.ɵɵtext(5);
210
277
  i0.ɵɵelementEnd()();
211
278
  } if (rf & 2) {
212
- const r_r12 = ctx.$implicit;
279
+ const r_r15 = ctx.$implicit;
213
280
  i0.ɵɵadvance(3);
214
- i0.ɵɵtextInterpolate1(" ", r_r12.Label);
281
+ i0.ɵɵtextInterpolate1(" ", r_r15.Label);
215
282
  i0.ɵɵadvance(2);
216
- i0.ɵɵtextInterpolate2("", r_r12.AgentCount, " agent", r_r12.AgentCount === 1 ? "" : "s", " \u00B7 Join");
283
+ i0.ɵɵtextInterpolate2("", r_r15.AgentCount, " agent", r_r15.AgentCount === 1 ? "" : "s", " \u00B7 Join");
217
284
  } }
218
285
  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);
286
+ i0.ɵɵelementStart(0, "div", 41);
287
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_3_Conditional_8_For_2_Template, 6, 3, "button", 47, _forTrack4);
221
288
  i0.ɵɵelementEnd();
222
289
  } if (rf & 2) {
223
290
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -230,24 +297,24 @@ function LiveKitRoomResource_Case_3_Conditional_9_Template(rf, ctx) { if (rf & 1
230
297
  i0.ɵɵelementEnd();
231
298
  } }
232
299
  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()); });
300
+ const _r13 = i0.ɵɵgetCurrentView();
301
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 28)(2, "button", 6);
302
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.backToLanding()); });
236
303
  i0.ɵɵelement(3, "i", 7);
237
304
  i0.ɵɵtext(4, " Back");
238
305
  i0.ɵɵelementEnd();
239
306
  i0.ɵɵelementStart(5, "h2", 10);
240
307
  i0.ɵɵtext(6, "Join a room");
241
308
  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);
309
+ i0.ɵɵconditionalCreate(7, LiveKitRoomResource_Case_3_Conditional_7_Template, 3, 0, "div", 40)(8, LiveKitRoomResource_Case_3_Conditional_8_Template, 3, 0, "div", 41)(9, LiveKitRoomResource_Case_3_Conditional_9_Template, 2, 0, "p", 15);
310
+ i0.ɵɵelementStart(10, "label", 42);
244
311
  i0.ɵɵtext(11, "Or join by name");
245
312
  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)); });
313
+ i0.ɵɵelementStart(12, "div", 43)(13, "input", 44);
314
+ i0.ɵɵlistener("input", function LiveKitRoomResource_Case_3_Template_input_input_13_listener($event) { i0.ɵɵrestoreView(_r13); 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(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(ctx_r1.manualRoomName)); });
248
315
  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)); });
316
+ i0.ɵɵelementStart(14, "button", 45);
317
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_3_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.joinExistingRoom(ctx_r1.manualRoomName)); });
251
318
  i0.ɵɵtext(15, "Join");
252
319
  i0.ɵɵelementEnd()()()();
253
320
  } if (rf & 2) {
@@ -260,33 +327,33 @@ function LiveKitRoomResource_Case_3_Template(rf, ctx) { if (rf & 1) {
260
327
  i0.ɵɵproperty("disabled", !ctx_r1.manualRoomName.trim());
261
328
  } }
262
329
  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);
330
+ i0.ɵɵelementStart(0, "div", 40);
331
+ i0.ɵɵelement(1, "i", 46);
265
332
  i0.ɵɵtext(2, " Loading\u2026");
266
333
  i0.ɵɵelementEnd();
267
334
  } }
268
335
  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);
336
+ const _r17 = i0.ɵɵgetCurrentView();
337
+ i0.ɵɵelementStart(0, "button", 48);
338
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_For_2_Template_button_click_0_listener() { const h_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openTranscript(h_r18)); });
339
+ i0.ɵɵelementStart(1, "span", 49);
340
+ i0.ɵɵelement(2, "i", 52);
274
341
  i0.ɵɵtext(3);
275
342
  i0.ɵɵelementEnd();
276
- i0.ɵɵelementStart(4, "span", 43);
343
+ i0.ɵɵelementStart(4, "span", 51);
277
344
  i0.ɵɵtext(5);
278
345
  i0.ɵɵelementEnd()();
279
346
  } if (rf & 2) {
280
- const h_r15 = ctx.$implicit;
347
+ const h_r18 = ctx.$implicit;
281
348
  const ctx_r1 = i0.ɵɵnextContext(4);
282
349
  i0.ɵɵadvance(3);
283
- i0.ɵɵtextInterpolate1(" ", h_r15.Name);
350
+ i0.ɵɵtextInterpolate1(" ", h_r18.Name);
284
351
  i0.ɵɵadvance(2);
285
- i0.ɵɵtextInterpolate(ctx_r1.formatTime(h_r15.At));
352
+ i0.ɵɵtextInterpolate(ctx_r1.formatTime(h_r18.At));
286
353
  } }
287
354
  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);
355
+ i0.ɵɵelementStart(0, "div", 41);
356
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_For_2_Template, 6, 2, "button", 47, _forTrack5);
290
357
  i0.ɵɵelementEnd();
291
358
  } if (rf & 2) {
292
359
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -299,45 +366,45 @@ function LiveKitRoomResource_Case_4_Conditional_2_Conditional_7_Template(rf, ctx
299
366
  i0.ɵɵelementEnd();
300
367
  } }
301
368
  function LiveKitRoomResource_Case_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
302
- const _r13 = i0.ɵɵgetCurrentView();
369
+ const _r16 = i0.ɵɵgetCurrentView();
303
370
  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()); });
371
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.backToLanding()); });
305
372
  i0.ɵɵelement(1, "i", 7);
306
373
  i0.ɵɵtext(2, " Back");
307
374
  i0.ɵɵelementEnd();
308
375
  i0.ɵɵelementStart(3, "h2", 10);
309
376
  i0.ɵɵtext(4, "Past meetings");
310
377
  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);
378
+ i0.ɵɵconditionalCreate(5, LiveKitRoomResource_Case_4_Conditional_2_Conditional_5_Template, 3, 0, "div", 40)(6, LiveKitRoomResource_Case_4_Conditional_2_Conditional_6_Template, 3, 0, "div", 41)(7, LiveKitRoomResource_Case_4_Conditional_2_Conditional_7_Template, 2, 0, "p", 15);
312
379
  } if (rf & 2) {
313
380
  const ctx_r1 = i0.ɵɵnextContext(2);
314
381
  i0.ɵɵadvance(5);
315
382
  i0.ɵɵconditional(ctx_r1.loadingHistory ? 5 : ctx_r1.historyRooms.length ? 6 : 7);
316
383
  } }
317
384
  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);
385
+ i0.ɵɵelementStart(0, "div", 40);
386
+ i0.ɵɵelement(1, "i", 46);
320
387
  i0.ɵɵtext(2, " Loading transcript\u2026");
321
388
  i0.ɵɵelementEnd();
322
389
  } }
323
390
  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);
391
+ i0.ɵɵelementStart(0, "div", 55)(1, "span", 56);
325
392
  i0.ɵɵtext(2);
326
393
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(3, "span", 49);
394
+ i0.ɵɵelementStart(3, "span", 57);
328
395
  i0.ɵɵtext(4);
329
396
  i0.ɵɵelementEnd()();
330
397
  } 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");
398
+ const line_r20 = ctx.$implicit;
399
+ i0.ɵɵclassProp("mj-lk-tline--agent", line_r20.Kind === "agent")("mj-lk-tline--error", line_r20.Kind === "error");
333
400
  i0.ɵɵadvance(2);
334
- i0.ɵɵtextInterpolate(line_r17.Speaker);
401
+ i0.ɵɵtextInterpolate(line_r20.Speaker);
335
402
  i0.ɵɵadvance(2);
336
- i0.ɵɵtextInterpolate(line_r17.Message);
403
+ i0.ɵɵtextInterpolate(line_r20.Message);
337
404
  } }
338
405
  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);
406
+ i0.ɵɵelementStart(0, "div", 53);
407
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_For_2_Template, 5, 6, "div", 54, i0.ɵɵrepeaterTrackByIndex);
341
408
  i0.ɵɵelementEnd();
342
409
  } if (rf & 2) {
343
410
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -350,16 +417,16 @@ function LiveKitRoomResource_Case_4_Conditional_3_Conditional_7_Template(rf, ctx
350
417
  i0.ɵɵelementEnd();
351
418
  } }
352
419
  function LiveKitRoomResource_Case_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
353
- const _r16 = i0.ɵɵgetCurrentView();
420
+ const _r19 = i0.ɵɵgetCurrentView();
354
421
  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()); });
422
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Case_4_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeTranscript()); });
356
423
  i0.ɵɵelement(1, "i", 7);
357
424
  i0.ɵɵtext(2, " All meetings");
358
425
  i0.ɵɵelementEnd();
359
426
  i0.ɵɵelementStart(3, "h2", 10);
360
427
  i0.ɵɵtext(4);
361
428
  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);
429
+ i0.ɵɵconditionalCreate(5, LiveKitRoomResource_Case_4_Conditional_3_Conditional_5_Template, 3, 0, "div", 40)(6, LiveKitRoomResource_Case_4_Conditional_3_Conditional_6_Template, 3, 0, "div", 53)(7, LiveKitRoomResource_Case_4_Conditional_3_Conditional_7_Template, 2, 0, "p", 15);
363
430
  } if (rf & 2) {
364
431
  const ctx_r1 = i0.ɵɵnextContext(2);
365
432
  i0.ɵɵadvance(4);
@@ -368,7 +435,7 @@ function LiveKitRoomResource_Case_4_Conditional_3_Template(rf, ctx) { if (rf & 1
368
435
  i0.ɵɵconditional(ctx_r1.loadingTranscript ? 5 : ctx_r1.historyTranscript.length ? 6 : 7);
369
436
  } }
370
437
  function LiveKitRoomResource_Case_4_Template(rf, ctx) { if (rf & 1) {
371
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 24);
438
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 28);
372
439
  i0.ɵɵconditionalCreate(2, LiveKitRoomResource_Case_4_Conditional_2_Template, 8, 1)(3, LiveKitRoomResource_Case_4_Conditional_3_Template, 8, 2);
373
440
  i0.ɵɵelementEnd()();
374
441
  } if (rf & 2) {
@@ -378,7 +445,7 @@ function LiveKitRoomResource_Case_4_Template(rf, ctx) { if (rf & 1) {
378
445
  } }
379
446
  function LiveKitRoomResource_Case_5_Template(rf, ctx) { if (rf & 1) {
380
447
  i0.ɵɵelementStart(0, "div", 2);
381
- i0.ɵɵelement(1, "i", 50);
448
+ i0.ɵɵelement(1, "i", 58);
382
449
  i0.ɵɵelementStart(2, "span");
383
450
  i0.ɵɵtext(3);
384
451
  i0.ɵɵelementEnd()();
@@ -393,21 +460,21 @@ function LiveKitRoomResource_Case_6_Template(rf, ctx) { if (rf & 1) {
393
460
  i0.ɵɵelementEnd();
394
461
  } }
395
462
  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);
463
+ const _r22 = i0.ɵɵgetCurrentView();
464
+ i0.ɵɵelementStart(0, "span", 73);
398
465
  i0.ɵɵtext(1);
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);
466
+ i0.ɵɵelementStart(2, "button", 74);
467
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Conditional_8_For_2_Template_button_click_2_listener() { const u_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeInvitee(u_r23.ID)); });
468
+ i0.ɵɵelement(3, "i", 75);
402
469
  i0.ɵɵelementEnd()();
403
470
  } if (rf & 2) {
404
- const u_r20 = ctx.$implicit;
471
+ const u_r23 = ctx.$implicit;
405
472
  i0.ɵɵadvance();
406
- i0.ɵɵtextInterpolate1(" ", u_r20.Name, " ");
473
+ i0.ɵɵtextInterpolate1(" ", u_r23.Name, " ");
407
474
  } }
408
475
  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);
476
+ i0.ɵɵelementStart(0, "div", 66);
477
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_7_Conditional_8_For_2_Template, 4, 1, "span", 73, _forTrack0);
411
478
  i0.ɵɵelementEnd();
412
479
  } if (rf & 2) {
413
480
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -415,33 +482,33 @@ function LiveKitRoomResource_Conditional_7_Conditional_8_Template(rf, ctx) { if
415
482
  i0.ɵɵrepeater(ctx_r1.selectedInvitees);
416
483
  } }
417
484
  function LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
418
- i0.ɵɵelementStart(0, "span", 71);
485
+ i0.ɵɵelementStart(0, "span", 79);
419
486
  i0.ɵɵtext(1);
420
487
  i0.ɵɵelementEnd();
421
488
  } if (rf & 2) {
422
- const u_r22 = i0.ɵɵnextContext().$implicit;
489
+ const u_r25 = i0.ɵɵnextContext().$implicit;
423
490
  i0.ɵɵadvance();
424
- i0.ɵɵtextInterpolate(u_r22.Email);
491
+ i0.ɵɵtextInterpolate(u_r25.Email);
425
492
  } }
426
493
  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);
494
+ const _r24 = i0.ɵɵgetCurrentView();
495
+ i0.ɵɵelementStart(0, "button", 77);
496
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Template_button_click_0_listener() { const u_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addInvitee(u_r25)); });
497
+ i0.ɵɵelementStart(1, "span", 78);
431
498
  i0.ɵɵtext(2);
432
499
  i0.ɵɵelementEnd();
433
- i0.ɵɵconditionalCreate(3, LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Conditional_3_Template, 2, 1, "span", 71);
500
+ i0.ɵɵconditionalCreate(3, LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Conditional_3_Template, 2, 1, "span", 79);
434
501
  i0.ɵɵelementEnd();
435
502
  } if (rf & 2) {
436
- const u_r22 = ctx.$implicit;
503
+ const u_r25 = ctx.$implicit;
437
504
  i0.ɵɵadvance(2);
438
- i0.ɵɵtextInterpolate(u_r22.Name);
505
+ i0.ɵɵtextInterpolate(u_r25.Name);
439
506
  i0.ɵɵadvance();
440
- i0.ɵɵconditional(u_r22.Email ? 3 : -1);
507
+ i0.ɵɵconditional(u_r25.Email ? 3 : -1);
441
508
  } }
442
509
  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);
510
+ i0.ɵɵelementStart(0, "div", 67);
511
+ i0.ɵɵrepeaterCreate(1, LiveKitRoomResource_Conditional_7_Conditional_9_For_2_Template, 4, 2, "button", 76, _forTrack0);
445
512
  i0.ɵɵelementEnd();
446
513
  } if (rf & 2) {
447
514
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -449,12 +516,12 @@ function LiveKitRoomResource_Conditional_7_Conditional_9_Template(rf, ctx) { if
449
516
  i0.ɵɵrepeater(ctx_r1.userResults);
450
517
  } }
451
518
  function LiveKitRoomResource_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
452
- i0.ɵɵelementStart(0, "div", 60);
519
+ i0.ɵɵelementStart(0, "div", 68);
453
520
  i0.ɵɵtext(1, "No matching people.");
454
521
  i0.ɵɵelementEnd();
455
522
  } }
456
523
  function LiveKitRoomResource_Conditional_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
457
- i0.ɵɵelementStart(0, "div", 61);
524
+ i0.ɵɵelementStart(0, "div", 69);
458
525
  i0.ɵɵtext(1);
459
526
  i0.ɵɵelementEnd();
460
527
  } if (rf & 2) {
@@ -463,29 +530,29 @@ function LiveKitRoomResource_Conditional_7_Conditional_11_Template(rf, ctx) { if
463
530
  i0.ɵɵtextInterpolate(ctx_r1.inviteMessage);
464
531
  } }
465
532
  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);
533
+ const _r21 = i0.ɵɵgetCurrentView();
534
+ i0.ɵɵelementStart(0, "mj-dialog", 59);
535
+ i0.ɵɵlistener("Close", function LiveKitRoomResource_Conditional_7_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
536
+ i0.ɵɵelementStart(1, "div", 60)(2, "p", 61);
470
537
  i0.ɵɵtext(3, "They'll get an in-app notification (and an email if Comms is set up) to join this room.");
471
538
  i0.ɵɵelementEnd();
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()); });
539
+ i0.ɵɵelementStart(4, "div", 62)(5, "input", 63);
540
+ i0.ɵɵlistener("input", function LiveKitRoomResource_Conditional_7_Template_input_input_5_listener($event) { i0.ɵɵrestoreView(_r21); 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(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
474
541
  i0.ɵɵelementEnd();
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);
542
+ i0.ɵɵelementStart(6, "button", 64);
543
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchUsers()); });
544
+ i0.ɵɵelement(7, "i", 65);
478
545
  i0.ɵɵelementEnd()();
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);
546
+ i0.ɵɵconditionalCreate(8, LiveKitRoomResource_Conditional_7_Conditional_8_Template, 3, 0, "div", 66);
547
+ i0.ɵɵconditionalCreate(9, LiveKitRoomResource_Conditional_7_Conditional_9_Template, 3, 0, "div", 67)(10, LiveKitRoomResource_Conditional_7_Conditional_10_Template, 2, 0, "div", 68);
548
+ i0.ɵɵconditionalCreate(11, LiveKitRoomResource_Conditional_7_Conditional_11_Template, 2, 1, "div", 69);
549
+ i0.ɵɵelementStart(12, "div", 70)(13, "button", 71);
550
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.sendInvites()); });
551
+ i0.ɵɵelement(14, "i", 65);
485
552
  i0.ɵɵtext(15);
486
553
  i0.ɵɵelementEnd();
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); });
554
+ i0.ɵɵelementStart(16, "button", 72);
555
+ i0.ɵɵlistener("click", function LiveKitRoomResource_Conditional_7_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showInvite = false); });
489
556
  i0.ɵɵtext(17, "Cancel");
490
557
  i0.ɵɵelementEnd()()()();
491
558
  } if (rf & 2) {
@@ -614,7 +681,10 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
614
681
  set loadingTranscript(value) {
615
682
  this.LoadingTranscript = value;
616
683
  }
617
- /** `'agent'` to start/voice an agent (the default), or `'join'` when opened from an invite link. */
684
+ /**
685
+ * `'agent'` to start/voice an agent (the default), `'join'` when opened from an invite link, or `'preview'` for the
686
+ * preview room.
687
+ */
618
688
  RoomMode = 'agent';
619
689
  /** @deprecated Use {@link RoomMode}. */
620
690
  get roomMode() {
@@ -695,6 +765,10 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
695
765
  set canPickModelVoice(value) {
696
766
  this.CanPickModelVoice = value;
697
767
  }
768
+ /** Whether the current user may open the preview room: the authorization the dev pickers need. */
769
+ get CanOpenPreviewRoom() {
770
+ return this.CanPickModelVoice;
771
+ }
698
772
  /** Active Realtime models + their voices (loaded once when the user can override). */
699
773
  RealtimeModels = [];
700
774
  /** @deprecated Use {@link RealtimeModels}. */
@@ -725,6 +799,11 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
725
799
  set selectedVoice(value) {
726
800
  this.SelectedVoice = value;
727
801
  }
802
+ /**
803
+ * The voice option picked in the pre-join picker (one of {@link SelectedModelVoices}), or null. Kept beside
804
+ * {@link SelectedVoice} because two personas can share a voice id: the option, not the id, says which one shows picked.
805
+ */
806
+ SelectedVoiceOption = null;
728
807
  /** Voices for the model chosen in the pre-join picker. */
729
808
  get SelectedModelVoices() {
730
809
  return this.RealtimeModels.find((m) => UUIDsEqual(m.ModelID, this.SelectedModelId))?.Voices ?? [];
@@ -737,19 +816,41 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
737
816
  OnModelChange(event) {
738
817
  this.SelectedModelId = event.target.value || null;
739
818
  this.SelectedVoice = null;
819
+ this.SelectedVoiceOption = null;
740
820
  }
741
821
  /** @deprecated Use {@link OnModelChange}. */
742
822
  onModelChange(event) {
743
823
  return this.OnModelChange(event);
744
824
  }
745
- /** Records the pre-join VOICE choice. */
825
+ /**
826
+ * Records the pre-join VOICE choice: the picked option, found by its position (two personas can share a voice id, so
827
+ * the value can't tell them apart; option 0 is "Default voice"), and its voice id.
828
+ */
746
829
  OnVoiceChange(event) {
747
- this.SelectedVoice = event.target.value || null;
830
+ this.SelectedVoiceOption = this.SelectedModelVoices[event.target.selectedIndex - 1] ?? null;
831
+ this.SelectedVoice = this.SelectedVoiceOption?.ID ?? null;
748
832
  }
749
833
  /** @deprecated Use {@link OnVoiceChange}. */
750
834
  onVoiceChange(event) {
751
835
  return this.OnVoiceChange(event);
752
836
  }
837
+ // ── Turn-taking choices for the FIRST agent (agents added in-room pick their own) ─────────────────────
838
+ /** The turn-mode choices. */
839
+ TurnModeOptions = TURN_MODE_OPTIONS;
840
+ /** The addressing choices. */
841
+ TurnAddressingOptions = TURN_ADDRESSING_OPTIONS;
842
+ /** The turn mode chosen for the first agent (null = the room's default). */
843
+ SelectedTurnMode = null;
844
+ /** The addressing mode chosen for the first agent (null = Auto). */
845
+ SelectedTurnAddressing = null;
846
+ /** Records the pre-join turn-mode choice. */
847
+ OnTurnModeChange(event) {
848
+ this.SelectedTurnMode = ParseTurnMode(event.target.value);
849
+ }
850
+ /** Records the pre-join addressing choice. */
851
+ OnTurnAddressingChange(event) {
852
+ this.SelectedTurnAddressing = ParseTurnAddressing(event.target.value);
853
+ }
753
854
  /** Exposed for template use — platform-safe UUID equality (SQL upper vs PG lower). */
754
855
  UUIDsEqual = UUIDsEqual;
755
856
  /** Set when no co-agent could be resolved — shown instead of the room. */
@@ -905,8 +1006,8 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
905
1006
  return;
906
1007
  }
907
1008
  this.AgentId = coAgent.ID;
908
- // Dev model/voice override: gate on the `Realtime: Advanced Session Controls` authorization and, when
909
- // held, load the active models + their voices for the pickers (here and the in-room add-agent control).
1009
+ // Dev model/voice override and the preview room: gate on the `Realtime: Advanced Session Controls` authorization
1010
+ // and, when held, load the active models + their voices for the pickers (here and the in-room add-agent control).
910
1011
  this.CanPickModelVoice = UserHoldsAuthorization(this.ProviderToUse?.CurrentUser, REALTIME_ADVANCED_SESSION_CONTROLS, this.ProviderToUse);
911
1012
  if (this.CanPickModelVoice) {
912
1013
  void this.loadRealtimeModels();
@@ -946,6 +1047,15 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
946
1047
  onRoomLeft() {
947
1048
  return this.OnRoomLeft();
948
1049
  }
1050
+ /**
1051
+ * Opens the preview room: the meeting room with your camera and microphone and simulated people, and no server.
1052
+ * Leaving it returns to the landing.
1053
+ */
1054
+ OpenPreviewRoom() {
1055
+ this.RoomMode = 'preview';
1056
+ this.JoinRoomName = null;
1057
+ this.Phase = 'live';
1058
+ }
949
1059
  /** Go to the "start a new room" picker. */
950
1060
  StartNewRoom() {
951
1061
  this.Phase = 'picking';
@@ -1062,19 +1172,23 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
1062
1172
  this.cdr.detectChanges();
1063
1173
  }
1064
1174
  }
1065
- /** Opens a past meeting's transcript (drill-in). */
1175
+ /**
1176
+ * Opens a past meeting's transcript (drill-in): the room conversation's Main rows (a bridge session
1177
+ * writes Main), in `Sequence` order.
1178
+ */
1066
1179
  async OpenTranscript(room) {
1067
1180
  this.OpenHistoryRoom = room;
1068
1181
  this.HistoryTranscript = [];
1069
1182
  this.LoadingTranscript = true;
1070
1183
  this.cdr.detectChanges();
1071
1184
  try {
1185
+ const pathFilter = ConversationEngine.ScopeFilter(ConversationEngine.TrunkScope(room.ConversationID));
1072
1186
  const rv = RunView.FromMetadataProvider(this.ProviderToUse);
1073
1187
  const res = await rv.RunView({
1074
1188
  EntityName: 'MJ: Conversation Details',
1075
- ExtraFilter: `ConversationID='${room.ConversationID.replace(/'/g, "''")}'`,
1189
+ ExtraFilter: pathFilter,
1076
1190
  Fields: ['Role', 'Message', 'AgentID', 'Error', '__mj_CreatedAt'],
1077
- OrderBy: '__mj_CreatedAt ASC',
1191
+ OrderBy: 'Sequence ASC',
1078
1192
  MaxRows: 5000,
1079
1193
  ResultType: 'simple',
1080
1194
  }, this.ProviderToUse.CurrentUser);
@@ -1270,15 +1384,15 @@ let LiveKitRoomResource = class LiveKitRoomResource extends BaseResourceComponen
1270
1384
  return 'fa-solid fa-video';
1271
1385
  }
1272
1386
  static ɵfac = /*@__PURE__*/ (() => { let ɵLiveKitRoomResource_BaseFactory; return function LiveKitRoomResource_Factory(__ngFactoryType__) { return (ɵLiveKitRoomResource_BaseFactory || (ɵLiveKitRoomResource_BaseFactory = i0.ɵɵgetInheritedFactory(LiveKitRoomResource)))(__ngFactoryType__ || LiveKitRoomResource); }; })();
1273
- 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) {
1274
- 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);
1387
+ 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", "TurnMode", "TurnAddressing", "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", "TurnMode", "TurnAddressing", "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"], ["for", "mj-lk-turn-mode", 1, "mj-lk-prejoin__label"], ["id", "mj-lk-turn-mode", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], ["value", ""], [3, "value", "title", "selected"], ["id", "mj-lk-turn-addressing", "aria-label", "How the agent decides it was addressed", 1, "mj-input", "mj-lk-prejoin__select", 3, "change"], ["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"], ["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"], ["type", "button", 1, "mj-lk-card", "mj-lk-card--preview"], ["type", "button", 1, "mj-lk-card", "mj-lk-card--preview", 3, "click"], [1, "fa-solid", "fa-flask"], [1, "mj-lk-card__text"], [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) {
1388
+ i0.ɵɵconditionalCreate(0, LiveKitRoomResource_Case_0_Template, 1, 17, "mj-livekit-agent-room", 0)(1, LiveKitRoomResource_Case_1_Template, 33, 3, "div", 1)(2, LiveKitRoomResource_Case_2_Template, 28, 1, "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);
1275
1389
  i0.ɵɵconditionalCreate(7, LiveKitRoomResource_Conditional_7_Template, 18, 21, "mj-dialog", 3);
1276
1390
  } if (rf & 2) {
1277
1391
  let tmp_0_0;
1278
1392
  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);
1279
1393
  i0.ɵɵadvance(7);
1280
1394
  i0.ɵɵconditional(ctx.showInvite ? 7 : -1);
1281
- } }, 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 }"] });
1395
+ } }, 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 \n .mj-lk-card--preview[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n flex-direction: row;\n gap: 12px;\n padding: 0.75rem 1rem;\n text-align: left;\n }\n .mj-lk-card__text[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; }\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 }"] });
1282
1396
  };
1283
1397
  LiveKitRoomResource = __decorate([
1284
1398
  RegisterClass(BaseResourceComponent, 'LiveKitRoomResource')
@@ -1301,6 +1415,8 @@ export { LiveKitRoomResource };
1301
1415
  [RealtimeVoice]="selectedVoice"
1302
1416
  [CanPickModelVoice]="canPickModelVoice"
1303
1417
  [AvailableModels]="realtimeModels"
1418
+ [TurnMode]="SelectedTurnMode"
1419
+ [TurnAddressing]="SelectedTurnAddressing"
1304
1420
  [Provider]="ProviderToUse"
1305
1421
  [ShowAgentState]="true"
1306
1422
  [ShowWhiteboard]="true"
@@ -1343,12 +1459,27 @@ export { LiveKitRoomResource };
1343
1459
  <label class="mj-lk-prejoin__label" for="mj-lk-voice">Voice <span class="mj-lk-prejoin__dev">dev</span></label>
1344
1460
  <select id="mj-lk-voice" class="mj-input mj-lk-prejoin__select" (change)="onVoiceChange($event)">
1345
1461
  <option value="">Default voice</option>
1346
- @for (v of selectedModelVoices; track v.ID) {
1347
- <option [value]="v.ID" [selected]="v.ID === selectedVoice">{{ v.Name }}</option>
1462
+ <!-- One option per persona: two personas can share a voice id (a voice, and the same voice with a face). -->
1463
+ @for (v of selectedModelVoices; track v.PersonaID ?? v.ID) {
1464
+ <option [value]="v.ID" [selected]="v === SelectedVoiceOption">{{ v.Name }}</option>
1348
1465
  }
1349
1466
  </select>
1350
1467
  }
1351
1468
  }
1469
+ <label class="mj-lk-prejoin__label" for="mj-lk-turn-mode">Turn-taking</label>
1470
+ <select id="mj-lk-turn-mode" class="mj-input mj-lk-prejoin__select" (change)="OnTurnModeChange($event)">
1471
+ <option value="">Default turn mode</option>
1472
+ @for (o of TurnModeOptions; track o.Value) {
1473
+ <option [value]="o.Value" [title]="o.Hint" [selected]="o.Value === SelectedTurnMode">{{ o.Label }}</option>
1474
+ }
1475
+ </select>
1476
+ <select id="mj-lk-turn-addressing" class="mj-input mj-lk-prejoin__select" aria-label="How the agent decides it was addressed"
1477
+ (change)="OnTurnAddressingChange($event)">
1478
+ <option value="">Default addressing</option>
1479
+ @for (o of TurnAddressingOptions; track o.Value) {
1480
+ <option [value]="o.Value" [title]="o.Hint" [selected]="o.Value === SelectedTurnAddressing">{{ o.Label }}</option>
1481
+ }
1482
+ </select>
1352
1483
  <button type="button" class="mj-lk-prejoin__start" [disabled]="!selectedTargetId" (click)="startCall()">
1353
1484
  <i class="fa-solid fa-phone"></i> Start call
1354
1485
  </button>
@@ -1377,6 +1508,15 @@ export { LiveKitRoomResource };
1377
1508
  <span class="mj-lk-card__t">History</span>
1378
1509
  <span class="mj-lk-card__d">Read transcripts of past meetings.</span>
1379
1510
  </button>
1511
+ @if (CanOpenPreviewRoom) {
1512
+ <button type="button" class="mj-lk-card mj-lk-card--preview" (click)="OpenPreviewRoom()">
1513
+ <i class="fa-solid fa-flask"></i>
1514
+ <span class="mj-lk-card__text">
1515
+ <span class="mj-lk-card__t">Preview room<span class="mj-lk-prejoin__dev">dev</span></span>
1516
+ <span class="mj-lk-card__d">Try the room with your camera and simulated people. No server needed.</span>
1517
+ </span>
1518
+ </button>
1519
+ }
1380
1520
  </div>
1381
1521
  </div>
1382
1522
  </div>
@@ -1511,7 +1651,7 @@ export { LiveKitRoomResource };
1511
1651
  </div>
1512
1652
  </mj-dialog>
1513
1653
  }
1514
- `, 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 "] }]
1654
+ `, 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 /* The preview room: a dev tool, so a slim row under the three main choices. */\n .mj-lk-card--preview {\n grid-column: 1 / -1;\n flex-direction: row;\n gap: 12px;\n padding: 0.75rem 1rem;\n text-align: left;\n }\n .mj-lk-card__text { display: flex; flex-direction: column; gap: 2px; }\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 "] }]
1515
1655
  }], null, null); })();
1516
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LiveKitRoomResource, { className: "LiveKitRoomResource", filePath: "src/lib/resource-wrappers/livekit-room-resource.component.ts", lineNumber: 577 }); })();
1656
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LiveKitRoomResource, { className: "LiveKitRoomResource", filePath: "src/lib/resource-wrappers/livekit-room-resource.component.ts", lineNumber: 621 }); })();
1517
1657
  //# sourceMappingURL=livekit-room-resource.component.js.map