@acorex-platform/module-conversation-client 0.0.28 → 0.0.32

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 (38) hide show
  1. package/fesm2022/{acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DsjrXRZ6.mjs → acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BP8QEicz.mjs} +7655 -6569
  2. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BP8QEicz.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-D-DZ9ylV.mjs → acorex-platform-module-conversation-client-after-message-sent.command-CpMGuSU1.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-D-DZ9ylV.mjs.map → acorex-platform-module-conversation-client-after-message-sent.command-CpMGuSU1.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BfjJCQ-e.mjs → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-Dgs6fpN3.mjs} +6 -6
  6. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BfjJCQ-e.mjs.map → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-Dgs6fpN3.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-conversation-client-assist-tool-detail-popup.component-GC58B_n0.mjs → acorex-platform-module-conversation-client-assist-tool-detail-popup.component-BRW1cHN6.mjs} +3 -3
  8. package/fesm2022/{acorex-platform-module-conversation-client-assist-tool-detail-popup.component-GC58B_n0.mjs.map → acorex-platform-module-conversation-client-assist-tool-detail-popup.component-BRW1cHN6.mjs.map} +1 -1
  9. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-BStKnruT.mjs +1379 -0
  10. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-BStKnruT.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-D4go5xbr.mjs → acorex-platform-module-conversation-client-chat-call-start-popup.component-eKYhjy91.mjs} +4 -4
  12. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-D4go5xbr.mjs.map → acorex-platform-module-conversation-client-chat-call-start-popup.component-eKYhjy91.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-BVJdVPke.mjs → acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-DLYtqFLi.mjs} +3 -3
  14. package/fesm2022/{acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-BVJdVPke.mjs.map → acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-DLYtqFLi.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-CE40xbl9.mjs +472 -0
  16. package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-CE40xbl9.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-Bq4SdK0_.mjs → acorex-platform-module-conversation-client-comments-page.component-VOuN3y_8.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-Bq4SdK0_.mjs.map → acorex-platform-module-conversation-client-comments-page.component-VOuN3y_8.mjs.map} +1 -1
  19. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs +39 -6
  20. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs.map +1 -1
  21. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-BlYDwGVe.mjs → acorex-platform-module-conversation-client-mark-conversation-unread.command-9tbWXMsa.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-BlYDwGVe.mjs.map → acorex-platform-module-conversation-client-mark-conversation-unread.command-9tbWXMsa.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-B03q60Qx.mjs → acorex-platform-module-conversation-client-open-chat.command-CdMsYHwG.mjs} +16 -1
  24. package/fesm2022/acorex-platform-module-conversation-client-open-chat.command-CdMsYHwG.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BQLK6F69.mjs → acorex-platform-module-conversation-client-retry-assist-response.command-DvOeezMD.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BQLK6F69.mjs.map → acorex-platform-module-conversation-client-retry-assist-response.command-DvOeezMD.mjs.map} +1 -1
  27. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-CmJAjrZb.mjs +50 -0
  28. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-CmJAjrZb.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-conversation-client.mjs +1 -1
  30. package/package.json +2 -2
  31. package/types/acorex-platform-module-conversation-client-contracts.d.ts +28 -18
  32. package/types/acorex-platform-module-conversation-client.d.ts +150 -76
  33. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DsjrXRZ6.mjs.map +0 -1
  34. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-DkX4JSbN.mjs +0 -871
  35. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-DkX4JSbN.mjs.map +0 -1
  36. package/fesm2022/acorex-platform-module-conversation-client-open-chat.command-B03q60Qx.mjs.map +0 -1
  37. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-B1Z_gZ6O.mjs +0 -142
  38. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-B1Z_gZ6O.mjs.map +0 -1
@@ -0,0 +1,1379 @@
1
+ import { createRandomUuid } from '@acorex-platform/framework-shared/core';
2
+ import { AXPAvatarComponent } from '@acorex-platform/framework-client/layout/components';
3
+ import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
4
+ import { AXConversationContainerDirective, AXConversationMessageListComponent, AXConversationComposerComponent, AXConversationService } from '@acorex/components/conversation';
5
+ import { AXBasePageComponent } from '@acorex/components/page';
6
+ import * as i1 from '@acorex/components/button';
7
+ import { AXButtonModule } from '@acorex/components/button';
8
+ import * as i2 from '@acorex/components/decorators';
9
+ import { AXDecoratorModule } from '@acorex/components/decorators';
10
+ import * as i3$1 from '@acorex/components/drawer';
11
+ import { AXDrawerModule } from '@acorex/components/drawer';
12
+ import { AXToastService } from '@acorex/components/toast';
13
+ import * as i3 from '@acorex/core/translation';
14
+ import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
15
+ import { AsyncPipe } from '@angular/common';
16
+ import * as i0 from '@angular/core';
17
+ import { input, output, signal, computed, ChangeDetectionStrategy, Component, Injectable, inject, ElementRef, effect, Directive, ViewEncapsulation } from '@angular/core';
18
+ import { ConnectionState } from 'livekit-client';
19
+ import { k as AXMChatUserApi, l as AXMChatEntityConversationApi, m as AXMChatConversationApi, n as AXMChatCallRtcService, o as AXMChatCallRtcSignalInboxService, p as AXMChatCallActiveSessionService, q as AXMChatCallEventsService, r as AXMConversationRealtimeBus, A as AXMConversationEntityStoreService, h as axmResolveConversationListAvatar, s as axmReadChatCallLog, t as axmBuildChatCallLogMessage, u as axmReadChatCallMediaContextIssue, v as AXM_CHAT_CALL_RTC_PROVIDERS } from './acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BP8QEicz.mjs';
20
+ import { AXP_ROOT_CONFIG_TOKEN } from '@acorex-platform/framework-client/common';
21
+ import { HttpClient } from '@angular/common/http';
22
+ import { firstValueFrom } from 'rxjs';
23
+
24
+ //#region ----- Imports -----
25
+ //#endregion
26
+ //#region ----- Helpers -----
27
+ function axmCoerceLookupUserIds(value) {
28
+ if (!value) {
29
+ return [];
30
+ }
31
+ if (Array.isArray(value)) {
32
+ return value
33
+ .map((entry) => {
34
+ if (typeof entry === 'string') {
35
+ return entry.trim();
36
+ }
37
+ if (entry && typeof entry === 'object' && 'id' in entry) {
38
+ return String(entry.id ?? '').trim();
39
+ }
40
+ return String(entry ?? '').trim();
41
+ })
42
+ .filter(Boolean);
43
+ }
44
+ if (typeof value === 'string') {
45
+ const trimmed = value.trim();
46
+ return trimmed ? [trimmed] : [];
47
+ }
48
+ return [];
49
+ }
50
+ //#endregion
51
+ //#region ----- Dialog -----
52
+ /**
53
+ * Opens a user picker for adding participants to an active call.
54
+ */
55
+ async function axmOpenChatCallAddPeopleDialog(layoutBuilder, translationService) {
56
+ const [dialogTitle, fieldLabel, cancelLabel, submitLabel] = await Promise.all([
57
+ translationService.translateAsync('@conversation:chat.call.add-people-dialog.title'),
58
+ translationService.translateAsync('@conversation:chat.call.add-people-dialog.field.users'),
59
+ translationService.translateAsync('@conversation:comments.actions.cancel.title'),
60
+ translationService.translateAsync('@conversation:chat.call.add-people-dialog.actions.invite'),
61
+ ]);
62
+ const dialogRef = await layoutBuilder
63
+ .create()
64
+ .dialog((dialog) => {
65
+ dialog
66
+ .setTitle(dialogTitle ?? 'Add People')
67
+ .setSize('md')
68
+ .setCloseButton(true)
69
+ .setContext({ userIds: null })
70
+ .content((flex) => {
71
+ flex.setDirection('column').setGap('10px');
72
+ flex.formField(fieldLabel ?? 'People', (field) => {
73
+ field.path('userIds');
74
+ field.lookupBox({
75
+ entity: 'SecurityManagement.User',
76
+ multiple: true,
77
+ searchable: true,
78
+ allowClear: true,
79
+ validations: [{ rule: 'required' }],
80
+ });
81
+ });
82
+ })
83
+ .setActions((actions) => {
84
+ actions.cancel(cancelLabel ?? 'Cancel');
85
+ actions.submit(submitLabel ?? 'Invite');
86
+ });
87
+ })
88
+ .show();
89
+ if (dialogRef.action() === 'cancel') {
90
+ dialogRef.close();
91
+ return false;
92
+ }
93
+ const context = dialogRef.context();
94
+ const userIds = axmCoerceLookupUserIds(context.userIds);
95
+ dialogRef.close();
96
+ return userIds.length ? userIds : false;
97
+ }
98
+ //#endregion
99
+
100
+ //#region ----- Imports -----
101
+ //#endregion
102
+ //#region ----- Component -----
103
+ class AXMChatCallControlsComponent {
104
+ constructor() {
105
+ //#region ----- Inputs / Outputs -----
106
+ this.phase = input('outgoing-waiting', /* @ts-ignore */
107
+ ...(ngDevMode ? [{ debugName: "phase" }] : /* istanbul ignore next */ []));
108
+ this.videoEnabled = input(false, /* @ts-ignore */
109
+ ...(ngDevMode ? [{ debugName: "videoEnabled" }] : /* istanbul ignore next */ []));
110
+ this.micMuted = input(false, /* @ts-ignore */
111
+ ...(ngDevMode ? [{ debugName: "micMuted" }] : /* istanbul ignore next */ []));
112
+ this.showAddPeople = input(false, /* @ts-ignore */
113
+ ...(ngDevMode ? [{ debugName: "showAddPeople" }] : /* istanbul ignore next */ []));
114
+ this.showScreencast = input(true, /* @ts-ignore */
115
+ ...(ngDevMode ? [{ debugName: "showScreencast" }] : /* istanbul ignore next */ []));
116
+ this.showChat = input(false, /* @ts-ignore */
117
+ ...(ngDevMode ? [{ debugName: "showChat" }] : /* istanbul ignore next */ []));
118
+ this.chatOpen = input(false, /* @ts-ignore */
119
+ ...(ngDevMode ? [{ debugName: "chatOpen" }] : /* istanbul ignore next */ []));
120
+ this.audioDevices = input([], /* @ts-ignore */
121
+ ...(ngDevMode ? [{ debugName: "audioDevices" }] : /* istanbul ignore next */ []));
122
+ this.videoDevices = input([], /* @ts-ignore */
123
+ ...(ngDevMode ? [{ debugName: "videoDevices" }] : /* istanbul ignore next */ []));
124
+ this.selectedAudioDeviceId = input(null, /* @ts-ignore */
125
+ ...(ngDevMode ? [{ debugName: "selectedAudioDeviceId" }] : /* istanbul ignore next */ []));
126
+ this.selectedVideoDeviceId = input(null, /* @ts-ignore */
127
+ ...(ngDevMode ? [{ debugName: "selectedVideoDeviceId" }] : /* istanbul ignore next */ []));
128
+ this.screencast = output();
129
+ this.openChat = output();
130
+ this.toggleVideo = output();
131
+ this.toggleMute = output();
132
+ this.endCall = output();
133
+ this.accept = output();
134
+ this.decline = output();
135
+ this.addPeople = output();
136
+ this.pickDevice = output();
137
+ this.requestDevices = output();
138
+ //#endregion
139
+ //#region ----- State Signals -----
140
+ this.openMenu = signal(null, /* @ts-ignore */
141
+ ...(ngDevMode ? [{ debugName: "openMenu" }] : /* istanbul ignore next */ []));
142
+ //#endregion
143
+ //#region ----- Computed Properties -----
144
+ this.isIncoming = computed(() => this.phase() === 'incoming', /* @ts-ignore */
145
+ ...(ngDevMode ? [{ debugName: "isIncoming" }] : /* istanbul ignore next */ []));
146
+ this.hangupLabelKey = computed(() => this.phase() === 'active'
147
+ ? '@conversation:chat.call.end-call'
148
+ : '@conversation:chat.call.cancel', /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "hangupLabelKey" }] : /* istanbul ignore next */ []));
150
+ this.videoLabelKey = computed(() => this.videoEnabled()
151
+ ? '@conversation:chat.call.stop-video'
152
+ : '@conversation:chat.call.start-video', /* @ts-ignore */
153
+ ...(ngDevMode ? [{ debugName: "videoLabelKey" }] : /* istanbul ignore next */ []));
154
+ this.muteLabelKey = computed(() => this.micMuted() ? '@conversation:chat.call.unmute' : '@conversation:chat.call.mute', /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "muteLabelKey" }] : /* istanbul ignore next */ []));
156
+ this.menuDevices = computed(() => {
157
+ const kind = this.openMenu();
158
+ if (kind === 'audioinput') {
159
+ return this.audioDevices();
160
+ }
161
+ if (kind === 'videoinput') {
162
+ return this.videoDevices();
163
+ }
164
+ return [];
165
+ }, /* @ts-ignore */
166
+ ...(ngDevMode ? [{ debugName: "menuDevices" }] : /* istanbul ignore next */ []));
167
+ }
168
+ //#endregion
169
+ //#region ----- Event Handlers -----
170
+ onOpenDeviceMenu(event, kind) {
171
+ event.preventDefault();
172
+ event.stopPropagation();
173
+ this.openMenu.set(this.openMenu() === kind ? null : kind);
174
+ this.requestDevices.emit(kind);
175
+ }
176
+ onCloseDeviceMenu() {
177
+ this.openMenu.set(null);
178
+ }
179
+ onSelectDevice(kind, deviceId) {
180
+ this.pickDevice.emit({ kind, deviceId });
181
+ this.openMenu.set(null);
182
+ }
183
+ selectedDeviceId(kind) {
184
+ return kind === 'audioinput' ? this.selectedAudioDeviceId() : this.selectedVideoDeviceId();
185
+ }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMChatCallControlsComponent, isStandalone: true, selector: "axm-chat-call-controls", inputs: { phase: { classPropertyName: "phase", publicName: "phase", isSignal: true, isRequired: false, transformFunction: null }, videoEnabled: { classPropertyName: "videoEnabled", publicName: "videoEnabled", isSignal: true, isRequired: false, transformFunction: null }, micMuted: { classPropertyName: "micMuted", publicName: "micMuted", isSignal: true, isRequired: false, transformFunction: null }, showAddPeople: { classPropertyName: "showAddPeople", publicName: "showAddPeople", isSignal: true, isRequired: false, transformFunction: null }, showScreencast: { classPropertyName: "showScreencast", publicName: "showScreencast", isSignal: true, isRequired: false, transformFunction: null }, showChat: { classPropertyName: "showChat", publicName: "showChat", isSignal: true, isRequired: false, transformFunction: null }, chatOpen: { classPropertyName: "chatOpen", publicName: "chatOpen", isSignal: true, isRequired: false, transformFunction: null }, audioDevices: { classPropertyName: "audioDevices", publicName: "audioDevices", isSignal: true, isRequired: false, transformFunction: null }, videoDevices: { classPropertyName: "videoDevices", publicName: "videoDevices", isSignal: true, isRequired: false, transformFunction: null }, selectedAudioDeviceId: { classPropertyName: "selectedAudioDeviceId", publicName: "selectedAudioDeviceId", isSignal: true, isRequired: false, transformFunction: null }, selectedVideoDeviceId: { classPropertyName: "selectedVideoDeviceId", publicName: "selectedVideoDeviceId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { screencast: "screencast", openChat: "openChat", toggleVideo: "toggleVideo", toggleMute: "toggleMute", endCall: "endCall", accept: "accept", decline: "decline", addPeople: "addPeople", pickDevice: "pickDevice", requestDevices: "requestDevices" }, ngImport: i0, template: "<div class=\"axm-chat-call-controls\">\n <!-- ----- Incoming: camera before decline/accept ----- -->\n @if (isIncoming()) {\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleVideo.emit()\"\n [attr.aria-label]=\"videoLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"videoEnabled()\">\n <i class=\"fa-solid\" [class.fa-video]=\"videoEnabled()\" [class.fa-video-slash]=\"!videoEnabled()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'videoinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.camera' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"decline.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.decline' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--danger\">\n <i class=\"fa-solid fa-phone axm-chat-call-controls__hangup\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"accept.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.accept' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--success\">\n <i class=\"fa-solid fa-phone\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleMute.emit()\"\n [attr.aria-label]=\"muteLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"!micMuted()\">\n <i class=\"fa-solid\" [class.fa-microphone]=\"!micMuted()\" [class.fa-microphone-slash]=\"micMuted()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'audioinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.microphone' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n <!-- ----- Outgoing / active controls ----- -->\n @else {\n <!-- ----- In-call chat drawer ----- -->\n @if (showChat()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"openChat.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.open-chat' | translate | async\"\n >\n <span\n class=\"axm-chat-call-controls__circle\"\n [class.axm-chat-call-controls__circle--light]=\"chatOpen()\"\n >\n <i class=\"fa-solid fa-message\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n\n <!-- ----- Screencast only during an active call ----- -->\n @if (showScreencast()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"screencast.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.screencast' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--light\">\n <i class=\"fa-solid fa-desktop\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleVideo.emit()\"\n [attr.aria-label]=\"videoLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"videoEnabled()\">\n <i class=\"fa-solid\" [class.fa-video]=\"videoEnabled()\" [class.fa-video-slash]=\"!videoEnabled()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'videoinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.camera' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"endCall.emit()\"\n [attr.aria-label]=\"hangupLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--danger\">\n <i class=\"fa-solid fa-phone axm-chat-call-controls__hangup\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleMute.emit()\"\n [attr.aria-label]=\"muteLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"!micMuted()\">\n <i class=\"fa-solid\" [class.fa-microphone]=\"!micMuted()\" [class.fa-microphone-slash]=\"micMuted()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'audioinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.microphone' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <!-- ----- Add people on an active group call ----- -->\n @if (showAddPeople()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"addPeople.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.add-people' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--light\">\n <i class=\"fa-solid fa-user-plus\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n }\n\n <!-- ----- Device switcher ----- -->\n @if (openMenu(); as kind) {\n <button type=\"button\" class=\"axm-chat-call-controls__menu-backdrop\" (click)=\"onCloseDeviceMenu()\"></button>\n <ul class=\"axm-chat-call-controls__menu\" role=\"listbox\">\n @if (menuDevices().length === 0) {\n <li class=\"axm-chat-call-controls__menu-empty\">\n {{ '@conversation:chat.call.devices.empty' | translate | async }}\n </li>\n }\n @for (device of menuDevices(); track device.deviceId) {\n <li>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__menu-item\"\n [class.axm-chat-call-controls__menu-item--active]=\"device.deviceId === selectedDeviceId(kind)\"\n (click)=\"onSelectDevice(kind, device.deviceId)\"\n >\n {{ device.label || device.deviceId }}\n </button>\n </li>\n }\n </ul>\n }\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
+ }
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallControlsComponent, decorators: [{
190
+ type: Component,
191
+ args: [{ selector: 'axm-chat-call-controls', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXTranslationModule, AsyncPipe], template: "<div class=\"axm-chat-call-controls\">\n <!-- ----- Incoming: camera before decline/accept ----- -->\n @if (isIncoming()) {\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleVideo.emit()\"\n [attr.aria-label]=\"videoLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"videoEnabled()\">\n <i class=\"fa-solid\" [class.fa-video]=\"videoEnabled()\" [class.fa-video-slash]=\"!videoEnabled()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'videoinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.camera' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"decline.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.decline' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--danger\">\n <i class=\"fa-solid fa-phone axm-chat-call-controls__hangup\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"accept.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.accept' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--success\">\n <i class=\"fa-solid fa-phone\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleMute.emit()\"\n [attr.aria-label]=\"muteLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"!micMuted()\">\n <i class=\"fa-solid\" [class.fa-microphone]=\"!micMuted()\" [class.fa-microphone-slash]=\"micMuted()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'audioinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.microphone' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n <!-- ----- Outgoing / active controls ----- -->\n @else {\n <!-- ----- In-call chat drawer ----- -->\n @if (showChat()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"openChat.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.open-chat' | translate | async\"\n >\n <span\n class=\"axm-chat-call-controls__circle\"\n [class.axm-chat-call-controls__circle--light]=\"chatOpen()\"\n >\n <i class=\"fa-solid fa-message\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n\n <!-- ----- Screencast only during an active call ----- -->\n @if (showScreencast()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"screencast.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.screencast' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--light\">\n <i class=\"fa-solid fa-desktop\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleVideo.emit()\"\n [attr.aria-label]=\"videoLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"videoEnabled()\">\n <i class=\"fa-solid\" [class.fa-video]=\"videoEnabled()\" [class.fa-video-slash]=\"!videoEnabled()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'videoinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.camera' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"endCall.emit()\"\n [attr.aria-label]=\"hangupLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--danger\">\n <i class=\"fa-solid fa-phone axm-chat-call-controls__hangup\" aria-hidden=\"true\"></i>\n </span>\n </button>\n\n <div class=\"axm-chat-call-controls__item\">\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"toggleMute.emit()\"\n [attr.aria-label]=\"muteLabelKey() | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle\" [class.axm-chat-call-controls__circle--light]=\"!micMuted()\">\n <i class=\"fa-solid\" [class.fa-microphone]=\"!micMuted()\" [class.fa-microphone-slash]=\"micMuted()\" aria-hidden=\"true\"></i>\n </span>\n </button>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__chevron\"\n (click)=\"onOpenDeviceMenu($event, 'audioinput')\"\n [attr.aria-label]=\"'@conversation:chat.call.devices.microphone' | translate | async\"\n >\n <i class=\"fa-solid fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <!-- ----- Add people on an active group call ----- -->\n @if (showAddPeople()) {\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__action\"\n (click)=\"addPeople.emit()\"\n [attr.aria-label]=\"'@conversation:chat.call.add-people' | translate | async\"\n >\n <span class=\"axm-chat-call-controls__circle axm-chat-call-controls__circle--light\">\n <i class=\"fa-solid fa-user-plus\" aria-hidden=\"true\"></i>\n </span>\n </button>\n }\n }\n\n <!-- ----- Device switcher ----- -->\n @if (openMenu(); as kind) {\n <button type=\"button\" class=\"axm-chat-call-controls__menu-backdrop\" (click)=\"onCloseDeviceMenu()\"></button>\n <ul class=\"axm-chat-call-controls__menu\" role=\"listbox\">\n @if (menuDevices().length === 0) {\n <li class=\"axm-chat-call-controls__menu-empty\">\n {{ '@conversation:chat.call.devices.empty' | translate | async }}\n </li>\n }\n @for (device of menuDevices(); track device.deviceId) {\n <li>\n <button\n type=\"button\"\n class=\"axm-chat-call-controls__menu-item\"\n [class.axm-chat-call-controls__menu-item--active]=\"device.deviceId === selectedDeviceId(kind)\"\n (click)=\"onSelectDevice(kind, device.deviceId)\"\n >\n {{ device.label || device.deviceId }}\n </button>\n </li>\n }\n </ul>\n }\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
192
+ }], propDecorators: { phase: [{ type: i0.Input, args: [{ isSignal: true, alias: "phase", required: false }] }], videoEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "videoEnabled", required: false }] }], micMuted: [{ type: i0.Input, args: [{ isSignal: true, alias: "micMuted", required: false }] }], showAddPeople: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAddPeople", required: false }] }], showScreencast: [{ type: i0.Input, args: [{ isSignal: true, alias: "showScreencast", required: false }] }], showChat: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChat", required: false }] }], chatOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatOpen", required: false }] }], audioDevices: [{ type: i0.Input, args: [{ isSignal: true, alias: "audioDevices", required: false }] }], videoDevices: [{ type: i0.Input, args: [{ isSignal: true, alias: "videoDevices", required: false }] }], selectedAudioDeviceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedAudioDeviceId", required: false }] }], selectedVideoDeviceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedVideoDeviceId", required: false }] }], screencast: [{ type: i0.Output, args: ["screencast"] }], openChat: [{ type: i0.Output, args: ["openChat"] }], toggleVideo: [{ type: i0.Output, args: ["toggleVideo"] }], toggleMute: [{ type: i0.Output, args: ["toggleMute"] }], endCall: [{ type: i0.Output, args: ["endCall"] }], accept: [{ type: i0.Output, args: ["accept"] }], decline: [{ type: i0.Output, args: ["decline"] }], addPeople: [{ type: i0.Output, args: ["addPeople"] }], pickDevice: [{ type: i0.Output, args: ["pickDevice"] }], requestDevices: [{ type: i0.Output, args: ["requestDevices"] }] } });
193
+
194
+ //#region ----- Imports -----
195
+ //#endregion
196
+ //#region ----- Constants -----
197
+ const CHAT_CALL_INCOMING_RING_SRC = 'assets/sounds/ring.mp3';
198
+ const CHAT_CALL_OUTGOING_RING_SRC = 'assets/sounds/phone-call.mp3';
199
+ const CHAT_CALL_OUTGOING_GAP_MS = 2500;
200
+ //#endregion
201
+ //#region ----- Service -----
202
+ /**
203
+ * Plays call audio: looping ringtone for the callee, spaced ringback for the caller.
204
+ */
205
+ class AXMChatCallRingerService {
206
+ constructor() {
207
+ //#region ----- Private State -----
208
+ this.audio = null;
209
+ this.gapTimer = null;
210
+ this.playing = false;
211
+ }
212
+ //#endregion
213
+ //#region ----- Playback -----
214
+ playIncoming() {
215
+ this.#playLooped(CHAT_CALL_INCOMING_RING_SRC);
216
+ }
217
+ playOutgoing() {
218
+ this.#playWithGap(CHAT_CALL_OUTGOING_RING_SRC, CHAT_CALL_OUTGOING_GAP_MS);
219
+ }
220
+ stop() {
221
+ this.playing = false;
222
+ this.#clearGapTimer();
223
+ const audio = this.audio;
224
+ this.audio = null;
225
+ if (!audio) {
226
+ return;
227
+ }
228
+ audio.pause();
229
+ audio.removeAttribute('src');
230
+ audio.load();
231
+ }
232
+ #playLooped(src) {
233
+ this.stop();
234
+ if (typeof Audio === 'undefined') {
235
+ return;
236
+ }
237
+ this.playing = true;
238
+ const audio = new Audio(src);
239
+ audio.loop = true;
240
+ void audio.play().catch(() => {
241
+ // Autoplay may be blocked until a user gesture; the call UI still shows.
242
+ });
243
+ this.audio = audio;
244
+ }
245
+ #playWithGap(src, gapMs) {
246
+ this.stop();
247
+ if (typeof Audio === 'undefined') {
248
+ return;
249
+ }
250
+ this.playing = true;
251
+ this.#playOutgoingClip(src, gapMs);
252
+ }
253
+ #playOutgoingClip(src, gapMs) {
254
+ if (!this.playing) {
255
+ return;
256
+ }
257
+ const previous = this.audio;
258
+ this.audio = null;
259
+ if (previous) {
260
+ previous.pause();
261
+ previous.removeAttribute('src');
262
+ previous.load();
263
+ }
264
+ const audio = new Audio(src);
265
+ audio.loop = false;
266
+ audio.addEventListener('ended', () => {
267
+ if (!this.playing) {
268
+ return;
269
+ }
270
+ this.#clearGapTimer();
271
+ this.gapTimer = setTimeout(() => {
272
+ this.gapTimer = null;
273
+ this.#playOutgoingClip(src, gapMs);
274
+ }, gapMs);
275
+ }, { once: true });
276
+ void audio.play().catch(() => {
277
+ // Autoplay may be blocked until a user gesture; the call UI still shows.
278
+ });
279
+ this.audio = audio;
280
+ }
281
+ #clearGapTimer() {
282
+ if (this.gapTimer == null) {
283
+ return;
284
+ }
285
+ clearTimeout(this.gapTimer);
286
+ this.gapTimer = null;
287
+ }
288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallRingerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
289
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallRingerService, providedIn: 'root' }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallRingerService, decorators: [{
292
+ type: Injectable,
293
+ args: [{ providedIn: 'root' }]
294
+ }] });
295
+
296
+ //#region ----- Imports -----
297
+ //#endregion
298
+ //#region ----- Client -----
299
+ /**
300
+ * Posts call signaling to the conversation API (built-in realtime fan-out on server).
301
+ */
302
+ class AXMChatCallSignalClient {
303
+ constructor() {
304
+ this.http = inject(HttpClient);
305
+ this.rootConfig = inject(AXP_ROOT_CONFIG_TOKEN);
306
+ }
307
+ async signal(request) {
308
+ const conversationId = request.conversationId.trim();
309
+ const url = `${this.rootConfig.baseUrl}/v1/global/conversation/conversations/${encodeURIComponent(conversationId)}/calls/signal`;
310
+ return firstValueFrom(this.http.post(url, {
311
+ action: request.action,
312
+ media: request.media,
313
+ callId: request.callId,
314
+ targetUserIds: request.targetUserIds,
315
+ }, { withCredentials: true }));
316
+ }
317
+ async log(request) {
318
+ const conversationId = request.conversationId.trim();
319
+ const url = `${this.rootConfig.baseUrl}/v1/global/conversation/conversations/${encodeURIComponent(conversationId)}/calls/log`;
320
+ return firstValueFrom(this.http.post(url, {
321
+ outcome: request.outcome,
322
+ media: request.media,
323
+ callId: request.callId,
324
+ durationSec: request.durationSec,
325
+ initiatorUserId: request.initiatorUserId,
326
+ joinedUserIds: request.joinedUserIds,
327
+ absentUserIds: request.absentUserIds,
328
+ isGroup: request.isGroup,
329
+ }, { withCredentials: true }));
330
+ }
331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallSignalClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
332
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallSignalClient, providedIn: 'root' }); }
333
+ }
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallSignalClient, decorators: [{
335
+ type: Injectable,
336
+ args: [{ providedIn: 'root' }]
337
+ }] });
338
+
339
+ //#region ----- Constants -----
340
+ /** Same palette keys as `AXPAvatarComponent` (`avatar.component.ts`). */
341
+ const AXM_CHAT_CALL_AVATAR_COLOR_KEYS = [
342
+ 'primary',
343
+ 'secondary',
344
+ 'danger',
345
+ 'warning',
346
+ 'success',
347
+ 'accent1',
348
+ 'accent2',
349
+ 'accent3',
350
+ ];
351
+ //#endregion
352
+ //#region ----- Helpers -----
353
+ function hashString(value) {
354
+ let hash = 0;
355
+ for (let index = 0; index < value.length; index += 1) {
356
+ hash = (hash << 5) - hash + value.charCodeAt(index);
357
+ hash |= 0;
358
+ }
359
+ return Math.abs(hash);
360
+ }
361
+ /** Stable avatar accent key per participant name — aligned with `axp-avatar` color pick. */
362
+ function axmChatCallTileAvatarColor(participantName) {
363
+ const scoped = participantName.trim() || '?';
364
+ const index = hashString(scoped) % AXM_CHAT_CALL_AVATAR_COLOR_KEYS.length;
365
+ return AXM_CHAT_CALL_AVATAR_COLOR_KEYS[index];
366
+ }
367
+ //#endregion
368
+
369
+ //#region ----- Imports -----
370
+ /**
371
+ * Attaches a LiveKit track to the host media element.
372
+ */
373
+ class AXMChatCallVideoAttachDirective {
374
+ //#endregion
375
+ //#region ----- Lifecycle -----
376
+ constructor() {
377
+ //#region ----- Inputs -----
378
+ this.axmChatCallTrack = input(null, /* @ts-ignore */
379
+ ...(ngDevMode ? [{ debugName: "axmChatCallTrack" }] : /* istanbul ignore next */ []));
380
+ //#endregion
381
+ //#region ----- Services & Dependencies -----
382
+ this.host = inject((ElementRef));
383
+ effect((onCleanup) => {
384
+ const track = this.axmChatCallTrack();
385
+ const element = this.host.nativeElement;
386
+ if (!track) {
387
+ element.srcObject = null;
388
+ return;
389
+ }
390
+ track.attach(element);
391
+ void element.play().catch(() => undefined);
392
+ onCleanup(() => {
393
+ track.detach(element);
394
+ });
395
+ });
396
+ }
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallVideoAttachDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
398
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: AXMChatCallVideoAttachDirective, isStandalone: true, selector: "video[axmChatCallTrack]", inputs: { axmChatCallTrack: { classPropertyName: "axmChatCallTrack", publicName: "axmChatCallTrack", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
399
+ }
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallVideoAttachDirective, decorators: [{
401
+ type: Directive,
402
+ args: [{
403
+ selector: 'video[axmChatCallTrack]',
404
+ }]
405
+ }], ctorParameters: () => [], propDecorators: { axmChatCallTrack: [{ type: i0.Input, args: [{ isSignal: true, alias: "axmChatCallTrack", required: false }] }] } });
406
+
407
+ //#region ----- Imports -----
408
+ //#endregion
409
+ //#region ----- Component -----
410
+ class AXMChatCallParticipantTileComponent {
411
+ constructor() {
412
+ //#region ----- Inputs -----
413
+ this.tile = input.required(/* @ts-ignore */
414
+ ...(ngDevMode ? [{ debugName: "tile" }] : /* istanbul ignore next */ []));
415
+ this.videoTrack = input(null, /* @ts-ignore */
416
+ ...(ngDevMode ? [{ debugName: "videoTrack" }] : /* istanbul ignore next */ []));
417
+ /** Sidebar thumbnail size during screen-share presentation layout. */
418
+ this.compact = input(false, /* @ts-ignore */
419
+ ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
420
+ //#endregion
421
+ //#region ----- Computed Properties -----
422
+ this.hasVideo = computed(() => Boolean(this.videoTrack()), /* @ts-ignore */
423
+ ...(ngDevMode ? [{ debugName: "hasVideo" }] : /* istanbul ignore next */ []));
424
+ this.hasAvatarImage = computed(() => Boolean((this.tile().avatar ?? '').trim()), /* @ts-ignore */
425
+ ...(ngDevMode ? [{ debugName: "hasAvatarImage" }] : /* istanbul ignore next */ []));
426
+ this.avatarColorKey = computed(() => axmChatCallTileAvatarColor(this.tile().name), /* @ts-ignore */
427
+ ...(ngDevMode ? [{ debugName: "avatarColorKey" }] : /* istanbul ignore next */ []));
428
+ this.avatarSize = computed(() => {
429
+ if (this.hasVideo()) {
430
+ return 0;
431
+ }
432
+ return this.compact() ? 40 : 88;
433
+ }, /* @ts-ignore */
434
+ ...(ngDevMode ? [{ debugName: "avatarSize" }] : /* istanbul ignore next */ []));
435
+ this.showSpeakingRing = computed(() => {
436
+ const tile = this.tile();
437
+ return !this.hasVideo() && !tile.micMuted && tile.audioLevel > 0.02;
438
+ }, /* @ts-ignore */
439
+ ...(ngDevMode ? [{ debugName: "showSpeakingRing" }] : /* istanbul ignore next */ []));
440
+ this.speakingRingLevel = computed(() => {
441
+ const tile = this.tile();
442
+ if (this.hasVideo() || tile.micMuted || tile.audioLevel <= 0.02) {
443
+ return 0;
444
+ }
445
+ return Math.min(10, Math.round(tile.audioLevel * 10));
446
+ }, /* @ts-ignore */
447
+ ...(ngDevMode ? [{ debugName: "speakingRingLevel" }] : /* istanbul ignore next */ []));
448
+ }
449
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallParticipantTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
450
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMChatCallParticipantTileComponent, isStandalone: true, selector: "axm-chat-call-participant-tile", inputs: { tile: { classPropertyName: "tile", publicName: "tile", isSignal: true, isRequired: true, transformFunction: null }, videoTrack: { classPropertyName: "videoTrack", publicName: "videoTrack", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.axm-chat-call-participant-tile--rail": "compact()" }, classAttribute: "axm-chat-call-participant-tile" }, ngImport: i0, template: "<div\n class=\"axm-chat-call-tile\"\n [class.axm-chat-call-tile--video]=\"hasVideo()\"\n [class.axm-chat-call-tile--speaking]=\"showSpeakingRing()\"\n [class.axm-chat-call-tile--compact]=\"compact()\"\n>\n <!-- ----- Blurred profile image background (camera off) ----- -->\n @if (!hasVideo() && hasAvatarImage()) {\n <img class=\"axm-chat-call-tile__bg-blur\" [src]=\"tile().avatar\" alt=\"\" />\n }\n <!-- ----- Accent gradient when no profile image ----- -->\n @else if (!hasVideo()) {\n <div\n class=\"axm-chat-call-tile__bg-color\"\n [attr.data-avatar-color]=\"avatarColorKey()\"\n ></div>\n }\n\n <!-- ----- Live camera feed ----- -->\n @if (videoTrack(); as track) {\n <video\n class=\"axm-chat-call-tile__video\"\n autoplay\n playsinline\n [muted]=\"tile().isSelf\"\n [axmChatCallTrack]=\"track\"\n ></video>\n }\n <!-- ----- Centered avatar when camera is off ----- -->\n @else {\n <div class=\"axm-chat-call-tile__avatar-stack\">\n @if (showSpeakingRing()) {\n <div class=\"axm-chat-call-tile__speaking-ring\" [attr.data-level]=\"speakingRingLevel()\"></div>\n }\n <axp-avatar [size]=\"avatarSize()\" [fullName]=\"tile().name\" [src]=\"tile().avatar ?? ''\" />\n </div>\n }\n\n <!-- ----- Camera off badge ----- -->\n @if (!tile().videoEnabled) {\n <span class=\"axm-chat-call-tile__badge axm-chat-call-tile__badge--camera\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-video-slash\"></i>\n </span>\n }\n\n <span class=\"axm-chat-call-tile__name\">\n {{ tile().name }}\n @if (tile().isSelf) {\n ({{ '@conversation:chat.call.you' | translate | async }})\n }\n </span>\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXPAvatarComponent, selector: "axp-avatar", inputs: ["size", "src", "fullName", "showTitle", "fallbackText", "placeholder"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "directive", type: AXMChatCallVideoAttachDirective, selector: "video[axmChatCallTrack]", inputs: ["axmChatCallTrack"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
451
+ }
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallParticipantTileComponent, decorators: [{
453
+ type: Component,
454
+ args: [{ selector: 'axm-chat-call-participant-tile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
455
+ class: 'axm-chat-call-participant-tile',
456
+ '[class.axm-chat-call-participant-tile--rail]': 'compact()',
457
+ }, imports: [AXPAvatarComponent, AXDecoratorModule, AXMChatCallVideoAttachDirective, AXTranslationModule, AsyncPipe], template: "<div\n class=\"axm-chat-call-tile\"\n [class.axm-chat-call-tile--video]=\"hasVideo()\"\n [class.axm-chat-call-tile--speaking]=\"showSpeakingRing()\"\n [class.axm-chat-call-tile--compact]=\"compact()\"\n>\n <!-- ----- Blurred profile image background (camera off) ----- -->\n @if (!hasVideo() && hasAvatarImage()) {\n <img class=\"axm-chat-call-tile__bg-blur\" [src]=\"tile().avatar\" alt=\"\" />\n }\n <!-- ----- Accent gradient when no profile image ----- -->\n @else if (!hasVideo()) {\n <div\n class=\"axm-chat-call-tile__bg-color\"\n [attr.data-avatar-color]=\"avatarColorKey()\"\n ></div>\n }\n\n <!-- ----- Live camera feed ----- -->\n @if (videoTrack(); as track) {\n <video\n class=\"axm-chat-call-tile__video\"\n autoplay\n playsinline\n [muted]=\"tile().isSelf\"\n [axmChatCallTrack]=\"track\"\n ></video>\n }\n <!-- ----- Centered avatar when camera is off ----- -->\n @else {\n <div class=\"axm-chat-call-tile__avatar-stack\">\n @if (showSpeakingRing()) {\n <div class=\"axm-chat-call-tile__speaking-ring\" [attr.data-level]=\"speakingRingLevel()\"></div>\n }\n <axp-avatar [size]=\"avatarSize()\" [fullName]=\"tile().name\" [src]=\"tile().avatar ?? ''\" />\n </div>\n }\n\n <!-- ----- Camera off badge ----- -->\n @if (!tile().videoEnabled) {\n <span class=\"axm-chat-call-tile__badge axm-chat-call-tile__badge--camera\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-video-slash\"></i>\n </span>\n }\n\n <span class=\"axm-chat-call-tile__name\">\n {{ tile().name }}\n @if (tile().isSelf) {\n ({{ '@conversation:chat.call.you' | translate | async }})\n }\n </span>\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
458
+ }], propDecorators: { tile: [{ type: i0.Input, args: [{ isSignal: true, alias: "tile", required: true }] }], videoTrack: [{ type: i0.Input, args: [{ isSignal: true, alias: "videoTrack", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }] } });
459
+
460
+ //#region ----- Imports -----
461
+ //#endregion
462
+ //#region ----- Component -----
463
+ /**
464
+ * Message list + composer for the call-session chat drawer.
465
+ * The parent selects the call conversation in {@link AXConversationService} before rendering.
466
+ */
467
+ class AXMChatCallInCallChatComponent {
468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallInCallChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
469
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMChatCallInCallChatComponent, isStandalone: true, selector: "axm-chat-call-in-call-chat", ngImport: i0, template: "<div axConversationContainer class=\"axm-chat-call-in-call-chat\">\n <ax-conversation-message-list class=\"axm-chat-call-in-call-chat__messages\" style=\"direction: ltr\" />\n <ax-conversation-composer class=\"axm-chat-call-in-call-chat__composer\" />\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: AXConversationContainerDirective, selector: "[axConversationContainer]" }, { kind: "component", type: AXConversationMessageListComponent, selector: "ax-conversation-message-list", outputs: ["messageAction"] }, { kind: "component", type: AXConversationComposerComponent, selector: "ax-conversation-composer", outputs: ["messageSent", "generationCancelled", "emojiClick", "attachClick", "voiceClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
470
+ }
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallInCallChatComponent, decorators: [{
472
+ type: Component,
473
+ args: [{ selector: 'axm-chat-call-in-call-chat', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
474
+ AXConversationContainerDirective,
475
+ AXConversationMessageListComponent,
476
+ AXConversationComposerComponent,
477
+ ], template: "<div axConversationContainer class=\"axm-chat-call-in-call-chat\">\n <ax-conversation-message-list class=\"axm-chat-call-in-call-chat__messages\" style=\"direction: ltr\" />\n <ax-conversation-composer class=\"axm-chat-call-in-call-chat__composer\" />\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
478
+ }] });
479
+
480
+ //#region ----- Imports -----
481
+ //#endregion
482
+ //#region ----- Component -----
483
+ /**
484
+ * Call-session popup backed by RTC/LiveKit.
485
+ */
486
+ class AXMChatCallSessionPageComponent extends AXBasePageComponent {
487
+ //#endregion
488
+ //#region ----- Stage Helpers -----
489
+ resolveVideoTrack(tile) {
490
+ if (!tile.videoEnabled) {
491
+ return null;
492
+ }
493
+ if (tile.isSelf) {
494
+ return this.localVideoTrack() ?? null;
495
+ }
496
+ const remote = this.remoteVideos().find((item) => item.participantId === tile.id);
497
+ return remote?.track ?? null;
498
+ }
499
+ //#endregion
500
+ //#region ----- Lifecycle -----
501
+ constructor() {
502
+ super();
503
+ this.sessionMedia = 'voice';
504
+ this.sessionPhase = 'outgoing-waiting';
505
+ //#endregion
506
+ //#region ----- Services & Dependencies -----
507
+ this.userApi = inject(AXMChatUserApi);
508
+ this.conversationApi = inject(AXMChatEntityConversationApi);
509
+ this.chatConversationApi = inject(AXMChatConversationApi);
510
+ this.conversationService = inject(AXConversationService);
511
+ this.layoutBuilder = inject(AXPLayoutBuilderService);
512
+ this.toastService = inject(AXToastService);
513
+ this.translationService = inject(AXTranslationService);
514
+ this.rtc = inject(AXMChatCallRtcService);
515
+ this.callSignal = inject(AXMChatCallSignalClient);
516
+ this.signalInbox = inject(AXMChatCallRtcSignalInboxService);
517
+ this.activeCallSessions = inject(AXMChatCallActiveSessionService);
518
+ this.callEvents = inject(AXMChatCallEventsService);
519
+ this.realtimeBus = inject(AXMConversationRealtimeBus);
520
+ this.conversationStore = inject(AXMConversationEntityStoreService);
521
+ this.ringer = inject(AXMChatCallRingerService);
522
+ //#endregion
523
+ //#region ----- State Signals -----
524
+ this.loading = signal(true, /* @ts-ignore */
525
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
526
+ this.error = signal(false, /* @ts-ignore */
527
+ ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
528
+ this.errorMessage = signal(null, /* @ts-ignore */
529
+ ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
530
+ this.conversation = signal(null, /* @ts-ignore */
531
+ ...(ngDevMode ? [{ debugName: "conversation" }] : /* istanbul ignore next */ []));
532
+ this.phase = signal('outgoing-waiting', /* @ts-ignore */
533
+ ...(ngDevMode ? [{ debugName: "phase" }] : /* istanbul ignore next */ []));
534
+ this.mediaType = signal('voice', /* @ts-ignore */
535
+ ...(ngDevMode ? [{ debugName: "mediaType" }] : /* istanbul ignore next */ []));
536
+ this.videoEnabled = signal(false, /* @ts-ignore */
537
+ ...(ngDevMode ? [{ debugName: "videoEnabled" }] : /* istanbul ignore next */ []));
538
+ this.micMuted = signal(false, /* @ts-ignore */
539
+ ...(ngDevMode ? [{ debugName: "micMuted" }] : /* istanbul ignore next */ []));
540
+ this.currentUserId = signal(null, /* @ts-ignore */
541
+ ...(ngDevMode ? [{ debugName: "currentUserId" }] : /* istanbul ignore next */ []));
542
+ this.callId = signal(null, /* @ts-ignore */
543
+ ...(ngDevMode ? [{ debugName: "callId" }] : /* istanbul ignore next */ []));
544
+ this.ringTimeoutId = null;
545
+ this.outcomeSub = null;
546
+ this.callEventsSub = null;
547
+ this.closing = false;
548
+ this.accepting = false;
549
+ this.activeSince = null;
550
+ this.initiatorUserId = null;
551
+ this.audioDevices = signal([], /* @ts-ignore */
552
+ ...(ngDevMode ? [{ debugName: "audioDevices" }] : /* istanbul ignore next */ []));
553
+ this.videoDevices = signal([], /* @ts-ignore */
554
+ ...(ngDevMode ? [{ debugName: "videoDevices" }] : /* istanbul ignore next */ []));
555
+ this.selectedAudioDeviceId = signal(null, /* @ts-ignore */
556
+ ...(ngDevMode ? [{ debugName: "selectedAudioDeviceId" }] : /* istanbul ignore next */ []));
557
+ this.selectedVideoDeviceId = signal(null, /* @ts-ignore */
558
+ ...(ngDevMode ? [{ debugName: "selectedVideoDeviceId" }] : /* istanbul ignore next */ []));
559
+ this.chatDrawerOpen = signal(false, /* @ts-ignore */
560
+ ...(ngDevMode ? [{ debugName: "chatDrawerOpen" }] : /* istanbul ignore next */ []));
561
+ this.savedActiveConversationId = undefined;
562
+ this.localVideoTrack = this.rtc.localVideoTrack;
563
+ this.remoteVideos = this.rtc.remoteVideos;
564
+ this.localScreenShareTrack = this.rtc.localScreenShareTrack;
565
+ this.remoteScreenShares = this.rtc.remoteScreenShares;
566
+ //#endregion
567
+ //#region ----- Computed Properties -----
568
+ this.peerDisplayName = computed(() => {
569
+ const conversation = this.conversation();
570
+ if (!conversation) {
571
+ return '';
572
+ }
573
+ return axmResolveConversationListAvatar(conversation).title;
574
+ }, /* @ts-ignore */
575
+ ...(ngDevMode ? [{ debugName: "peerDisplayName" }] : /* istanbul ignore next */ []));
576
+ this.peerAvatarSrc = computed(() => {
577
+ const conversation = this.conversation();
578
+ if (!conversation) {
579
+ return '';
580
+ }
581
+ return axmResolveConversationListAvatar(conversation).avatar ?? '';
582
+ }, /* @ts-ignore */
583
+ ...(ngDevMode ? [{ debugName: "peerAvatarSrc" }] : /* istanbul ignore next */ []));
584
+ this.showStage = computed(() => {
585
+ if (this.phase() === 'active' || this.mediaType() === 'video' || this.videoEnabled()) {
586
+ return true;
587
+ }
588
+ return (this.remoteVideos().length > 0 ||
589
+ this.remoteScreenShares().length > 0 ||
590
+ Boolean(this.localScreenShareTrack()));
591
+ }, /* @ts-ignore */
592
+ ...(ngDevMode ? [{ debugName: "showStage" }] : /* istanbul ignore next */ []));
593
+ this.activeScreenShare = computed(() => {
594
+ const local = this.localScreenShareTrack();
595
+ const currentUserId = this.currentUserId();
596
+ const conversation = this.conversation();
597
+ if (local && currentUserId) {
598
+ const self = conversation?.participants?.find((participant) => participant.id === currentUserId);
599
+ return {
600
+ participantId: currentUserId,
601
+ participantName: self?.name ?? 'You',
602
+ isSelf: true,
603
+ track: local,
604
+ };
605
+ }
606
+ const remote = this.remoteScreenShares()[0];
607
+ if (!remote) {
608
+ return null;
609
+ }
610
+ return {
611
+ participantId: remote.participantId,
612
+ participantName: remote.participantName,
613
+ isSelf: false,
614
+ track: remote.track,
615
+ };
616
+ }, /* @ts-ignore */
617
+ ...(ngDevMode ? [{ debugName: "activeScreenShare" }] : /* istanbul ignore next */ []));
618
+ this.showScreenShareLayout = computed(() => Boolean(this.activeScreenShare()), /* @ts-ignore */
619
+ ...(ngDevMode ? [{ debugName: "showScreenShareLayout" }] : /* istanbul ignore next */ []));
620
+ this.showParticipantGrid = computed(() => {
621
+ if (!this.showStage()) {
622
+ return false;
623
+ }
624
+ if (this.phase() === 'active') {
625
+ return true;
626
+ }
627
+ const phase = this.phase();
628
+ return ((phase === 'connecting' || phase === 'outgoing-waiting') &&
629
+ (this.videoEnabled() || this.remoteVideos().length > 0));
630
+ }, /* @ts-ignore */
631
+ ...(ngDevMode ? [{ debugName: "showParticipantGrid" }] : /* istanbul ignore next */ []));
632
+ /** Voice ring / waiting without a video stage — center the profile block. */
633
+ this.idleLayout = computed(() => {
634
+ if (this.showParticipantGrid()) {
635
+ return false;
636
+ }
637
+ if (this.showStage()) {
638
+ return false;
639
+ }
640
+ const phase = this.phase();
641
+ return phase === 'incoming' || phase === 'outgoing-waiting' || phase === 'connecting';
642
+ }, /* @ts-ignore */
643
+ ...(ngDevMode ? [{ debugName: "idleLayout" }] : /* istanbul ignore next */ []));
644
+ this.headerAvatarSize = computed(() => 128, /* @ts-ignore */
645
+ ...(ngDevMode ? [{ debugName: "headerAvatarSize" }] : /* istanbul ignore next */ []));
646
+ this.phaseTextKey = computed(() => {
647
+ switch (this.phase()) {
648
+ case 'incoming':
649
+ return '@conversation:chat.call.is-calling';
650
+ case 'connecting':
651
+ return '@conversation:chat.call.connecting';
652
+ case 'active':
653
+ return '@conversation:chat.call.connected';
654
+ default:
655
+ return '@conversation:chat.call.waiting';
656
+ }
657
+ }, /* @ts-ignore */
658
+ ...(ngDevMode ? [{ debugName: "phaseTextKey" }] : /* istanbul ignore next */ []));
659
+ this.stageTiles = computed(() => {
660
+ const conversation = this.conversation();
661
+ const currentUserId = this.currentUserId();
662
+ if (!conversation || !currentUserId) {
663
+ return [];
664
+ }
665
+ const audioLevels = this.rtc.participantAudioLevels();
666
+ const remoteMicMuted = this.rtc.remoteMicMuted();
667
+ const remoteVideoIds = new Set(this.remoteVideos().map((item) => item.participantId));
668
+ const buildTile = (participant, isSelf) => {
669
+ const id = participant.id;
670
+ const micMuted = isSelf ? this.micMuted() : (remoteMicMuted[id] ?? false);
671
+ const videoEnabled = isSelf ? this.videoEnabled() : remoteVideoIds.has(id);
672
+ const audioLevel = micMuted ? 0 : Math.min(1, Math.max(0, audioLevels[id] ?? 0));
673
+ return {
674
+ id,
675
+ name: participant.name,
676
+ avatar: participant.avatar,
677
+ isSelf,
678
+ micMuted,
679
+ videoEnabled,
680
+ audioLevel,
681
+ };
682
+ };
683
+ const remotes = (conversation.participants ?? []).filter((participant) => participant.id !== currentUserId);
684
+ const self = conversation.participants?.find((participant) => participant.id === currentUserId);
685
+ const tiles = remotes.map((participant) => buildTile(participant, false));
686
+ tiles.push(buildTile({
687
+ id: currentUserId,
688
+ name: self?.name ?? 'You',
689
+ avatar: self?.avatar,
690
+ }, true));
691
+ return tiles;
692
+ }, /* @ts-ignore */
693
+ ...(ngDevMode ? [{ debugName: "stageTiles" }] : /* istanbul ignore next */ []));
694
+ effect(() => {
695
+ const remoteCount = this.rtc.remoteParticipantCount();
696
+ const connectionState = this.rtc.connectionState();
697
+ const phase = this.phase();
698
+ if (connectionState === ConnectionState.Connected &&
699
+ remoteCount > 0 &&
700
+ (phase === 'outgoing-waiting' || phase === 'connecting')) {
701
+ this.#clearRingTimeout();
702
+ this.ringer.stop();
703
+ this.phase.set('active');
704
+ this.activeSince = Date.now();
705
+ void this.rtc.ensureAudioPlayback();
706
+ }
707
+ });
708
+ effect(() => {
709
+ if (this.phase() === 'active' && this.activeSince == null) {
710
+ this.activeSince = Date.now();
711
+ }
712
+ });
713
+ }
714
+ ngOnInit() {
715
+ this.outcomeSub = this.realtimeBus.messageStream$.subscribe((message) => {
716
+ const log = axmReadChatCallLog(message);
717
+ const currentCallId = this.callId();
718
+ if (!log || !currentCallId || log.callId !== currentCallId) {
719
+ return;
720
+ }
721
+ void this.#closeFromRemoteLog();
722
+ });
723
+ this.callEventsSub = this.callEvents.events$.subscribe((payload) => {
724
+ const currentCallId = this.callId();
725
+ if (!currentCallId || payload.callId !== currentCallId) {
726
+ return;
727
+ }
728
+ const selfId = this.currentUserId();
729
+ const fromSelf = Boolean(selfId && payload.fromUserId === selfId);
730
+ if (fromSelf) {
731
+ if (payload.action === 'accept' ||
732
+ payload.action === 'decline' ||
733
+ payload.action === 'cancel' ||
734
+ payload.action === 'end') {
735
+ const phase = this.phase();
736
+ if (phase === 'incoming' || phase === 'outgoing-waiting') {
737
+ void this.#closeFromSiblingDevice();
738
+ }
739
+ }
740
+ return;
741
+ }
742
+ if (payload.action === 'accept') {
743
+ this.activeCallSessions.addParticipant(currentCallId, payload.fromUserId);
744
+ void this.#onPeerAccepted();
745
+ return;
746
+ }
747
+ if (payload.action === 'end') {
748
+ void this.#closeFromRemoteEnd();
749
+ return;
750
+ }
751
+ if (payload.action === 'decline' || payload.action === 'cancel') {
752
+ void this.#closeFromRemoteLog();
753
+ }
754
+ });
755
+ void this.#bootstrap();
756
+ }
757
+ ngOnDestroy() {
758
+ this.ringer.stop();
759
+ this.#clearRingTimeout();
760
+ this.outcomeSub?.unsubscribe();
761
+ this.callEventsSub?.unsubscribe();
762
+ this.#restoreCallConversation();
763
+ if (!this.closing) {
764
+ const phase = this.phase();
765
+ if (phase === 'incoming') {
766
+ void this.#logOutcome('declined');
767
+ }
768
+ else if (phase === 'outgoing-waiting') {
769
+ void this.#logOutcome('cancelled');
770
+ }
771
+ }
772
+ this.signalInbox.releaseCall(this.callId());
773
+ this.activeCallSessions.release(this.callId());
774
+ void this.rtc.disconnect();
775
+ super.ngOnDestroy();
776
+ }
777
+ //#endregion
778
+ //#region ----- Event Handlers -----
779
+ onToggleVideo() {
780
+ void this.#setVideoEnabled(!this.videoEnabled());
781
+ }
782
+ onToggleMute() {
783
+ const nextMuted = !this.micMuted();
784
+ this.micMuted.set(nextMuted);
785
+ void this.rtc.setMicrophoneEnabled(!nextMuted);
786
+ if (!nextMuted) {
787
+ void this.rtc.ensureAudioPlayback();
788
+ }
789
+ }
790
+ async onScreencast() {
791
+ try {
792
+ await this.rtc.toggleScreenShare(!this.rtc.isScreenSharing());
793
+ }
794
+ catch {
795
+ const message = await this.translationService.translateAsync('@conversation:chat.call.media-error');
796
+ this.#toast(message, 'danger');
797
+ }
798
+ }
799
+ onEndCall() {
800
+ if (this.phase() === 'outgoing-waiting') {
801
+ void this.#finishWithLog('cancelled');
802
+ return;
803
+ }
804
+ void this.#endActiveCall();
805
+ }
806
+ onAccept() {
807
+ void this.#acceptIncoming();
808
+ }
809
+ onDecline() {
810
+ void this.#finishWithLog('declined');
811
+ }
812
+ onToggleChatDrawer() {
813
+ this.chatDrawerOpen.update((open) => !open);
814
+ }
815
+ async onAddPeople() {
816
+ const conversation = this.conversation();
817
+ const callId = this.callId();
818
+ const currentUserId = this.currentUserId();
819
+ if (!conversation?.id || !callId || !currentUserId || this.phase() !== 'active') {
820
+ return;
821
+ }
822
+ const conversationId = conversation.id.trim();
823
+ const picked = await axmOpenChatCallAddPeopleDialog(this.layoutBuilder, this.translationService);
824
+ if (!picked) {
825
+ return;
826
+ }
827
+ const inCallIds = new Set([currentUserId, ...this.rtc.getConnectedParticipantIds()]);
828
+ const targetUserIds = picked.filter((userId) => !inCallIds.has(userId));
829
+ if (!targetUserIds.length) {
830
+ const message = await this.translationService.translateAsync('@conversation:chat.call.add-people-all-in-call');
831
+ this.#toast(message, 'default');
832
+ return;
833
+ }
834
+ try {
835
+ const participantIds = new Set((conversation.participants ?? []).map((participant) => participant.id));
836
+ const toAddToConversation = targetUserIds.filter((userId) => !participantIds.has(userId));
837
+ if (toAddToConversation.length) {
838
+ const updated = await this.conversationApi.addParticipants(conversationId, toAddToConversation);
839
+ this.conversation.set(updated);
840
+ }
841
+ await this.callSignal.signal({
842
+ conversationId,
843
+ action: 'invite',
844
+ media: this.mediaType(),
845
+ callId,
846
+ targetUserIds,
847
+ });
848
+ this.#trackCallParticipants(targetUserIds);
849
+ const message = await this.translationService.translateAsync('@conversation:chat.call.add-people-success');
850
+ this.#toast(message, 'success');
851
+ }
852
+ catch (error) {
853
+ const fallback = await this.translationService.translateAsync('@conversation:chat.call.add-people-error');
854
+ this.#toast(error instanceof Error && error.message ? error.message : fallback, 'danger');
855
+ }
856
+ }
857
+ onRequestDevices(kind) {
858
+ void this.#refreshDevices(kind);
859
+ }
860
+ onPickDevice(choice) {
861
+ if (choice.kind === 'audioinput') {
862
+ this.selectedAudioDeviceId.set(choice.deviceId);
863
+ }
864
+ else {
865
+ this.selectedVideoDeviceId.set(choice.deviceId);
866
+ }
867
+ void this.rtc.switchInputDevice(choice.kind, choice.deviceId);
868
+ }
869
+ //#endregion
870
+ //#region ----- Bootstrap -----
871
+ async #bootstrap() {
872
+ const conversation = this.sessionConversation;
873
+ const conversationId = conversation?.id?.trim();
874
+ const media = this.sessionMedia === 'video' ? 'video' : 'voice';
875
+ const phase = this.sessionPhase === 'incoming' ||
876
+ this.sessionPhase === 'active' ||
877
+ this.sessionPhase === 'connecting' ||
878
+ this.sessionPhase === 'outgoing-waiting'
879
+ ? this.sessionPhase
880
+ : 'outgoing-waiting';
881
+ this.mediaType.set(media);
882
+ this.phase.set(phase);
883
+ this.videoEnabled.set(media === 'video');
884
+ this.callId.set(this.sessionCallId?.trim() || createRandomUuid());
885
+ this.activeCallSessions.engage(this.callId());
886
+ if (!conversation || !conversationId) {
887
+ this.loading.set(false);
888
+ this.error.set(true);
889
+ return;
890
+ }
891
+ this.loading.set(true);
892
+ this.error.set(false);
893
+ this.errorMessage.set(null);
894
+ this.conversation.set(conversation);
895
+ try {
896
+ await this.#bindCallConversation();
897
+ const currentUser = await this.userApi.getCurrentUser();
898
+ this.currentUserId.set(currentUser.id);
899
+ this.initiatorUserId =
900
+ phase === 'incoming'
901
+ ? this.sessionInitiatorUserId?.trim() || null
902
+ : currentUser.id;
903
+ this.videoEnabled.set(media === 'video');
904
+ this.micMuted.set(false);
905
+ if (phase === 'incoming') {
906
+ this.#trackCallParticipants((conversation.participants ?? []).map((participant) => participant.id));
907
+ this.ringer.playIncoming();
908
+ void this.#refreshDevices();
909
+ return;
910
+ }
911
+ this.phase.set('outgoing-waiting');
912
+ this.ringer.playOutgoing();
913
+ await this.#ringPeers(currentUser.id);
914
+ this.#armRingTimeout();
915
+ void this.#connectMedia(currentUser.id, currentUser.name, conversationId, media).catch(async (error) => {
916
+ const message = await this.#resolveCallConnectErrorMessage(error);
917
+ this.errorMessage.set(message);
918
+ this.error.set(true);
919
+ this.ringer.stop();
920
+ this.#clearRingTimeout();
921
+ this.signalInbox.suppressCall(this.callId());
922
+ void this.#signalCallAction('cancel');
923
+ });
924
+ void this.#refreshDevices();
925
+ }
926
+ catch (error) {
927
+ this.error.set(true);
928
+ this.errorMessage.set(await this.#resolveCallConnectErrorMessage(error));
929
+ }
930
+ finally {
931
+ this.loading.set(false);
932
+ }
933
+ }
934
+ //#endregion
935
+ //#region ----- Call Signaling -----
936
+ async #connectMedia(participantIdentity, participantName, conversationId, media) {
937
+ await this.rtc.connect({
938
+ conversationId,
939
+ participantIdentity,
940
+ participantName,
941
+ media,
942
+ });
943
+ }
944
+ async #ringPeers(fromUserId) {
945
+ const conversation = this.conversation();
946
+ const callId = this.callId();
947
+ if (!conversation?.id || !callId) {
948
+ return;
949
+ }
950
+ const targetUserIds = this.#resolveInitialRingTargetUserIds(conversation, fromUserId);
951
+ if (!targetUserIds.length) {
952
+ return;
953
+ }
954
+ this.#trackCallParticipants(targetUserIds);
955
+ try {
956
+ await this.callSignal.signal({
957
+ conversationId: conversation.id,
958
+ action: 'invite',
959
+ media: this.mediaType(),
960
+ callId,
961
+ targetUserIds,
962
+ });
963
+ }
964
+ catch {
965
+ // Built-in realtime is the primary ring path.
966
+ }
967
+ }
968
+ /**
969
+ * Private chats ring only the peer; group chats ring every participant except self.
970
+ */
971
+ #resolveInitialRingTargetUserIds(conversation, fromUserId) {
972
+ const scopedFrom = fromUserId.trim();
973
+ const participantIds = (conversation.participants ?? [])
974
+ .map((participant) => participant.id?.trim())
975
+ .filter((id) => Boolean(id) && id !== scopedFrom);
976
+ if (conversation.type === 'private') {
977
+ return participantIds.slice(0, 1);
978
+ }
979
+ return participantIds;
980
+ }
981
+ async #acceptIncoming() {
982
+ if (this.accepting || this.closing) {
983
+ return;
984
+ }
985
+ const conversationId = this.conversation()?.id?.trim();
986
+ const currentUserId = this.currentUserId();
987
+ const callId = this.callId();
988
+ if (!conversationId || !currentUserId) {
989
+ return;
990
+ }
991
+ this.signalInbox.suppressCall(callId);
992
+ this.accepting = true;
993
+ this.#clearRingTimeout();
994
+ this.ringer.stop();
995
+ this.phase.set('connecting');
996
+ void this.#signalCallAction('accept');
997
+ try {
998
+ await this.#connectMedia(currentUserId, this.#selfDisplayName(currentUserId), conversationId, this.mediaType());
999
+ this.phase.set('active');
1000
+ this.activeSince = Date.now();
1001
+ void this.rtc.ensureAudioPlayback();
1002
+ if (this.mediaType() === 'video') {
1003
+ void this.#setVideoEnabled(true);
1004
+ }
1005
+ }
1006
+ catch (error) {
1007
+ this.accepting = false;
1008
+ this.ringer.stop();
1009
+ this.errorMessage.set(await this.#resolveCallConnectErrorMessage(error));
1010
+ this.error.set(true);
1011
+ void this.#signalCallAction('end');
1012
+ }
1013
+ }
1014
+ async #onPeerAccepted() {
1015
+ if (this.closing) {
1016
+ return;
1017
+ }
1018
+ this.#clearRingTimeout();
1019
+ this.ringer.stop();
1020
+ this.phase.set(this.rtc.connectionState() === ConnectionState.Connected ? 'active' : 'connecting');
1021
+ if (this.phase() === 'active') {
1022
+ this.activeSince = Date.now();
1023
+ }
1024
+ void this.rtc.ensureAudioPlayback();
1025
+ }
1026
+ async #signalCallAction(action) {
1027
+ const conversation = this.conversation();
1028
+ const callId = this.callId();
1029
+ const fromUserId = this.currentUserId();
1030
+ if (!conversation?.id || !callId || !fromUserId) {
1031
+ return;
1032
+ }
1033
+ const targetUserIds = this.#resolveCallSignalTargetUserIds(conversation, fromUserId, action);
1034
+ if (!targetUserIds.length) {
1035
+ return;
1036
+ }
1037
+ try {
1038
+ await this.callSignal.signal({
1039
+ conversationId: conversation.id,
1040
+ action,
1041
+ media: this.mediaType(),
1042
+ callId,
1043
+ targetUserIds,
1044
+ });
1045
+ }
1046
+ catch {
1047
+ // Media join is the source of truth; signaling is best-effort.
1048
+ }
1049
+ }
1050
+ /** During an active call, signal everyone who joined or was invited — not only local conversation.participants. */
1051
+ #resolveCallSignalTargetUserIds(conversation, fromUserId, action) {
1052
+ const scopedFrom = fromUserId.trim();
1053
+ const connectedIds = this.rtc
1054
+ .getConnectedParticipantIds()
1055
+ .map((id) => id.trim())
1056
+ .filter(Boolean);
1057
+ const participantIds = (conversation.participants ?? [])
1058
+ .map((participant) => participant.id?.trim())
1059
+ .filter((id) => Boolean(id) && id !== scopedFrom);
1060
+ const trackedIds = this.activeCallSessions.getParticipantIds(this.callId());
1061
+ if (action === 'end') {
1062
+ return this.#unionCallTargetUserIds(scopedFrom, participantIds, connectedIds, trackedIds);
1063
+ }
1064
+ if (action === 'accept') {
1065
+ const union = this.#unionCallTargetUserIds(scopedFrom, participantIds, connectedIds, trackedIds);
1066
+ if (union.length) {
1067
+ return union;
1068
+ }
1069
+ if (conversation.type === 'private') {
1070
+ return participantIds.slice(0, 1);
1071
+ }
1072
+ return participantIds;
1073
+ }
1074
+ if (action === 'decline' || action === 'cancel') {
1075
+ const union = this.#unionCallTargetUserIds(scopedFrom, participantIds, trackedIds, []);
1076
+ if (union.length) {
1077
+ return union;
1078
+ }
1079
+ if (conversation.type === 'private') {
1080
+ return participantIds.slice(0, 1);
1081
+ }
1082
+ return participantIds;
1083
+ }
1084
+ return participantIds;
1085
+ }
1086
+ #unionCallTargetUserIds(fromUserId, participantIds, connectedIds, trackedIds) {
1087
+ const targets = new Set();
1088
+ for (const id of participantIds) {
1089
+ targets.add(id);
1090
+ }
1091
+ for (const id of connectedIds) {
1092
+ if (id !== fromUserId) {
1093
+ targets.add(id);
1094
+ }
1095
+ }
1096
+ for (const id of trackedIds) {
1097
+ if (id !== fromUserId) {
1098
+ targets.add(id);
1099
+ }
1100
+ }
1101
+ return [...targets];
1102
+ }
1103
+ #trackCallParticipants(userIds) {
1104
+ const callId = this.callId();
1105
+ const selfId = this.currentUserId();
1106
+ if (!callId) {
1107
+ return;
1108
+ }
1109
+ for (const userId of userIds) {
1110
+ const scoped = userId?.trim();
1111
+ if (scoped && scoped !== selfId) {
1112
+ this.activeCallSessions.addParticipant(callId, scoped);
1113
+ }
1114
+ }
1115
+ }
1116
+ #selfDisplayName(currentUserId) {
1117
+ return this.conversation()?.participants?.find((participant) => participant.id === currentUserId)?.name;
1118
+ }
1119
+ #armRingTimeout() {
1120
+ this.#clearRingTimeout();
1121
+ this.ringTimeoutId = setTimeout(() => {
1122
+ if (this.phase() === 'outgoing-waiting') {
1123
+ this.ringer.stop();
1124
+ void this.translationService
1125
+ .translateAsync('@conversation:chat.call.no-answer')
1126
+ .then((message) => this.#toast(message, 'default'));
1127
+ void this.#finishWithLog('missed');
1128
+ }
1129
+ }, 45_000);
1130
+ }
1131
+ #clearRingTimeout() {
1132
+ if (this.ringTimeoutId != null) {
1133
+ clearTimeout(this.ringTimeoutId);
1134
+ this.ringTimeoutId = null;
1135
+ }
1136
+ }
1137
+ async #finishWithLog(outcome) {
1138
+ if (this.closing) {
1139
+ return;
1140
+ }
1141
+ this.closing = true;
1142
+ this.signalInbox.suppressCall(this.callId());
1143
+ this.ringer.stop();
1144
+ this.#clearRingTimeout();
1145
+ await this.#signalCallAction(outcome === 'declined' ? 'decline' : 'cancel');
1146
+ await this.#logOutcome(outcome);
1147
+ await this.#closeLocal();
1148
+ }
1149
+ async #endActiveCall() {
1150
+ if (this.closing) {
1151
+ return;
1152
+ }
1153
+ this.closing = true;
1154
+ this.signalInbox.suppressCall(this.callId());
1155
+ this.#trackCallParticipants(this.rtc.getConnectedParticipantIds());
1156
+ this.ringer.stop();
1157
+ this.#clearRingTimeout();
1158
+ await this.#logCompletedIfActive();
1159
+ if (this.activeSince == null && this.phase() === 'connecting') {
1160
+ await this.#logOutcome('cancelled');
1161
+ }
1162
+ await this.#signalCallAction('end');
1163
+ await this.#closeLocal();
1164
+ }
1165
+ async #logCompletedIfActive() {
1166
+ if (this.activeSince == null) {
1167
+ return;
1168
+ }
1169
+ const conversation = this.conversation();
1170
+ if (!conversation) {
1171
+ return;
1172
+ }
1173
+ const conversationId = conversation.id?.trim();
1174
+ const callId = this.callId();
1175
+ const currentUserId = this.currentUserId();
1176
+ if (!conversationId || !callId || !currentUserId) {
1177
+ return;
1178
+ }
1179
+ const durationSec = Math.max(1, Math.round((Date.now() - this.activeSince) / 1000));
1180
+ const joinedUserIds = [
1181
+ ...new Set([currentUserId, ...this.rtc.getConnectedParticipantIds().map((id) => id.trim()).filter(Boolean)]),
1182
+ ];
1183
+ const allParticipantIds = (conversation.participants ?? [])
1184
+ .map((participant) => participant.id?.trim())
1185
+ .filter((id) => Boolean(id));
1186
+ const absentUserIds = allParticipantIds.filter((id) => !joinedUserIds.includes(id));
1187
+ await this.#logOutcome('completed', {
1188
+ durationSec,
1189
+ joinedUserIds,
1190
+ absentUserIds,
1191
+ });
1192
+ }
1193
+ async #logOutcome(outcome, extras) {
1194
+ const conversation = this.conversation();
1195
+ const conversationId = conversation?.id?.trim();
1196
+ const callId = this.callId();
1197
+ const currentUserId = this.currentUserId();
1198
+ if (!conversationId || !callId) {
1199
+ return;
1200
+ }
1201
+ try {
1202
+ const result = await this.callSignal.log({
1203
+ conversationId,
1204
+ outcome,
1205
+ media: this.mediaType(),
1206
+ callId,
1207
+ initiatorUserId: this.initiatorUserId ?? currentUserId ?? undefined,
1208
+ isGroup: conversation?.type !== 'private',
1209
+ ...extras,
1210
+ });
1211
+ const peerUserId = (conversation?.participants ?? [])
1212
+ .map((participant) => participant.id?.trim())
1213
+ .find((id) => id && id !== currentUserId) ?? null;
1214
+ const peerUserName = peerUserId
1215
+ ? conversation?.participants?.find((participant) => participant.id === peerUserId)?.name
1216
+ : null;
1217
+ const fallback = axmBuildChatCallLogMessage({
1218
+ messageId: result.messageId,
1219
+ conversationId,
1220
+ senderId: currentUserId ?? '',
1221
+ outcome,
1222
+ media: this.mediaType(),
1223
+ callId,
1224
+ initiatorUserId: this.initiatorUserId ?? currentUserId ?? undefined,
1225
+ isGroup: conversation?.type !== 'private',
1226
+ actorUserId: currentUserId ?? undefined,
1227
+ peerUserId,
1228
+ peerUserName,
1229
+ durationSec: extras?.durationSec,
1230
+ joinedUserIds: extras?.joinedUserIds,
1231
+ absentUserIds: extras?.absentUserIds,
1232
+ });
1233
+ const logged = (await this.conversationStore.getMessage(result.messageId)) ?? fallback;
1234
+ this.conversationStore.publishNewMessage(logged);
1235
+ void this.conversationStore.touchLastMessage(conversationId, logged);
1236
+ }
1237
+ catch (error) {
1238
+ console.warn('[chat-call] Failed to persist call log message', error);
1239
+ }
1240
+ }
1241
+ async #closeFromRemoteLog() {
1242
+ if (this.closing || this.phase() === 'active') {
1243
+ return;
1244
+ }
1245
+ this.closing = true;
1246
+ this.ringer.stop();
1247
+ this.#clearRingTimeout();
1248
+ await this.#closeLocal();
1249
+ }
1250
+ async #closeFromRemoteEnd() {
1251
+ if (this.closing) {
1252
+ return;
1253
+ }
1254
+ this.closing = true;
1255
+ this.ringer.stop();
1256
+ this.#clearRingTimeout();
1257
+ await this.#closeLocal();
1258
+ }
1259
+ /** Another device of this user answered/declined — dismiss ringing UI without logging again. */
1260
+ async #closeFromSiblingDevice() {
1261
+ if (this.closing) {
1262
+ return;
1263
+ }
1264
+ this.closing = true;
1265
+ this.signalInbox.suppressCall(this.callId());
1266
+ this.ringer.stop();
1267
+ this.#clearRingTimeout();
1268
+ await this.#closeLocal();
1269
+ }
1270
+ async #closeLocal() {
1271
+ this.ringer.stop();
1272
+ this.#restoreCallConversation();
1273
+ this.signalInbox.releaseCall(this.callId());
1274
+ await this.rtc.disconnect();
1275
+ this.close();
1276
+ }
1277
+ //#endregion
1278
+ //#region ----- Conversation Focus -----
1279
+ async #bindCallConversation() {
1280
+ const conversationId = this.conversation()?.id?.trim();
1281
+ if (!conversationId) {
1282
+ return;
1283
+ }
1284
+ if (this.savedActiveConversationId === undefined) {
1285
+ this.savedActiveConversationId = this.conversationService.activeConversationId();
1286
+ }
1287
+ await this.conversationService.selectConversation(conversationId);
1288
+ this.chatConversationApi.reportFocusedConversation(conversationId);
1289
+ }
1290
+ #restoreCallConversation() {
1291
+ if (this.savedActiveConversationId === undefined) {
1292
+ return;
1293
+ }
1294
+ const conversationId = this.savedActiveConversationId;
1295
+ this.savedActiveConversationId = undefined;
1296
+ this.chatConversationApi.reportFocusedConversation(typeof conversationId === 'string' ? conversationId : null);
1297
+ void this.conversationService.selectConversation(conversationId);
1298
+ }
1299
+ //#endregion
1300
+ //#region ----- Media Helpers -----
1301
+ async #refreshDevices(kind) {
1302
+ try {
1303
+ if (!kind || kind === 'audioinput') {
1304
+ this.audioDevices.set(await this.rtc.listInputDevices('audioinput'));
1305
+ }
1306
+ if (!kind || kind === 'videoinput') {
1307
+ this.videoDevices.set(await this.rtc.listInputDevices('videoinput'));
1308
+ }
1309
+ }
1310
+ catch {
1311
+ // Device lists stay empty until the browser grants media permission.
1312
+ }
1313
+ }
1314
+ async #setVideoEnabled(enabled) {
1315
+ this.videoEnabled.set(enabled);
1316
+ if (enabled) {
1317
+ this.mediaType.set('video');
1318
+ }
1319
+ try {
1320
+ await this.rtc.setCameraEnabled(enabled);
1321
+ }
1322
+ catch (error) {
1323
+ this.videoEnabled.set(false);
1324
+ const message = await this.#resolveCallMediaErrorMessage(error);
1325
+ this.#toast(message, 'danger');
1326
+ }
1327
+ }
1328
+ async #resolveCallConnectErrorMessage(error) {
1329
+ const mediaIssue = axmReadChatCallMediaContextIssue(error);
1330
+ if (mediaIssue === 'secure-context') {
1331
+ return this.translationService.translateAsync('@conversation:chat.call.media-secure-context-required');
1332
+ }
1333
+ if (mediaIssue === 'unsupported') {
1334
+ return this.translationService.translateAsync('@conversation:chat.call.media-unavailable');
1335
+ }
1336
+ const fallback = await this.translationService.translateAsync('@conversation:chat.call.connect-error');
1337
+ return error instanceof Error && error.message ? error.message : fallback;
1338
+ }
1339
+ async #resolveCallMediaErrorMessage(error) {
1340
+ const mediaIssue = axmReadChatCallMediaContextIssue(error);
1341
+ if (mediaIssue === 'secure-context') {
1342
+ return this.translationService.translateAsync('@conversation:chat.call.media-secure-context-required');
1343
+ }
1344
+ if (mediaIssue === 'unsupported') {
1345
+ return this.translationService.translateAsync('@conversation:chat.call.media-unavailable');
1346
+ }
1347
+ return this.translationService.translateAsync('@conversation:chat.call.media-error');
1348
+ }
1349
+ #toast(content, color) {
1350
+ this.toastService.show({
1351
+ color,
1352
+ content,
1353
+ location: 'bottom-center',
1354
+ timeOut: 3000,
1355
+ });
1356
+ }
1357
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallSessionPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1358
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMChatCallSessionPageComponent, isStandalone: true, selector: "axm-chat-call-session-page", host: { classAttribute: "ax-dark axm-chat-call-session-page" }, providers: [...AXM_CHAT_CALL_RTC_PROVIDERS], usesInheritance: true, ngImport: i0, template: "<div class=\"axm-chat-call-session\">\n <!-- ----- Loading conversation / connecting RTC ----- -->\n @if (loading()) {\n <div class=\"axm-chat-call-session__status-block\">\n {{ '@conversation:chat.call.loading' | translate | async }}\n </div>\n }\n <!-- ----- Load / connect error ----- -->\n @else if (error()) {\n <div class=\"axm-chat-call-session__status-block axm-chat-call-session__status-block--error\">\n <p>{{ errorMessage() || ('@conversation:chat.call.load-error' | translate | async) }}</p>\n <button type=\"button\" class=\"axm-chat-call-session__text-button\" (click)=\"onEndCall()\">\n {{ '@conversation:chat.call.cancel' | translate | async }}\n </button>\n </div>\n }\n <!-- ----- Call session ----- -->\n @else {\n <ax-drawer-container class=\"axm-chat-call-session__drawer-host\" dir=\"ltr\">\n <ax-content class=\"axm-chat-call-session__drawer-main\">\n <div\n class=\"axm-chat-call-session__main\"\n [class.axm-chat-call-session__main--idle]=\"idleLayout()\"\n [class.axm-chat-call-session__main--grid]=\"showParticipantGrid() && !showScreenShareLayout()\"\n [class.axm-chat-call-session__main--present]=\"showScreenShareLayout()\"\n >\n <div\n class=\"axm-chat-call-session__body\"\n [class.axm-chat-call-session__body--grid]=\"showParticipantGrid()\"\n >\n <!-- ----- Centered profile (ringing / incoming voice) ----- -->\n @if (!showParticipantGrid()) {\n <div class=\"axm-chat-call-session__header\">\n <axp-avatar\n [size]=\"headerAvatarSize()\"\n [fullName]=\"peerDisplayName()\"\n [src]=\"peerAvatarSrc()\"\n />\n <h1 class=\"axm-chat-call-session__name\">{{ peerDisplayName() }}</h1>\n <p class=\"axm-chat-call-session__phase-text\">{{ phaseTextKey() | translate | async }}</p>\n </div>\n }\n\n <!-- ----- Participant grid (active / video preview) ----- -->\n @if (showParticipantGrid()) {\n <!-- ----- Screen share: large present + compact participant rail ----- -->\n @if (showScreenShareLayout()) {\n @if (activeScreenShare(); as share) {\n <div class=\"axm-chat-call-session__stage axm-chat-call-session__stage--present\">\n <div class=\"axm-chat-call-session__present-main\">\n <div class=\"axm-chat-call-session__present-screen\">\n <video\n class=\"axm-chat-call-session__present-video\"\n autoplay\n playsinline\n [muted]=\"share.isSelf\"\n [axmChatCallTrack]=\"share.track\"\n ></video>\n <span class=\"axm-chat-call-session__present-label\">\n {{ share.participantName }}\n \u00B7\n {{ '@conversation:chat.call.presenting' | translate | async }}\n </span>\n </div>\n </div>\n <div class=\"axm-chat-call-session__present-rail\">\n @for (tile of stageTiles(); track tile.id) {\n <axm-chat-call-participant-tile\n [tile]=\"tile\"\n [videoTrack]=\"resolveVideoTrack(tile)\"\n [compact]=\"true\"\n />\n }\n </div>\n </div>\n }\n }\n <!-- ----- Default equal-width participant grid ----- -->\n @else {\n <div class=\"axm-chat-call-session__stage axm-chat-call-session__stage--grid\">\n <div\n class=\"axm-chat-call-session__grid\"\n [attr.data-tile-count]=\"stageTiles().length\"\n >\n @for (tile of stageTiles(); track tile.id) {\n <axm-chat-call-participant-tile\n [tile]=\"tile\"\n [videoTrack]=\"resolveVideoTrack(tile)\"\n />\n }\n </div>\n </div>\n }\n }\n </div>\n\n <axm-chat-call-controls\n [phase]=\"phase()\"\n [videoEnabled]=\"videoEnabled()\"\n [micMuted]=\"micMuted()\"\n [showAddPeople]=\"phase() === 'active'\"\n [showScreencast]=\"phase() === 'active'\"\n [showChat]=\"phase() === 'active'\"\n [chatOpen]=\"chatDrawerOpen()\"\n [audioDevices]=\"audioDevices()\"\n [videoDevices]=\"videoDevices()\"\n [selectedAudioDeviceId]=\"selectedAudioDeviceId()\"\n [selectedVideoDeviceId]=\"selectedVideoDeviceId()\"\n (screencast)=\"onScreencast()\"\n (openChat)=\"onToggleChatDrawer()\"\n (toggleVideo)=\"onToggleVideo()\"\n (toggleMute)=\"onToggleMute()\"\n (endCall)=\"onEndCall()\"\n (accept)=\"onAccept()\"\n (decline)=\"onDecline()\"\n (addPeople)=\"onAddPeople()\"\n (requestDevices)=\"onRequestDevices($event)\"\n (pickDevice)=\"onPickDevice($event)\"\n />\n </div>\n </ax-content>\n\n <!-- ----- In-call chat (push drawer) ----- -->\n <ax-drawer\n class=\"axm-chat-call-session__chat-drawer\"\n location=\"end\"\n mode=\"push\"\n [collapsed]=\"!chatDrawerOpen()\"\n >\n <ax-content class=\"axm-chat-call-session__chat-drawer-content\">\n <header class=\"axm-chat-call-session__chat-drawer-header\">\n <h2 class=\"axm-chat-call-session__chat-drawer-title\">{{ peerDisplayName() }}</h2>\n <ax-button\n look=\"blank\"\n (onClick)=\"onToggleChatDrawer()\"\n [attr.aria-label]=\"('@conversation:chat.call.close-chat' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-xmark\" />\n </ax-prefix>\n </ax-button>\n </header>\n @if (chatDrawerOpen()) {\n <axm-chat-call-in-call-chat class=\"axm-chat-call-session__chat-drawer-body\" />\n }\n </ax-content>\n </ax-drawer>\n </ax-drawer-container>\n }\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXPAvatarComponent, selector: "axp-avatar", inputs: ["size", "src", "fullName", "showTitle", "fallbackText", "placeholder"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "component", type: AXMChatCallControlsComponent, selector: "axm-chat-call-controls", inputs: ["phase", "videoEnabled", "micMuted", "showAddPeople", "showScreencast", "showChat", "chatOpen", "audioDevices", "videoDevices", "selectedAudioDeviceId", "selectedVideoDeviceId"], outputs: ["screencast", "openChat", "toggleVideo", "toggleMute", "endCall", "accept", "decline", "addPeople", "pickDevice", "requestDevices"] }, { kind: "component", type: AXMChatCallParticipantTileComponent, selector: "axm-chat-call-participant-tile", inputs: ["tile", "videoTrack", "compact"] }, { kind: "directive", type: AXMChatCallVideoAttachDirective, selector: "video[axmChatCallTrack]", inputs: ["axmChatCallTrack"] }, { kind: "component", type: AXMChatCallInCallChatComponent, selector: "axm-chat-call-in-call-chat" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1359
+ }
1360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMChatCallSessionPageComponent, decorators: [{
1361
+ type: Component,
1362
+ args: [{ selector: 'axm-chat-call-session-page', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1363
+ class: 'ax-dark axm-chat-call-session-page',
1364
+ }, providers: [...AXM_CHAT_CALL_RTC_PROVIDERS], imports: [
1365
+ AXPAvatarComponent,
1366
+ AXTranslationModule,
1367
+ AsyncPipe,
1368
+ AXButtonModule,
1369
+ AXDecoratorModule,
1370
+ AXDrawerModule,
1371
+ AXMChatCallControlsComponent,
1372
+ AXMChatCallParticipantTileComponent,
1373
+ AXMChatCallVideoAttachDirective,
1374
+ AXMChatCallInCallChatComponent,
1375
+ ], template: "<div class=\"axm-chat-call-session\">\n <!-- ----- Loading conversation / connecting RTC ----- -->\n @if (loading()) {\n <div class=\"axm-chat-call-session__status-block\">\n {{ '@conversation:chat.call.loading' | translate | async }}\n </div>\n }\n <!-- ----- Load / connect error ----- -->\n @else if (error()) {\n <div class=\"axm-chat-call-session__status-block axm-chat-call-session__status-block--error\">\n <p>{{ errorMessage() || ('@conversation:chat.call.load-error' | translate | async) }}</p>\n <button type=\"button\" class=\"axm-chat-call-session__text-button\" (click)=\"onEndCall()\">\n {{ '@conversation:chat.call.cancel' | translate | async }}\n </button>\n </div>\n }\n <!-- ----- Call session ----- -->\n @else {\n <ax-drawer-container class=\"axm-chat-call-session__drawer-host\" dir=\"ltr\">\n <ax-content class=\"axm-chat-call-session__drawer-main\">\n <div\n class=\"axm-chat-call-session__main\"\n [class.axm-chat-call-session__main--idle]=\"idleLayout()\"\n [class.axm-chat-call-session__main--grid]=\"showParticipantGrid() && !showScreenShareLayout()\"\n [class.axm-chat-call-session__main--present]=\"showScreenShareLayout()\"\n >\n <div\n class=\"axm-chat-call-session__body\"\n [class.axm-chat-call-session__body--grid]=\"showParticipantGrid()\"\n >\n <!-- ----- Centered profile (ringing / incoming voice) ----- -->\n @if (!showParticipantGrid()) {\n <div class=\"axm-chat-call-session__header\">\n <axp-avatar\n [size]=\"headerAvatarSize()\"\n [fullName]=\"peerDisplayName()\"\n [src]=\"peerAvatarSrc()\"\n />\n <h1 class=\"axm-chat-call-session__name\">{{ peerDisplayName() }}</h1>\n <p class=\"axm-chat-call-session__phase-text\">{{ phaseTextKey() | translate | async }}</p>\n </div>\n }\n\n <!-- ----- Participant grid (active / video preview) ----- -->\n @if (showParticipantGrid()) {\n <!-- ----- Screen share: large present + compact participant rail ----- -->\n @if (showScreenShareLayout()) {\n @if (activeScreenShare(); as share) {\n <div class=\"axm-chat-call-session__stage axm-chat-call-session__stage--present\">\n <div class=\"axm-chat-call-session__present-main\">\n <div class=\"axm-chat-call-session__present-screen\">\n <video\n class=\"axm-chat-call-session__present-video\"\n autoplay\n playsinline\n [muted]=\"share.isSelf\"\n [axmChatCallTrack]=\"share.track\"\n ></video>\n <span class=\"axm-chat-call-session__present-label\">\n {{ share.participantName }}\n \u00B7\n {{ '@conversation:chat.call.presenting' | translate | async }}\n </span>\n </div>\n </div>\n <div class=\"axm-chat-call-session__present-rail\">\n @for (tile of stageTiles(); track tile.id) {\n <axm-chat-call-participant-tile\n [tile]=\"tile\"\n [videoTrack]=\"resolveVideoTrack(tile)\"\n [compact]=\"true\"\n />\n }\n </div>\n </div>\n }\n }\n <!-- ----- Default equal-width participant grid ----- -->\n @else {\n <div class=\"axm-chat-call-session__stage axm-chat-call-session__stage--grid\">\n <div\n class=\"axm-chat-call-session__grid\"\n [attr.data-tile-count]=\"stageTiles().length\"\n >\n @for (tile of stageTiles(); track tile.id) {\n <axm-chat-call-participant-tile\n [tile]=\"tile\"\n [videoTrack]=\"resolveVideoTrack(tile)\"\n />\n }\n </div>\n </div>\n }\n }\n </div>\n\n <axm-chat-call-controls\n [phase]=\"phase()\"\n [videoEnabled]=\"videoEnabled()\"\n [micMuted]=\"micMuted()\"\n [showAddPeople]=\"phase() === 'active'\"\n [showScreencast]=\"phase() === 'active'\"\n [showChat]=\"phase() === 'active'\"\n [chatOpen]=\"chatDrawerOpen()\"\n [audioDevices]=\"audioDevices()\"\n [videoDevices]=\"videoDevices()\"\n [selectedAudioDeviceId]=\"selectedAudioDeviceId()\"\n [selectedVideoDeviceId]=\"selectedVideoDeviceId()\"\n (screencast)=\"onScreencast()\"\n (openChat)=\"onToggleChatDrawer()\"\n (toggleVideo)=\"onToggleVideo()\"\n (toggleMute)=\"onToggleMute()\"\n (endCall)=\"onEndCall()\"\n (accept)=\"onAccept()\"\n (decline)=\"onDecline()\"\n (addPeople)=\"onAddPeople()\"\n (requestDevices)=\"onRequestDevices($event)\"\n (pickDevice)=\"onPickDevice($event)\"\n />\n </div>\n </ax-content>\n\n <!-- ----- In-call chat (push drawer) ----- -->\n <ax-drawer\n class=\"axm-chat-call-session__chat-drawer\"\n location=\"end\"\n mode=\"push\"\n [collapsed]=\"!chatDrawerOpen()\"\n >\n <ax-content class=\"axm-chat-call-session__chat-drawer-content\">\n <header class=\"axm-chat-call-session__chat-drawer-header\">\n <h2 class=\"axm-chat-call-session__chat-drawer-title\">{{ peerDisplayName() }}</h2>\n <ax-button\n look=\"blank\"\n (onClick)=\"onToggleChatDrawer()\"\n [attr.aria-label]=\"('@conversation:chat.call.close-chat' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-xmark\" />\n </ax-prefix>\n </ax-button>\n </header>\n @if (chatDrawerOpen()) {\n <axm-chat-call-in-call-chat class=\"axm-chat-call-session__chat-drawer-body\" />\n }\n </ax-content>\n </ax-drawer>\n </ax-drawer-container>\n }\n</div>\n", styles: ["@layer properties;axm-chat-call-session-page{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column}.axm-chat-call-session{box-sizing:border-box;display:flex;height:100%;min-height:0px;width:100%;flex:1}.axm-chat-call-session__drawer-host{display:flex;height:100%;min-height:0px;width:100%;flex:1;direction:ltr}.axm-chat-call-session__drawer-main{display:flex;height:100%;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__chat-drawer{width:min(22rem,100%);max-width:100%;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-content{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;background-color:#1a1c1e}.axm-chat-call-session__chat-drawer-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-session__chat-drawer-header{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-session__chat-drawer-title{margin:0;min-width:0px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-chat-call-session__chat-drawer-body{min-height:0px;flex:1}.axm-chat-call-session__main{display:flex;min-height:0px;min-width:0px;flex:1;flex-direction:column;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 5);padding-top:calc(var(--spacing, .25rem) * 5);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axm-chat-call-session__main--grid,.axm-chat-call-session__main--present{align-items:stretch;padding:calc(var(--spacing, .25rem) * 2);padding-bottom:var(--spacing, .25rem)}.axm-chat-call-session__body{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center}.axm-chat-call-session__main--idle .axm-chat-call-session__body{justify-content:center}.axm-chat-call-session__header{margin-top:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 2);text-align:center}.axm-chat-call-session__main--idle .axm-chat-call-session__header{margin-top:0}.axm-chat-call-session__name{margin:0;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}.axm-chat-call-session__phase-text{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:65%}.axm-chat-call-session__body--grid{flex:1;align-items:stretch}.axm-chat-call-session__stage{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;min-height:0px;width:100%;flex:1;align-items:center;justify-content:center;overflow:hidden}.axm-chat-call-session__stage--grid{margin:0;min-height:0px;flex:1;align-items:stretch;justify-content:stretch;padding:0}.axm-chat-call-session__grid{display:grid;height:100%;min-height:0px;width:100%;flex:1;gap:calc(var(--spacing, .25rem) * 2);grid-auto-rows:minmax(0,1fr)}.axm-chat-call-session__grid[data-tile-count=\"1\"]{grid-template-columns:repeat(1,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"2\"]{grid-template-columns:repeat(2,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"3\"]{grid-template-columns:repeat(3,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"5\"]{grid-template-columns:repeat(5,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"6\"]{grid-template-columns:repeat(6,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"7\"]{grid-template-columns:repeat(7,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"8\"]{grid-template-columns:repeat(8,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"9\"]{grid-template-columns:repeat(9,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"10\"]{grid-template-columns:repeat(10,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"11\"]{grid-template-columns:repeat(11,minmax(0,1fr))}.axm-chat-call-session__grid[data-tile-count=\"12\"]{grid-template-columns:repeat(12,minmax(0,1fr))}.axm-chat-call-session__stage--present{margin:0;display:flex;min-height:0px;width:100%;flex:1;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);padding:0}.axm-chat-call-session__present-main{display:flex;min-height:0px;min-width:0px;flex:1}.axm-chat-call-session__present-screen{position:relative;box-sizing:border-box;min-height:0px;flex:1;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:var(--color-black, #000);border:3px solid #f9ab00;box-shadow:0 0 0 1px #f9ab0059}.axm-chat-call-session__present-video{height:100%;width:100%;background-color:var(--color-black, #000);object-fit:contain}.axm-chat-call-session__present-label{position:absolute;bottom:calc(var(--spacing, .25rem) * 2.5);left:calc(var(--spacing, .25rem) * 2.5);z-index:1;max-width:calc(100% - 1.3rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-session__present-rail{display:flex;height:100%;min-height:0px;width:calc(var(--spacing, .25rem) * 44);flex-shrink:0;flex-direction:column;align-content:flex-start;align-items:stretch;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 2);overflow-x:hidden;overflow-y:auto}.axm-chat-call-session__present-rail axm-chat-call-participant-tile{height:5.75rem;max-height:5.75rem;min-height:5.75rem;flex-shrink:0;flex:0 0 5.75rem}.axm-chat-call-session__status-block{display:flex;min-height:0px;width:100%;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 8);text-align:center}.axm-chat-call-session__status-block--error{color:#ff8a80}.axm-chat-call-session__text-button{cursor:pointer;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:currentcolor;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);opacity:85%}axm-chat-call-controls{margin-top:auto;display:block;width:100%;flex-shrink:0}.axm-chat-call-controls{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:calc(var(--spacing, .25rem) * 5);padding-inline:calc(var(--spacing, .25rem) * 4);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:calc(var(--spacing, .25rem) * 5)}.axm-chat-call-controls__item{position:relative;display:flex;flex-direction:column;align-items:center}.axm-chat-call-controls__action{position:relative;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;color:var(--color-white, #fff)}.axm-chat-call-controls__action:focus-visible{border-radius:var(--radius-lg, .5rem);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:4px;outline-color:#ffffff73}.axm-chat-call-controls__circle{position:relative;display:inline-flex;height:3.25rem;width:3.25rem;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:#3a3d41;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:var(--color-white, #fff)}.axm-chat-call-controls__circle--danger{background-color:#e53935}.axm-chat-call-controls__circle--success{background-color:#4caf50}.axm-chat-call-controls__circle--light{background-color:#f2f2f2;color:#1a1c1e}.axm-chat-call-controls__chevron{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 1.5);top:calc(var(--spacing, .25rem) * -.5);z-index:2;display:inline-flex;height:1.15rem;width:1.15rem;cursor:pointer;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 20%,transparent);background-color:#2b2e32;padding:0;font-size:.55rem;color:var(--color-white, #fff)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__chevron{border-color:color-mix(in oklab,var(--color-white, #fff) 20%,transparent)}}.axm-chat-call-controls__hangup{rotate:135deg}.axm-chat-call-controls__menu-backdrop{position:fixed;inset:0;z-index:20;cursor:default;border-style:var(--tw-border-style);border-width:0px;background-color:transparent}.axm-chat-call-controls__menu{position:absolute;inset-inline-start:50%;bottom:calc(100% + .5rem);z-index:21;margin:0;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 48);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);list-style-type:none;border-radius:var(--radius-xl, .75rem);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in srgb,#fff 10%,transparent);background-color:#2b2e32;padding:calc(var(--spacing, .25rem) * 1.5);box-shadow:0 10px 28px #0006}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu{border-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}.axm-chat-call-controls__menu-empty,.axm-chat-call-controls__menu-item{display:block;width:100%;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;font-size:.8125rem;color:var(--color-white, #fff)}.axm-chat-call-controls__menu-item{cursor:pointer}.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in srgb,#fff 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-controls__menu-item:hover,.axm-chat-call-controls__menu-item--active{background-color:color-mix(in oklab,var(--color-white, #fff) 10%,transparent)}}axm-chat-call-participant-tile{display:block;min-height:0px;width:100%}axm-chat-call-participant-tile:not(.axm-chat-call-participant-tile--rail){height:100%}.axm-chat-call-tile{position:relative;display:flex;height:100%;min-height:0px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-xl, .75rem);background-color:#101113}.axm-chat-call-tile__bg-blur,.axm-chat-call-tile__bg-color{pointer-events:none;position:absolute;inset:0}.axm-chat-call-tile__bg-blur{scale:1.15;object-fit:cover;opacity:90%;filter:blur(28px)}.axm-chat-call-tile__bg-color{opacity:100%}.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=primary]{background:radial-gradient(circle at 42% 38%,var(--color-primary-lightest) 0%,color-mix(in srgb,var(--color-primary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-secondary-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=secondary]{background:radial-gradient(circle at 42% 38%,var(--color-secondary-lightest) 0%,color-mix(in srgb,var(--color-secondary) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-danger-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=danger]{background:radial-gradient(circle at 42% 38%,var(--color-danger-lightest) 0%,color-mix(in srgb,var(--color-danger) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-warning-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=warning]{background:radial-gradient(circle at 42% 38%,var(--color-warning-lightest) 0%,color-mix(in srgb,var(--color-warning) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-success-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=success]{background:radial-gradient(circle at 42% 38%,var(--color-success-lightest) 0%,color-mix(in srgb,var(--color-success) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent1-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent1]{background:radial-gradient(circle at 42% 38%,var(--color-accent1-lightest) 0%,color-mix(in srgb,var(--color-accent1) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent2-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent2]{background:radial-gradient(circle at 42% 38%,var(--color-accent2-lightest) 0%,color-mix(in srgb,var(--color-accent2) 70%,black) 100%)}}.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,rgba(var(--ax-sys-color-accent3-surface)) 70%,black) 100%)}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__bg-color[data-avatar-color=accent3]{background:radial-gradient(circle at 42% 38%,var(--color-accent3-lightest) 0%,color-mix(in srgb,var(--color-accent3) 70%,black) 100%)}}.axm-chat-call-tile__video{position:absolute;inset:0;height:100%;width:100%;background-color:var(--color-black, #000);object-fit:cover}.axm-chat-call-tile__avatar-stack{position:relative;z-index:1;display:flex;height:5.5rem;width:5.5rem;align-items:center;justify-content:center}.axm-chat-call-tile__speaking-ring{pointer-events:none;position:absolute;inset:0;border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:.22rem;border-color:color-mix(in srgb,#fff 75%,transparent);box-shadow:0 0 0 .12rem #ffffff2e;transition:transform .12s ease-out,opacity .12s ease-out}@supports (color: color-mix(in lab,red,red)){.axm-chat-call-tile__speaking-ring{border-color:color-mix(in oklab,var(--color-white, #fff) 75%,transparent)}}.axm-chat-call-tile__speaking-ring[data-level=\"0\"]{transform:scale(1);opacity:.35}.axm-chat-call-tile__speaking-ring[data-level=\"1\"]{transform:scale(1.055);opacity:.395}.axm-chat-call-tile__speaking-ring[data-level=\"2\"]{transform:scale(1.11);opacity:.44}.axm-chat-call-tile__speaking-ring[data-level=\"3\"]{transform:scale(1.165);opacity:.485}.axm-chat-call-tile__speaking-ring[data-level=\"4\"]{transform:scale(1.22);opacity:.53}.axm-chat-call-tile__speaking-ring[data-level=\"5\"]{transform:scale(1.275);opacity:.575}.axm-chat-call-tile__speaking-ring[data-level=\"6\"]{transform:scale(1.33);opacity:.62}.axm-chat-call-tile__speaking-ring[data-level=\"7\"]{transform:scale(1.385);opacity:.665}.axm-chat-call-tile__speaking-ring[data-level=\"8\"]{transform:scale(1.44);opacity:.71}.axm-chat-call-tile__speaking-ring[data-level=\"9\"]{transform:scale(1.495);opacity:.755}.axm-chat-call-tile__speaking-ring[data-level=\"10\"]{transform:scale(1.55);opacity:.8}.axm-chat-call-tile__badge{position:absolute;top:calc(var(--spacing, .25rem) * 2.5);right:calc(var(--spacing, .25rem) * 2.5);z-index:2;display:flex;height:calc(var(--spacing, .25rem) * 7);width:calc(var(--spacing, .25rem) * 7);align-items:center;justify-content:center;border-radius:calc(infinity * 1px);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-white, #fff);background:#202124d1}.axm-chat-call-tile__name{position:absolute;right:calc(var(--spacing, .25rem) * 2.5);bottom:calc(var(--spacing, .25rem) * 2.5);z-index:2;max-width:calc(100% - 1.1rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.8125rem;--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);color:var(--color-white, #fff);background:#202124c7}.axm-chat-call-tile--compact .axm-chat-call-tile__avatar-stack{height:calc(var(--spacing, .25rem) * 12);width:calc(var(--spacing, .25rem) * 12)}.axm-chat-call-tile--compact .axm-chat-call-tile__badge{top:calc(var(--spacing, .25rem) * 1.5);right:calc(var(--spacing, .25rem) * 1.5);height:1.35rem;width:1.35rem;font-size:.625rem}.axm-chat-call-tile--compact .axm-chat-call-tile__name{right:calc(var(--spacing, .25rem) * 1.5);bottom:calc(var(--spacing, .25rem) * 1.5);max-width:calc(100% - .7rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);font-size:.6875rem}.axm-chat-call-tile--compact .axm-chat-call-tile__speaking-ring{border-style:var(--tw-border-style);border-width:.16rem}.axm-chat-call-in-call-chat{display:flex;height:100%;min-height:0px;width:100%;flex:1;flex-direction:column;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface))}.axm-chat-call-in-call-chat__messages{min-height:0px;flex:1;overflow:hidden;direction:ltr}.axm-chat-call-in-call-chat__composer{flex-shrink:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-translate-x{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-outline-style: solid;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1376
+ }], ctorParameters: () => [] });
1377
+
1378
+ export { AXMChatCallSessionPageComponent };
1379
+ //# sourceMappingURL=acorex-platform-module-conversation-client-chat-call-session-page.component-BStKnruT.mjs.map