@ai-matrx/meet 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/{collab-B6scmSST.d.cts → collab-BBQxcyRQ.d.cts} +53 -2
- package/dist/{collab-B6scmSST.d.ts → collab-BBQxcyRQ.d.ts} +53 -2
- package/dist/{components-BeCQ9h0h.d.cts → components-1XBHgMYK.d.ts} +6 -2
- package/dist/{components-D0TqyeiY.d.ts → components-CK0EyqGL.d.cts} +6 -2
- package/dist/core.cjs +1225 -939
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +101 -26
- package/dist/core.d.ts +101 -26
- package/dist/core.js +1225 -939
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1225 -939
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1225 -939
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +3120 -2694
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +69 -6
- package/dist/react.d.ts +69 -6
- package/dist/react.js +2775 -2349
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +1051 -911
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.d.cts +2 -2
- package/dist/skins/meet.d.ts +2 -2
- package/dist/skins/meet.js +702 -562
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +8 -0
- package/package.json +5 -5
package/dist/skins/meet.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { useEffect as useEffect6, useLayoutEffect, useRef as useRef6, useState as useState4 } from "react";
|
|
6
6
|
|
|
7
7
|
// src/react/facade.ts
|
|
8
|
-
import { useMemo as
|
|
8
|
+
import { useMemo as useMemo5 } from "react";
|
|
9
9
|
|
|
10
10
|
// src/react/root.tsx
|
|
11
11
|
import { useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2 } from "react";
|
|
@@ -184,7 +184,17 @@ var MEET_ROUTES = {
|
|
|
184
184
|
*/
|
|
185
185
|
collab: "/api/v1/meet/collab",
|
|
186
186
|
/** Meet wave 5: translate finished caption lines into this viewer's language. */
|
|
187
|
-
captionsTranslate: "/api/v1/meet/captions/translate"
|
|
187
|
+
captionsTranslate: "/api/v1/meet/captions/translate",
|
|
188
|
+
/**
|
|
189
|
+
* S4 — THE STATE READ (CORE-DESIGN §2.6): `GET ?meeting_id=` with `x-meet-pass`. This
|
|
190
|
+
* person's admission (lazy expiry applied), whether anyone who can admit is here, the run's
|
|
191
|
+
* phase. Read every `waiting_poll_seconds` while waiting and on every `mx.state.changed`.
|
|
192
|
+
*/
|
|
193
|
+
state: "/api/v1/meet/state",
|
|
194
|
+
/** S4: `withdraw` (stop waiting) or `leave` (close this tab); the pass may ride in the body. */
|
|
195
|
+
leave: "/api/v1/meet/leave",
|
|
196
|
+
/** S4: a pass holder (guests included) saw the recording notice, for this run. */
|
|
197
|
+
consent: "/api/v1/meet/consent"
|
|
188
198
|
};
|
|
189
199
|
|
|
190
200
|
// src/core/recording.ts
|
|
@@ -245,6 +255,20 @@ function isLinkFollower(standing) {
|
|
|
245
255
|
function isHostRole(role) {
|
|
246
256
|
return role === "host" || role === "cohost";
|
|
247
257
|
}
|
|
258
|
+
function isObserverRole(role) {
|
|
259
|
+
return role === "viewer";
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// src/core/app-panel.ts
|
|
263
|
+
function appPanelOf(meeting) {
|
|
264
|
+
const raw = meeting?.metadata?.["app_panel"];
|
|
265
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) return null;
|
|
266
|
+
const key = raw["key"];
|
|
267
|
+
const recordId = raw["record_id"];
|
|
268
|
+
if (typeof key !== "string" || key.length === 0) return null;
|
|
269
|
+
if (typeof recordId !== "string" || recordId.length === 0) return null;
|
|
270
|
+
return { key, recordId };
|
|
271
|
+
}
|
|
248
272
|
|
|
249
273
|
// src/core/collab.ts
|
|
250
274
|
function assignedRoom(plan, identity) {
|
|
@@ -366,7 +390,7 @@ function observedPhase(input) {
|
|
|
366
390
|
case "left":
|
|
367
391
|
return "prejoin";
|
|
368
392
|
case "lobby":
|
|
369
|
-
return
|
|
393
|
+
return waitingPhase(snapshot);
|
|
370
394
|
case "requesting-token":
|
|
371
395
|
case "connecting":
|
|
372
396
|
return "joining";
|
|
@@ -375,6 +399,24 @@ function observedPhase(input) {
|
|
|
375
399
|
return "in_call";
|
|
376
400
|
}
|
|
377
401
|
}
|
|
402
|
+
function waitingPhase(snapshot) {
|
|
403
|
+
switch (snapshot.waiting?.admission) {
|
|
404
|
+
case "waiting_host":
|
|
405
|
+
return "waiting:host_not_started";
|
|
406
|
+
case "denied":
|
|
407
|
+
return "denied";
|
|
408
|
+
case "expired":
|
|
409
|
+
return "knock_expired";
|
|
410
|
+
case "withdrawn":
|
|
411
|
+
return "left";
|
|
412
|
+
case "ended":
|
|
413
|
+
return "ended";
|
|
414
|
+
case "removed":
|
|
415
|
+
return "refused:removed";
|
|
416
|
+
default:
|
|
417
|
+
return "waiting:knocking";
|
|
418
|
+
}
|
|
419
|
+
}
|
|
378
420
|
var ADMITTER_ROLES = /* @__PURE__ */ new Set(["host", "cohost"]);
|
|
379
421
|
function observe(input) {
|
|
380
422
|
const { snapshot } = input;
|
|
@@ -389,7 +431,7 @@ function observe(input) {
|
|
|
389
431
|
reason: phase.startsWith("refused:") ? phase.slice("refused:".length) : null,
|
|
390
432
|
role,
|
|
391
433
|
connection: snapshot?.phase === "reconnecting" ? "reconnecting" : "stable",
|
|
392
|
-
hostPresent: inCall && snapshot !== null ? snapshot.participants.some((p) => ADMITTER_ROLES.has(p.role)) : null,
|
|
434
|
+
hostPresent: inCall && snapshot !== null ? snapshot.participants.some((p) => ADMITTER_ROLES.has(p.role)) : snapshot?.phase === "lobby" ? snapshot.waiting?.admittersPresent ?? null : null,
|
|
393
435
|
lobbyCount: canAdmit && snapshot !== null ? snapshot.lobby.filter((entry) => entry.state === "knocking").length : 0,
|
|
394
436
|
recording: snapshot?.recording === "recording" || snapshot?.recording === "stopping",
|
|
395
437
|
audioBlocked: null,
|
|
@@ -677,7 +719,10 @@ function orderParticipants(participants, activeSpeakers) {
|
|
|
677
719
|
}
|
|
678
720
|
function computeStage(args) {
|
|
679
721
|
const pageSize = Math.max(1, args.pageSize ?? DEFAULT_PAGE_SIZE);
|
|
680
|
-
const ordered = orderParticipants(
|
|
722
|
+
const ordered = orderParticipants(
|
|
723
|
+
args.participants.filter((participant) => !isObserverRole(participant.role)),
|
|
724
|
+
args.activeSpeakers
|
|
725
|
+
);
|
|
681
726
|
const sharer = ordered.find((participant) => participant.screenSharing) ?? null;
|
|
682
727
|
const pinnedParticipant = args.pinned === null ? null : ordered.find((participant) => participant.identity === args.pinned) ?? null;
|
|
683
728
|
const spotlit = args.spotlight == null ? null : ordered.find((participant) => participant.identity === args.spotlight) ?? null;
|
|
@@ -703,8 +748,96 @@ function gridColumns(count) {
|
|
|
703
748
|
return 5;
|
|
704
749
|
}
|
|
705
750
|
|
|
751
|
+
// src/react/app-panel.tsx
|
|
752
|
+
import { createContext as createContext2, useContext as useContext2, useMemo as useMemo3 } from "react";
|
|
753
|
+
|
|
754
|
+
// src/core/collab-state.ts
|
|
755
|
+
function availableActivities(collab, isHost) {
|
|
756
|
+
const settings = collab?.settings ?? null;
|
|
757
|
+
if (settings === null) return [];
|
|
758
|
+
const out = [];
|
|
759
|
+
if (settings.whiteboardEnabled) out.push("whiteboard");
|
|
760
|
+
if (settings.pollsEnabled && (isHost || (collab?.polls.length ?? 0) > 0)) out.push("polls");
|
|
761
|
+
if (settings.qaEnabled) out.push("qa");
|
|
762
|
+
if (settings.breakoutsEnabled && (isHost || collab?.breakout?.state === "open")) out.push("breakouts");
|
|
763
|
+
return out;
|
|
764
|
+
}
|
|
765
|
+
function activityAttention(collab, isHost) {
|
|
766
|
+
if (collab === null) return false;
|
|
767
|
+
if (collab.polls.some((poll) => poll.state === "live" && poll.myVote.length === 0 && !isHost)) return true;
|
|
768
|
+
if (isHost && collab.questions.some((q) => q.state === "open")) return true;
|
|
769
|
+
return false;
|
|
770
|
+
}
|
|
771
|
+
async function performCollab(runtime, request) {
|
|
772
|
+
if (runtime === null) return { ok: false, message: "This meeting is not connected." };
|
|
773
|
+
try {
|
|
774
|
+
const result = await runtime.inRoom.collab(request);
|
|
775
|
+
return { ok: true, message: result.message, itemId: result.itemId };
|
|
776
|
+
} catch (error) {
|
|
777
|
+
return { ok: false, message: error.message ?? "That did not work." };
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
async function moveToRoom(runtime, roomId) {
|
|
781
|
+
if (runtime === null) return { ok: false, message: "This meeting is not connected." };
|
|
782
|
+
try {
|
|
783
|
+
await runtime.engine.moveToBreakout(roomId);
|
|
784
|
+
return { ok: true, message: roomId === null ? "Back in the main room." : "Joined the breakout room." };
|
|
785
|
+
} catch (error) {
|
|
786
|
+
return { ok: false, message: error.message ?? "That room could not be joined." };
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
function untranslatedLines(lines, translations) {
|
|
790
|
+
return lines.filter((line) => line.final && translations[line.id] === void 0).map(({ id, text }) => ({ id, text }));
|
|
791
|
+
}
|
|
792
|
+
function nextTranslationBatch(pending, language, asked) {
|
|
793
|
+
const batch = pending.filter((line) => !asked.has(`${language}:${line.id}`)).slice(-20);
|
|
794
|
+
for (const line of batch) asked.add(`${language}:${line.id}`);
|
|
795
|
+
return batch;
|
|
796
|
+
}
|
|
797
|
+
function setCaptionLanguage(store, next) {
|
|
798
|
+
store.patch({
|
|
799
|
+
collab: {
|
|
800
|
+
...store.snapshot().collab,
|
|
801
|
+
captionLanguage: next,
|
|
802
|
+
captionTranslations: {},
|
|
803
|
+
captionTranslationError: null
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
}
|
|
807
|
+
function takePanelRequest(store) {
|
|
808
|
+
const request = store.snapshot().collab.panelRequest;
|
|
809
|
+
if (request === null) return null;
|
|
810
|
+
store.patch({ collab: { ...store.snapshot().collab, panelRequest: null } });
|
|
811
|
+
return request.panel;
|
|
812
|
+
}
|
|
813
|
+
function takeMoveRequest(store) {
|
|
814
|
+
const request = store.snapshot().collab.moveRequest;
|
|
815
|
+
if (request === null) return null;
|
|
816
|
+
store.patch({ collab: { ...store.snapshot().collab, moveRequest: null } });
|
|
817
|
+
return { roomId: request.roomId };
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
// src/react/app-panel.tsx
|
|
821
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
822
|
+
var RegistryContext = createContext2({});
|
|
823
|
+
function useMeetAppPanelRegistry() {
|
|
824
|
+
return useContext2(RegistryContext);
|
|
825
|
+
}
|
|
826
|
+
function useMeetAppPanel(meeting) {
|
|
827
|
+
const snapshot = useMeetSnapshot();
|
|
828
|
+
const registry = useMeetAppPanelRegistry();
|
|
829
|
+
const record = meeting ?? snapshot?.meeting ?? null;
|
|
830
|
+
return useMemo3(() => {
|
|
831
|
+
const panel = appPanelOf(record);
|
|
832
|
+
if (panel === null || record === null) return null;
|
|
833
|
+
const entry = registry[panel.key];
|
|
834
|
+
if (entry === void 0) return null;
|
|
835
|
+
return { ...entry, panel, organizationId: record.organizationId };
|
|
836
|
+
}, [record, registry]);
|
|
837
|
+
}
|
|
838
|
+
|
|
706
839
|
// src/react/hooks.ts
|
|
707
|
-
import { useCallback as useCallback2, useEffect as useEffect3, useMemo as
|
|
840
|
+
import { useCallback as useCallback2, useEffect as useEffect3, useMemo as useMemo4, useRef as useRef3, useState as useState2, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
708
841
|
import { useRealtimeManager as useRealtimeManager2 } from "@ai-matrx/realtime/react";
|
|
709
842
|
|
|
710
843
|
// src/core/record.ts
|
|
@@ -883,7 +1016,7 @@ function useRoom() {
|
|
|
883
1016
|
function useStage(pageSize = DEFAULT_PAGE_SIZE) {
|
|
884
1017
|
const snapshot = useMeetSnapshot();
|
|
885
1018
|
const [page, setPage] = useState2(0);
|
|
886
|
-
const stage =
|
|
1019
|
+
const stage = useMemo4(
|
|
887
1020
|
() => computeStage({
|
|
888
1021
|
participants: snapshot?.participants ?? [],
|
|
889
1022
|
layout: snapshot?.layout ?? "grid",
|
|
@@ -935,12 +1068,22 @@ function useLobby() {
|
|
|
935
1068
|
async () => requireSession(session, "admitAll").admitAll(),
|
|
936
1069
|
[session]
|
|
937
1070
|
),
|
|
938
|
-
|
|
939
|
-
(
|
|
1071
|
+
undeny: useCallback2(
|
|
1072
|
+
async (entry) => requireSession(session, "undeny").undeny(entry),
|
|
940
1073
|
[session]
|
|
941
1074
|
)
|
|
942
1075
|
};
|
|
943
1076
|
}
|
|
1077
|
+
function useWaiting() {
|
|
1078
|
+
const host = useMeetHost();
|
|
1079
|
+
const snapshot = useMeetSnapshot();
|
|
1080
|
+
const session = host?.meetings ?? null;
|
|
1081
|
+
return {
|
|
1082
|
+
waiting: snapshot?.waiting ?? null,
|
|
1083
|
+
withdraw: useCallback2(async () => requireSession(session, "withdraw").withdraw(), [session]),
|
|
1084
|
+
askAgain: useCallback2(async () => requireSession(session, "askAgain").askAgain(), [session])
|
|
1085
|
+
};
|
|
1086
|
+
}
|
|
944
1087
|
function useRecording() {
|
|
945
1088
|
const host = useMeetHost();
|
|
946
1089
|
const snapshot = useMeetSnapshot();
|
|
@@ -985,7 +1128,7 @@ function useMeetAi() {
|
|
|
985
1128
|
const participants = snapshot?.participants ?? [];
|
|
986
1129
|
const notes = snapshot?.notes ?? [];
|
|
987
1130
|
const wrapUp = snapshot?.wrapUp ?? null;
|
|
988
|
-
const status =
|
|
1131
|
+
const status = useMemo4(
|
|
989
1132
|
() => noteTakerStatus({
|
|
990
1133
|
meeting,
|
|
991
1134
|
participants,
|
|
@@ -994,7 +1137,7 @@ function useMeetAi() {
|
|
|
994
1137
|
[meeting, participants, snapshot?.noteTakerRefusal]
|
|
995
1138
|
);
|
|
996
1139
|
const names = snapshot?.names ?? EMPTY_NAMES;
|
|
997
|
-
const transcript =
|
|
1140
|
+
const transcript = useMemo4(
|
|
998
1141
|
() => readableTranscript(snapshot?.transcript ?? []).map((line) => ({
|
|
999
1142
|
id: line.id,
|
|
1000
1143
|
identity: line.identity,
|
|
@@ -1217,7 +1360,7 @@ function useHostControls() {
|
|
|
1217
1360
|
}
|
|
1218
1361
|
function useHandQueue() {
|
|
1219
1362
|
const snapshot = useMeetSnapshot();
|
|
1220
|
-
return
|
|
1363
|
+
return useMemo4(
|
|
1221
1364
|
() => (snapshot?.participants ?? []).filter((participant) => participant.handRaised).sort((a, b) => (a.handRaisedAt ?? 0) - (b.handRaisedAt ?? 0)),
|
|
1222
1365
|
[snapshot?.participants]
|
|
1223
1366
|
);
|
|
@@ -1355,72 +1498,6 @@ function useGuestRecordAccess(meeting) {
|
|
|
1355
1498
|
};
|
|
1356
1499
|
}
|
|
1357
1500
|
|
|
1358
|
-
// src/core/collab-state.ts
|
|
1359
|
-
function availableActivities(collab, isHost) {
|
|
1360
|
-
const settings = collab?.settings ?? null;
|
|
1361
|
-
if (settings === null) return [];
|
|
1362
|
-
const out = [];
|
|
1363
|
-
if (settings.whiteboardEnabled) out.push("whiteboard");
|
|
1364
|
-
if (settings.pollsEnabled && (isHost || (collab?.polls.length ?? 0) > 0)) out.push("polls");
|
|
1365
|
-
if (settings.qaEnabled) out.push("qa");
|
|
1366
|
-
if (settings.breakoutsEnabled && (isHost || collab?.breakout?.state === "open")) out.push("breakouts");
|
|
1367
|
-
return out;
|
|
1368
|
-
}
|
|
1369
|
-
function activityAttention(collab, isHost) {
|
|
1370
|
-
if (collab === null) return false;
|
|
1371
|
-
if (collab.polls.some((poll) => poll.state === "live" && poll.myVote.length === 0 && !isHost)) return true;
|
|
1372
|
-
if (isHost && collab.questions.some((q) => q.state === "open")) return true;
|
|
1373
|
-
return false;
|
|
1374
|
-
}
|
|
1375
|
-
async function performCollab(runtime, request) {
|
|
1376
|
-
if (runtime === null) return { ok: false, message: "This meeting is not connected." };
|
|
1377
|
-
try {
|
|
1378
|
-
const result = await runtime.inRoom.collab(request);
|
|
1379
|
-
return { ok: true, message: result.message, itemId: result.itemId };
|
|
1380
|
-
} catch (error) {
|
|
1381
|
-
return { ok: false, message: error.message ?? "That did not work." };
|
|
1382
|
-
}
|
|
1383
|
-
}
|
|
1384
|
-
async function moveToRoom(runtime, roomId) {
|
|
1385
|
-
if (runtime === null) return { ok: false, message: "This meeting is not connected." };
|
|
1386
|
-
try {
|
|
1387
|
-
await runtime.engine.moveToBreakout(roomId);
|
|
1388
|
-
return { ok: true, message: roomId === null ? "Back in the main room." : "Joined the breakout room." };
|
|
1389
|
-
} catch (error) {
|
|
1390
|
-
return { ok: false, message: error.message ?? "That room could not be joined." };
|
|
1391
|
-
}
|
|
1392
|
-
}
|
|
1393
|
-
function untranslatedLines(lines, translations) {
|
|
1394
|
-
return lines.filter((line) => line.final && translations[line.id] === void 0).map(({ id, text }) => ({ id, text }));
|
|
1395
|
-
}
|
|
1396
|
-
function nextTranslationBatch(pending, language, asked) {
|
|
1397
|
-
const batch = pending.filter((line) => !asked.has(`${language}:${line.id}`)).slice(-20);
|
|
1398
|
-
for (const line of batch) asked.add(`${language}:${line.id}`);
|
|
1399
|
-
return batch;
|
|
1400
|
-
}
|
|
1401
|
-
function setCaptionLanguage(store, next) {
|
|
1402
|
-
store.patch({
|
|
1403
|
-
collab: {
|
|
1404
|
-
...store.snapshot().collab,
|
|
1405
|
-
captionLanguage: next,
|
|
1406
|
-
captionTranslations: {},
|
|
1407
|
-
captionTranslationError: null
|
|
1408
|
-
}
|
|
1409
|
-
});
|
|
1410
|
-
}
|
|
1411
|
-
function takePanelRequest(store) {
|
|
1412
|
-
const request = store.snapshot().collab.panelRequest;
|
|
1413
|
-
if (request === null) return null;
|
|
1414
|
-
store.patch({ collab: { ...store.snapshot().collab, panelRequest: null } });
|
|
1415
|
-
return request.panel;
|
|
1416
|
-
}
|
|
1417
|
-
function takeMoveRequest(store) {
|
|
1418
|
-
const request = store.snapshot().collab.moveRequest;
|
|
1419
|
-
if (request === null) return null;
|
|
1420
|
-
store.patch({ collab: { ...store.snapshot().collab, moveRequest: null } });
|
|
1421
|
-
return { roomId: request.roomId };
|
|
1422
|
-
}
|
|
1423
|
-
|
|
1424
1501
|
// src/react/collab-hooks.ts
|
|
1425
1502
|
import { useEffect as useEffect4, useRef as useRef4 } from "react";
|
|
1426
1503
|
function useCollab() {
|
|
@@ -1487,7 +1564,7 @@ function useMeetCore() {
|
|
|
1487
1564
|
const role = useRole();
|
|
1488
1565
|
const isHost = useIsHost();
|
|
1489
1566
|
const observation = useCoreObservation();
|
|
1490
|
-
return
|
|
1567
|
+
return useMemo5(
|
|
1491
1568
|
() => ({ host, snapshot, devices, role, isHost, observation }),
|
|
1492
1569
|
[host, snapshot, devices, role, isHost, observation]
|
|
1493
1570
|
);
|
|
@@ -1500,9 +1577,9 @@ import { Alert, AlertDescription, Button, Checkbox, ErrorBox, Label, SegmentedCo
|
|
|
1500
1577
|
import { useEffect as useEffect5, useRef as useRef5, useState as useState3 } from "react";
|
|
1501
1578
|
|
|
1502
1579
|
// src/skins/meet/icons.tsx
|
|
1503
|
-
import { jsx as
|
|
1580
|
+
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
1504
1581
|
function Icon({ children, ...props }) {
|
|
1505
|
-
return /* @__PURE__ */
|
|
1582
|
+
return /* @__PURE__ */ jsx4(
|
|
1506
1583
|
"svg",
|
|
1507
1584
|
{
|
|
1508
1585
|
width: "20",
|
|
@@ -1522,223 +1599,223 @@ function Icon({ children, ...props }) {
|
|
|
1522
1599
|
}
|
|
1523
1600
|
function MicIcon(props) {
|
|
1524
1601
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1525
|
-
/* @__PURE__ */
|
|
1526
|
-
/* @__PURE__ */
|
|
1527
|
-
/* @__PURE__ */
|
|
1602
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z" }),
|
|
1603
|
+
/* @__PURE__ */ jsx4("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
|
|
1604
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 19v3" })
|
|
1528
1605
|
] });
|
|
1529
1606
|
}
|
|
1530
1607
|
function MicOffIcon(props) {
|
|
1531
1608
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1532
|
-
/* @__PURE__ */
|
|
1533
|
-
/* @__PURE__ */
|
|
1534
|
-
/* @__PURE__ */
|
|
1535
|
-
/* @__PURE__ */
|
|
1536
|
-
/* @__PURE__ */
|
|
1609
|
+
/* @__PURE__ */ jsx4("path", { d: "M2 2l20 20" }),
|
|
1610
|
+
/* @__PURE__ */ jsx4("path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12" }),
|
|
1611
|
+
/* @__PURE__ */ jsx4("path", { d: "M15 9.34V5a3 3 0 0 0-5.94-.6" }),
|
|
1612
|
+
/* @__PURE__ */ jsx4("path", { d: "M19 10v2a7 7 0 0 1-.11 1.23M5 10v2a7 7 0 0 0 11 5.66" }),
|
|
1613
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 19v3" })
|
|
1537
1614
|
] });
|
|
1538
1615
|
}
|
|
1539
1616
|
function CameraIcon(props) {
|
|
1540
1617
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1541
|
-
/* @__PURE__ */
|
|
1542
|
-
/* @__PURE__ */
|
|
1618
|
+
/* @__PURE__ */ jsx4("path", { d: "m23 7-7 5 7 5V7Z" }),
|
|
1619
|
+
/* @__PURE__ */ jsx4("rect", { x: "1", y: "5", width: "15", height: "14", rx: "2" })
|
|
1543
1620
|
] });
|
|
1544
1621
|
}
|
|
1545
1622
|
function CameraOffIcon(props) {
|
|
1546
1623
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1547
|
-
/* @__PURE__ */
|
|
1548
|
-
/* @__PURE__ */
|
|
1549
|
-
/* @__PURE__ */
|
|
1624
|
+
/* @__PURE__ */ jsx4("path", { d: "M2 2l20 20" }),
|
|
1625
|
+
/* @__PURE__ */ jsx4("path", { d: "M10.66 5H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10" }),
|
|
1626
|
+
/* @__PURE__ */ jsx4("path", { d: "M16 16a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2" })
|
|
1550
1627
|
] });
|
|
1551
1628
|
}
|
|
1552
1629
|
function ScreenShareIcon(props) {
|
|
1553
1630
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1554
|
-
/* @__PURE__ */
|
|
1555
|
-
/* @__PURE__ */
|
|
1556
|
-
/* @__PURE__ */
|
|
1631
|
+
/* @__PURE__ */ jsx4("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2" }),
|
|
1632
|
+
/* @__PURE__ */ jsx4("path", { d: "M8 21h8M12 17v4" }),
|
|
1633
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 13V8m0 0-2.5 2.5M12 8l2.5 2.5" })
|
|
1557
1634
|
] });
|
|
1558
1635
|
}
|
|
1559
1636
|
function PhoneIcon(props) {
|
|
1560
|
-
return /* @__PURE__ */
|
|
1637
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.9.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92Z" }) });
|
|
1561
1638
|
}
|
|
1562
1639
|
function PhoneOffIcon(props) {
|
|
1563
|
-
return /* @__PURE__ */
|
|
1640
|
+
return /* @__PURE__ */ jsx4(Icon, { fill: "currentColor", stroke: "none", ...props, children: /* @__PURE__ */ jsx4("path", { d: "M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08a.99.99 0 0 1-.29-.7c0-.28.11-.53.29-.71C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28a11.27 11.27 0 0 0-2.67-1.85.996.996 0 0 1-.56-.9v-3.1C15.15 9.25 13.6 9 12 9Z" }) });
|
|
1564
1641
|
}
|
|
1565
1642
|
function HandIcon(props) {
|
|
1566
1643
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1567
|
-
/* @__PURE__ */
|
|
1568
|
-
/* @__PURE__ */
|
|
1569
|
-
/* @__PURE__ */
|
|
1570
|
-
/* @__PURE__ */
|
|
1644
|
+
/* @__PURE__ */ jsx4("path", { d: "M18 11V6a2 2 0 0 0-4 0v5" }),
|
|
1645
|
+
/* @__PURE__ */ jsx4("path", { d: "M14 10V4a2 2 0 0 0-4 0v7" }),
|
|
1646
|
+
/* @__PURE__ */ jsx4("path", { d: "M10 10.5V6a2 2 0 0 0-4 0v8" }),
|
|
1647
|
+
/* @__PURE__ */ jsx4("path", { d: "M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2a8 8 0 0 1-8-8v-1a2 2 0 1 1 4 0" })
|
|
1571
1648
|
] });
|
|
1572
1649
|
}
|
|
1573
1650
|
function ChatIcon(props) {
|
|
1574
|
-
return /* @__PURE__ */
|
|
1651
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z" }) });
|
|
1575
1652
|
}
|
|
1576
1653
|
function PeopleIcon(props) {
|
|
1577
1654
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1578
|
-
/* @__PURE__ */
|
|
1579
|
-
/* @__PURE__ */
|
|
1580
|
-
/* @__PURE__ */
|
|
1655
|
+
/* @__PURE__ */ jsx4("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
1656
|
+
/* @__PURE__ */ jsx4("circle", { cx: "9", cy: "7", r: "4" }),
|
|
1657
|
+
/* @__PURE__ */ jsx4("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" })
|
|
1581
1658
|
] });
|
|
1582
1659
|
}
|
|
1583
1660
|
function RecordIcon(props) {
|
|
1584
|
-
return /* @__PURE__ */
|
|
1661
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "8", fill: "currentColor", stroke: "none" }) });
|
|
1585
1662
|
}
|
|
1586
1663
|
function SparklesIcon(props) {
|
|
1587
1664
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1588
|
-
/* @__PURE__ */
|
|
1589
|
-
/* @__PURE__ */
|
|
1665
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9L12 3Z" }),
|
|
1666
|
+
/* @__PURE__ */ jsx4("path", { d: "M19 15l.9 2.1 2.1.9-2.1.9-.9 2.1-.9-2.1-2.1-.9 2.1-.9L19 15Z" })
|
|
1590
1667
|
] });
|
|
1591
1668
|
}
|
|
1592
1669
|
function LockIcon(props) {
|
|
1593
1670
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1594
|
-
/* @__PURE__ */
|
|
1595
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ jsx4("rect", { x: "4", y: "10", width: "16", height: "11", rx: "2" }),
|
|
1672
|
+
/* @__PURE__ */ jsx4("path", { d: "M8 10V7a4 4 0 0 1 8 0v3" })
|
|
1596
1673
|
] });
|
|
1597
1674
|
}
|
|
1598
1675
|
function LayoutIcon(props) {
|
|
1599
1676
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1600
|
-
/* @__PURE__ */
|
|
1601
|
-
/* @__PURE__ */
|
|
1677
|
+
/* @__PURE__ */ jsx4("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
|
|
1678
|
+
/* @__PURE__ */ jsx4("path", { d: "M3 9h18M9 21V9" })
|
|
1602
1679
|
] });
|
|
1603
1680
|
}
|
|
1604
1681
|
function SettingsIcon(props) {
|
|
1605
1682
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1606
|
-
/* @__PURE__ */
|
|
1607
|
-
/* @__PURE__ */
|
|
1683
|
+
/* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "3" }),
|
|
1684
|
+
/* @__PURE__ */ jsx4("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z" })
|
|
1608
1685
|
] });
|
|
1609
1686
|
}
|
|
1610
1687
|
function CheckIcon(props) {
|
|
1611
|
-
return /* @__PURE__ */
|
|
1688
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M20 6 9 17l-5-5" }) });
|
|
1612
1689
|
}
|
|
1613
1690
|
function CloseIcon(props) {
|
|
1614
|
-
return /* @__PURE__ */
|
|
1691
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M18 6 6 18M6 6l12 12" }) });
|
|
1615
1692
|
}
|
|
1616
1693
|
function PinIcon(props) {
|
|
1617
1694
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1618
|
-
/* @__PURE__ */
|
|
1619
|
-
/* @__PURE__ */
|
|
1695
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 17v5" }),
|
|
1696
|
+
/* @__PURE__ */ jsx4("path", { d: "M9 2h6l-1 6 3.5 3.5V14H6.5v-2.5L10 8 9 2Z" })
|
|
1620
1697
|
] });
|
|
1621
1698
|
}
|
|
1622
1699
|
function WifiLowIcon(props) {
|
|
1623
1700
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1624
|
-
/* @__PURE__ */
|
|
1625
|
-
/* @__PURE__ */
|
|
1701
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 20h.01" }),
|
|
1702
|
+
/* @__PURE__ */ jsx4("path", { d: "M8.5 16.5a5 5 0 0 1 7 0" })
|
|
1626
1703
|
] });
|
|
1627
1704
|
}
|
|
1628
1705
|
function SmileIcon(props) {
|
|
1629
1706
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1630
|
-
/* @__PURE__ */
|
|
1631
|
-
/* @__PURE__ */
|
|
1632
|
-
/* @__PURE__ */
|
|
1633
|
-
/* @__PURE__ */
|
|
1707
|
+
/* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1708
|
+
/* @__PURE__ */ jsx4("path", { d: "M8 14s1.5 2 4 2 4-2 4-2" }),
|
|
1709
|
+
/* @__PURE__ */ jsx4("line", { x1: "9", x2: "9.01", y1: "9", y2: "9" }),
|
|
1710
|
+
/* @__PURE__ */ jsx4("line", { x1: "15", x2: "15.01", y1: "9", y2: "9" })
|
|
1634
1711
|
] });
|
|
1635
1712
|
}
|
|
1636
1713
|
function MoreIcon(props) {
|
|
1637
1714
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1638
|
-
/* @__PURE__ */
|
|
1639
|
-
/* @__PURE__ */
|
|
1640
|
-
/* @__PURE__ */
|
|
1715
|
+
/* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "1" }),
|
|
1716
|
+
/* @__PURE__ */ jsx4("circle", { cx: "19", cy: "12", r: "1" }),
|
|
1717
|
+
/* @__PURE__ */ jsx4("circle", { cx: "5", cy: "12", r: "1" })
|
|
1641
1718
|
] });
|
|
1642
1719
|
}
|
|
1643
1720
|
function SearchIcon(props) {
|
|
1644
1721
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1645
|
-
/* @__PURE__ */
|
|
1646
|
-
/* @__PURE__ */
|
|
1722
|
+
/* @__PURE__ */ jsx4("circle", { cx: "11", cy: "11", r: "8" }),
|
|
1723
|
+
/* @__PURE__ */ jsx4("path", { d: "m21 21-4.3-4.3" })
|
|
1647
1724
|
] });
|
|
1648
1725
|
}
|
|
1649
1726
|
function KeyboardIcon(props) {
|
|
1650
1727
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1651
|
-
/* @__PURE__ */
|
|
1652
|
-
/* @__PURE__ */
|
|
1728
|
+
/* @__PURE__ */ jsx4("path", { d: "M10 8h.01M12 12h.01M14 8h.01M16 12h.01M18 8h.01M6 8h.01M7 16h10M8 12h.01" }),
|
|
1729
|
+
/* @__PURE__ */ jsx4("rect", { width: "20", height: "16", x: "2", y: "4", rx: "2" })
|
|
1653
1730
|
] });
|
|
1654
1731
|
}
|
|
1655
1732
|
function SpotlightIcon(props) {
|
|
1656
|
-
return /* @__PURE__ */
|
|
1733
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M12 2 15 8.5 22 9.3 17 14 18.2 21 12 17.6 5.8 21 7 14 2 9.3 9 8.5Z" }) });
|
|
1657
1734
|
}
|
|
1658
1735
|
function SignalIcon({ bars, ...props }) {
|
|
1659
1736
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1660
|
-
/* @__PURE__ */
|
|
1661
|
-
/* @__PURE__ */
|
|
1662
|
-
/* @__PURE__ */
|
|
1663
|
-
/* @__PURE__ */
|
|
1737
|
+
/* @__PURE__ */ jsx4("path", { d: "M4 20v-2", opacity: bars >= 1 ? 1 : 0.3 }),
|
|
1738
|
+
/* @__PURE__ */ jsx4("path", { d: "M10 20v-6", opacity: bars >= 2 ? 1 : 0.3 }),
|
|
1739
|
+
/* @__PURE__ */ jsx4("path", { d: "M16 20V9", opacity: bars >= 3 ? 1 : 0.3 }),
|
|
1740
|
+
/* @__PURE__ */ jsx4("path", { d: "M22 20V4", opacity: bars >= 3 ? 1 : 0.3 })
|
|
1664
1741
|
] });
|
|
1665
1742
|
}
|
|
1666
1743
|
function SpeakerIcon(props) {
|
|
1667
1744
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1668
|
-
/* @__PURE__ */
|
|
1669
|
-
/* @__PURE__ */
|
|
1670
|
-
/* @__PURE__ */
|
|
1745
|
+
/* @__PURE__ */ jsx4("path", { d: "M11 5 6 9H2v6h4l5 4V5Z" }),
|
|
1746
|
+
/* @__PURE__ */ jsx4("path", { d: "M15.54 8.46a5 5 0 0 1 0 7.07" }),
|
|
1747
|
+
/* @__PURE__ */ jsx4("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14" })
|
|
1671
1748
|
] });
|
|
1672
1749
|
}
|
|
1673
1750
|
function FlagIcon(props) {
|
|
1674
1751
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1675
|
-
/* @__PURE__ */
|
|
1676
|
-
/* @__PURE__ */
|
|
1752
|
+
/* @__PURE__ */ jsx4("path", { d: "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z" }),
|
|
1753
|
+
/* @__PURE__ */ jsx4("line", { x1: "4", x2: "4", y1: "22", y2: "15" })
|
|
1677
1754
|
] });
|
|
1678
1755
|
}
|
|
1679
1756
|
function PencilIcon(props) {
|
|
1680
|
-
return /* @__PURE__ */
|
|
1757
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" }) });
|
|
1681
1758
|
}
|
|
1682
1759
|
function ActivitiesIcon(props) {
|
|
1683
1760
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1684
|
-
/* @__PURE__ */
|
|
1685
|
-
/* @__PURE__ */
|
|
1686
|
-
/* @__PURE__ */
|
|
1761
|
+
/* @__PURE__ */ jsx4("path", { d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z" }),
|
|
1762
|
+
/* @__PURE__ */ jsx4("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }),
|
|
1763
|
+
/* @__PURE__ */ jsx4("circle", { cx: "17.5", cy: "17.5", r: "3.5" })
|
|
1687
1764
|
] });
|
|
1688
1765
|
}
|
|
1689
1766
|
function PollIcon(props) {
|
|
1690
1767
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1691
|
-
/* @__PURE__ */
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
/* @__PURE__ */
|
|
1768
|
+
/* @__PURE__ */ jsx4("line", { x1: "18", x2: "18", y1: "20", y2: "10" }),
|
|
1769
|
+
/* @__PURE__ */ jsx4("line", { x1: "12", x2: "12", y1: "20", y2: "4" }),
|
|
1770
|
+
/* @__PURE__ */ jsx4("line", { x1: "6", x2: "6", y1: "20", y2: "14" })
|
|
1694
1771
|
] });
|
|
1695
1772
|
}
|
|
1696
1773
|
function QuestionIcon(props) {
|
|
1697
1774
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1698
|
-
/* @__PURE__ */
|
|
1699
|
-
/* @__PURE__ */
|
|
1700
|
-
/* @__PURE__ */
|
|
1775
|
+
/* @__PURE__ */ jsx4("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }),
|
|
1776
|
+
/* @__PURE__ */ jsx4("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }),
|
|
1777
|
+
/* @__PURE__ */ jsx4("path", { d: "M12 17h.01" })
|
|
1701
1778
|
] });
|
|
1702
1779
|
}
|
|
1703
1780
|
function WhiteboardIcon(props) {
|
|
1704
1781
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1705
|
-
/* @__PURE__ */
|
|
1706
|
-
/* @__PURE__ */
|
|
1707
|
-
/* @__PURE__ */
|
|
1782
|
+
/* @__PURE__ */ jsx4("path", { d: "M2 3h20" }),
|
|
1783
|
+
/* @__PURE__ */ jsx4("path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3" }),
|
|
1784
|
+
/* @__PURE__ */ jsx4("path", { d: "m7 21 5-5 5 5" })
|
|
1708
1785
|
] });
|
|
1709
1786
|
}
|
|
1710
1787
|
function BreakoutIcon(props) {
|
|
1711
1788
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1712
|
-
/* @__PURE__ */
|
|
1713
|
-
/* @__PURE__ */
|
|
1714
|
-
/* @__PURE__ */
|
|
1789
|
+
/* @__PURE__ */ jsx4("rect", { width: "7", height: "18", x: "3", y: "3", rx: "1" }),
|
|
1790
|
+
/* @__PURE__ */ jsx4("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }),
|
|
1791
|
+
/* @__PURE__ */ jsx4("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" })
|
|
1715
1792
|
] });
|
|
1716
1793
|
}
|
|
1717
1794
|
function UpvoteIcon(props) {
|
|
1718
|
-
return /* @__PURE__ */
|
|
1795
|
+
return /* @__PURE__ */ jsx4(Icon, { ...props, children: /* @__PURE__ */ jsx4("path", { d: "M9 18v-6H5l7-7 7 7h-4v6H9z" }) });
|
|
1719
1796
|
}
|
|
1720
1797
|
function EraserIcon(props) {
|
|
1721
1798
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1722
|
-
/* @__PURE__ */
|
|
1723
|
-
/* @__PURE__ */
|
|
1724
|
-
/* @__PURE__ */
|
|
1799
|
+
/* @__PURE__ */ jsx4("path", { d: "m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21" }),
|
|
1800
|
+
/* @__PURE__ */ jsx4("path", { d: "M22 21H7" }),
|
|
1801
|
+
/* @__PURE__ */ jsx4("path", { d: "m5 11 9 9" })
|
|
1725
1802
|
] });
|
|
1726
1803
|
}
|
|
1727
1804
|
function HighlighterIcon(props) {
|
|
1728
1805
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1729
|
-
/* @__PURE__ */
|
|
1730
|
-
/* @__PURE__ */
|
|
1806
|
+
/* @__PURE__ */ jsx4("path", { d: "m9 11-6 6v3h9l3-3" }),
|
|
1807
|
+
/* @__PURE__ */ jsx4("path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" })
|
|
1731
1808
|
] });
|
|
1732
1809
|
}
|
|
1733
1810
|
function UndoIcon(props) {
|
|
1734
1811
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
1735
|
-
/* @__PURE__ */
|
|
1736
|
-
/* @__PURE__ */
|
|
1812
|
+
/* @__PURE__ */ jsx4("path", { d: "M9 14 4 9l5-5" }),
|
|
1813
|
+
/* @__PURE__ */ jsx4("path", { d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11" })
|
|
1737
1814
|
] });
|
|
1738
1815
|
}
|
|
1739
1816
|
|
|
1740
1817
|
// src/skins/meet/collab.tsx
|
|
1741
|
-
import { jsx as
|
|
1818
|
+
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1742
1819
|
function useNotice() {
|
|
1743
1820
|
const [notice, setNotice] = useState3(null);
|
|
1744
1821
|
useEffect5(() => {
|
|
@@ -1750,7 +1827,7 @@ function useNotice() {
|
|
|
1750
1827
|
}
|
|
1751
1828
|
function Notice({ notice }) {
|
|
1752
1829
|
if (notice === null) return null;
|
|
1753
|
-
return /* @__PURE__ */
|
|
1830
|
+
return /* @__PURE__ */ jsx5("p", { className: notice.failed ? "mx-meet__panel-note mx-meet__collab-error" : "mx-meet__panel-note", role: "status", children: notice.text });
|
|
1754
1831
|
}
|
|
1755
1832
|
var ACTIVITY_LABELS = {
|
|
1756
1833
|
polls: "Polls",
|
|
@@ -1760,10 +1837,10 @@ var ACTIVITY_LABELS = {
|
|
|
1760
1837
|
};
|
|
1761
1838
|
function ActivityIcon({ panel }) {
|
|
1762
1839
|
const props = { width: 16, height: 16 };
|
|
1763
|
-
if (panel === "polls") return /* @__PURE__ */
|
|
1764
|
-
if (panel === "qa") return /* @__PURE__ */
|
|
1765
|
-
if (panel === "whiteboard") return /* @__PURE__ */
|
|
1766
|
-
return /* @__PURE__ */
|
|
1840
|
+
if (panel === "polls") return /* @__PURE__ */ jsx5(PollIcon, { ...props });
|
|
1841
|
+
if (panel === "qa") return /* @__PURE__ */ jsx5(QuestionIcon, { ...props });
|
|
1842
|
+
if (panel === "whiteboard") return /* @__PURE__ */ jsx5(WhiteboardIcon, { ...props });
|
|
1843
|
+
return /* @__PURE__ */ jsx5(BreakoutIcon, { ...props });
|
|
1767
1844
|
}
|
|
1768
1845
|
function ActivitiesControl({
|
|
1769
1846
|
active,
|
|
@@ -1775,10 +1852,10 @@ function ActivitiesControl({
|
|
|
1775
1852
|
if (available.length === 0) return null;
|
|
1776
1853
|
return /* @__PURE__ */ jsxs2("span", { className: "mx-meet__anchor", children: [
|
|
1777
1854
|
/* @__PURE__ */ jsxs2(ControlButton, { label: "Activities", active: open || active !== null, onClick: () => setOpen(!open), children: [
|
|
1778
|
-
/* @__PURE__ */
|
|
1779
|
-
attention ? /* @__PURE__ */
|
|
1855
|
+
/* @__PURE__ */ jsx5(ActivitiesIcon, {}),
|
|
1856
|
+
attention ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
1780
1857
|
] }),
|
|
1781
|
-
open ? /* @__PURE__ */
|
|
1858
|
+
open ? /* @__PURE__ */ jsx5(Popover, { label: "Activities", onClose: () => setOpen(false), children: /* @__PURE__ */ jsx5("div", { className: "mx-meet__menu", role: "menu", children: available.map((panel) => /* @__PURE__ */ jsxs2(
|
|
1782
1859
|
MenuItem,
|
|
1783
1860
|
{
|
|
1784
1861
|
onSelect: () => {
|
|
@@ -1786,7 +1863,7 @@ function ActivitiesControl({
|
|
|
1786
1863
|
onOpen(panel);
|
|
1787
1864
|
},
|
|
1788
1865
|
children: [
|
|
1789
|
-
/* @__PURE__ */
|
|
1866
|
+
/* @__PURE__ */ jsx5(ActivityIcon, { panel }),
|
|
1790
1867
|
" ",
|
|
1791
1868
|
ACTIVITY_LABELS[panel]
|
|
1792
1869
|
]
|
|
@@ -1834,8 +1911,8 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
1834
1911
|
},
|
|
1835
1912
|
children: [
|
|
1836
1913
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
1837
|
-
/* @__PURE__ */
|
|
1838
|
-
/* @__PURE__ */
|
|
1914
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Question" }),
|
|
1915
|
+
/* @__PURE__ */ jsx5(
|
|
1839
1916
|
"input",
|
|
1840
1917
|
{
|
|
1841
1918
|
className: "mx-meet__input",
|
|
@@ -1848,7 +1925,7 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
1848
1925
|
)
|
|
1849
1926
|
] }),
|
|
1850
1927
|
options.map((option, index) => /* @__PURE__ */ jsxs2("div", { className: "mx-meet__composer-row", children: [
|
|
1851
|
-
/* @__PURE__ */
|
|
1928
|
+
/* @__PURE__ */ jsx5(
|
|
1852
1929
|
"input",
|
|
1853
1930
|
{
|
|
1854
1931
|
className: "mx-meet__input",
|
|
@@ -1859,22 +1936,22 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
1859
1936
|
onChange: (event) => setOptions(options.map((o, i) => i === index ? event.target.value : o))
|
|
1860
1937
|
}
|
|
1861
1938
|
),
|
|
1862
|
-
options.length > 2 ? /* @__PURE__ */
|
|
1939
|
+
options.length > 2 ? /* @__PURE__ */ jsx5(ControlButton, { label: `Remove answer ${index + 1}`, onClick: () => setOptions(options.filter((_, i) => i !== index)), children: /* @__PURE__ */ jsx5(CloseIcon, { width: 14, height: 14 }) }) : null
|
|
1863
1940
|
] }, index)),
|
|
1864
|
-
options.length < maxOptions ? /* @__PURE__ */
|
|
1941
|
+
options.length < maxOptions ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => setOptions([...options, ""]), children: "Add an answer" }) : null,
|
|
1865
1942
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
1866
|
-
/* @__PURE__ */
|
|
1943
|
+
/* @__PURE__ */ jsx5("input", { type: "checkbox", checked: multiple, onChange: (event) => setMultiple(event.target.checked) }),
|
|
1867
1944
|
"People can pick more than one"
|
|
1868
1945
|
] }),
|
|
1869
1946
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
1870
|
-
/* @__PURE__ */
|
|
1947
|
+
/* @__PURE__ */ jsx5("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
|
|
1871
1948
|
"Anonymous \u2014 nobody sees who picked what"
|
|
1872
1949
|
] }),
|
|
1873
|
-
/* @__PURE__ */
|
|
1950
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
1874
1951
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
1875
|
-
/* @__PURE__ */
|
|
1876
|
-
/* @__PURE__ */
|
|
1877
|
-
/* @__PURE__ */
|
|
1952
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__primary mx-meet__primary--small", disabled: !ready || busy, children: "Launch" }),
|
|
1953
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", disabled: !ready || busy, onClick: () => void save(false), children: "Save draft" }),
|
|
1954
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: onDone, children: "Cancel" })
|
|
1878
1955
|
] })
|
|
1879
1956
|
]
|
|
1880
1957
|
}
|
|
@@ -1896,8 +1973,8 @@ function PollCard({ poll }) {
|
|
|
1896
1973
|
};
|
|
1897
1974
|
return /* @__PURE__ */ jsxs2("article", { className: "mx-meet__collab-card", "aria-label": poll.question, children: [
|
|
1898
1975
|
/* @__PURE__ */ jsxs2("header", { className: "mx-meet__collab-head", children: [
|
|
1899
|
-
/* @__PURE__ */
|
|
1900
|
-
/* @__PURE__ */
|
|
1976
|
+
/* @__PURE__ */ jsx5("strong", { className: "mx-meet__collab-title", children: poll.question }),
|
|
1977
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__collab-state", children: stateWord })
|
|
1901
1978
|
] }),
|
|
1902
1979
|
/* @__PURE__ */ jsxs2("p", { className: "mx-meet__panel-note", children: [
|
|
1903
1980
|
poll.multiple ? "Pick any." : "Pick one.",
|
|
@@ -1905,7 +1982,7 @@ function PollCard({ poll }) {
|
|
|
1905
1982
|
counts && poll.voterCount !== null ? ` ${poll.voterCount} voted.` : "",
|
|
1906
1983
|
isHost && poll.state !== "draft" && !poll.resultsShared ? " Results are visible only to hosts." : ""
|
|
1907
1984
|
] }),
|
|
1908
|
-
/* @__PURE__ */
|
|
1985
|
+
/* @__PURE__ */ jsx5("ul", { className: "mx-meet__poll-options", children: poll.options.map((option) => {
|
|
1909
1986
|
const share = counts && total > 0 ? Math.round((option.votes ?? 0) / total * 100) : 0;
|
|
1910
1987
|
const chosen = picked.includes(option.id);
|
|
1911
1988
|
return /* @__PURE__ */ jsxs2("li", { children: [
|
|
@@ -1918,8 +1995,8 @@ function PollCard({ poll }) {
|
|
|
1918
1995
|
disabled: !canVote,
|
|
1919
1996
|
onClick: () => toggle(option.id),
|
|
1920
1997
|
children: [
|
|
1921
|
-
counts ? /* @__PURE__ */
|
|
1922
|
-
/* @__PURE__ */
|
|
1998
|
+
counts ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__poll-bar", style: { width: `${share}%` }, "aria-hidden": "true" }) : null,
|
|
1999
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__poll-text", children: option.text }),
|
|
1923
2000
|
counts ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__poll-count", children: [
|
|
1924
2001
|
option.votes ?? 0,
|
|
1925
2002
|
" \xB7 ",
|
|
@@ -1929,12 +2006,12 @@ function PollCard({ poll }) {
|
|
|
1929
2006
|
]
|
|
1930
2007
|
}
|
|
1931
2008
|
),
|
|
1932
|
-
option.voters !== void 0 && option.voters.length > 0 ? /* @__PURE__ */
|
|
2009
|
+
option.voters !== void 0 && option.voters.length > 0 ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__poll-voters", children: option.voters.join(", ") }) : null
|
|
1933
2010
|
] }, option.id);
|
|
1934
2011
|
}) }),
|
|
1935
|
-
/* @__PURE__ */
|
|
2012
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
1936
2013
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
1937
|
-
canVote ? /* @__PURE__ */
|
|
2014
|
+
canVote ? /* @__PURE__ */ jsx5(
|
|
1938
2015
|
"button",
|
|
1939
2016
|
{
|
|
1940
2017
|
type: "button",
|
|
@@ -1944,10 +2021,10 @@ function PollCard({ poll }) {
|
|
|
1944
2021
|
children: voted ? "Change vote" : "Vote"
|
|
1945
2022
|
}
|
|
1946
2023
|
) : null,
|
|
1947
|
-
isHost && poll.state === "draft" ? /* @__PURE__ */
|
|
1948
|
-
isHost && poll.state === "live" ? /* @__PURE__ */
|
|
1949
|
-
isHost && poll.state !== "draft" ? /* @__PURE__ */
|
|
1950
|
-
isHost && poll.state === "live" ? null : isHost ? /* @__PURE__ */
|
|
2024
|
+
isHost && poll.state === "draft" ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__primary mx-meet__primary--small", onClick: () => void act({ action: "poll_launch", itemId: poll.id }).then(show), children: "Launch" }) : null,
|
|
2025
|
+
isHost && poll.state === "live" ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "poll_close", itemId: poll.id }).then(show), children: "End poll" }) : null,
|
|
2026
|
+
isHost && poll.state !== "draft" ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "poll_share", itemId: poll.id }).then(show), children: poll.resultsShared ? "Hide results" : "Share results" }) : null,
|
|
2027
|
+
isHost && poll.state === "live" ? null : isHost ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "poll_delete", itemId: poll.id }).then(show), children: "Delete" }) : null
|
|
1951
2028
|
] })
|
|
1952
2029
|
] });
|
|
1953
2030
|
}
|
|
@@ -1958,11 +2035,11 @@ function PollsPanel({ onClose }) {
|
|
|
1958
2035
|
const maxOptions = collab?.settings?.pollMaxOptions ?? 10;
|
|
1959
2036
|
const ordered = [...polls].reverse();
|
|
1960
2037
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Polls", onClose, children: [
|
|
1961
|
-
collab?.error != null ? /* @__PURE__ */
|
|
1962
|
-
isHost && !composing ? /* @__PURE__ */
|
|
1963
|
-
isHost && composing ? /* @__PURE__ */
|
|
1964
|
-
ordered.length === 0 && !composing ? /* @__PURE__ */
|
|
1965
|
-
ordered.map((poll) => /* @__PURE__ */
|
|
2038
|
+
collab?.error != null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
2039
|
+
isHost && !composing ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__primary mx-meet__primary--small", onClick: () => setComposing(true), children: "New poll" }) : null,
|
|
2040
|
+
isHost && composing ? /* @__PURE__ */ jsx5(PollComposer, { maxOptions, onDone: () => setComposing(false) }) : null,
|
|
2041
|
+
ordered.length === 0 && !composing ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: isHost ? "No polls yet. Polls and their results are kept with the meeting." : "No polls yet." }) : null,
|
|
2042
|
+
ordered.map((poll) => /* @__PURE__ */ jsx5(PollCard, { poll }, poll.id))
|
|
1966
2043
|
] });
|
|
1967
2044
|
}
|
|
1968
2045
|
function QuestionCard({ question }) {
|
|
@@ -1982,18 +2059,18 @@ function QuestionCard({ question }) {
|
|
|
1982
2059
|
disabled: question.state === "dismissed",
|
|
1983
2060
|
onClick: () => void act({ action: "question_upvote", itemId: question.id }).then((r) => r.ok ? void 0 : show(r)),
|
|
1984
2061
|
children: [
|
|
1985
|
-
/* @__PURE__ */
|
|
1986
|
-
/* @__PURE__ */
|
|
2062
|
+
/* @__PURE__ */ jsx5(UpvoteIcon, { width: 16, height: 16 }),
|
|
2063
|
+
/* @__PURE__ */ jsx5("span", { children: question.upvotes })
|
|
1987
2064
|
]
|
|
1988
2065
|
}
|
|
1989
2066
|
),
|
|
1990
2067
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__question-body", children: [
|
|
1991
2068
|
/* @__PURE__ */ jsxs2("span", { className: "mx-meet__chat-meta", children: [
|
|
1992
|
-
/* @__PURE__ */
|
|
1993
|
-
question.mine && question.anonymous ? /* @__PURE__ */
|
|
1994
|
-
question.state !== "open" ? /* @__PURE__ */
|
|
2069
|
+
/* @__PURE__ */ jsx5("strong", { children: question.mine ? "You" : question.askerName }),
|
|
2070
|
+
question.mine && question.anonymous ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__chat-private", children: "anonymous" }) : null,
|
|
2071
|
+
question.state !== "open" ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__collab-state", children: question.state === "answered" ? "Answered" : "Dismissed" }) : null
|
|
1995
2072
|
] }),
|
|
1996
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__chat-text", children: question.text }),
|
|
1997
2074
|
question.answer !== null ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__question-answer", children: [
|
|
1998
2075
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
1999
2076
|
question.answeredByName ?? "Host",
|
|
@@ -2019,7 +2096,7 @@ function QuestionCard({ question }) {
|
|
|
2019
2096
|
});
|
|
2020
2097
|
},
|
|
2021
2098
|
children: [
|
|
2022
|
-
/* @__PURE__ */
|
|
2099
|
+
/* @__PURE__ */ jsx5(
|
|
2023
2100
|
"input",
|
|
2024
2101
|
{
|
|
2025
2102
|
className: "mx-meet__input",
|
|
@@ -2031,16 +2108,16 @@ function QuestionCard({ question }) {
|
|
|
2031
2108
|
autoFocus: true
|
|
2032
2109
|
}
|
|
2033
2110
|
),
|
|
2034
|
-
/* @__PURE__ */
|
|
2111
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", children: "Done" })
|
|
2035
2112
|
]
|
|
2036
2113
|
}
|
|
2037
2114
|
) : null,
|
|
2038
|
-
/* @__PURE__ */
|
|
2115
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
2039
2116
|
isHost || question.mine ? /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
2040
|
-
isHost && question.state === "open" && !answering ? /* @__PURE__ */
|
|
2041
|
-
isHost && question.state === "open" ? /* @__PURE__ */
|
|
2042
|
-
isHost && question.state !== "open" ? /* @__PURE__ */
|
|
2043
|
-
question.mine || isHost ? /* @__PURE__ */
|
|
2117
|
+
isHost && question.state === "open" && !answering ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => setAnswering(true), children: "Answer" }) : null,
|
|
2118
|
+
isHost && question.state === "open" ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_dismiss", itemId: question.id }).then(show), children: "Dismiss" }) : null,
|
|
2119
|
+
isHost && question.state !== "open" ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_reopen", itemId: question.id }).then(show), children: "Reopen" }) : null,
|
|
2120
|
+
question.mine || isHost ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "question_delete", itemId: question.id }).then(show), children: "Delete" }) : null
|
|
2044
2121
|
] }) : null
|
|
2045
2122
|
] });
|
|
2046
2123
|
}
|
|
@@ -2057,7 +2134,7 @@ function QaPanel({ onClose }) {
|
|
|
2057
2134
|
(a, b) => rank(a) !== rank(b) ? rank(a) - rank(b) : order === "popular" ? b.upvotes - a.upvotes || (b.createdAt ?? "").localeCompare(a.createdAt ?? "") : (b.createdAt ?? "").localeCompare(a.createdAt ?? "")
|
|
2058
2135
|
);
|
|
2059
2136
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Q&A", onClose, children: [
|
|
2060
|
-
collab?.error != null ? /* @__PURE__ */
|
|
2137
|
+
collab?.error != null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
2061
2138
|
/* @__PURE__ */ jsxs2(
|
|
2062
2139
|
"form",
|
|
2063
2140
|
{
|
|
@@ -2073,7 +2150,7 @@ function QaPanel({ onClose }) {
|
|
|
2073
2150
|
},
|
|
2074
2151
|
children: [
|
|
2075
2152
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__composer-row", children: [
|
|
2076
|
-
/* @__PURE__ */
|
|
2153
|
+
/* @__PURE__ */ jsx5(
|
|
2077
2154
|
"input",
|
|
2078
2155
|
{
|
|
2079
2156
|
className: "mx-meet__input",
|
|
@@ -2084,17 +2161,17 @@ function QaPanel({ onClose }) {
|
|
|
2084
2161
|
"aria-label": "Ask the host a question"
|
|
2085
2162
|
}
|
|
2086
2163
|
),
|
|
2087
|
-
/* @__PURE__ */
|
|
2164
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Ask" })
|
|
2088
2165
|
] }),
|
|
2089
2166
|
allowAnonymous ? /* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
2090
|
-
/* @__PURE__ */
|
|
2167
|
+
/* @__PURE__ */ jsx5("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
|
|
2091
2168
|
"Ask anonymously"
|
|
2092
2169
|
] }) : null
|
|
2093
2170
|
]
|
|
2094
2171
|
}
|
|
2095
2172
|
),
|
|
2096
|
-
/* @__PURE__ */
|
|
2097
|
-
questions.length > 1 ? /* @__PURE__ */
|
|
2173
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
2174
|
+
questions.length > 1 ? /* @__PURE__ */ jsx5("div", { className: "mx-meet__pills", role: "group", "aria-label": "Order questions", children: ["popular", "recent"].map((value) => /* @__PURE__ */ jsx5(
|
|
2098
2175
|
"button",
|
|
2099
2176
|
{
|
|
2100
2177
|
type: "button",
|
|
@@ -2105,7 +2182,7 @@ function QaPanel({ onClose }) {
|
|
|
2105
2182
|
},
|
|
2106
2183
|
value
|
|
2107
2184
|
)) }) : null,
|
|
2108
|
-
questions.length === 0 ? /* @__PURE__ */
|
|
2185
|
+
questions.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: "No questions yet. Questions are kept with the meeting." }) : /* @__PURE__ */ jsx5("ul", { className: "mx-meet__chat", children: questions.map((question) => /* @__PURE__ */ jsx5(QuestionCard, { question }, question.id)) })
|
|
2109
2186
|
] });
|
|
2110
2187
|
}
|
|
2111
2188
|
var BOARD_W = 1600;
|
|
@@ -2119,7 +2196,7 @@ function strokePath(points) {
|
|
|
2119
2196
|
return `${move} ${rest.map(([x, y]) => `L${(x * BOARD_W).toFixed(1)} ${(y * BOARD_H).toFixed(1)}`).join(" ")}`;
|
|
2120
2197
|
}
|
|
2121
2198
|
function StrokeView({ stroke, onPick }) {
|
|
2122
|
-
return /* @__PURE__ */
|
|
2199
|
+
return /* @__PURE__ */ jsx5(
|
|
2123
2200
|
"path",
|
|
2124
2201
|
{
|
|
2125
2202
|
d: strokePath(stroke.points),
|
|
@@ -2131,7 +2208,7 @@ function StrokeView({ stroke, onPick }) {
|
|
|
2131
2208
|
strokeLinejoin: "round",
|
|
2132
2209
|
onPointerDown: onPick,
|
|
2133
2210
|
style: onPick !== void 0 ? { cursor: "pointer" } : void 0,
|
|
2134
|
-
children: /* @__PURE__ */
|
|
2211
|
+
children: /* @__PURE__ */ jsx5("title", { children: stroke.byName })
|
|
2135
2212
|
}
|
|
2136
2213
|
);
|
|
2137
2214
|
}
|
|
@@ -2176,12 +2253,12 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2176
2253
|
};
|
|
2177
2254
|
return /* @__PURE__ */ jsxs2("section", { className: "mx-meet__whiteboard", "aria-label": "Whiteboard", children: [
|
|
2178
2255
|
/* @__PURE__ */ jsxs2("header", { className: "mx-meet__whiteboard-bar", children: [
|
|
2179
|
-
/* @__PURE__ */
|
|
2180
|
-
/* @__PURE__ */
|
|
2181
|
-
["pen", "Pen", /* @__PURE__ */
|
|
2182
|
-
["highlighter", "Highlighter", /* @__PURE__ */
|
|
2183
|
-
["eraser", "Eraser \u2014 click a stroke", /* @__PURE__ */
|
|
2184
|
-
].map(([value, label, icon]) => /* @__PURE__ */
|
|
2256
|
+
/* @__PURE__ */ jsx5("strong", { className: "mx-meet__panel-title", children: "Whiteboard" }),
|
|
2257
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__pills", role: "group", "aria-label": "Tool", children: [
|
|
2258
|
+
["pen", "Pen", /* @__PURE__ */ jsx5(PencilIcon, { width: 16, height: 16 }, "p")],
|
|
2259
|
+
["highlighter", "Highlighter", /* @__PURE__ */ jsx5(HighlighterIcon, { width: 16, height: 16 }, "h")],
|
|
2260
|
+
["eraser", "Eraser \u2014 click a stroke", /* @__PURE__ */ jsx5(EraserIcon, { width: 16, height: 16 }, "e")]
|
|
2261
|
+
].map(([value, label, icon]) => /* @__PURE__ */ jsx5(
|
|
2185
2262
|
"button",
|
|
2186
2263
|
{
|
|
2187
2264
|
type: "button",
|
|
@@ -2194,7 +2271,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2194
2271
|
},
|
|
2195
2272
|
value
|
|
2196
2273
|
)) }),
|
|
2197
|
-
/* @__PURE__ */
|
|
2274
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__swatches", role: "group", "aria-label": "Color", children: INK.map((ink) => /* @__PURE__ */ jsx5(
|
|
2198
2275
|
"button",
|
|
2199
2276
|
{
|
|
2200
2277
|
type: "button",
|
|
@@ -2209,7 +2286,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2209
2286
|
},
|
|
2210
2287
|
ink
|
|
2211
2288
|
)) }),
|
|
2212
|
-
/* @__PURE__ */
|
|
2289
|
+
/* @__PURE__ */ jsx5(
|
|
2213
2290
|
ControlButton,
|
|
2214
2291
|
{
|
|
2215
2292
|
label: "Undo my last stroke",
|
|
@@ -2217,14 +2294,14 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2217
2294
|
const last = mine[mine.length - 1];
|
|
2218
2295
|
if (last !== void 0) void act({ action: "stroke_erase", itemId: last.id }).then((r) => r.ok ? void 0 : show(r));
|
|
2219
2296
|
},
|
|
2220
|
-
children: /* @__PURE__ */
|
|
2297
|
+
children: /* @__PURE__ */ jsx5(UndoIcon, { width: 16, height: 16 })
|
|
2221
2298
|
}
|
|
2222
2299
|
),
|
|
2223
|
-
isHost && strokes.length > 0 ? /* @__PURE__ */
|
|
2224
|
-
/* @__PURE__ */
|
|
2225
|
-
/* @__PURE__ */
|
|
2300
|
+
isHost && strokes.length > 0 ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "whiteboard_clear" }).then(show), children: "Clear board" }) : null,
|
|
2301
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__whiteboard-note", children: "Saved with the meeting" }),
|
|
2302
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: "Close whiteboard", onClick: onClose, children: /* @__PURE__ */ jsx5(CloseIcon, { width: 16, height: 16 }) })
|
|
2226
2303
|
] }),
|
|
2227
|
-
/* @__PURE__ */
|
|
2304
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
2228
2305
|
/* @__PURE__ */ jsxs2(
|
|
2229
2306
|
"svg",
|
|
2230
2307
|
{
|
|
@@ -2249,8 +2326,8 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2249
2326
|
onPointerUp: finish,
|
|
2250
2327
|
onPointerCancel: finish,
|
|
2251
2328
|
children: [
|
|
2252
|
-
/* @__PURE__ */
|
|
2253
|
-
strokes.map((stroke) => /* @__PURE__ */
|
|
2329
|
+
/* @__PURE__ */ jsx5("rect", { x: 0, y: 0, width: BOARD_W, height: BOARD_H, className: "mx-meet__board-paper" }),
|
|
2330
|
+
strokes.map((stroke) => /* @__PURE__ */ jsx5(
|
|
2254
2331
|
StrokeView,
|
|
2255
2332
|
{
|
|
2256
2333
|
stroke,
|
|
@@ -2258,8 +2335,8 @@ function WhiteboardPanel({ onClose }) {
|
|
|
2258
2335
|
},
|
|
2259
2336
|
stroke.id
|
|
2260
2337
|
)),
|
|
2261
|
-
pending.map((stroke) => /* @__PURE__ */
|
|
2262
|
-
drawing !== null ? /* @__PURE__ */
|
|
2338
|
+
pending.map((stroke) => /* @__PURE__ */ jsx5(StrokeView, { stroke }, stroke.id)),
|
|
2339
|
+
drawing !== null ? /* @__PURE__ */ jsx5(
|
|
2263
2340
|
StrokeView,
|
|
2264
2341
|
{
|
|
2265
2342
|
stroke: {
|
|
@@ -2316,8 +2393,8 @@ function BreakoutSetup() {
|
|
|
2316
2393
|
const nameOf = (identity) => people.find((p) => p.identity === identity)?.displayName ?? identity;
|
|
2317
2394
|
return /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-card", children: [
|
|
2318
2395
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
2319
|
-
/* @__PURE__ */
|
|
2320
|
-
/* @__PURE__ */
|
|
2396
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Rooms" }),
|
|
2397
|
+
/* @__PURE__ */ jsx5(
|
|
2321
2398
|
"input",
|
|
2322
2399
|
{
|
|
2323
2400
|
className: "mx-meet__input",
|
|
@@ -2329,11 +2406,11 @@ function BreakoutSetup() {
|
|
|
2329
2406
|
}
|
|
2330
2407
|
)
|
|
2331
2408
|
] }),
|
|
2332
|
-
/* @__PURE__ */
|
|
2409
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__pills", role: "group", "aria-label": "How people are placed", children: [
|
|
2333
2410
|
["auto", "Automatically"],
|
|
2334
2411
|
["manual", "Manually"],
|
|
2335
2412
|
["choose", "Let people choose"]
|
|
2336
|
-
].map(([value, label]) => /* @__PURE__ */
|
|
2413
|
+
].map(([value, label]) => /* @__PURE__ */ jsx5(
|
|
2337
2414
|
"button",
|
|
2338
2415
|
{
|
|
2339
2416
|
type: "button",
|
|
@@ -2345,8 +2422,8 @@ function BreakoutSetup() {
|
|
|
2345
2422
|
value
|
|
2346
2423
|
)) }),
|
|
2347
2424
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
2348
|
-
/* @__PURE__ */
|
|
2349
|
-
/* @__PURE__ */
|
|
2425
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Timer (minutes, 0 for none)" }),
|
|
2426
|
+
/* @__PURE__ */ jsx5(
|
|
2350
2427
|
"input",
|
|
2351
2428
|
{
|
|
2352
2429
|
className: "mx-meet__input",
|
|
@@ -2358,8 +2435,8 @@ function BreakoutSetup() {
|
|
|
2358
2435
|
}
|
|
2359
2436
|
)
|
|
2360
2437
|
] }),
|
|
2361
|
-
mode === "manual" ? people.length === 0 ? /* @__PURE__ */
|
|
2362
|
-
/* @__PURE__ */
|
|
2438
|
+
mode === "manual" ? people.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: "Nobody else is in the meeting yet." }) : /* @__PURE__ */ jsx5("ul", { className: "mx-meet__people", children: people.map((person) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
|
|
2439
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__person-name", children: person.displayName }),
|
|
2363
2440
|
/* @__PURE__ */ jsxs2(
|
|
2364
2441
|
"select",
|
|
2365
2442
|
{
|
|
@@ -2368,7 +2445,7 @@ function BreakoutSetup() {
|
|
|
2368
2445
|
value: manual[person.identity] ?? -1,
|
|
2369
2446
|
onChange: (event) => setManual({ ...manual, [person.identity]: Number(event.target.value) }),
|
|
2370
2447
|
children: [
|
|
2371
|
-
/* @__PURE__ */
|
|
2448
|
+
/* @__PURE__ */ jsx5("option", { value: -1, children: "Main room" }),
|
|
2372
2449
|
Array.from({ length: rooms }, (_, index) => /* @__PURE__ */ jsxs2("option", { value: index, children: [
|
|
2373
2450
|
"Room ",
|
|
2374
2451
|
index + 1
|
|
@@ -2376,15 +2453,15 @@ function BreakoutSetup() {
|
|
|
2376
2453
|
]
|
|
2377
2454
|
}
|
|
2378
2455
|
)
|
|
2379
|
-
] }, person.identity)) }) : mode === "auto" ? /* @__PURE__ */
|
|
2456
|
+
] }, person.identity)) }) : mode === "auto" ? /* @__PURE__ */ jsx5("ul", { className: "mx-meet__breakout-rooms", children: assignment.map((members, index) => /* @__PURE__ */ jsxs2("li", { children: [
|
|
2380
2457
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
2381
2458
|
"Room ",
|
|
2382
2459
|
index + 1
|
|
2383
2460
|
] }),
|
|
2384
2461
|
" ",
|
|
2385
|
-
/* @__PURE__ */
|
|
2386
|
-
] }, index)) }) : /* @__PURE__ */
|
|
2387
|
-
/* @__PURE__ */
|
|
2462
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__panel-note", children: members.length === 0 ? "empty" : members.map(nameOf).join(", ") })
|
|
2463
|
+
] }, index)) }) : /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: "Everyone picks a room from their own screen." }),
|
|
2464
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
2388
2465
|
/* @__PURE__ */ jsxs2(
|
|
2389
2466
|
"button",
|
|
2390
2467
|
{
|
|
@@ -2439,17 +2516,17 @@ function BreakoutRun({ plan }) {
|
|
|
2439
2516
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
2440
2517
|
plan.allowChoose ? " \xB7 people choose their room" : ""
|
|
2441
2518
|
] }),
|
|
2442
|
-
/* @__PURE__ */
|
|
2519
|
+
/* @__PURE__ */ jsx5("ul", { className: "mx-meet__breakout-rooms", children: plan.rooms.map((room) => {
|
|
2443
2520
|
const here = breakoutRoomId === room.id;
|
|
2444
2521
|
const mayJoin = isHost || plan.allowChoose || mine?.id === room.id;
|
|
2445
2522
|
return /* @__PURE__ */ jsxs2("li", { className: here ? "mx-meet__breakout-room mx-meet__breakout-room--here" : "mx-meet__breakout-room", children: [
|
|
2446
2523
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-head", children: [
|
|
2447
|
-
/* @__PURE__ */
|
|
2448
|
-
here ? /* @__PURE__ */
|
|
2524
|
+
/* @__PURE__ */ jsx5("strong", { children: room.name }),
|
|
2525
|
+
here ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__collab-state", children: "You are here" }) : mayJoin ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(room.id), children: "Join" }) : null
|
|
2449
2526
|
] }),
|
|
2450
|
-
/* @__PURE__ */
|
|
2451
|
-
isHost && room.identities.length > 0 ? /* @__PURE__ */
|
|
2452
|
-
/* @__PURE__ */
|
|
2527
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__panel-note", children: room.identities.length === 0 ? "Nobody assigned" : room.identities.map(nameOf).join(", ") }),
|
|
2528
|
+
isHost && room.identities.length > 0 ? /* @__PURE__ */ jsx5("ul", { className: "mx-meet__people", children: room.identities.map((identity) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
|
|
2529
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__person-name", children: nameOf(identity) }),
|
|
2453
2530
|
/* @__PURE__ */ jsxs2(
|
|
2454
2531
|
"select",
|
|
2455
2532
|
{
|
|
@@ -2462,15 +2539,15 @@ function BreakoutRun({ plan }) {
|
|
|
2462
2539
|
roomId: event.target.value === "" ? null : event.target.value
|
|
2463
2540
|
}).then(show),
|
|
2464
2541
|
children: [
|
|
2465
|
-
/* @__PURE__ */
|
|
2466
|
-
plan.rooms.map((option) => /* @__PURE__ */
|
|
2542
|
+
/* @__PURE__ */ jsx5("option", { value: "", children: "Main room" }),
|
|
2543
|
+
plan.rooms.map((option) => /* @__PURE__ */ jsx5("option", { value: option.id, children: option.name }, option.id))
|
|
2467
2544
|
]
|
|
2468
2545
|
}
|
|
2469
2546
|
)
|
|
2470
2547
|
] }, identity)) }) : null
|
|
2471
2548
|
] }, room.id);
|
|
2472
2549
|
}) }),
|
|
2473
|
-
breakoutRoomId !== null ? /* @__PURE__ */
|
|
2550
|
+
breakoutRoomId !== null ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(null), children: "Return to the main room" }) : null,
|
|
2474
2551
|
isHost ? /* @__PURE__ */ jsxs2(
|
|
2475
2552
|
"form",
|
|
2476
2553
|
{
|
|
@@ -2485,7 +2562,7 @@ function BreakoutRun({ plan }) {
|
|
|
2485
2562
|
});
|
|
2486
2563
|
},
|
|
2487
2564
|
children: [
|
|
2488
|
-
/* @__PURE__ */
|
|
2565
|
+
/* @__PURE__ */ jsx5(
|
|
2489
2566
|
"input",
|
|
2490
2567
|
{
|
|
2491
2568
|
className: "mx-meet__input",
|
|
@@ -2496,12 +2573,12 @@ function BreakoutRun({ plan }) {
|
|
|
2496
2573
|
"aria-label": "Message every room"
|
|
2497
2574
|
}
|
|
2498
2575
|
),
|
|
2499
|
-
/* @__PURE__ */
|
|
2576
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", disabled: broadcast.trim().length === 0, children: "Send" })
|
|
2500
2577
|
]
|
|
2501
2578
|
}
|
|
2502
2579
|
) : null,
|
|
2503
|
-
/* @__PURE__ */
|
|
2504
|
-
isHost ? /* @__PURE__ */
|
|
2580
|
+
/* @__PURE__ */ jsx5(Notice, { notice }),
|
|
2581
|
+
isHost ? /* @__PURE__ */ jsx5(
|
|
2505
2582
|
"button",
|
|
2506
2583
|
{
|
|
2507
2584
|
type: "button",
|
|
@@ -2516,8 +2593,8 @@ function BreakoutsPanel({ onClose }) {
|
|
|
2516
2593
|
const { collab, isHost } = useCollab();
|
|
2517
2594
|
const plan = collab?.breakout?.state === "open" ? collab.breakout : null;
|
|
2518
2595
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Breakout rooms", onClose, children: [
|
|
2519
|
-
collab?.error != null ? /* @__PURE__ */
|
|
2520
|
-
plan !== null ? /* @__PURE__ */
|
|
2596
|
+
collab?.error != null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
2597
|
+
plan !== null ? /* @__PURE__ */ jsx5(BreakoutRun, { plan }) : isHost ? /* @__PURE__ */ jsx5(BreakoutSetup, {}) : /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: "Breakout rooms are closed." })
|
|
2521
2598
|
] });
|
|
2522
2599
|
}
|
|
2523
2600
|
function BreakoutBanner() {
|
|
@@ -2552,16 +2629,16 @@ function BreakoutBanner() {
|
|
|
2552
2629
|
const room = open?.rooms.find((r) => r.id === breakoutRoomId) ?? null;
|
|
2553
2630
|
if (open === null && failure === null) return null;
|
|
2554
2631
|
return /* @__PURE__ */ jsxs2("div", { className: "mx-meet__breakout-banner", role: "status", children: [
|
|
2555
|
-
failure !== null ? /* @__PURE__ */
|
|
2632
|
+
failure !== null ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__collab-error", children: failure }) : null,
|
|
2556
2633
|
room !== null ? /* @__PURE__ */ jsxs2("span", { children: [
|
|
2557
|
-
/* @__PURE__ */
|
|
2634
|
+
/* @__PURE__ */ jsx5("strong", { children: room.name }),
|
|
2558
2635
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
2559
|
-
/* @__PURE__ */
|
|
2636
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__chip", onClick: () => void moveTo(null), children: "Return to main room" })
|
|
2560
2637
|
] }) : assigned !== null ? /* @__PURE__ */ jsxs2("span", { children: [
|
|
2561
2638
|
"You are assigned to ",
|
|
2562
|
-
/* @__PURE__ */
|
|
2639
|
+
/* @__PURE__ */ jsx5("strong", { children: assigned.name }),
|
|
2563
2640
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
2564
|
-
/* @__PURE__ */
|
|
2641
|
+
/* @__PURE__ */ jsx5(
|
|
2565
2642
|
"button",
|
|
2566
2643
|
{
|
|
2567
2644
|
type: "button",
|
|
@@ -2573,7 +2650,7 @@ function BreakoutBanner() {
|
|
|
2573
2650
|
children: "Join"
|
|
2574
2651
|
}
|
|
2575
2652
|
)
|
|
2576
|
-
] }) : open?.allowChoose ? /* @__PURE__ */
|
|
2653
|
+
] }) : open?.allowChoose ? /* @__PURE__ */ jsx5("span", { children: "Breakout rooms are open \u2014 pick one under Activities." }) : null,
|
|
2577
2654
|
showBroadcast ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__breakout-broadcast", children: [
|
|
2578
2655
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
2579
2656
|
broadcast.by,
|
|
@@ -2581,7 +2658,7 @@ function BreakoutBanner() {
|
|
|
2581
2658
|
] }),
|
|
2582
2659
|
" ",
|
|
2583
2660
|
broadcast.text,
|
|
2584
|
-
/* @__PURE__ */
|
|
2661
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => setDismissedBroadcast(broadcast.at), children: "Dismiss" })
|
|
2585
2662
|
] }) : null
|
|
2586
2663
|
] });
|
|
2587
2664
|
}
|
|
@@ -2597,7 +2674,7 @@ function CaptionLanguageSettings() {
|
|
|
2597
2674
|
const choices = CAPTION_LANGUAGES.some((l) => l.tag === preferred) ? CAPTION_LANGUAGES : [{ tag: preferred, name: preferred }, ...CAPTION_LANGUAGES];
|
|
2598
2675
|
return /* @__PURE__ */ jsxs2("section", { className: "mx-meet__section", "aria-label": "Captions", children: [
|
|
2599
2676
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
2600
|
-
/* @__PURE__ */
|
|
2677
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Translate captions to" }),
|
|
2601
2678
|
/* @__PURE__ */ jsxs2(
|
|
2602
2679
|
"select",
|
|
2603
2680
|
{
|
|
@@ -2608,29 +2685,29 @@ function CaptionLanguageSettings() {
|
|
|
2608
2685
|
setCaptionLanguage(host.store, next);
|
|
2609
2686
|
},
|
|
2610
2687
|
children: [
|
|
2611
|
-
/* @__PURE__ */
|
|
2688
|
+
/* @__PURE__ */ jsx5("option", { value: "", children: "Off \u2014 as spoken" }),
|
|
2612
2689
|
current === "" ? /* @__PURE__ */ jsxs2("option", { value: preferred, children: [
|
|
2613
2690
|
choices.find((c) => c.tag === preferred)?.name ?? preferred,
|
|
2614
2691
|
" (yours)"
|
|
2615
2692
|
] }) : null,
|
|
2616
|
-
choices.filter((choice) => current !== "" || choice.tag !== preferred).map((choice) => /* @__PURE__ */
|
|
2693
|
+
choices.filter((choice) => current !== "" || choice.tag !== preferred).map((choice) => /* @__PURE__ */ jsx5("option", { value: choice.tag, children: choice.name }, choice.tag))
|
|
2617
2694
|
]
|
|
2618
2695
|
}
|
|
2619
2696
|
)
|
|
2620
2697
|
] }),
|
|
2621
|
-
collab?.captionTranslationError != null ? /* @__PURE__ */
|
|
2698
|
+
collab?.captionTranslationError != null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.captionTranslationError }) : null
|
|
2622
2699
|
] });
|
|
2623
2700
|
}
|
|
2624
2701
|
|
|
2625
2702
|
// src/skins/meet/components.tsx
|
|
2626
|
-
import { Fragment, jsx as
|
|
2703
|
+
import { Fragment, jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
2627
2704
|
function InertNotice({ what }) {
|
|
2628
2705
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__empty", role: "status", children: [
|
|
2629
2706
|
/* @__PURE__ */ jsxs3("p", { className: "mx-meet__empty-title", children: [
|
|
2630
2707
|
what,
|
|
2631
2708
|
" is not ready yet"
|
|
2632
2709
|
] }),
|
|
2633
|
-
/* @__PURE__ */
|
|
2710
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__empty-body", children: "Calls and meetings need a signed-in identity and an active organization. This will appear as soon as they resolve." })
|
|
2634
2711
|
] });
|
|
2635
2712
|
}
|
|
2636
2713
|
function Avatar({
|
|
@@ -2640,7 +2717,7 @@ function Avatar({
|
|
|
2640
2717
|
}) {
|
|
2641
2718
|
const tint = avatarPaletteIndex(name);
|
|
2642
2719
|
if (url != null && url.length > 0) {
|
|
2643
|
-
return /* @__PURE__ */
|
|
2720
|
+
return /* @__PURE__ */ jsx6(
|
|
2644
2721
|
"img",
|
|
2645
2722
|
{
|
|
2646
2723
|
className: "mx-meet__avatar",
|
|
@@ -2652,7 +2729,7 @@ function Avatar({
|
|
|
2652
2729
|
}
|
|
2653
2730
|
);
|
|
2654
2731
|
}
|
|
2655
|
-
return /* @__PURE__ */
|
|
2732
|
+
return /* @__PURE__ */ jsx6(
|
|
2656
2733
|
"span",
|
|
2657
2734
|
{
|
|
2658
2735
|
className: "mx-meet__avatar mx-meet__avatar--initials",
|
|
@@ -2674,7 +2751,7 @@ function ControlButton({
|
|
|
2674
2751
|
onClick,
|
|
2675
2752
|
children
|
|
2676
2753
|
}) {
|
|
2677
|
-
return /* @__PURE__ */
|
|
2754
|
+
return /* @__PURE__ */ jsx6(
|
|
2678
2755
|
"button",
|
|
2679
2756
|
{
|
|
2680
2757
|
type: "button",
|
|
@@ -2700,7 +2777,7 @@ function RecordingIndicator() {
|
|
|
2700
2777
|
role: "status",
|
|
2701
2778
|
"aria-live": "polite",
|
|
2702
2779
|
children: [
|
|
2703
|
-
/* @__PURE__ */
|
|
2780
|
+
/* @__PURE__ */ jsx6(RecordIcon, { width: 10, height: 10 }),
|
|
2704
2781
|
label
|
|
2705
2782
|
]
|
|
2706
2783
|
}
|
|
@@ -2708,15 +2785,16 @@ function RecordingIndicator() {
|
|
|
2708
2785
|
}
|
|
2709
2786
|
function ConnectionDot({ quality }) {
|
|
2710
2787
|
if (quality === "excellent" || quality === "good" || quality === "unknown") return null;
|
|
2711
|
-
return /* @__PURE__ */
|
|
2788
|
+
return /* @__PURE__ */ jsx6("span", { className: `mx-meet__quality mx-meet__quality--${quality}`, title: `Connection ${quality}`, children: /* @__PURE__ */ jsx6(WifiLowIcon, { width: 14, height: 14 }) });
|
|
2712
2789
|
}
|
|
2713
2790
|
function RoleBadge({
|
|
2714
2791
|
role,
|
|
2715
2792
|
standing
|
|
2716
2793
|
}) {
|
|
2717
|
-
if (role === "host") return /* @__PURE__ */
|
|
2718
|
-
if (role === "cohost") return /* @__PURE__ */
|
|
2719
|
-
if (
|
|
2794
|
+
if (role === "host") return /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Host" });
|
|
2795
|
+
if (role === "cohost") return /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Co-host" });
|
|
2796
|
+
if (isObserverRole(role)) return /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", "data-meet-observing": "", children: "Observing" });
|
|
2797
|
+
if (isLinkFollower(standing)) return /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Guest" });
|
|
2720
2798
|
return null;
|
|
2721
2799
|
}
|
|
2722
2800
|
function ParticipantTile({
|
|
@@ -2746,7 +2824,7 @@ function ParticipantTile({
|
|
|
2746
2824
|
"data-identity": participant.identity,
|
|
2747
2825
|
...participantAttributes(participant),
|
|
2748
2826
|
children: [
|
|
2749
|
-
showVideo ? /* @__PURE__ */
|
|
2827
|
+
showVideo ? /* @__PURE__ */ jsx6(
|
|
2750
2828
|
"video",
|
|
2751
2829
|
{
|
|
2752
2830
|
ref: videoRef,
|
|
@@ -2755,43 +2833,43 @@ function ParticipantTile({
|
|
|
2755
2833
|
playsInline: true,
|
|
2756
2834
|
muted: participant.isLocal
|
|
2757
2835
|
}
|
|
2758
|
-
) : /* @__PURE__ */
|
|
2836
|
+
) : /* @__PURE__ */ jsx6("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx6(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: featured ? 96 : 56 }) }),
|
|
2759
2837
|
participant.handRaised ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__tile-hand", title: `Hand raised \xB7 ${ordinal(handPosition)} in line`, children: [
|
|
2760
|
-
/* @__PURE__ */
|
|
2838
|
+
/* @__PURE__ */ jsx6(HandIcon, { width: 14, height: 14 }),
|
|
2761
2839
|
handPosition > 0 ? handPosition : null
|
|
2762
2840
|
] }) : null,
|
|
2763
2841
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__tile-bar", children: [
|
|
2764
2842
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__tile-name", children: [
|
|
2765
|
-
spotlit ? /* @__PURE__ */
|
|
2843
|
+
spotlit ? /* @__PURE__ */ jsx6("span", { title: "Spotlighted for everyone", className: "mx-meet__tile-flag", children: /* @__PURE__ */ jsx6(SpotlightIcon, { width: 12, height: 12 }) }) : null,
|
|
2766
2844
|
participant.displayName,
|
|
2767
2845
|
participant.isLocal ? " (you)" : "",
|
|
2768
|
-
participant.isAgent ? /* @__PURE__ */
|
|
2769
|
-
/* @__PURE__ */
|
|
2846
|
+
participant.isAgent ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "AI" }) : null,
|
|
2847
|
+
/* @__PURE__ */ jsx6(RoleBadge, { role: participant.role, standing: participant.standing })
|
|
2770
2848
|
] }),
|
|
2771
|
-
!participant.micEnabled ? /* @__PURE__ */
|
|
2772
|
-
/* @__PURE__ */
|
|
2849
|
+
!participant.micEnabled ? /* @__PURE__ */ jsx6(MicOffIcon, { width: 14, height: 14 }) : null,
|
|
2850
|
+
/* @__PURE__ */ jsx6(QualityBars, { quality: participant.quality })
|
|
2773
2851
|
] }),
|
|
2774
2852
|
/* @__PURE__ */ jsxs3("div", { className: menu ? "mx-meet__tile-actions mx-meet__tile-actions--open" : "mx-meet__tile-actions", children: [
|
|
2775
|
-
/* @__PURE__ */
|
|
2853
|
+
/* @__PURE__ */ jsx6(
|
|
2776
2854
|
ControlButton,
|
|
2777
2855
|
{
|
|
2778
2856
|
label: pinnedHere ? "Unpin" : `Pin ${participant.displayName} for me`,
|
|
2779
2857
|
active: pinnedHere,
|
|
2780
2858
|
onClick: () => host?.engine.pin(pinnedHere ? null : participant.identity),
|
|
2781
|
-
children: /* @__PURE__ */
|
|
2859
|
+
children: /* @__PURE__ */ jsx6(PinIcon, { width: 16, height: 16 })
|
|
2782
2860
|
}
|
|
2783
2861
|
),
|
|
2784
2862
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
2785
|
-
/* @__PURE__ */
|
|
2863
|
+
/* @__PURE__ */ jsx6(
|
|
2786
2864
|
ControlButton,
|
|
2787
2865
|
{
|
|
2788
2866
|
label: `More for ${participant.displayName}`,
|
|
2789
2867
|
active: menu,
|
|
2790
2868
|
onClick: () => setMenu(!menu),
|
|
2791
|
-
children: /* @__PURE__ */
|
|
2869
|
+
children: /* @__PURE__ */ jsx6(MoreIcon, { width: 16, height: 16 })
|
|
2792
2870
|
}
|
|
2793
2871
|
),
|
|
2794
|
-
menu ? /* @__PURE__ */
|
|
2872
|
+
menu ? /* @__PURE__ */ jsx6(PersonMenu, { participant, onClose: () => setMenu(false), placement: "down" }) : null
|
|
2795
2873
|
] })
|
|
2796
2874
|
] })
|
|
2797
2875
|
]
|
|
@@ -2807,25 +2885,25 @@ function QualityBars({ quality }) {
|
|
|
2807
2885
|
if (quality === "unknown") return null;
|
|
2808
2886
|
const bars = quality === "excellent" ? 3 : quality === "good" ? 2 : quality === "poor" ? 1 : 0;
|
|
2809
2887
|
const label = quality === "lost" ? "Connection lost" : quality === "poor" ? "Poor connection" : `Connection ${quality}`;
|
|
2810
|
-
return /* @__PURE__ */
|
|
2888
|
+
return /* @__PURE__ */ jsx6("span", { className: `mx-meet__signal mx-meet__signal--${quality}`, title: label, "aria-label": label, role: "img", children: /* @__PURE__ */ jsx6(SignalIcon, { bars, width: 14, height: 14 }) });
|
|
2811
2889
|
}
|
|
2812
2890
|
function Stage({ pageSize }) {
|
|
2813
2891
|
const stage = useStage(pageSize);
|
|
2814
2892
|
const columns = gridColumns(stage.tiles.length);
|
|
2815
2893
|
if (stage.feature === null && stage.tiles.length === 0) {
|
|
2816
2894
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__stage mx-meet__stage--empty", children: [
|
|
2817
|
-
/* @__PURE__ */
|
|
2818
|
-
/* @__PURE__ */
|
|
2895
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__empty-title", children: "Waiting for others to join" }),
|
|
2896
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__empty-body", children: "Share the meeting link and people can join from anywhere \u2014 no account needed." })
|
|
2819
2897
|
] });
|
|
2820
2898
|
}
|
|
2821
2899
|
return /* @__PURE__ */ jsxs3("div", { className: `mx-meet__stage${stage.feature !== null ? " mx-meet__stage--speaker" : ""}`, children: [
|
|
2822
|
-
stage.feature !== null ? /* @__PURE__ */
|
|
2823
|
-
/* @__PURE__ */
|
|
2900
|
+
stage.feature !== null ? /* @__PURE__ */ jsx6(ParticipantTile, { participant: stage.feature, featured: true }) : null,
|
|
2901
|
+
/* @__PURE__ */ jsx6(
|
|
2824
2902
|
"div",
|
|
2825
2903
|
{
|
|
2826
2904
|
className: "mx-meet__grid",
|
|
2827
2905
|
style: { "--mx-meet-columns": columns },
|
|
2828
|
-
children: stage.tiles.map((participant) => /* @__PURE__ */
|
|
2906
|
+
children: stage.tiles.map((participant) => /* @__PURE__ */ jsx6(ParticipantTile, { participant }, participant.identity))
|
|
2829
2907
|
}
|
|
2830
2908
|
),
|
|
2831
2909
|
stage.overflow > 0 ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__overflow", children: [
|
|
@@ -2851,6 +2929,13 @@ function ControlBar({ onLeave }) {
|
|
|
2851
2929
|
const micUnavailable = useLocalMedia().microphone.unavailable;
|
|
2852
2930
|
const unread = useUnreadChat(panel === "chat");
|
|
2853
2931
|
const [whiteboard, setWhiteboard] = useState4(false);
|
|
2932
|
+
const app = useMeetAppPanel();
|
|
2933
|
+
const appOpened = useRef6(false);
|
|
2934
|
+
useEffect6(() => {
|
|
2935
|
+
if (app === null || appOpened.current) return;
|
|
2936
|
+
appOpened.current = true;
|
|
2937
|
+
setPanel("app");
|
|
2938
|
+
}, [app]);
|
|
2854
2939
|
const toggle = (next) => setPanel(panel === next ? "none" : next);
|
|
2855
2940
|
const openActivity = (activity) => {
|
|
2856
2941
|
if (activity === "whiteboard") setWhiteboard(true);
|
|
@@ -2878,10 +2963,10 @@ function ControlBar({ onLeave }) {
|
|
|
2878
2963
|
});
|
|
2879
2964
|
const hasSpotlight = snapshot?.spotlight !== null && snapshot?.spotlight !== void 0;
|
|
2880
2965
|
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
2881
|
-
/* @__PURE__ */
|
|
2882
|
-
shortcuts ? /* @__PURE__ */
|
|
2883
|
-
panel === "chat" ? /* @__PURE__ */
|
|
2884
|
-
panel === "people" ? /* @__PURE__ */
|
|
2966
|
+
/* @__PURE__ */ jsx6(MeetingOverlays, {}),
|
|
2967
|
+
shortcuts ? /* @__PURE__ */ jsx6(ShortcutsSheet, { onClose: () => setShortcuts(false) }) : null,
|
|
2968
|
+
panel === "chat" ? /* @__PURE__ */ jsx6(ChatPanel, { onClose: () => setPanel("none"), to: chatTo, onTo: setChatTo }) : null,
|
|
2969
|
+
panel === "people" ? /* @__PURE__ */ jsx6(
|
|
2885
2970
|
PeoplePanel,
|
|
2886
2971
|
{
|
|
2887
2972
|
onClose: () => setPanel("none"),
|
|
@@ -2891,53 +2976,61 @@ function ControlBar({ onLeave }) {
|
|
|
2891
2976
|
}
|
|
2892
2977
|
}
|
|
2893
2978
|
) : null,
|
|
2894
|
-
panel === "ai" ? /* @__PURE__ */
|
|
2895
|
-
panel === "settings" ? /* @__PURE__ */
|
|
2896
|
-
panel === "polls" ? /* @__PURE__ */
|
|
2897
|
-
panel === "qa" ? /* @__PURE__ */
|
|
2898
|
-
panel === "breakouts" ? /* @__PURE__ */
|
|
2899
|
-
whiteboard ? /* @__PURE__ */
|
|
2900
|
-
/* @__PURE__ */
|
|
2901
|
-
|
|
2979
|
+
panel === "ai" ? /* @__PURE__ */ jsx6(AiPanel, { onClose: () => setPanel("none") }) : null,
|
|
2980
|
+
panel === "settings" ? /* @__PURE__ */ jsx6(SettingsPanel, { onClose: () => setPanel("none") }) : null,
|
|
2981
|
+
panel === "polls" ? /* @__PURE__ */ jsx6(PollsPanel, { onClose: () => setPanel("none") }) : null,
|
|
2982
|
+
panel === "qa" ? /* @__PURE__ */ jsx6(QaPanel, { onClose: () => setPanel("none") }) : null,
|
|
2983
|
+
panel === "breakouts" ? /* @__PURE__ */ jsx6(BreakoutsPanel, { onClose: () => setPanel("none") }) : null,
|
|
2984
|
+
whiteboard ? /* @__PURE__ */ jsx6(WhiteboardPanel, { onClose: () => setWhiteboard(false) }) : null,
|
|
2985
|
+
panel === "app" && app !== null ? /* @__PURE__ */ jsx6(PanelShell, { title: app.title, onClose: () => setPanel("none"), children: /* @__PURE__ */ jsx6("div", { className: "mx-meet__app-panel", "data-meet-app-panel": app.panel.key, children: /* @__PURE__ */ jsx6(
|
|
2986
|
+
app.Component,
|
|
2987
|
+
{
|
|
2988
|
+
recordId: app.panel.recordId,
|
|
2989
|
+
organizationId: app.organizationId,
|
|
2990
|
+
panelKey: app.panel.key
|
|
2991
|
+
}
|
|
2992
|
+
) }) }) : null,
|
|
2993
|
+
/* @__PURE__ */ jsx6(BreakoutBanner, {}),
|
|
2994
|
+
controls.notice !== null && panel !== "people" ? /* @__PURE__ */ jsx6(Toast, { text: controls.notice.text, failed: controls.notice.failed, onDone: controls.clearNotice }) : null,
|
|
2902
2995
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__controls", children: [
|
|
2903
|
-
/* @__PURE__ */
|
|
2996
|
+
/* @__PURE__ */ jsx6(
|
|
2904
2997
|
ControlButton,
|
|
2905
2998
|
{
|
|
2906
2999
|
label: micUnavailable !== null ? `Unmute \u2014 ${micUnavailable.remedy}` : room.local?.micEnabled === true ? "Mute (\u2318D)" : "Unmute (\u2318D)",
|
|
2907
3000
|
active: room.local?.micEnabled === true,
|
|
2908
3001
|
onClick: () => void room.toggleMicrophone(),
|
|
2909
|
-
children: room.local?.micEnabled === true ? /* @__PURE__ */
|
|
3002
|
+
children: room.local?.micEnabled === true ? /* @__PURE__ */ jsx6(MicIcon, {}) : /* @__PURE__ */ jsx6(MicOffIcon, {})
|
|
2910
3003
|
}
|
|
2911
3004
|
),
|
|
2912
|
-
/* @__PURE__ */
|
|
3005
|
+
/* @__PURE__ */ jsx6(
|
|
2913
3006
|
ControlButton,
|
|
2914
3007
|
{
|
|
2915
3008
|
label: room.local?.cameraEnabled === true ? "Stop video (\u2318E)" : "Start video (\u2318E)",
|
|
2916
3009
|
active: room.local?.cameraEnabled === true,
|
|
2917
3010
|
onClick: () => void room.toggleCamera(),
|
|
2918
|
-
children: room.local?.cameraEnabled === true ? /* @__PURE__ */
|
|
3011
|
+
children: room.local?.cameraEnabled === true ? /* @__PURE__ */ jsx6(CameraIcon, {}) : /* @__PURE__ */ jsx6(CameraOffIcon, {})
|
|
2919
3012
|
}
|
|
2920
3013
|
),
|
|
2921
|
-
room.canShareScreen || room.local?.screenSharing === true ? /* @__PURE__ */
|
|
3014
|
+
room.canShareScreen || room.local?.screenSharing === true ? /* @__PURE__ */ jsx6(
|
|
2922
3015
|
ControlButton,
|
|
2923
3016
|
{
|
|
2924
3017
|
label: room.local?.screenSharing === true ? "Stop sharing" : "Share screen",
|
|
2925
3018
|
active: room.local?.screenSharing === true,
|
|
2926
3019
|
onClick: () => void room.toggleScreenShare(),
|
|
2927
|
-
children: /* @__PURE__ */
|
|
3020
|
+
children: /* @__PURE__ */ jsx6(ScreenShareIcon, {})
|
|
2928
3021
|
}
|
|
2929
3022
|
) : null,
|
|
2930
3023
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
2931
|
-
/* @__PURE__ */
|
|
3024
|
+
/* @__PURE__ */ jsx6(
|
|
2932
3025
|
ControlButton,
|
|
2933
3026
|
{
|
|
2934
3027
|
label: "Send a reaction",
|
|
2935
3028
|
active: popover === "reactions",
|
|
2936
3029
|
onClick: () => setPopover(popover === "reactions" ? "none" : "reactions"),
|
|
2937
|
-
children: /* @__PURE__ */
|
|
3030
|
+
children: /* @__PURE__ */ jsx6(SmileIcon, {})
|
|
2938
3031
|
}
|
|
2939
3032
|
),
|
|
2940
|
-
popover === "reactions" ? /* @__PURE__ */
|
|
3033
|
+
popover === "reactions" ? /* @__PURE__ */ jsx6(Popover, { label: "Reactions", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsx6("div", { className: "mx-meet__emoji-bar", children: MEET_REACTIONS.map((emoji) => /* @__PURE__ */ jsx6(
|
|
2941
3034
|
"button",
|
|
2942
3035
|
{
|
|
2943
3036
|
type: "button",
|
|
@@ -2949,18 +3042,19 @@ function ControlBar({ onLeave }) {
|
|
|
2949
3042
|
emoji
|
|
2950
3043
|
)) }) }) : null
|
|
2951
3044
|
] }),
|
|
2952
|
-
/* @__PURE__ */
|
|
3045
|
+
/* @__PURE__ */ jsx6(
|
|
2953
3046
|
ControlButton,
|
|
2954
3047
|
{
|
|
2955
3048
|
label: room.local?.handRaised === true ? "Lower hand (\u2318\u2325H)" : "Raise hand (\u2318\u2325H)",
|
|
2956
3049
|
active: room.local?.handRaised === true,
|
|
2957
3050
|
onClick: () => void room.toggleHand(),
|
|
2958
|
-
children: /* @__PURE__ */
|
|
3051
|
+
children: /* @__PURE__ */ jsx6(HandIcon, {})
|
|
2959
3052
|
}
|
|
2960
3053
|
),
|
|
3054
|
+
app !== null ? /* @__PURE__ */ jsx6(ControlButton, { label: app.title, active: panel === "app", onClick: () => toggle("app"), children: /* @__PURE__ */ jsx6(FlagIcon, {}) }) : null,
|
|
2961
3055
|
/* @__PURE__ */ jsxs3(ControlButton, { label: "Chat (\u2318\u2325C)", active: panel === "chat", onClick: () => toggle("chat"), children: [
|
|
2962
|
-
/* @__PURE__ */
|
|
2963
|
-
unread > 0 ? /* @__PURE__ */
|
|
3056
|
+
/* @__PURE__ */ jsx6(ChatIcon, {}),
|
|
3057
|
+
unread > 0 ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
2964
3058
|
] }),
|
|
2965
3059
|
/* @__PURE__ */ jsxs3(
|
|
2966
3060
|
ControlButton,
|
|
@@ -2969,32 +3063,32 @@ function ControlBar({ onLeave }) {
|
|
|
2969
3063
|
active: panel === "people",
|
|
2970
3064
|
onClick: () => toggle("people"),
|
|
2971
3065
|
children: [
|
|
2972
|
-
/* @__PURE__ */
|
|
2973
|
-
lobby.waiting.length > 0 || controls.isHost && queue.length > 0 ? /* @__PURE__ */
|
|
3066
|
+
/* @__PURE__ */ jsx6(PeopleIcon, {}),
|
|
3067
|
+
lobby.waiting.length > 0 || controls.isHost && queue.length > 0 ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
2974
3068
|
]
|
|
2975
3069
|
}
|
|
2976
3070
|
),
|
|
2977
|
-
/* @__PURE__ */
|
|
3071
|
+
/* @__PURE__ */ jsx6(
|
|
2978
3072
|
ActivitiesControl,
|
|
2979
3073
|
{
|
|
2980
3074
|
active: whiteboard ? "whiteboard" : panel === "polls" || panel === "qa" || panel === "breakouts" ? panel : null,
|
|
2981
3075
|
onOpen: openActivity
|
|
2982
3076
|
}
|
|
2983
3077
|
),
|
|
2984
|
-
/* @__PURE__ */
|
|
2985
|
-
recording.canStart ? /* @__PURE__ */
|
|
2986
|
-
recording.canStop ? /* @__PURE__ */
|
|
3078
|
+
/* @__PURE__ */ jsx6(AiControl, { active: panel === "ai", onToggle: () => toggle("ai") }),
|
|
3079
|
+
recording.canStart ? /* @__PURE__ */ jsx6(ControlButton, { label: "Start recording", onClick: () => void recording.start(), children: /* @__PURE__ */ jsx6(RecordIcon, {}) }) : null,
|
|
3080
|
+
recording.canStop ? /* @__PURE__ */ jsx6(ControlButton, { label: "Stop recording", active: true, onClick: () => void recording.stop(), children: /* @__PURE__ */ jsx6(RecordIcon, {}) }) : null,
|
|
2987
3081
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
2988
|
-
/* @__PURE__ */
|
|
3082
|
+
/* @__PURE__ */ jsx6(
|
|
2989
3083
|
ControlButton,
|
|
2990
3084
|
{
|
|
2991
3085
|
label: "More options",
|
|
2992
3086
|
active: popover === "more" || panel === "settings",
|
|
2993
3087
|
onClick: () => setPopover(popover === "more" ? "none" : "more"),
|
|
2994
|
-
children: /* @__PURE__ */
|
|
3088
|
+
children: /* @__PURE__ */ jsx6(MoreIcon, {})
|
|
2995
3089
|
}
|
|
2996
3090
|
),
|
|
2997
|
-
popover === "more" ? /* @__PURE__ */
|
|
3091
|
+
popover === "more" ? /* @__PURE__ */ jsx6(Popover, { label: "More options", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
|
|
2998
3092
|
/* @__PURE__ */ jsxs3(
|
|
2999
3093
|
MenuItem,
|
|
3000
3094
|
{
|
|
@@ -3003,7 +3097,7 @@ function ControlBar({ onLeave }) {
|
|
|
3003
3097
|
setPanel("settings");
|
|
3004
3098
|
},
|
|
3005
3099
|
children: [
|
|
3006
|
-
/* @__PURE__ */
|
|
3100
|
+
/* @__PURE__ */ jsx6(SettingsIcon, { width: 16, height: 16 }),
|
|
3007
3101
|
" Settings"
|
|
3008
3102
|
]
|
|
3009
3103
|
}
|
|
@@ -3016,13 +3110,13 @@ function ControlBar({ onLeave }) {
|
|
|
3016
3110
|
setShortcuts(true);
|
|
3017
3111
|
},
|
|
3018
3112
|
children: [
|
|
3019
|
-
/* @__PURE__ */
|
|
3113
|
+
/* @__PURE__ */ jsx6(KeyboardIcon, { width: 16, height: 16 }),
|
|
3020
3114
|
" Keyboard shortcuts"
|
|
3021
3115
|
]
|
|
3022
3116
|
}
|
|
3023
3117
|
),
|
|
3024
3118
|
controls.isHost ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
3025
|
-
/* @__PURE__ */
|
|
3119
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-meet__menu-sep", role: "separator" }),
|
|
3026
3120
|
/* @__PURE__ */ jsxs3(
|
|
3027
3121
|
MenuItem,
|
|
3028
3122
|
{
|
|
@@ -3031,7 +3125,7 @@ function ControlBar({ onLeave }) {
|
|
|
3031
3125
|
void controls.run({ action: "mute_all" });
|
|
3032
3126
|
},
|
|
3033
3127
|
children: [
|
|
3034
|
-
/* @__PURE__ */
|
|
3128
|
+
/* @__PURE__ */ jsx6(MicOffIcon, { width: 16, height: 16 }),
|
|
3035
3129
|
" Mute everyone"
|
|
3036
3130
|
]
|
|
3037
3131
|
}
|
|
@@ -3044,7 +3138,7 @@ function ControlBar({ onLeave }) {
|
|
|
3044
3138
|
void controls.run({ action: "ask_all_unmute" });
|
|
3045
3139
|
},
|
|
3046
3140
|
children: [
|
|
3047
|
-
/* @__PURE__ */
|
|
3141
|
+
/* @__PURE__ */ jsx6(MicIcon, { width: 16, height: 16 }),
|
|
3048
3142
|
" Ask everyone to unmute"
|
|
3049
3143
|
]
|
|
3050
3144
|
}
|
|
@@ -3057,7 +3151,7 @@ function ControlBar({ onLeave }) {
|
|
|
3057
3151
|
void controls.run({ action: "lower_all_hands" });
|
|
3058
3152
|
},
|
|
3059
3153
|
children: [
|
|
3060
|
-
/* @__PURE__ */
|
|
3154
|
+
/* @__PURE__ */ jsx6(HandIcon, { width: 16, height: 16 }),
|
|
3061
3155
|
" Lower all hands (",
|
|
3062
3156
|
queue.length,
|
|
3063
3157
|
")"
|
|
@@ -3072,7 +3166,7 @@ function ControlBar({ onLeave }) {
|
|
|
3072
3166
|
void controls.run({ action: "spotlight", identity: null });
|
|
3073
3167
|
},
|
|
3074
3168
|
children: [
|
|
3075
|
-
/* @__PURE__ */
|
|
3169
|
+
/* @__PURE__ */ jsx6(SpotlightIcon, { width: 16, height: 16 }),
|
|
3076
3170
|
" Remove spotlight"
|
|
3077
3171
|
]
|
|
3078
3172
|
}
|
|
@@ -3080,7 +3174,7 @@ function ControlBar({ onLeave }) {
|
|
|
3080
3174
|
] }) : null
|
|
3081
3175
|
] }) }) : null
|
|
3082
3176
|
] }),
|
|
3083
|
-
/* @__PURE__ */
|
|
3177
|
+
/* @__PURE__ */ jsx6(
|
|
3084
3178
|
ControlButton,
|
|
3085
3179
|
{
|
|
3086
3180
|
label: "Leave",
|
|
@@ -3089,7 +3183,7 @@ function ControlBar({ onLeave }) {
|
|
|
3089
3183
|
void room.leave();
|
|
3090
3184
|
onLeave?.();
|
|
3091
3185
|
},
|
|
3092
|
-
children: /* @__PURE__ */
|
|
3186
|
+
children: /* @__PURE__ */ jsx6(PhoneOffIcon, {})
|
|
3093
3187
|
}
|
|
3094
3188
|
)
|
|
3095
3189
|
] })
|
|
@@ -3185,14 +3279,14 @@ function Popover({
|
|
|
3185
3279
|
window.removeEventListener("pointerdown", onPointer);
|
|
3186
3280
|
};
|
|
3187
3281
|
}, [onClose]);
|
|
3188
|
-
return /* @__PURE__ */
|
|
3282
|
+
return /* @__PURE__ */ jsx6("div", { ref, className: "mx-meet__popover", style, role: "dialog", "aria-label": label, children });
|
|
3189
3283
|
}
|
|
3190
3284
|
function MenuItem({
|
|
3191
3285
|
onSelect,
|
|
3192
3286
|
danger = false,
|
|
3193
3287
|
children
|
|
3194
3288
|
}) {
|
|
3195
|
-
return /* @__PURE__ */
|
|
3289
|
+
return /* @__PURE__ */ jsx6(
|
|
3196
3290
|
"button",
|
|
3197
3291
|
{
|
|
3198
3292
|
type: "button",
|
|
@@ -3209,8 +3303,8 @@ function Toast({ text, failed, onDone }) {
|
|
|
3209
3303
|
return () => clearTimeout(timer);
|
|
3210
3304
|
}, [text, failed, onDone]);
|
|
3211
3305
|
return /* @__PURE__ */ jsxs3("div", { className: failed ? "mx-meet__toast mx-meet__toast--failed" : "mx-meet__toast", role: "status", children: [
|
|
3212
|
-
/* @__PURE__ */
|
|
3213
|
-
/* @__PURE__ */
|
|
3306
|
+
/* @__PURE__ */ jsx6("span", { children: text }),
|
|
3307
|
+
/* @__PURE__ */ jsx6("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: onDone, children: /* @__PURE__ */ jsx6(CloseIcon, { width: 14, height: 14 }) })
|
|
3214
3308
|
] });
|
|
3215
3309
|
}
|
|
3216
3310
|
function MeetingOverlays() {
|
|
@@ -3218,14 +3312,14 @@ function MeetingOverlays() {
|
|
|
3218
3312
|
const { notice, dismiss } = useModerationNotice();
|
|
3219
3313
|
const room = useRoom();
|
|
3220
3314
|
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
3221
|
-
/* @__PURE__ */
|
|
3315
|
+
/* @__PURE__ */ jsx6(ReactionOverlay, { reactions }),
|
|
3222
3316
|
notice !== null && notice.kind !== "removed" ? (
|
|
3223
3317
|
// A host's request ("the host is asking you to unmute"), not an error:
|
|
3224
3318
|
// an assertive status, so it is announced at once without being filed
|
|
3225
3319
|
// as a failure (design-system error-box census).
|
|
3226
3320
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__notice-bar", role: "status", "aria-live": "assertive", children: [
|
|
3227
|
-
/* @__PURE__ */
|
|
3228
|
-
notice.kind === "ask-unmute" && room.local?.micEnabled !== true ? /* @__PURE__ */
|
|
3321
|
+
/* @__PURE__ */ jsx6("span", { children: notice.text }),
|
|
3322
|
+
notice.kind === "ask-unmute" && room.local?.micEnabled !== true ? /* @__PURE__ */ jsx6(
|
|
3229
3323
|
"button",
|
|
3230
3324
|
{
|
|
3231
3325
|
type: "button",
|
|
@@ -3237,7 +3331,7 @@ function MeetingOverlays() {
|
|
|
3237
3331
|
children: "Unmute"
|
|
3238
3332
|
}
|
|
3239
3333
|
) : null,
|
|
3240
|
-
/* @__PURE__ */
|
|
3334
|
+
/* @__PURE__ */ jsx6("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: dismiss, children: /* @__PURE__ */ jsx6(CloseIcon, { width: 14, height: 14 }) })
|
|
3241
3335
|
] })
|
|
3242
3336
|
) : null
|
|
3243
3337
|
] });
|
|
@@ -3250,7 +3344,7 @@ function ShortcutsSheet({ onClose }) {
|
|
|
3250
3344
|
window.addEventListener("keydown", onKey);
|
|
3251
3345
|
return () => window.removeEventListener("keydown", onKey);
|
|
3252
3346
|
}, [onClose]);
|
|
3253
|
-
return /* @__PURE__ */
|
|
3347
|
+
return /* @__PURE__ */ jsx6("div", { className: "mx-meet__sheet-backdrop", onClick: onClose, children: /* @__PURE__ */ jsxs3(
|
|
3254
3348
|
"div",
|
|
3255
3349
|
{
|
|
3256
3350
|
className: "mx-meet__sheet",
|
|
@@ -3259,12 +3353,12 @@ function ShortcutsSheet({ onClose }) {
|
|
|
3259
3353
|
onClick: (event) => event.stopPropagation(),
|
|
3260
3354
|
children: [
|
|
3261
3355
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__panel-head", children: [
|
|
3262
|
-
/* @__PURE__ */
|
|
3263
|
-
/* @__PURE__ */
|
|
3356
|
+
/* @__PURE__ */ jsx6("h2", { className: "mx-meet__panel-title", children: "Keyboard shortcuts" }),
|
|
3357
|
+
/* @__PURE__ */ jsx6(ControlButton, { label: "Close", onClick: onClose, children: /* @__PURE__ */ jsx6(CloseIcon, { width: 16, height: 16 }) })
|
|
3264
3358
|
] }),
|
|
3265
|
-
/* @__PURE__ */
|
|
3266
|
-
/* @__PURE__ */
|
|
3267
|
-
/* @__PURE__ */
|
|
3359
|
+
/* @__PURE__ */ jsx6("dl", { className: "mx-meet__shortcuts", children: MEET_SHORTCUTS.map((shortcut) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__shortcut", children: [
|
|
3360
|
+
/* @__PURE__ */ jsx6("dt", { children: shortcut.label }),
|
|
3361
|
+
/* @__PURE__ */ jsx6("dd", { children: /* @__PURE__ */ jsx6("kbd", { className: "mx-meet__kbd", children: shortcut.keys }) })
|
|
3268
3362
|
] }, shortcut.id)) })
|
|
3269
3363
|
]
|
|
3270
3364
|
}
|
|
@@ -3274,7 +3368,7 @@ function AiControl({ active, onToggle }) {
|
|
|
3274
3368
|
const snapshot = useMeetSnapshot();
|
|
3275
3369
|
const meeting = snapshot?.meeting ?? null;
|
|
3276
3370
|
if (meeting === null || !meeting.aiEnabled) return null;
|
|
3277
|
-
return /* @__PURE__ */
|
|
3371
|
+
return /* @__PURE__ */ jsx6(ControlButton, { label: "Meeting assistant", active, onClick: onToggle, children: /* @__PURE__ */ jsx6(SparklesIcon, {}) });
|
|
3278
3372
|
}
|
|
3279
3373
|
function PanelShell({
|
|
3280
3374
|
title,
|
|
@@ -3296,10 +3390,10 @@ function PanelShell({
|
|
|
3296
3390
|
}, []);
|
|
3297
3391
|
return /* @__PURE__ */ jsxs3("aside", { ref, className: "mx-meet__panel", "aria-label": title, children: [
|
|
3298
3392
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__panel-head", children: [
|
|
3299
|
-
/* @__PURE__ */
|
|
3300
|
-
/* @__PURE__ */
|
|
3393
|
+
/* @__PURE__ */ jsx6("h2", { className: "mx-meet__panel-title", children: title }),
|
|
3394
|
+
/* @__PURE__ */ jsx6(ControlButton, { label: "Close panel", onClick: onClose, children: /* @__PURE__ */ jsx6(CloseIcon, { width: 16, height: 16 }) })
|
|
3301
3395
|
] }),
|
|
3302
|
-
/* @__PURE__ */
|
|
3396
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-meet__panel-body", children })
|
|
3303
3397
|
] });
|
|
3304
3398
|
}
|
|
3305
3399
|
function ChatPanel({
|
|
@@ -3329,9 +3423,9 @@ function ChatPanel({
|
|
|
3329
3423
|
};
|
|
3330
3424
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Chat", onClose, children: [
|
|
3331
3425
|
/* @__PURE__ */ jsxs3("ul", { className: "mx-meet__chat", ref: listRef, children: [
|
|
3332
|
-
snapshot?.chatHistoryError != null ? /* @__PURE__ */
|
|
3333
|
-
snapshot?.chatLoaded !== true && messages.length === 0 ? /* @__PURE__ */
|
|
3334
|
-
messages.map((message) => /* @__PURE__ */
|
|
3426
|
+
snapshot?.chatHistoryError != null ? /* @__PURE__ */ jsx6("li", { className: "mx-meet__panel-note", children: snapshot.chatHistoryError }) : null,
|
|
3427
|
+
snapshot?.chatLoaded !== true && messages.length === 0 ? /* @__PURE__ */ jsx6("li", { className: "mx-meet__panel-note", children: "Reading earlier messages\u2026" }) : messages.length === 0 && snapshot?.chatHistoryError == null ? /* @__PURE__ */ jsx6("li", { className: "mx-meet__panel-note", children: "No messages yet. Messages to everyone stay with the meeting, so people who join later see them." }) : null,
|
|
3428
|
+
messages.map((message) => /* @__PURE__ */ jsx6(ChatLine, { message, local, people }, message.id))
|
|
3335
3429
|
] }),
|
|
3336
3430
|
/* @__PURE__ */ jsxs3(
|
|
3337
3431
|
"form",
|
|
@@ -3354,7 +3448,7 @@ function ChatPanel({
|
|
|
3354
3448
|
value: recipient ?? "",
|
|
3355
3449
|
onChange: (event) => choose(event.target.value === "" ? null : event.target.value),
|
|
3356
3450
|
children: [
|
|
3357
|
-
/* @__PURE__ */
|
|
3451
|
+
/* @__PURE__ */ jsx6("option", { value: "", children: "Everyone" }),
|
|
3358
3452
|
people.map((participant) => /* @__PURE__ */ jsxs3("option", { value: participant.identity, children: [
|
|
3359
3453
|
participant.displayName,
|
|
3360
3454
|
" (private)"
|
|
@@ -3363,7 +3457,7 @@ function ChatPanel({
|
|
|
3363
3457
|
}
|
|
3364
3458
|
) : null,
|
|
3365
3459
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__composer-row", children: [
|
|
3366
|
-
/* @__PURE__ */
|
|
3460
|
+
/* @__PURE__ */ jsx6(
|
|
3367
3461
|
"input",
|
|
3368
3462
|
{
|
|
3369
3463
|
className: "mx-meet__input",
|
|
@@ -3374,7 +3468,7 @@ function ChatPanel({
|
|
|
3374
3468
|
maxLength: 4e3
|
|
3375
3469
|
}
|
|
3376
3470
|
),
|
|
3377
|
-
/* @__PURE__ */
|
|
3471
|
+
/* @__PURE__ */ jsx6("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Send" })
|
|
3378
3472
|
] }),
|
|
3379
3473
|
recipientName !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__panel-note", children: [
|
|
3380
3474
|
"Only ",
|
|
@@ -3404,16 +3498,16 @@ function ChatLine({
|
|
|
3404
3498
|
].filter(Boolean).join(" "),
|
|
3405
3499
|
children: [
|
|
3406
3500
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__chat-meta", children: [
|
|
3407
|
-
/* @__PURE__ */
|
|
3501
|
+
/* @__PURE__ */ jsx6("strong", { children: mine ? "You" : message.displayName }),
|
|
3408
3502
|
counterpart !== null ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__chat-private", children: [
|
|
3409
3503
|
"to ",
|
|
3410
3504
|
counterpart,
|
|
3411
3505
|
" \xB7 private"
|
|
3412
3506
|
] }) : null,
|
|
3413
|
-
/* @__PURE__ */
|
|
3507
|
+
/* @__PURE__ */ jsx6("time", { dateTime: message.at, children: clockOf(message.at) })
|
|
3414
3508
|
] }),
|
|
3415
|
-
/* @__PURE__ */
|
|
3416
|
-
message.failed !== void 0 ? /* @__PURE__ */
|
|
3509
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__chat-text", children: message.text }),
|
|
3510
|
+
message.failed !== void 0 ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__chat-failed", children: message.failed }) : privateTo === null && message.saved === false ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__chat-pending", children: message.id.startsWith("pending-") ? "Sending\u2026" : "Not saved \u2014 people who join later will not see this" }) : null
|
|
3417
3511
|
]
|
|
3418
3512
|
}
|
|
3419
3513
|
);
|
|
@@ -3429,18 +3523,21 @@ function PeoplePanel({
|
|
|
3429
3523
|
const [menuFor, setMenuFor] = useState4(null);
|
|
3430
3524
|
const myRole = useRole();
|
|
3431
3525
|
const local = snapshot?.localIdentity ?? null;
|
|
3432
|
-
const
|
|
3526
|
+
const observersHidden = snapshot?.grants.observersVisibleTo === "hosts" && !controls.isHost;
|
|
3527
|
+
const everyone = (snapshot?.participants ?? []).filter(
|
|
3528
|
+
(participant) => !observersHidden || !isObserverRole(participant.role) || participant.identity === local
|
|
3529
|
+
);
|
|
3433
3530
|
const needle = query.trim().toLowerCase();
|
|
3434
3531
|
const shown = needle.length === 0 ? everyone : everyone.filter((participant) => participant.displayName.toLowerCase().includes(needle));
|
|
3435
3532
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: `People (${everyone.length})`, onClose, children: [
|
|
3436
|
-
/* @__PURE__ */
|
|
3533
|
+
/* @__PURE__ */ jsx6(LobbyPanel, {}),
|
|
3437
3534
|
queue.length > 0 ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Raised hands", children: [
|
|
3438
3535
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__section-head", children: [
|
|
3439
3536
|
/* @__PURE__ */ jsxs3("h3", { className: "mx-meet__section-title", children: [
|
|
3440
3537
|
"Raised hands \xB7 ",
|
|
3441
3538
|
queue.length
|
|
3442
3539
|
] }),
|
|
3443
|
-
controls.isHost ? /* @__PURE__ */
|
|
3540
|
+
controls.isHost ? /* @__PURE__ */ jsx6(
|
|
3444
3541
|
"button",
|
|
3445
3542
|
{
|
|
3446
3543
|
type: "button",
|
|
@@ -3450,13 +3547,13 @@ function PeoplePanel({
|
|
|
3450
3547
|
}
|
|
3451
3548
|
) : null
|
|
3452
3549
|
] }),
|
|
3453
|
-
/* @__PURE__ */
|
|
3454
|
-
/* @__PURE__ */
|
|
3550
|
+
/* @__PURE__ */ jsx6("ol", { className: "mx-meet__queue", children: queue.map((participant) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__person", children: [
|
|
3551
|
+
/* @__PURE__ */ jsx6(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 28 }),
|
|
3455
3552
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
3456
3553
|
participant.displayName,
|
|
3457
|
-
participant.identity === local ? /* @__PURE__ */
|
|
3554
|
+
participant.identity === local ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__you", children: " (you)" }) : null
|
|
3458
3555
|
] }),
|
|
3459
|
-
controls.isHost || participant.identity === local ? /* @__PURE__ */
|
|
3556
|
+
controls.isHost || participant.identity === local ? /* @__PURE__ */ jsx6(
|
|
3460
3557
|
"button",
|
|
3461
3558
|
{
|
|
3462
3559
|
type: "button",
|
|
@@ -3469,7 +3566,7 @@ function PeoplePanel({
|
|
|
3469
3566
|
] }) : null,
|
|
3470
3567
|
controls.isHost && everyone.length > 1 ? /* @__PURE__ */ jsxs3("div", { className: "mx-meet__bulk", children: [
|
|
3471
3568
|
/* @__PURE__ */ jsxs3("button", { type: "button", className: "mx-meet__chip", onClick: () => void controls.run({ action: "mute_all" }), children: [
|
|
3472
|
-
/* @__PURE__ */
|
|
3569
|
+
/* @__PURE__ */ jsx6(MicOffIcon, { width: 14, height: 14 }),
|
|
3473
3570
|
" Mute all"
|
|
3474
3571
|
] }),
|
|
3475
3572
|
/* @__PURE__ */ jsxs3(
|
|
@@ -3479,15 +3576,15 @@ function PeoplePanel({
|
|
|
3479
3576
|
className: "mx-meet__chip",
|
|
3480
3577
|
onClick: () => void controls.run({ action: "ask_all_unmute" }),
|
|
3481
3578
|
children: [
|
|
3482
|
-
/* @__PURE__ */
|
|
3579
|
+
/* @__PURE__ */ jsx6(MicIcon, { width: 14, height: 14 }),
|
|
3483
3580
|
" Ask all to unmute"
|
|
3484
3581
|
]
|
|
3485
3582
|
}
|
|
3486
3583
|
)
|
|
3487
3584
|
] }) : null,
|
|
3488
3585
|
everyone.length > 4 ? /* @__PURE__ */ jsxs3("label", { className: "mx-meet__search", children: [
|
|
3489
|
-
/* @__PURE__ */
|
|
3490
|
-
/* @__PURE__ */
|
|
3586
|
+
/* @__PURE__ */ jsx6(SearchIcon, { width: 16, height: 16 }),
|
|
3587
|
+
/* @__PURE__ */ jsx6(
|
|
3491
3588
|
"input",
|
|
3492
3589
|
{
|
|
3493
3590
|
className: "mx-meet__input mx-meet__input--bare",
|
|
@@ -3498,37 +3595,37 @@ function PeoplePanel({
|
|
|
3498
3595
|
}
|
|
3499
3596
|
)
|
|
3500
3597
|
] }) : null,
|
|
3501
|
-
controls.notice !== null ? /* @__PURE__ */
|
|
3598
|
+
controls.notice !== null ? /* @__PURE__ */ jsx6("p", { className: controls.notice.failed ? "mx-meet__error" : "mx-meet__notice", role: "status", children: controls.notice.text }) : null,
|
|
3502
3599
|
/* @__PURE__ */ jsxs3("ul", { className: "mx-meet__people", children: [
|
|
3503
3600
|
shown.map((participant) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__person", children: [
|
|
3504
|
-
/* @__PURE__ */
|
|
3601
|
+
/* @__PURE__ */ jsx6(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 32 }),
|
|
3505
3602
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
3506
3603
|
participant.displayName,
|
|
3507
|
-
participant.identity === local ? /* @__PURE__ */
|
|
3508
|
-
/* @__PURE__ */
|
|
3604
|
+
participant.identity === local ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__you", children: " (you)" }) : null,
|
|
3605
|
+
/* @__PURE__ */ jsx6(
|
|
3509
3606
|
RoleBadge,
|
|
3510
3607
|
{
|
|
3511
3608
|
role: participant.identity === local ? myRole : participant.role,
|
|
3512
3609
|
standing: participant.standing
|
|
3513
3610
|
}
|
|
3514
3611
|
),
|
|
3515
|
-
isNoteTaker(participant) ? /* @__PURE__ */
|
|
3516
|
-
snapshot?.spotlight === participant.identity ? /* @__PURE__ */
|
|
3612
|
+
isNoteTaker(participant) ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Meeting assistant" }) : null,
|
|
3613
|
+
snapshot?.spotlight === participant.identity ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Spotlight" }) : null
|
|
3517
3614
|
] }),
|
|
3518
|
-
participant.handRaised ? /* @__PURE__ */
|
|
3519
|
-
!participant.micEnabled && !isNoteTaker(participant) ? /* @__PURE__ */
|
|
3520
|
-
/* @__PURE__ */
|
|
3615
|
+
participant.handRaised ? /* @__PURE__ */ jsx6(HandIcon, { width: 14, height: 14 }) : null,
|
|
3616
|
+
!participant.micEnabled && !isNoteTaker(participant) ? /* @__PURE__ */ jsx6(MicOffIcon, { width: 14, height: 14 }) : null,
|
|
3617
|
+
/* @__PURE__ */ jsx6(QualityBars, { quality: participant.quality }),
|
|
3521
3618
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
3522
|
-
/* @__PURE__ */
|
|
3619
|
+
/* @__PURE__ */ jsx6(
|
|
3523
3620
|
ControlButton,
|
|
3524
3621
|
{
|
|
3525
3622
|
label: `More for ${participant.displayName}`,
|
|
3526
3623
|
active: menuFor === participant.identity,
|
|
3527
3624
|
onClick: () => setMenuFor(menuFor === participant.identity ? null : participant.identity),
|
|
3528
|
-
children: /* @__PURE__ */
|
|
3625
|
+
children: /* @__PURE__ */ jsx6(MoreIcon, { width: 16, height: 16 })
|
|
3529
3626
|
}
|
|
3530
3627
|
),
|
|
3531
|
-
menuFor === participant.identity ? /* @__PURE__ */
|
|
3628
|
+
menuFor === participant.identity ? /* @__PURE__ */ jsx6(
|
|
3532
3629
|
PersonMenu,
|
|
3533
3630
|
{
|
|
3534
3631
|
participant,
|
|
@@ -3545,7 +3642,7 @@ function PeoplePanel({
|
|
|
3545
3642
|
"\u201D."
|
|
3546
3643
|
] }) : null
|
|
3547
3644
|
] }),
|
|
3548
|
-
snapshot?.meeting !== null && snapshot?.meeting !== void 0 ? /* @__PURE__ */
|
|
3645
|
+
snapshot?.meeting !== null && snapshot?.meeting !== void 0 ? /* @__PURE__ */ jsx6(GuestRecordAccessControl, { meeting: snapshot.meeting }) : null
|
|
3549
3646
|
] });
|
|
3550
3647
|
}
|
|
3551
3648
|
function PersonMenu({
|
|
@@ -3572,10 +3669,10 @@ function PersonMenu({
|
|
|
3572
3669
|
else setRefused(true);
|
|
3573
3670
|
});
|
|
3574
3671
|
};
|
|
3575
|
-
const refusal = refused && controls.notice?.failed === true ? /* @__PURE__ */
|
|
3672
|
+
const refusal = refused && controls.notice?.failed === true ? /* @__PURE__ */ jsx6(ErrorBox, { as: "p", className: "mx-meet__error", message: controls.notice.text, operation: "Change this participant", origin: "meet/components", children: controls.notice.text }) : null;
|
|
3576
3673
|
if (mode === "rename" || mode === "report") {
|
|
3577
3674
|
const renaming = mode === "rename";
|
|
3578
|
-
return /* @__PURE__ */
|
|
3675
|
+
return /* @__PURE__ */ jsx6(Popover, { label: renaming ? "Rename" : "Report", onClose, placement, children: /* @__PURE__ */ jsxs3(
|
|
3579
3676
|
"form",
|
|
3580
3677
|
{
|
|
3581
3678
|
className: "mx-meet__menu-form",
|
|
@@ -3588,8 +3685,8 @@ function PersonMenu({
|
|
|
3588
3685
|
},
|
|
3589
3686
|
children: [
|
|
3590
3687
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
3591
|
-
/* @__PURE__ */
|
|
3592
|
-
renaming ? /* @__PURE__ */
|
|
3688
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__field-label", children: renaming ? "Name shown in this meeting" : `What did ${participant.displayName} do?` }),
|
|
3689
|
+
renaming ? /* @__PURE__ */ jsx6(
|
|
3593
3690
|
"input",
|
|
3594
3691
|
{
|
|
3595
3692
|
className: "mx-meet__input",
|
|
@@ -3598,7 +3695,7 @@ function PersonMenu({
|
|
|
3598
3695
|
value: text,
|
|
3599
3696
|
onChange: (event) => setText(event.target.value)
|
|
3600
3697
|
}
|
|
3601
|
-
) : /* @__PURE__ */
|
|
3698
|
+
) : /* @__PURE__ */ jsx6(
|
|
3602
3699
|
"textarea",
|
|
3603
3700
|
{
|
|
3604
3701
|
className: "mx-meet__input",
|
|
@@ -3612,8 +3709,8 @@ function PersonMenu({
|
|
|
3612
3709
|
] }),
|
|
3613
3710
|
refusal,
|
|
3614
3711
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-actions", children: [
|
|
3615
|
-
/* @__PURE__ */
|
|
3616
|
-
/* @__PURE__ */
|
|
3712
|
+
/* @__PURE__ */ jsx6("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Back" }),
|
|
3713
|
+
/* @__PURE__ */ jsx6("button", { type: "submit", className: "mx-meet__send", disabled: text.trim().length === 0 || controls.busy, children: renaming ? "Rename" : "Report" })
|
|
3617
3714
|
] })
|
|
3618
3715
|
]
|
|
3619
3716
|
}
|
|
@@ -3621,12 +3718,12 @@ function PersonMenu({
|
|
|
3621
3718
|
}
|
|
3622
3719
|
if (mode === "remove" || mode === "transfer") {
|
|
3623
3720
|
const removing = mode === "remove";
|
|
3624
|
-
return /* @__PURE__ */
|
|
3625
|
-
/* @__PURE__ */
|
|
3721
|
+
return /* @__PURE__ */ jsx6(Popover, { label: removing ? "Remove" : "Make host", onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-form", children: [
|
|
3722
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__confirm-text", children: removing ? `Remove ${participant.displayName}? They leave immediately and cannot rejoin this meeting.` : `Make ${participant.displayName} the host? They get every host control and own this meeting. You stay on as a co-host.` }),
|
|
3626
3723
|
refusal,
|
|
3627
3724
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-actions", children: [
|
|
3628
|
-
/* @__PURE__ */
|
|
3629
|
-
/* @__PURE__ */
|
|
3725
|
+
/* @__PURE__ */ jsx6("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Cancel" }),
|
|
3726
|
+
/* @__PURE__ */ jsx6(
|
|
3630
3727
|
"button",
|
|
3631
3728
|
{
|
|
3632
3729
|
type: "button",
|
|
@@ -3639,7 +3736,7 @@ function PersonMenu({
|
|
|
3639
3736
|
] })
|
|
3640
3737
|
] }) });
|
|
3641
3738
|
}
|
|
3642
|
-
return /* @__PURE__ */
|
|
3739
|
+
return /* @__PURE__ */ jsx6(Popover, { label: `Options for ${participant.displayName}`, onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
|
|
3643
3740
|
/* @__PURE__ */ jsxs3(
|
|
3644
3741
|
MenuItem,
|
|
3645
3742
|
{
|
|
@@ -3648,7 +3745,7 @@ function PersonMenu({
|
|
|
3648
3745
|
onClose();
|
|
3649
3746
|
},
|
|
3650
3747
|
children: [
|
|
3651
|
-
/* @__PURE__ */
|
|
3748
|
+
/* @__PURE__ */ jsx6(PinIcon, { width: 16, height: 16 }),
|
|
3652
3749
|
" ",
|
|
3653
3750
|
pinned ? "Unpin" : "Pin for me"
|
|
3654
3751
|
]
|
|
@@ -3666,39 +3763,39 @@ function PersonMenu({
|
|
|
3666
3763
|
onClose();
|
|
3667
3764
|
},
|
|
3668
3765
|
children: [
|
|
3669
|
-
/* @__PURE__ */
|
|
3766
|
+
/* @__PURE__ */ jsx6(ChatIcon, { width: 16, height: 16 }),
|
|
3670
3767
|
" Message privately"
|
|
3671
3768
|
]
|
|
3672
3769
|
}
|
|
3673
3770
|
) : null,
|
|
3674
3771
|
controls.isHost ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "spotlight", identity: spotlit ? null : participant.identity }), children: [
|
|
3675
|
-
/* @__PURE__ */
|
|
3772
|
+
/* @__PURE__ */ jsx6(SpotlightIcon, { width: 16, height: 16 }),
|
|
3676
3773
|
" ",
|
|
3677
3774
|
spotlit ? "Remove spotlight" : "Spotlight for everyone"
|
|
3678
3775
|
] }) : null,
|
|
3679
3776
|
moderate ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
3680
|
-
/* @__PURE__ */
|
|
3777
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-meet__menu-sep", role: "separator" }),
|
|
3681
3778
|
participant.micEnabled ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "mute", identity: participant.identity }), children: [
|
|
3682
|
-
/* @__PURE__ */
|
|
3779
|
+
/* @__PURE__ */ jsx6(MicOffIcon, { width: 16, height: 16 }),
|
|
3683
3780
|
" Mute"
|
|
3684
3781
|
] }) : !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "ask_unmute", identity: participant.identity }), children: [
|
|
3685
|
-
/* @__PURE__ */
|
|
3782
|
+
/* @__PURE__ */ jsx6(MicIcon, { width: 16, height: 16 }),
|
|
3686
3783
|
" Ask to unmute"
|
|
3687
3784
|
] }) : null,
|
|
3688
3785
|
participant.cameraEnabled ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "stop_video", identity: participant.identity }), children: [
|
|
3689
|
-
/* @__PURE__ */
|
|
3786
|
+
/* @__PURE__ */ jsx6(CameraOffIcon, { width: 16, height: 16 }),
|
|
3690
3787
|
" Stop video"
|
|
3691
3788
|
] }) : null,
|
|
3692
3789
|
participant.screenSharing ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "stop_screen", identity: participant.identity }), children: [
|
|
3693
|
-
/* @__PURE__ */
|
|
3790
|
+
/* @__PURE__ */ jsx6(ScreenShareIcon, { width: 16, height: 16 }),
|
|
3694
3791
|
" Stop screen share"
|
|
3695
3792
|
] }) : null,
|
|
3696
3793
|
participant.handRaised ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "lower_hand", identity: participant.identity }), children: [
|
|
3697
|
-
/* @__PURE__ */
|
|
3794
|
+
/* @__PURE__ */ jsx6(HandIcon, { width: 16, height: 16 }),
|
|
3698
3795
|
" Lower hand"
|
|
3699
3796
|
] }) : null,
|
|
3700
3797
|
hasAccount && !participant.isAgent && participant.role !== "cohost" ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "make_cohost", identity: participant.identity }), children: [
|
|
3701
|
-
/* @__PURE__ */
|
|
3798
|
+
/* @__PURE__ */ jsx6(PeopleIcon, { width: 16, height: 16 }),
|
|
3702
3799
|
" Make co-host"
|
|
3703
3800
|
] }) : null,
|
|
3704
3801
|
!participant.isAgent ? /* @__PURE__ */ jsxs3(
|
|
@@ -3709,18 +3806,18 @@ function PersonMenu({
|
|
|
3709
3806
|
setMode("rename");
|
|
3710
3807
|
},
|
|
3711
3808
|
children: [
|
|
3712
|
-
/* @__PURE__ */
|
|
3809
|
+
/* @__PURE__ */ jsx6(PencilIcon, { width: 16, height: 16 }),
|
|
3713
3810
|
" Rename"
|
|
3714
3811
|
]
|
|
3715
3812
|
}
|
|
3716
3813
|
) : null
|
|
3717
3814
|
] }) : null,
|
|
3718
3815
|
controls.isOwner && participant.role === "cohost" ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "revoke_cohost", identity: participant.identity }), children: [
|
|
3719
|
-
/* @__PURE__ */
|
|
3816
|
+
/* @__PURE__ */ jsx6(PeopleIcon, { width: 16, height: 16 }),
|
|
3720
3817
|
" Remove co-host"
|
|
3721
3818
|
] }) : null,
|
|
3722
3819
|
controls.isOwner && !self && hasAccount && !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => setMode("transfer"), children: [
|
|
3723
|
-
/* @__PURE__ */
|
|
3820
|
+
/* @__PURE__ */ jsx6(SpotlightIcon, { width: 16, height: 16 }),
|
|
3724
3821
|
" Make host"
|
|
3725
3822
|
] }) : null,
|
|
3726
3823
|
self ? /* @__PURE__ */ jsxs3(
|
|
@@ -3731,7 +3828,7 @@ function PersonMenu({
|
|
|
3731
3828
|
setMode("rename");
|
|
3732
3829
|
},
|
|
3733
3830
|
children: [
|
|
3734
|
-
/* @__PURE__ */
|
|
3831
|
+
/* @__PURE__ */ jsx6(PencilIcon, { width: 16, height: 16 }),
|
|
3735
3832
|
" Rename yourself"
|
|
3736
3833
|
]
|
|
3737
3834
|
}
|
|
@@ -3744,13 +3841,13 @@ function PersonMenu({
|
|
|
3744
3841
|
setMode("report");
|
|
3745
3842
|
},
|
|
3746
3843
|
children: [
|
|
3747
|
-
/* @__PURE__ */
|
|
3844
|
+
/* @__PURE__ */ jsx6(FlagIcon, { width: 16, height: 16 }),
|
|
3748
3845
|
" Report"
|
|
3749
3846
|
]
|
|
3750
3847
|
}
|
|
3751
3848
|
) : null,
|
|
3752
3849
|
moderate && !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { danger: true, onSelect: () => setMode("remove"), children: [
|
|
3753
|
-
/* @__PURE__ */
|
|
3850
|
+
/* @__PURE__ */ jsx6(CloseIcon, { width: 16, height: 16 }),
|
|
3754
3851
|
" Remove from meeting"
|
|
3755
3852
|
] }) : null
|
|
3756
3853
|
] }) });
|
|
@@ -3758,7 +3855,7 @@ function PersonMenu({
|
|
|
3758
3855
|
function SettingsPanel({ onClose }) {
|
|
3759
3856
|
const host = useRequiredMeetHost();
|
|
3760
3857
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Settings", onClose, children: [
|
|
3761
|
-
/* @__PURE__ */
|
|
3858
|
+
/* @__PURE__ */ jsx6(
|
|
3762
3859
|
DeviceSettings,
|
|
3763
3860
|
{
|
|
3764
3861
|
onPick: (kind, deviceId) => {
|
|
@@ -3767,8 +3864,8 @@ function SettingsPanel({ onClose }) {
|
|
|
3767
3864
|
}
|
|
3768
3865
|
}
|
|
3769
3866
|
),
|
|
3770
|
-
/* @__PURE__ */
|
|
3771
|
-
/* @__PURE__ */
|
|
3867
|
+
/* @__PURE__ */ jsx6(EffectsSettings, {}),
|
|
3868
|
+
/* @__PURE__ */ jsx6(CaptionLanguageSettings, {})
|
|
3772
3869
|
] });
|
|
3773
3870
|
}
|
|
3774
3871
|
function DeviceSettings({
|
|
@@ -3785,9 +3882,9 @@ function DeviceSettings({
|
|
|
3785
3882
|
void host.devices.refresh();
|
|
3786
3883
|
}, [host]);
|
|
3787
3884
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Devices", children: [
|
|
3788
|
-
/* @__PURE__ */
|
|
3789
|
-
/* @__PURE__ */
|
|
3790
|
-
/* @__PURE__ */
|
|
3885
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "audioinput", label: "Microphone", onPick }),
|
|
3886
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-meet__meter", role: "meter", "aria-label": "Microphone level", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(level * 100), children: /* @__PURE__ */ jsx6("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }),
|
|
3887
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "audiooutput", label: "Speaker", onPick }),
|
|
3791
3888
|
/* @__PURE__ */ jsxs3(
|
|
3792
3889
|
"button",
|
|
3793
3890
|
{
|
|
@@ -3799,13 +3896,13 @@ function DeviceSettings({
|
|
|
3799
3896
|
void playTestSound(speaker).finally(() => setTesting(false));
|
|
3800
3897
|
},
|
|
3801
3898
|
children: [
|
|
3802
|
-
/* @__PURE__ */
|
|
3899
|
+
/* @__PURE__ */ jsx6(SpeakerIcon, { width: 14, height: 14 }),
|
|
3803
3900
|
" ",
|
|
3804
3901
|
testing ? "Playing\u2026" : "Test speaker"
|
|
3805
3902
|
]
|
|
3806
3903
|
}
|
|
3807
3904
|
),
|
|
3808
|
-
/* @__PURE__ */
|
|
3905
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "videoinput", label: "Camera", onPick })
|
|
3809
3906
|
] });
|
|
3810
3907
|
}
|
|
3811
3908
|
function EffectsSettings({ preview }) {
|
|
@@ -3825,7 +3922,7 @@ function EffectsSettings({ preview }) {
|
|
|
3825
3922
|
};
|
|
3826
3923
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Effects", children: [
|
|
3827
3924
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
3828
|
-
/* @__PURE__ */
|
|
3925
|
+
/* @__PURE__ */ jsx6(
|
|
3829
3926
|
Checkbox,
|
|
3830
3927
|
{
|
|
3831
3928
|
id: "mx-meet-noise",
|
|
@@ -3834,13 +3931,13 @@ function EffectsSettings({ preview }) {
|
|
|
3834
3931
|
}
|
|
3835
3932
|
),
|
|
3836
3933
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check-text", children: [
|
|
3837
|
-
/* @__PURE__ */
|
|
3838
|
-
/* @__PURE__ */
|
|
3934
|
+
/* @__PURE__ */ jsx6(Label, { htmlFor: "mx-meet-noise", children: "Noise suppression" }),
|
|
3935
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__hint", children: "Filters keyboards, fans and background chatter." })
|
|
3839
3936
|
] })
|
|
3840
3937
|
] }),
|
|
3841
3938
|
supported ? /* @__PURE__ */ jsxs3("div", { className: "mx-meet__field", children: [
|
|
3842
|
-
/* @__PURE__ */
|
|
3843
|
-
/* @__PURE__ */
|
|
3939
|
+
/* @__PURE__ */ jsx6(Label, { children: "Background" }),
|
|
3940
|
+
/* @__PURE__ */ jsx6(
|
|
3844
3941
|
SegmentedControl,
|
|
3845
3942
|
{
|
|
3846
3943
|
fullWidth: true,
|
|
@@ -3859,7 +3956,7 @@ function EffectsSettings({ preview }) {
|
|
|
3859
3956
|
]
|
|
3860
3957
|
}
|
|
3861
3958
|
),
|
|
3862
|
-
/* @__PURE__ */
|
|
3959
|
+
/* @__PURE__ */ jsx6(
|
|
3863
3960
|
"input",
|
|
3864
3961
|
{
|
|
3865
3962
|
ref: fileRef,
|
|
@@ -3874,7 +3971,7 @@ function EffectsSettings({ preview }) {
|
|
|
3874
3971
|
}
|
|
3875
3972
|
}
|
|
3876
3973
|
),
|
|
3877
|
-
error !== null ? /* @__PURE__ */
|
|
3974
|
+
error !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__error", children: error }) : null
|
|
3878
3975
|
] }) : null
|
|
3879
3976
|
] });
|
|
3880
3977
|
}
|
|
@@ -3961,29 +4058,29 @@ function LobbyPanel() {
|
|
|
3961
4058
|
if (!lobby.canAdmit || lobby.waiting.length === 0) return null;
|
|
3962
4059
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__lobby", "aria-label": "Waiting room", children: [
|
|
3963
4060
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__lobby-head", children: [
|
|
3964
|
-
/* @__PURE__ */
|
|
3965
|
-
/* @__PURE__ */
|
|
4061
|
+
/* @__PURE__ */ jsx6("h3", { className: "mx-meet__lobby-title", children: lobby.waiting.length === 1 ? "1 person is waiting" : `${lobby.waiting.length} people are waiting` }),
|
|
4062
|
+
/* @__PURE__ */ jsx6("button", { type: "button", className: "mx-meet__link", onClick: () => void lobby.admitAll(), children: "Admit all" })
|
|
3966
4063
|
] }),
|
|
3967
|
-
/* @__PURE__ */
|
|
4064
|
+
/* @__PURE__ */ jsx6("ul", { className: "mx-meet__lobby-list", children: lobby.waiting.map((entry) => /* @__PURE__ */ jsxs3(
|
|
3968
4065
|
"li",
|
|
3969
4066
|
{
|
|
3970
4067
|
className: "mx-meet__lobby-row",
|
|
3971
4068
|
"data-meet-lobby-entry": "",
|
|
3972
4069
|
"data-meet-participant-name": entry.displayName,
|
|
3973
4070
|
children: [
|
|
3974
|
-
/* @__PURE__ */
|
|
4071
|
+
/* @__PURE__ */ jsx6(Avatar, { name: entry.displayName, url: entry.avatarUrl, size: 32 }),
|
|
3975
4072
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
3976
4073
|
entry.displayName,
|
|
3977
|
-
entry.userId === null ? /* @__PURE__ */
|
|
4074
|
+
entry.userId === null ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", children: "Guest" }) : null
|
|
3978
4075
|
] }),
|
|
3979
|
-
/* @__PURE__ */
|
|
3980
|
-
/* @__PURE__ */
|
|
4076
|
+
/* @__PURE__ */ jsx6(ControlButton, { label: `Admit ${entry.displayName}`, onClick: () => void lobby.admit(entry), children: /* @__PURE__ */ jsx6(CheckIcon, { width: 16, height: 16 }) }),
|
|
4077
|
+
/* @__PURE__ */ jsx6(
|
|
3981
4078
|
ControlButton,
|
|
3982
4079
|
{
|
|
3983
4080
|
label: `Deny ${entry.displayName}`,
|
|
3984
4081
|
danger: true,
|
|
3985
4082
|
onClick: () => void lobby.deny(entry),
|
|
3986
|
-
children: /* @__PURE__ */
|
|
4083
|
+
children: /* @__PURE__ */ jsx6(CloseIcon, { width: 16, height: 16 })
|
|
3987
4084
|
}
|
|
3988
4085
|
)
|
|
3989
4086
|
]
|
|
@@ -3998,19 +4095,19 @@ function NoteTakerRow() {
|
|
|
3998
4095
|
const duplicateError = status.refusal !== null && ai.error !== null && status.refusal.reason === ai.error.message && status.refusal.remedy === ai.error.remedy;
|
|
3999
4096
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-taker", "aria-label": "Note-taker", children: [
|
|
4000
4097
|
/* @__PURE__ */ jsxs3("p", { className: `mx-meet__note-taker-state mx-meet__note-taker-state--${status.state}`, children: [
|
|
4001
|
-
/* @__PURE__ */
|
|
4098
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__note-taker-dot", "aria-hidden": "true" }),
|
|
4002
4099
|
ai.noteTakerLabel
|
|
4003
4100
|
] }),
|
|
4004
|
-
status.detail !== null ? /* @__PURE__ */
|
|
4101
|
+
status.detail !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__panel-note", children: status.detail }) : null,
|
|
4005
4102
|
status.refusal !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: status.refusal, operation: "Join this meeting", origin: "meet/components", children: [
|
|
4006
|
-
/* @__PURE__ */
|
|
4007
|
-
status.refusal.remedy.length > 0 ? /* @__PURE__ */
|
|
4103
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-reason", children: status.refusal.reason }),
|
|
4104
|
+
status.refusal.remedy.length > 0 ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-remedy", children: status.refusal.remedy }) : null
|
|
4008
4105
|
] }) : null,
|
|
4009
4106
|
ai.error !== null && !duplicateError ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: ai.error, operation: "Run the meeting assistant", origin: "meet/components", children: [
|
|
4010
|
-
/* @__PURE__ */
|
|
4011
|
-
/* @__PURE__ */
|
|
4107
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
|
|
4108
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
|
|
4012
4109
|
] }) : null,
|
|
4013
|
-
ai.canControlNoteTaker ? status.state === "transcribing" || status.state === "joining" || status.state === "handoff_pending" ? /* @__PURE__ */
|
|
4110
|
+
ai.canControlNoteTaker ? status.state === "transcribing" || status.state === "joining" || status.state === "handoff_pending" ? /* @__PURE__ */ jsx6(
|
|
4014
4111
|
"button",
|
|
4015
4112
|
{
|
|
4016
4113
|
type: "button",
|
|
@@ -4018,7 +4115,7 @@ function NoteTakerRow() {
|
|
|
4018
4115
|
onClick: () => void ai.stopNoteTaker(),
|
|
4019
4116
|
children: "Dismiss the note-taker"
|
|
4020
4117
|
}
|
|
4021
|
-
) : /* @__PURE__ */
|
|
4118
|
+
) : /* @__PURE__ */ jsx6(
|
|
4022
4119
|
"button",
|
|
4023
4120
|
{
|
|
4024
4121
|
type: "button",
|
|
@@ -4035,10 +4132,10 @@ function NoteList({
|
|
|
4035
4132
|
empty
|
|
4036
4133
|
}) {
|
|
4037
4134
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": title, children: [
|
|
4038
|
-
/* @__PURE__ */
|
|
4039
|
-
notes.length === 0 ? /* @__PURE__ */
|
|
4135
|
+
/* @__PURE__ */ jsx6("h3", { className: "mx-meet__note-group-title", children: title }),
|
|
4136
|
+
notes.length === 0 ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__panel-note", children: empty }) : /* @__PURE__ */ jsx6("ul", { className: "mx-meet__notes", children: notes.map((note) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__note", children: [
|
|
4040
4137
|
note.text,
|
|
4041
|
-
note.assigneeDisplayName !== void 0 && note.assigneeDisplayName !== null ? /* @__PURE__ */
|
|
4138
|
+
note.assigneeDisplayName !== void 0 && note.assigneeDisplayName !== null ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__assignee", children: note.assigneeDisplayName }) : null
|
|
4042
4139
|
] }, note.id)) })
|
|
4043
4140
|
] });
|
|
4044
4141
|
}
|
|
@@ -4046,10 +4143,10 @@ function AiPanel({ onClose }) {
|
|
|
4046
4143
|
const ai = useMeetAi();
|
|
4047
4144
|
const [question, setQuestion] = useState4("");
|
|
4048
4145
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Meeting assistant", onClose, children: [
|
|
4049
|
-
/* @__PURE__ */
|
|
4146
|
+
/* @__PURE__ */ jsx6(NoteTakerRow, {}),
|
|
4050
4147
|
ai.summary !== null ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": "Summary", children: [
|
|
4051
|
-
/* @__PURE__ */
|
|
4052
|
-
/* @__PURE__ */
|
|
4148
|
+
/* @__PURE__ */ jsx6("h3", { className: "mx-meet__note-group-title", children: "Summary" }),
|
|
4149
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__summary", children: ai.summary.text })
|
|
4053
4150
|
] }) : null,
|
|
4054
4151
|
ai.wrapUp !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__wrap-up-notice", role: "status", children: [
|
|
4055
4152
|
"The wrap-up is written \u2014 ",
|
|
@@ -4063,7 +4160,7 @@ function AiPanel({ onClose }) {
|
|
|
4063
4160
|
ai.wrapUp.segmentCount === 1 ? "transcript line" : "transcript lines",
|
|
4064
4161
|
"."
|
|
4065
4162
|
] }) : null,
|
|
4066
|
-
/* @__PURE__ */
|
|
4163
|
+
/* @__PURE__ */ jsx6(
|
|
4067
4164
|
NoteList,
|
|
4068
4165
|
{
|
|
4069
4166
|
title: "Notes",
|
|
@@ -4071,7 +4168,7 @@ function AiPanel({ onClose }) {
|
|
|
4071
4168
|
empty: "Notes appear here as the meeting goes on."
|
|
4072
4169
|
}
|
|
4073
4170
|
),
|
|
4074
|
-
/* @__PURE__ */
|
|
4171
|
+
/* @__PURE__ */ jsx6(
|
|
4075
4172
|
NoteList,
|
|
4076
4173
|
{
|
|
4077
4174
|
title: "Decisions",
|
|
@@ -4079,7 +4176,7 @@ function AiPanel({ onClose }) {
|
|
|
4079
4176
|
empty: "Nothing has been decided yet."
|
|
4080
4177
|
}
|
|
4081
4178
|
),
|
|
4082
|
-
/* @__PURE__ */
|
|
4179
|
+
/* @__PURE__ */ jsx6(
|
|
4083
4180
|
NoteList,
|
|
4084
4181
|
{
|
|
4085
4182
|
title: "Action items",
|
|
@@ -4088,14 +4185,14 @@ function AiPanel({ onClose }) {
|
|
|
4088
4185
|
}
|
|
4089
4186
|
),
|
|
4090
4187
|
ai.transcript.length > 0 ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": "Transcript", children: [
|
|
4091
|
-
/* @__PURE__ */
|
|
4092
|
-
/* @__PURE__ */
|
|
4188
|
+
/* @__PURE__ */ jsx6("h3", { className: "mx-meet__note-group-title", children: "Transcript" }),
|
|
4189
|
+
/* @__PURE__ */ jsx6("ul", { className: "mx-meet__transcript", children: ai.transcript.map((line) => /* @__PURE__ */ jsxs3(
|
|
4093
4190
|
"li",
|
|
4094
4191
|
{
|
|
4095
4192
|
className: line.final && line.source === "record" ? "mx-meet__line" : "mx-meet__line mx-meet__line--interim",
|
|
4096
4193
|
children: [
|
|
4097
|
-
/* @__PURE__ */
|
|
4098
|
-
/* @__PURE__ */
|
|
4194
|
+
/* @__PURE__ */ jsx6("strong", { children: line.speaker }),
|
|
4195
|
+
/* @__PURE__ */ jsx6("span", { children: line.text })
|
|
4099
4196
|
]
|
|
4100
4197
|
},
|
|
4101
4198
|
line.id
|
|
@@ -4112,7 +4209,7 @@ function AiPanel({ onClose }) {
|
|
|
4112
4209
|
void ai.ask(asked);
|
|
4113
4210
|
},
|
|
4114
4211
|
children: [
|
|
4115
|
-
/* @__PURE__ */
|
|
4212
|
+
/* @__PURE__ */ jsx6(
|
|
4116
4213
|
"input",
|
|
4117
4214
|
{
|
|
4118
4215
|
className: "mx-meet__input",
|
|
@@ -4122,12 +4219,12 @@ function AiPanel({ onClose }) {
|
|
|
4122
4219
|
"aria-label": "Ask about this meeting"
|
|
4123
4220
|
}
|
|
4124
4221
|
),
|
|
4125
|
-
/* @__PURE__ */
|
|
4222
|
+
/* @__PURE__ */ jsx6("button", { type: "submit", className: "mx-meet__send", disabled: ai.asking, children: ai.asking ? "Asking\u2026" : "Ask" })
|
|
4126
4223
|
]
|
|
4127
4224
|
}
|
|
4128
4225
|
),
|
|
4129
|
-
ai.asking && ai.phase !== null ? /* @__PURE__ */
|
|
4130
|
-
ai.answer !== null ? /* @__PURE__ */
|
|
4226
|
+
ai.asking && ai.phase !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__panel-note", role: "status", children: ai.phase }) : null,
|
|
4227
|
+
ai.answer !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__answer", children: ai.answer }) : null,
|
|
4131
4228
|
ai.answer !== null && ai.coverage !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__coverage", children: [
|
|
4132
4229
|
"Answered from ",
|
|
4133
4230
|
ai.coverage.segmentsUsed,
|
|
@@ -4138,8 +4235,8 @@ function AiPanel({ onClose }) {
|
|
|
4138
4235
|
"."
|
|
4139
4236
|
] }) : null,
|
|
4140
4237
|
ai.error !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: ai.error, operation: "Run the meeting assistant", origin: "meet/components", children: [
|
|
4141
|
-
/* @__PURE__ */
|
|
4142
|
-
/* @__PURE__ */
|
|
4238
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
|
|
4239
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
|
|
4143
4240
|
] }) : null
|
|
4144
4241
|
] });
|
|
4145
4242
|
}
|
|
@@ -4156,22 +4253,22 @@ function Captions({ lines = 3 }) {
|
|
|
4156
4253
|
{
|
|
4157
4254
|
className: line.final ? "mx-meet__caption" : "mx-meet__caption mx-meet__caption--interim",
|
|
4158
4255
|
children: [
|
|
4159
|
-
/* @__PURE__ */
|
|
4256
|
+
/* @__PURE__ */ jsx6("strong", { children: line.speaker }),
|
|
4160
4257
|
" ",
|
|
4161
4258
|
translated ?? line.text,
|
|
4162
|
-
translated !== void 0 ? /* @__PURE__ */
|
|
4259
|
+
translated !== void 0 ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__caption-original", children: line.text }) : null
|
|
4163
4260
|
]
|
|
4164
4261
|
},
|
|
4165
4262
|
line.id
|
|
4166
4263
|
);
|
|
4167
4264
|
}),
|
|
4168
|
-
translation.language !== null && translation.error !== null ? /* @__PURE__ */
|
|
4265
|
+
translation.language !== null && translation.error !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__caption mx-meet__caption--interim", children: translation.error }) : null
|
|
4169
4266
|
] });
|
|
4170
4267
|
}
|
|
4171
4268
|
function ConsentNotice() {
|
|
4172
4269
|
const notice = useConsentNotice();
|
|
4173
4270
|
if (notice === null) return null;
|
|
4174
|
-
return /* @__PURE__ */
|
|
4271
|
+
return /* @__PURE__ */ jsx6("p", { className: "mx-meet__consent", role: "status", children: notice });
|
|
4175
4272
|
}
|
|
4176
4273
|
function AttendanceNotice() {
|
|
4177
4274
|
const media = useLocalMedia();
|
|
@@ -4187,21 +4284,22 @@ function AttendanceNotice() {
|
|
|
4187
4284
|
...code !== null ? { "data-meet-notice": code } : {},
|
|
4188
4285
|
children: [
|
|
4189
4286
|
notice,
|
|
4190
|
-
refused === null ? null : /* @__PURE__ */
|
|
4287
|
+
refused === null ? null : /* @__PURE__ */ jsx6("span", { className: "mx-meet__remedy", children: refused.remedy })
|
|
4191
4288
|
]
|
|
4192
4289
|
}
|
|
4193
4290
|
);
|
|
4194
4291
|
}
|
|
4195
4292
|
function PreJoin(props) {
|
|
4196
4293
|
const host = useMeetHost();
|
|
4197
|
-
if (host === null) return /* @__PURE__ */
|
|
4198
|
-
return /* @__PURE__ */
|
|
4294
|
+
if (host === null) return /* @__PURE__ */ jsx6(InertNotice, { what: "This meeting" });
|
|
4295
|
+
return /* @__PURE__ */ jsx6(PreJoinBody, { ...props, host });
|
|
4199
4296
|
}
|
|
4200
4297
|
function PreJoinBody({
|
|
4201
4298
|
roomName,
|
|
4202
4299
|
meetingId,
|
|
4203
4300
|
slug,
|
|
4204
4301
|
onJoined,
|
|
4302
|
+
observe: observe2 = false,
|
|
4205
4303
|
host
|
|
4206
4304
|
}) {
|
|
4207
4305
|
const room = useRoom();
|
|
@@ -4223,7 +4321,7 @@ function PreJoinBody({
|
|
|
4223
4321
|
}, [host]);
|
|
4224
4322
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin", children: [
|
|
4225
4323
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__preview", children: [
|
|
4226
|
-
mode === "video" && preview.preview !== null ? /* @__PURE__ */
|
|
4324
|
+
mode === "video" && preview.preview !== null ? /* @__PURE__ */ jsx6(
|
|
4227
4325
|
"video",
|
|
4228
4326
|
{
|
|
4229
4327
|
className: "mx-meet__video mx-meet__video--mirror",
|
|
@@ -4234,16 +4332,16 @@ function PreJoinBody({
|
|
|
4234
4332
|
if (element !== null) preview.preview?.attach(element);
|
|
4235
4333
|
}
|
|
4236
4334
|
}
|
|
4237
|
-
) : /* @__PURE__ */
|
|
4238
|
-
mode === "video" && preview.error !== null ? /* @__PURE__ */
|
|
4239
|
-
microphone && micStream !== null ? /* @__PURE__ */
|
|
4335
|
+
) : /* @__PURE__ */ jsx6("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx6(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 96 }) }),
|
|
4336
|
+
mode === "video" && preview.error !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__preview-note", children: preview.error }) : null,
|
|
4337
|
+
microphone && micStream !== null ? /* @__PURE__ */ jsx6("div", { className: "mx-meet__meter mx-meet__meter--preview", role: "meter", "aria-label": "Microphone level", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(level * 100), children: /* @__PURE__ */ jsx6("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }) : null
|
|
4240
4338
|
] }),
|
|
4241
4339
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin-panel", children: [
|
|
4242
|
-
/* @__PURE__ */
|
|
4243
|
-
notice?.kind === "removed" ? /* @__PURE__ */
|
|
4340
|
+
/* @__PURE__ */ jsx6("h1", { className: "mx-meet__prejoin-title", children: "Ready to join?" }),
|
|
4341
|
+
notice?.kind === "removed" ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__warning", children: notice.text }) : null,
|
|
4244
4342
|
devices?.labelsHidden === true ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__panel-note", children: [
|
|
4245
4343
|
"Your browser is hiding device names until you allow camera and microphone access.",
|
|
4246
|
-
/* @__PURE__ */
|
|
4344
|
+
/* @__PURE__ */ jsx6(
|
|
4247
4345
|
"button",
|
|
4248
4346
|
{
|
|
4249
4347
|
type: "button",
|
|
@@ -4255,10 +4353,10 @@ function PreJoinBody({
|
|
|
4255
4353
|
}
|
|
4256
4354
|
)
|
|
4257
4355
|
] }) : null,
|
|
4258
|
-
devices?.fallbackNotice != null ? /* @__PURE__ */
|
|
4259
|
-
/* @__PURE__ */
|
|
4356
|
+
devices?.fallbackNotice != null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__warning", children: devices.fallbackNotice }) : null,
|
|
4357
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "audioinput", label: "Microphone" }),
|
|
4260
4358
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__field-row", children: [
|
|
4261
|
-
/* @__PURE__ */
|
|
4359
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "audiooutput", label: "Speaker" }),
|
|
4262
4360
|
/* @__PURE__ */ jsxs3(
|
|
4263
4361
|
Button,
|
|
4264
4362
|
{
|
|
@@ -4272,19 +4370,19 @@ function PreJoinBody({
|
|
|
4272
4370
|
);
|
|
4273
4371
|
},
|
|
4274
4372
|
children: [
|
|
4275
|
-
/* @__PURE__ */
|
|
4373
|
+
/* @__PURE__ */ jsx6(SpeakerIcon, {}),
|
|
4276
4374
|
" ",
|
|
4277
4375
|
speakerTesting ? "Playing\u2026" : "Test"
|
|
4278
4376
|
]
|
|
4279
4377
|
}
|
|
4280
4378
|
)
|
|
4281
4379
|
] }),
|
|
4282
|
-
/* @__PURE__ */
|
|
4283
|
-
/* @__PURE__ */
|
|
4284
|
-
recording.consentNotice !== null ? /* @__PURE__ */
|
|
4380
|
+
/* @__PURE__ */ jsx6(DevicePicker, { kind: "videoinput", label: "Camera" }),
|
|
4381
|
+
/* @__PURE__ */ jsx6(EffectsSettings, { preview: preview.preview }),
|
|
4382
|
+
recording.consentNotice !== null ? /* @__PURE__ */ jsx6(Alert, { variant: "info", children: /* @__PURE__ */ jsx6(AlertDescription, { children: recording.consentNotice }) }) : null,
|
|
4285
4383
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin-actions", children: [
|
|
4286
4384
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
4287
|
-
/* @__PURE__ */
|
|
4385
|
+
/* @__PURE__ */ jsx6(
|
|
4288
4386
|
Checkbox,
|
|
4289
4387
|
{
|
|
4290
4388
|
id: "mx-meet-join-video",
|
|
@@ -4292,10 +4390,10 @@ function PreJoinBody({
|
|
|
4292
4390
|
onCheckedChange: (checked) => setMode(checked === true ? "video" : "audio")
|
|
4293
4391
|
}
|
|
4294
4392
|
),
|
|
4295
|
-
/* @__PURE__ */
|
|
4393
|
+
/* @__PURE__ */ jsx6(Label, { htmlFor: "mx-meet-join-video", children: "Join with video" })
|
|
4296
4394
|
] }),
|
|
4297
4395
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
4298
|
-
/* @__PURE__ */
|
|
4396
|
+
/* @__PURE__ */ jsx6(
|
|
4299
4397
|
Checkbox,
|
|
4300
4398
|
{
|
|
4301
4399
|
id: "mx-meet-join-mic",
|
|
@@ -4303,9 +4401,9 @@ function PreJoinBody({
|
|
|
4303
4401
|
onCheckedChange: (checked) => setMicrophone(checked === true)
|
|
4304
4402
|
}
|
|
4305
4403
|
),
|
|
4306
|
-
/* @__PURE__ */
|
|
4404
|
+
/* @__PURE__ */ jsx6(Label, { htmlFor: "mx-meet-join-mic", children: "Join with microphone" })
|
|
4307
4405
|
] }),
|
|
4308
|
-
/* @__PURE__ */
|
|
4406
|
+
/* @__PURE__ */ jsx6(
|
|
4309
4407
|
Button,
|
|
4310
4408
|
{
|
|
4311
4409
|
type: "button",
|
|
@@ -4316,19 +4414,21 @@ function PreJoinBody({
|
|
|
4316
4414
|
preview.release();
|
|
4317
4415
|
void room.join({
|
|
4318
4416
|
roomName,
|
|
4319
|
-
|
|
4320
|
-
|
|
4417
|
+
// An observer publishes nothing: no camera, no microphone (MD-16).
|
|
4418
|
+
mode: observe2 ? "audio" : mode,
|
|
4419
|
+
microphone: observe2 ? false : microphone,
|
|
4321
4420
|
...meetingId !== void 0 ? { meetingId } : {},
|
|
4322
|
-
...slug !== void 0 ? { slug } : {}
|
|
4421
|
+
...slug !== void 0 ? { slug } : {},
|
|
4422
|
+
...observe2 ? { observe: true } : {}
|
|
4323
4423
|
}).then(() => onJoined?.()).catch(() => void 0).finally(() => setJoining(false));
|
|
4324
4424
|
},
|
|
4325
|
-
children: joining ? "Joining\u2026" : "Join now"
|
|
4425
|
+
children: joining ? "Joining\u2026" : observe2 ? "Observe" : "Join now"
|
|
4326
4426
|
}
|
|
4327
4427
|
)
|
|
4328
4428
|
] }),
|
|
4329
4429
|
room.failure !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__error", children: [
|
|
4330
4430
|
room.failure.message,
|
|
4331
|
-
/* @__PURE__ */
|
|
4431
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__remedy", children: room.failure.remedy })
|
|
4332
4432
|
] }) : null
|
|
4333
4433
|
] })
|
|
4334
4434
|
] });
|
|
@@ -4387,7 +4487,7 @@ function DevicePicker({
|
|
|
4387
4487
|
const valueOf = (deviceId) => deviceId.length > 0 ? deviceId : "default";
|
|
4388
4488
|
const current = devices?.selected[kind] ?? host.devices.resolve(kind) ?? "";
|
|
4389
4489
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__field", children: [
|
|
4390
|
-
/* @__PURE__ */
|
|
4490
|
+
/* @__PURE__ */ jsx6(Label, { htmlFor: triggerId, children: label }),
|
|
4391
4491
|
/* @__PURE__ */ jsxs3(
|
|
4392
4492
|
Select,
|
|
4393
4493
|
{
|
|
@@ -4398,8 +4498,8 @@ function DevicePicker({
|
|
|
4398
4498
|
else host.devices.select(kind, deviceId);
|
|
4399
4499
|
},
|
|
4400
4500
|
children: [
|
|
4401
|
-
/* @__PURE__ */
|
|
4402
|
-
/* @__PURE__ */
|
|
4501
|
+
/* @__PURE__ */ jsx6(SelectTrigger, { id: triggerId, "aria-label": label, children: /* @__PURE__ */ jsx6(SelectValue, { placeholder: label }) }),
|
|
4502
|
+
/* @__PURE__ */ jsx6(SelectContent, { children: list.map((device) => /* @__PURE__ */ jsx6(SelectItem, { value: valueOf(device.deviceId), children: device.label.length > 0 ? device.label : `${label} (name hidden)` }, device.deviceId || "default")) })
|
|
4403
4503
|
]
|
|
4404
4504
|
}
|
|
4405
4505
|
)
|
|
@@ -4410,63 +4510,103 @@ function MeetSkinRoom({
|
|
|
4410
4510
|
meetingId,
|
|
4411
4511
|
slug,
|
|
4412
4512
|
onLeave,
|
|
4413
|
-
headerControls
|
|
4513
|
+
headerControls,
|
|
4514
|
+
observe: observe2 = false
|
|
4414
4515
|
}) {
|
|
4415
4516
|
const { host, snapshot, isHost } = useMeetCore();
|
|
4416
4517
|
const elapsed = useElapsed(snapshot?.meeting?.startedAt ?? null);
|
|
4417
4518
|
const phase = snapshot?.phase ?? "idle";
|
|
4418
4519
|
if (host === null) return null;
|
|
4419
4520
|
if (phase === "idle" || phase === "failed" || phase === "left") {
|
|
4420
|
-
return /* @__PURE__ */
|
|
4521
|
+
return /* @__PURE__ */ jsx6("div", { className: "mx-meet", children: /* @__PURE__ */ jsx6(
|
|
4421
4522
|
PreJoin,
|
|
4422
4523
|
{
|
|
4423
4524
|
roomName,
|
|
4424
4525
|
...meetingId !== void 0 ? { meetingId } : {},
|
|
4425
|
-
...slug !== void 0 ? { slug } : {}
|
|
4526
|
+
...slug !== void 0 ? { slug } : {},
|
|
4527
|
+
observe: observe2
|
|
4426
4528
|
}
|
|
4427
4529
|
) });
|
|
4428
4530
|
}
|
|
4429
4531
|
if (phase === "lobby") {
|
|
4430
|
-
return /* @__PURE__ */
|
|
4532
|
+
return /* @__PURE__ */ jsx6("div", { className: "mx-meet mx-meet--lobby", children: /* @__PURE__ */ jsx6(WaitingRoom, { host, ...onLeave !== void 0 ? { onLeave } : {} }) });
|
|
4431
4533
|
}
|
|
4432
4534
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet", children: [
|
|
4433
|
-
/* @__PURE__ */
|
|
4434
|
-
/* @__PURE__ */
|
|
4535
|
+
/* @__PURE__ */ jsx6(ConsentNotice, {}),
|
|
4536
|
+
/* @__PURE__ */ jsx6(AttendanceNotice, {}),
|
|
4435
4537
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__header", children: [
|
|
4436
|
-
/* @__PURE__ */
|
|
4538
|
+
/* @__PURE__ */ jsx6("h1", { className: "mx-meet__title", children: snapshot?.meeting?.title ?? "Meeting" }),
|
|
4437
4539
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__meta", children: [
|
|
4438
4540
|
participantSummary(snapshot?.participants ?? []),
|
|
4439
4541
|
elapsed > 0 ? ` \xB7 ${formatDurationMs2(elapsed)}` : ""
|
|
4440
4542
|
] }),
|
|
4441
|
-
/* @__PURE__ */
|
|
4543
|
+
/* @__PURE__ */ jsx6(RecordingIndicator, {}),
|
|
4544
|
+
isObserverRole(snapshot?.grants.role) ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__badge", "data-meet-observing": "self", children: "Observing" }) : null,
|
|
4442
4545
|
snapshot?.locked === true ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__badge", children: [
|
|
4443
|
-
/* @__PURE__ */
|
|
4546
|
+
/* @__PURE__ */ jsx6(LockIcon, { width: 12, height: 12 }),
|
|
4444
4547
|
" Locked"
|
|
4445
4548
|
] }) : null,
|
|
4446
|
-
headerControls !== void 0 && headerControls !== null ? /* @__PURE__ */
|
|
4447
|
-
isHost ? /* @__PURE__ */
|
|
4549
|
+
headerControls !== void 0 && headerControls !== null ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__header-controls", "data-meet-header-controls": "", children: headerControls }) : null,
|
|
4550
|
+
isHost ? /* @__PURE__ */ jsx6(HostMenu, {}) : null
|
|
4448
4551
|
] }),
|
|
4449
|
-
phase === "reconnecting" ? /* @__PURE__ */
|
|
4450
|
-
/* @__PURE__ */
|
|
4451
|
-
/* @__PURE__ */
|
|
4452
|
-
/* @__PURE__ */
|
|
4552
|
+
phase === "reconnecting" ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__banner", role: "status", children: "Reconnecting\u2026" }) : null,
|
|
4553
|
+
/* @__PURE__ */ jsx6(Stage, {}),
|
|
4554
|
+
/* @__PURE__ */ jsx6(Captions, {}),
|
|
4555
|
+
/* @__PURE__ */ jsx6(ControlBar, { ...onLeave !== void 0 ? { onLeave } : {} })
|
|
4453
4556
|
] });
|
|
4454
4557
|
}
|
|
4455
|
-
function WaitingRoom({
|
|
4456
|
-
const
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4558
|
+
function WaitingRoom({ host, onLeave }) {
|
|
4559
|
+
const { waiting, withdraw, askAgain } = useWaiting();
|
|
4560
|
+
const [busy, setBusy] = useState4(false);
|
|
4561
|
+
const admission = waiting?.admission ?? "knocking";
|
|
4562
|
+
const run = (action) => () => {
|
|
4563
|
+
setBusy(true);
|
|
4564
|
+
void action().catch(() => void 0).finally(() => setBusy(false));
|
|
4565
|
+
};
|
|
4566
|
+
const home = /* @__PURE__ */ jsx6(Button, { type: "button", variant: "outline", onClick: () => onLeave !== void 0 ? onLeave() : window.location.assign("/"), children: "Back to home" });
|
|
4567
|
+
let title;
|
|
4568
|
+
let line = null;
|
|
4569
|
+
let actions;
|
|
4570
|
+
switch (admission) {
|
|
4571
|
+
case "waiting_host":
|
|
4572
|
+
title = "Waiting for the host to start";
|
|
4573
|
+
actions = /* @__PURE__ */ jsx6(Button, { type: "button", variant: "outline", disabled: busy, onClick: run(withdraw), children: "Leave" });
|
|
4574
|
+
break;
|
|
4575
|
+
case "denied":
|
|
4576
|
+
title = "The host declined your request";
|
|
4577
|
+
actions = /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
4578
|
+
waiting?.reknockAllowed === true ? /* @__PURE__ */ jsx6(Button, { type: "button", disabled: busy, onClick: run(askAgain), children: "Ask to join again" }) : null,
|
|
4579
|
+
home
|
|
4580
|
+
] });
|
|
4581
|
+
break;
|
|
4582
|
+
case "expired":
|
|
4583
|
+
title = "No one responded";
|
|
4584
|
+
actions = /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
4585
|
+
/* @__PURE__ */ jsx6(Button, { type: "button", disabled: busy, onClick: run(askAgain), children: "Ask again" }),
|
|
4586
|
+
home
|
|
4587
|
+
] });
|
|
4588
|
+
break;
|
|
4589
|
+
case "withdrawn":
|
|
4590
|
+
title = "You left the waiting room";
|
|
4591
|
+
actions = /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
4592
|
+
/* @__PURE__ */ jsx6(Button, { type: "button", disabled: busy, onClick: run(askAgain), children: "Rejoin" }),
|
|
4593
|
+
home
|
|
4594
|
+
] });
|
|
4595
|
+
break;
|
|
4596
|
+
case "ended":
|
|
4597
|
+
title = "The meeting has ended";
|
|
4598
|
+
actions = home;
|
|
4599
|
+
break;
|
|
4600
|
+
default:
|
|
4601
|
+
title = "Waiting for the host to let you in";
|
|
4602
|
+
line = waiting?.admittersPresent === false ? "The host isn't here yet" : null;
|
|
4603
|
+
actions = /* @__PURE__ */ jsx6(Button, { type: "button", variant: "outline", disabled: busy, onClick: run(withdraw), children: "Cancel request" });
|
|
4604
|
+
}
|
|
4462
4605
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__waiting", children: [
|
|
4463
|
-
/* @__PURE__ */
|
|
4464
|
-
/* @__PURE__ */
|
|
4465
|
-
/* @__PURE__ */
|
|
4466
|
-
|
|
4467
|
-
host.identity.displayName,
|
|
4468
|
-
". You will join automatically once you are admitted."
|
|
4469
|
-
] })
|
|
4606
|
+
/* @__PURE__ */ jsx6(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 72 }),
|
|
4607
|
+
/* @__PURE__ */ jsx6("h1", { className: "mx-meet__prejoin-title", children: title }),
|
|
4608
|
+
line !== null ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__empty-body", role: "status", "data-meet-notice": "host-absent", children: line }) : null,
|
|
4609
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-meet__waiting-actions", children: actions })
|
|
4470
4610
|
] });
|
|
4471
4611
|
}
|
|
4472
4612
|
function HostMenu() {
|
|
@@ -4476,7 +4616,7 @@ function HostMenu() {
|
|
|
4476
4616
|
const [confirmingEnd, setConfirmingEnd] = useState4(false);
|
|
4477
4617
|
const locked = snapshot?.locked === true;
|
|
4478
4618
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__host-menu", children: [
|
|
4479
|
-
/* @__PURE__ */
|
|
4619
|
+
/* @__PURE__ */ jsx6(
|
|
4480
4620
|
"button",
|
|
4481
4621
|
{
|
|
4482
4622
|
type: "button",
|
|
@@ -4488,8 +4628,8 @@ function HostMenu() {
|
|
|
4488
4628
|
}
|
|
4489
4629
|
),
|
|
4490
4630
|
end.canEnd ? confirmingEnd ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__confirm", role: "group", "aria-label": "End this meeting?", children: [
|
|
4491
|
-
/* @__PURE__ */
|
|
4492
|
-
/* @__PURE__ */
|
|
4631
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__confirm-text", children: "End it for everyone? Every participant is disconnected, the note-taker stops, and the wrap-up is written. Nobody can rejoin this meeting afterwards." }),
|
|
4632
|
+
/* @__PURE__ */ jsx6(
|
|
4493
4633
|
"button",
|
|
4494
4634
|
{
|
|
4495
4635
|
type: "button",
|
|
@@ -4501,7 +4641,7 @@ function HostMenu() {
|
|
|
4501
4641
|
children: "End it"
|
|
4502
4642
|
}
|
|
4503
4643
|
),
|
|
4504
|
-
/* @__PURE__ */
|
|
4644
|
+
/* @__PURE__ */ jsx6(
|
|
4505
4645
|
"button",
|
|
4506
4646
|
{
|
|
4507
4647
|
type: "button",
|
|
@@ -4510,7 +4650,7 @@ function HostMenu() {
|
|
|
4510
4650
|
children: "Keep it running"
|
|
4511
4651
|
}
|
|
4512
4652
|
)
|
|
4513
|
-
] }) : /* @__PURE__ */
|
|
4653
|
+
] }) : /* @__PURE__ */ jsx6(
|
|
4514
4654
|
"button",
|
|
4515
4655
|
{
|
|
4516
4656
|
type: "button",
|
|
@@ -4519,14 +4659,14 @@ function HostMenu() {
|
|
|
4519
4659
|
children: end.ending ? "Ending\u2026" : "End meeting for everyone"
|
|
4520
4660
|
}
|
|
4521
4661
|
) : null,
|
|
4522
|
-
end.notice !== null ? /* @__PURE__ */
|
|
4662
|
+
end.notice !== null ? /* @__PURE__ */ jsx6("span", { className: "mx-meet__notice", role: "status", children: end.notice }) : null
|
|
4523
4663
|
] });
|
|
4524
4664
|
}
|
|
4525
4665
|
function ReactionOverlay({
|
|
4526
4666
|
reactions
|
|
4527
4667
|
}) {
|
|
4528
4668
|
if (reactions.length === 0) return null;
|
|
4529
|
-
return /* @__PURE__ */
|
|
4669
|
+
return /* @__PURE__ */ jsx6("div", { className: "mx-meet__reactions", "aria-hidden": "true", children: reactions.map((reaction) => /* @__PURE__ */ jsx6("span", { className: "mx-meet__reaction", children: reaction.emoji }, reaction.id)) });
|
|
4530
4670
|
}
|
|
4531
4671
|
function clockOf(iso) {
|
|
4532
4672
|
const at = new Date(iso);
|
|
@@ -4544,10 +4684,10 @@ function GuestRecordAccessControl({
|
|
|
4544
4684
|
if (host === null || !isHost) return null;
|
|
4545
4685
|
const resolved = access.setting === "default" && access.effective !== null ? ` Right now that means: ${guestRecordAccessLabel(access.effective.level).toLowerCase()}.` : "";
|
|
4546
4686
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "What guests may read", children: [
|
|
4547
|
-
/* @__PURE__ */
|
|
4687
|
+
/* @__PURE__ */ jsx6("h2", { className: "mx-meet__record-section-title", children: "What guests may read" }),
|
|
4548
4688
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
4549
|
-
/* @__PURE__ */
|
|
4550
|
-
/* @__PURE__ */
|
|
4689
|
+
/* @__PURE__ */ jsx6("span", { className: "mx-meet__field-label", children: "People who attended by link, without an account" }),
|
|
4690
|
+
/* @__PURE__ */ jsx6(
|
|
4551
4691
|
"select",
|
|
4552
4692
|
{
|
|
4553
4693
|
className: "mx-meet__select",
|
|
@@ -4558,7 +4698,7 @@ function GuestRecordAccessControl({
|
|
|
4558
4698
|
event.target.value
|
|
4559
4699
|
);
|
|
4560
4700
|
},
|
|
4561
|
-
children: GUEST_RECORD_ACCESS_CHOICES.map((choice) => /* @__PURE__ */
|
|
4701
|
+
children: GUEST_RECORD_ACCESS_CHOICES.map((choice) => /* @__PURE__ */ jsx6("option", { value: choice, children: guestRecordAccessLabel(choice) }, choice))
|
|
4562
4702
|
}
|
|
4563
4703
|
)
|
|
4564
4704
|
] }),
|
|
@@ -4566,10 +4706,10 @@ function GuestRecordAccessControl({
|
|
|
4566
4706
|
guestRecordAccessExplanation(access.setting),
|
|
4567
4707
|
resolved
|
|
4568
4708
|
] }),
|
|
4569
|
-
access.saving ? /* @__PURE__ */
|
|
4709
|
+
access.saving ? /* @__PURE__ */ jsx6("p", { className: "mx-meet__panel-note", role: "status", children: "Saving what guests may read\u2026" }) : null,
|
|
4570
4710
|
access.error !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: access.error, operation: "Change who can join", origin: "meet/components", children: [
|
|
4571
|
-
/* @__PURE__ */
|
|
4572
|
-
/* @__PURE__ */
|
|
4711
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-reason", children: access.error.message }),
|
|
4712
|
+
/* @__PURE__ */ jsx6("p", { className: "mx-meet__refusal-remedy", children: access.error.remedy })
|
|
4573
4713
|
] }) : null
|
|
4574
4714
|
] });
|
|
4575
4715
|
}
|