@ai-matrx/meet 0.7.83 → 0.7.84
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 +14 -0
- package/dist/index.cjs +140 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +61 -1
- package/dist/index.d.ts +61 -1
- package/dist/index.js +140 -0
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +1229 -1024
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +34 -3
- package/dist/react.d.ts +34 -3
- package/dist/react.js +851 -646
- package/dist/react.js.map +1 -1
- package/package.json +15 -2
package/dist/react.js
CHANGED
|
@@ -5545,8 +5545,183 @@ function useLocalUserId() {
|
|
|
5545
5545
|
return useMeetHost()?.identity.userId ?? null;
|
|
5546
5546
|
}
|
|
5547
5547
|
|
|
5548
|
+
// src/react/root.tsx
|
|
5549
|
+
import { useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2 } from "react";
|
|
5550
|
+
|
|
5551
|
+
// src/core/observation.ts
|
|
5552
|
+
function observedDevice(track) {
|
|
5553
|
+
if (track.enabled) return "on";
|
|
5554
|
+
const refused = track.unavailable;
|
|
5555
|
+
if (refused === null) return "muted_by_me";
|
|
5556
|
+
switch (refused.code) {
|
|
5557
|
+
case "permission-denied":
|
|
5558
|
+
return "unavailable:denied";
|
|
5559
|
+
case "device-not-found":
|
|
5560
|
+
return "unavailable:none";
|
|
5561
|
+
case "device-in-use":
|
|
5562
|
+
return "unavailable:busy";
|
|
5563
|
+
case "insecure-context":
|
|
5564
|
+
return "unavailable:blocked_site";
|
|
5565
|
+
default:
|
|
5566
|
+
return "unavailable:failed";
|
|
5567
|
+
}
|
|
5568
|
+
}
|
|
5569
|
+
function endedRecord(snapshot, given) {
|
|
5570
|
+
const record = snapshot?.meeting ?? given;
|
|
5571
|
+
return record !== null && record.endedAt !== null;
|
|
5572
|
+
}
|
|
5573
|
+
function observedPhase(input) {
|
|
5574
|
+
const { snapshot } = input;
|
|
5575
|
+
if (snapshot === null) return "resolving";
|
|
5576
|
+
const raw = snapshot.phase;
|
|
5577
|
+
const live = raw === "connected" || raw === "reconnecting";
|
|
5578
|
+
if (endedRecord(snapshot, input.meeting ?? null) && !live) return "ended";
|
|
5579
|
+
switch (raw) {
|
|
5580
|
+
case "idle":
|
|
5581
|
+
case "failed":
|
|
5582
|
+
case "left":
|
|
5583
|
+
return "prejoin";
|
|
5584
|
+
case "lobby":
|
|
5585
|
+
return "waiting:knocking";
|
|
5586
|
+
case "requesting-token":
|
|
5587
|
+
case "connecting":
|
|
5588
|
+
return "joining";
|
|
5589
|
+
case "connected":
|
|
5590
|
+
case "reconnecting":
|
|
5591
|
+
return "in_call";
|
|
5592
|
+
}
|
|
5593
|
+
}
|
|
5594
|
+
var ADMITTER_ROLES = /* @__PURE__ */ new Set(["host", "cohost"]);
|
|
5595
|
+
function observe(input) {
|
|
5596
|
+
const { snapshot } = input;
|
|
5597
|
+
const phase = observedPhase(input);
|
|
5598
|
+
const inCall = phase === "in_call";
|
|
5599
|
+
const role = inCall && snapshot !== null ? effectiveRole(snapshot) : "none";
|
|
5600
|
+
const canAdmit = role !== "none" && ADMITTER_ROLES.has(role);
|
|
5601
|
+
const deviceInPlay = phase === "joining" || inCall;
|
|
5602
|
+
return {
|
|
5603
|
+
phase,
|
|
5604
|
+
reason: null,
|
|
5605
|
+
role,
|
|
5606
|
+
connection: snapshot?.phase === "reconnecting" ? "reconnecting" : "stable",
|
|
5607
|
+
hostPresent: inCall && snapshot !== null ? snapshot.participants.some((p) => ADMITTER_ROLES.has(p.role)) : null,
|
|
5608
|
+
lobbyCount: canAdmit && snapshot !== null ? snapshot.lobby.filter((entry) => entry.state === "knocking").length : 0,
|
|
5609
|
+
recording: snapshot?.recording === "recording" || snapshot?.recording === "stopping",
|
|
5610
|
+
audioBlocked: null,
|
|
5611
|
+
camera: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.camera) : null,
|
|
5612
|
+
microphone: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.microphone) : null
|
|
5613
|
+
};
|
|
5614
|
+
}
|
|
5615
|
+
function staticObservation(phase, reason = null) {
|
|
5616
|
+
return {
|
|
5617
|
+
phase,
|
|
5618
|
+
reason,
|
|
5619
|
+
role: "none",
|
|
5620
|
+
connection: phase === "disconnected" ? "server_unreachable" : "stable",
|
|
5621
|
+
hostPresent: null,
|
|
5622
|
+
lobbyCount: 0,
|
|
5623
|
+
recording: false,
|
|
5624
|
+
audioBlocked: null,
|
|
5625
|
+
camera: null,
|
|
5626
|
+
microphone: null
|
|
5627
|
+
};
|
|
5628
|
+
}
|
|
5629
|
+
function rootAttributes(o) {
|
|
5630
|
+
const attrs = {
|
|
5631
|
+
"data-meet-root": "",
|
|
5632
|
+
"data-meet-phase": o.phase,
|
|
5633
|
+
"data-meet-role": o.role,
|
|
5634
|
+
"data-meet-connection": o.connection,
|
|
5635
|
+
"data-meet-lobby-count": String(o.lobbyCount),
|
|
5636
|
+
"data-meet-recording": String(o.recording)
|
|
5637
|
+
};
|
|
5638
|
+
if (o.reason !== null) attrs["data-meet-reason"] = o.reason;
|
|
5639
|
+
if (o.hostPresent !== null) attrs["data-meet-host-present"] = String(o.hostPresent);
|
|
5640
|
+
if (o.audioBlocked !== null) attrs["data-meet-audio-blocked"] = String(o.audioBlocked);
|
|
5641
|
+
if (o.camera !== null) attrs["data-meet-camera"] = o.camera;
|
|
5642
|
+
if (o.microphone !== null) attrs["data-meet-microphone"] = o.microphone;
|
|
5643
|
+
attrs["data-meet-regions"] = JSON.stringify({
|
|
5644
|
+
connection: o.connection,
|
|
5645
|
+
camera: o.camera,
|
|
5646
|
+
mic: o.microphone,
|
|
5647
|
+
audio_output: o.audioBlocked === null ? null : o.audioBlocked ? "blocked" : "playing",
|
|
5648
|
+
recording: o.recording
|
|
5649
|
+
});
|
|
5650
|
+
return attrs;
|
|
5651
|
+
}
|
|
5652
|
+
function observedQuality(quality) {
|
|
5653
|
+
switch (quality) {
|
|
5654
|
+
case "excellent":
|
|
5655
|
+
case "good":
|
|
5656
|
+
return "good";
|
|
5657
|
+
case "poor":
|
|
5658
|
+
return "poor";
|
|
5659
|
+
case "lost":
|
|
5660
|
+
return "lost";
|
|
5661
|
+
default:
|
|
5662
|
+
return null;
|
|
5663
|
+
}
|
|
5664
|
+
}
|
|
5665
|
+
function participantAttributes(p) {
|
|
5666
|
+
const attrs = {
|
|
5667
|
+
"data-meet-participant": "",
|
|
5668
|
+
"data-meet-participant-identity": p.identity,
|
|
5669
|
+
"data-meet-participant-name": p.displayName,
|
|
5670
|
+
"data-meet-participant-role": p.role,
|
|
5671
|
+
"data-meet-participant-self": String(p.isLocal)
|
|
5672
|
+
};
|
|
5673
|
+
const quality = observedQuality(p.quality);
|
|
5674
|
+
if (quality !== null) attrs["data-meet-participant-connection"] = quality;
|
|
5675
|
+
return attrs;
|
|
5676
|
+
}
|
|
5677
|
+
function microphoneNoticeCode(track) {
|
|
5678
|
+
const refused = track.unavailable;
|
|
5679
|
+
if (refused === null) return null;
|
|
5680
|
+
return refused.code === "permission-denied" || refused.code === "insecure-context" ? "mic-blocked" : "device-lost";
|
|
5681
|
+
}
|
|
5682
|
+
|
|
5683
|
+
// src/react/root.tsx
|
|
5684
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
5685
|
+
function useCoreObservation(options = {}) {
|
|
5686
|
+
const snapshot = useMeetSnapshot();
|
|
5687
|
+
const { meeting, phase, reason } = options;
|
|
5688
|
+
return useMemo2(
|
|
5689
|
+
() => phase !== void 0 ? staticObservation(phase, reason ?? null) : observe({ snapshot, meeting: meeting ?? null }),
|
|
5690
|
+
[snapshot, meeting, phase, reason]
|
|
5691
|
+
);
|
|
5692
|
+
}
|
|
5693
|
+
function useCoreRootProps(options = {}) {
|
|
5694
|
+
const observation = useCoreObservation(options);
|
|
5695
|
+
return useMemo2(() => rootAttributes(observation), [observation]);
|
|
5696
|
+
}
|
|
5697
|
+
function MeetRoot({
|
|
5698
|
+
children,
|
|
5699
|
+
...options
|
|
5700
|
+
}) {
|
|
5701
|
+
const snapshot = useMeetSnapshot();
|
|
5702
|
+
const observation = useCoreObservation(options);
|
|
5703
|
+
const attrs = useMemo2(() => rootAttributes(observation), [observation]);
|
|
5704
|
+
const latest = useRef2({ observation, storePhase: snapshot?.phase ?? null });
|
|
5705
|
+
latest.current = { observation, storePhase: snapshot?.phase ?? null };
|
|
5706
|
+
useEffect2(() => {
|
|
5707
|
+
if (typeof window === "undefined") return void 0;
|
|
5708
|
+
const diagnostics = {
|
|
5709
|
+
contract: "HARNESS-CONTRACT",
|
|
5710
|
+
snapshot: () => latest.current,
|
|
5711
|
+
activeCatalogStates: [],
|
|
5712
|
+
activeCatalogStatesDerived: false
|
|
5713
|
+
};
|
|
5714
|
+
const target = window;
|
|
5715
|
+
target.__matrxMeet = diagnostics;
|
|
5716
|
+
return () => {
|
|
5717
|
+
if (target.__matrxMeet === diagnostics) delete target.__matrxMeet;
|
|
5718
|
+
};
|
|
5719
|
+
}, []);
|
|
5720
|
+
return /* @__PURE__ */ jsx2("div", { ...attrs, style: { display: "contents" }, children });
|
|
5721
|
+
}
|
|
5722
|
+
|
|
5548
5723
|
// src/react/hooks.ts
|
|
5549
|
-
import { useCallback as useCallback2, useEffect as
|
|
5724
|
+
import { useCallback as useCallback2, useEffect as useEffect3, useMemo as useMemo3, useRef as useRef3, useState as useState2, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
5550
5725
|
import { useRealtimeManager as useRealtimeManager2 } from "@ai-matrx/realtime/react";
|
|
5551
5726
|
|
|
5552
5727
|
// src/core/record.ts
|
|
@@ -6285,7 +6460,7 @@ function useRoom() {
|
|
|
6285
6460
|
function useStage(pageSize = DEFAULT_PAGE_SIZE) {
|
|
6286
6461
|
const snapshot = useMeetSnapshot();
|
|
6287
6462
|
const [page, setPage] = useState2(0);
|
|
6288
|
-
const stage =
|
|
6463
|
+
const stage = useMemo3(
|
|
6289
6464
|
() => computeStage({
|
|
6290
6465
|
participants: snapshot?.participants ?? [],
|
|
6291
6466
|
layout: snapshot?.layout ?? "grid",
|
|
@@ -6297,14 +6472,14 @@ function useStage(pageSize = DEFAULT_PAGE_SIZE) {
|
|
|
6297
6472
|
}),
|
|
6298
6473
|
[snapshot, pageSize, page]
|
|
6299
6474
|
);
|
|
6300
|
-
|
|
6475
|
+
useEffect3(() => {
|
|
6301
6476
|
if (page > stage.pageCount - 1) setPage(Math.max(0, stage.pageCount - 1));
|
|
6302
6477
|
}, [page, stage.pageCount]);
|
|
6303
6478
|
return stage;
|
|
6304
6479
|
}
|
|
6305
6480
|
function useTrack(identity, kind) {
|
|
6306
6481
|
const host = useMeetHost();
|
|
6307
|
-
const detachRef =
|
|
6482
|
+
const detachRef = useRef3(null);
|
|
6308
6483
|
return useCallback2(
|
|
6309
6484
|
(element) => {
|
|
6310
6485
|
detachRef.current?.();
|
|
@@ -6319,7 +6494,7 @@ function useCalls() {
|
|
|
6319
6494
|
const host = useMeetHost();
|
|
6320
6495
|
const center = host?.calls ?? null;
|
|
6321
6496
|
const [, force] = useState2(0);
|
|
6322
|
-
|
|
6497
|
+
useEffect3(() => {
|
|
6323
6498
|
if (center === null) return void 0;
|
|
6324
6499
|
const timer = setInterval(() => force((value) => value + 1), 1e3);
|
|
6325
6500
|
return () => clearInterval(timer);
|
|
@@ -6440,7 +6615,7 @@ function useMeetAi() {
|
|
|
6440
6615
|
const participants = snapshot?.participants ?? [];
|
|
6441
6616
|
const notes = snapshot?.notes ?? [];
|
|
6442
6617
|
const wrapUp = snapshot?.wrapUp ?? null;
|
|
6443
|
-
const status =
|
|
6618
|
+
const status = useMemo3(
|
|
6444
6619
|
() => noteTakerStatus({
|
|
6445
6620
|
meeting,
|
|
6446
6621
|
participants,
|
|
@@ -6449,7 +6624,7 @@ function useMeetAi() {
|
|
|
6449
6624
|
[meeting, participants, snapshot?.noteTakerRefusal]
|
|
6450
6625
|
);
|
|
6451
6626
|
const names = snapshot?.names ?? EMPTY_NAMES;
|
|
6452
|
-
const transcript =
|
|
6627
|
+
const transcript = useMemo3(
|
|
6453
6628
|
() => readableTranscript(snapshot?.transcript ?? []).map((line) => ({
|
|
6454
6629
|
id: line.id,
|
|
6455
6630
|
identity: line.identity,
|
|
@@ -6594,7 +6769,7 @@ function useReactions() {
|
|
|
6594
6769
|
const host = useMeetHost();
|
|
6595
6770
|
const snapshot = useMeetSnapshot();
|
|
6596
6771
|
const store = host?.store ?? null;
|
|
6597
|
-
|
|
6772
|
+
useEffect3(() => {
|
|
6598
6773
|
if (store === null) return void 0;
|
|
6599
6774
|
const timer = setInterval(() => store.expireReactions(Date.now()), REACTION_TTL_MS / 2);
|
|
6600
6775
|
return () => clearInterval(timer);
|
|
@@ -6603,7 +6778,7 @@ function useReactions() {
|
|
|
6603
6778
|
}
|
|
6604
6779
|
function useElapsed(startedAt) {
|
|
6605
6780
|
const [now, setNow] = useState2(() => Date.now());
|
|
6606
|
-
|
|
6781
|
+
useEffect3(() => {
|
|
6607
6782
|
if (startedAt === null) return void 0;
|
|
6608
6783
|
const timer = setInterval(() => setNow(Date.now()), 1e3);
|
|
6609
6784
|
return () => clearInterval(timer);
|
|
@@ -6683,7 +6858,7 @@ function useHostControls() {
|
|
|
6683
6858
|
}
|
|
6684
6859
|
function useHandQueue() {
|
|
6685
6860
|
const snapshot = useMeetSnapshot();
|
|
6686
|
-
return
|
|
6861
|
+
return useMemo3(
|
|
6687
6862
|
() => (snapshot?.participants ?? []).filter((participant) => participant.handRaised).sort((a, b) => (a.handRaisedAt ?? 0) - (b.handRaisedAt ?? 0)),
|
|
6688
6863
|
[snapshot?.participants]
|
|
6689
6864
|
);
|
|
@@ -6711,7 +6886,7 @@ function useModerationNotice() {
|
|
|
6711
6886
|
}
|
|
6712
6887
|
function useAudioLevel(stream) {
|
|
6713
6888
|
const [level, setLevel] = useState2(0);
|
|
6714
|
-
|
|
6889
|
+
useEffect3(() => {
|
|
6715
6890
|
if (stream === null || stream.getAudioTracks().length === 0) {
|
|
6716
6891
|
setLevel(0);
|
|
6717
6892
|
return void 0;
|
|
@@ -6750,9 +6925,9 @@ var MEET_SHORTCUTS = [
|
|
|
6750
6925
|
{ id: "help", keys: "Shift + ?", label: "Show keyboard shortcuts" }
|
|
6751
6926
|
];
|
|
6752
6927
|
function useMeetShortcuts(handlers) {
|
|
6753
|
-
const ref =
|
|
6928
|
+
const ref = useRef3(handlers);
|
|
6754
6929
|
ref.current = handlers;
|
|
6755
|
-
|
|
6930
|
+
useEffect3(() => {
|
|
6756
6931
|
const target = globalThis.window;
|
|
6757
6932
|
if (target === void 0) return void 0;
|
|
6758
6933
|
const onKey = (event) => {
|
|
@@ -6815,7 +6990,7 @@ function useMeetingRecord(meeting) {
|
|
|
6815
6990
|
() => cache.state(key),
|
|
6816
6991
|
() => cache.state(null)
|
|
6817
6992
|
);
|
|
6818
|
-
const readRef =
|
|
6993
|
+
const readRef = useRef3(() => Promise.reject(new Error("not ready")));
|
|
6819
6994
|
readRef.current = async () => {
|
|
6820
6995
|
if (repository === null || meeting === null || meetingId === null) throw new Error("No meeting to read.");
|
|
6821
6996
|
if (readerId === null && api !== null && tokens !== null && roomName !== null) {
|
|
@@ -6844,14 +7019,14 @@ function useMeetingRecord(meeting) {
|
|
|
6844
7019
|
}
|
|
6845
7020
|
return { kind: "parts", meeting, parts };
|
|
6846
7021
|
};
|
|
6847
|
-
|
|
7022
|
+
useEffect3(() => {
|
|
6848
7023
|
if (key === null) return;
|
|
6849
7024
|
void cache.ensure(key, () => readRef.current());
|
|
6850
7025
|
}, [cache, key]);
|
|
6851
|
-
|
|
7026
|
+
useEffect3(() => {
|
|
6852
7027
|
if (key !== null && meeting !== null) cache.setMeeting(key, meeting);
|
|
6853
7028
|
}, [cache, key, meeting]);
|
|
6854
|
-
|
|
7029
|
+
useEffect3(() => {
|
|
6855
7030
|
if (key === null || manager === null || repository === null || meetingId === null || readerId === null) {
|
|
6856
7031
|
return void 0;
|
|
6857
7032
|
}
|
|
@@ -6952,7 +7127,7 @@ function useMeetings(limit = 25, organizationFilter = null) {
|
|
|
6952
7127
|
const [loading, setLoading] = useState2(true);
|
|
6953
7128
|
const [failure, setFailure] = useState2(null);
|
|
6954
7129
|
const [nonce, setNonce] = useState2(0);
|
|
6955
|
-
|
|
7130
|
+
useEffect3(() => {
|
|
6956
7131
|
if (repository === null) return void 0;
|
|
6957
7132
|
let live = true;
|
|
6958
7133
|
setLoading(true);
|
|
@@ -6990,7 +7165,7 @@ function useGuestRecordAccess(meeting) {
|
|
|
6990
7165
|
const [effective, setEffective] = useState2(null);
|
|
6991
7166
|
const [saving, setSaving] = useState2(false);
|
|
6992
7167
|
const [error, setError] = useState2(null);
|
|
6993
|
-
|
|
7168
|
+
useEffect3(() => {
|
|
6994
7169
|
setChosen(null);
|
|
6995
7170
|
}, [stored, meeting?.id]);
|
|
6996
7171
|
return {
|
|
@@ -7027,7 +7202,7 @@ function useGuestRecordAccess(meeting) {
|
|
|
7027
7202
|
}
|
|
7028
7203
|
|
|
7029
7204
|
// src/react/components.tsx
|
|
7030
|
-
import { useEffect as
|
|
7205
|
+
import { useEffect as useEffect5, useLayoutEffect, useMemo as useMemo4, useRef as useRef5, useState as useState4 } from "react";
|
|
7031
7206
|
import {
|
|
7032
7207
|
Alert,
|
|
7033
7208
|
AlertDescription,
|
|
@@ -7480,13 +7655,13 @@ function countLabel(count2, singular, plural = `${singular}s`) {
|
|
|
7480
7655
|
}
|
|
7481
7656
|
|
|
7482
7657
|
// src/react/collab.tsx
|
|
7483
|
-
import { useEffect as
|
|
7658
|
+
import { useEffect as useEffect4, useRef as useRef4, useState as useState3 } from "react";
|
|
7484
7659
|
import { formatDurationMs as formatDurationMs3 } from "@ai-matrx/kit/format";
|
|
7485
7660
|
|
|
7486
7661
|
// src/react/icons.tsx
|
|
7487
|
-
import { jsx as
|
|
7662
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
7488
7663
|
function Icon({ children, ...props }) {
|
|
7489
|
-
return /* @__PURE__ */
|
|
7664
|
+
return /* @__PURE__ */ jsx3(
|
|
7490
7665
|
"svg",
|
|
7491
7666
|
{
|
|
7492
7667
|
width: "20",
|
|
@@ -7506,223 +7681,223 @@ function Icon({ children, ...props }) {
|
|
|
7506
7681
|
}
|
|
7507
7682
|
function MicIcon(props) {
|
|
7508
7683
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7509
|
-
/* @__PURE__ */
|
|
7510
|
-
/* @__PURE__ */
|
|
7511
|
-
/* @__PURE__ */
|
|
7684
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z" }),
|
|
7685
|
+
/* @__PURE__ */ jsx3("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
|
|
7686
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 19v3" })
|
|
7512
7687
|
] });
|
|
7513
7688
|
}
|
|
7514
7689
|
function MicOffIcon(props) {
|
|
7515
7690
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7516
|
-
/* @__PURE__ */
|
|
7517
|
-
/* @__PURE__ */
|
|
7518
|
-
/* @__PURE__ */
|
|
7519
|
-
/* @__PURE__ */
|
|
7520
|
-
/* @__PURE__ */
|
|
7691
|
+
/* @__PURE__ */ jsx3("path", { d: "M2 2l20 20" }),
|
|
7692
|
+
/* @__PURE__ */ jsx3("path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12" }),
|
|
7693
|
+
/* @__PURE__ */ jsx3("path", { d: "M15 9.34V5a3 3 0 0 0-5.94-.6" }),
|
|
7694
|
+
/* @__PURE__ */ jsx3("path", { d: "M19 10v2a7 7 0 0 1-.11 1.23M5 10v2a7 7 0 0 0 11 5.66" }),
|
|
7695
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 19v3" })
|
|
7521
7696
|
] });
|
|
7522
7697
|
}
|
|
7523
7698
|
function CameraIcon(props) {
|
|
7524
7699
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7525
|
-
/* @__PURE__ */
|
|
7526
|
-
/* @__PURE__ */
|
|
7700
|
+
/* @__PURE__ */ jsx3("path", { d: "m23 7-7 5 7 5V7Z" }),
|
|
7701
|
+
/* @__PURE__ */ jsx3("rect", { x: "1", y: "5", width: "15", height: "14", rx: "2" })
|
|
7527
7702
|
] });
|
|
7528
7703
|
}
|
|
7529
7704
|
function CameraOffIcon(props) {
|
|
7530
7705
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7531
|
-
/* @__PURE__ */
|
|
7532
|
-
/* @__PURE__ */
|
|
7533
|
-
/* @__PURE__ */
|
|
7706
|
+
/* @__PURE__ */ jsx3("path", { d: "M2 2l20 20" }),
|
|
7707
|
+
/* @__PURE__ */ jsx3("path", { d: "M10.66 5H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10" }),
|
|
7708
|
+
/* @__PURE__ */ jsx3("path", { d: "M16 16a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2" })
|
|
7534
7709
|
] });
|
|
7535
7710
|
}
|
|
7536
7711
|
function ScreenShareIcon(props) {
|
|
7537
7712
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7538
|
-
/* @__PURE__ */
|
|
7539
|
-
/* @__PURE__ */
|
|
7540
|
-
/* @__PURE__ */
|
|
7713
|
+
/* @__PURE__ */ jsx3("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2" }),
|
|
7714
|
+
/* @__PURE__ */ jsx3("path", { d: "M8 21h8M12 17v4" }),
|
|
7715
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 13V8m0 0-2.5 2.5M12 8l2.5 2.5" })
|
|
7541
7716
|
] });
|
|
7542
7717
|
}
|
|
7543
7718
|
function PhoneIcon(props) {
|
|
7544
|
-
return /* @__PURE__ */
|
|
7719
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("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" }) });
|
|
7545
7720
|
}
|
|
7546
7721
|
function PhoneOffIcon(props) {
|
|
7547
|
-
return /* @__PURE__ */
|
|
7722
|
+
return /* @__PURE__ */ jsx3(Icon, { fill: "currentColor", stroke: "none", ...props, children: /* @__PURE__ */ jsx3("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" }) });
|
|
7548
7723
|
}
|
|
7549
7724
|
function HandIcon(props) {
|
|
7550
7725
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7551
|
-
/* @__PURE__ */
|
|
7552
|
-
/* @__PURE__ */
|
|
7553
|
-
/* @__PURE__ */
|
|
7554
|
-
/* @__PURE__ */
|
|
7726
|
+
/* @__PURE__ */ jsx3("path", { d: "M18 11V6a2 2 0 0 0-4 0v5" }),
|
|
7727
|
+
/* @__PURE__ */ jsx3("path", { d: "M14 10V4a2 2 0 0 0-4 0v7" }),
|
|
7728
|
+
/* @__PURE__ */ jsx3("path", { d: "M10 10.5V6a2 2 0 0 0-4 0v8" }),
|
|
7729
|
+
/* @__PURE__ */ jsx3("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" })
|
|
7555
7730
|
] });
|
|
7556
7731
|
}
|
|
7557
7732
|
function ChatIcon(props) {
|
|
7558
|
-
return /* @__PURE__ */
|
|
7733
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z" }) });
|
|
7559
7734
|
}
|
|
7560
7735
|
function PeopleIcon(props) {
|
|
7561
7736
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7562
|
-
/* @__PURE__ */
|
|
7563
|
-
/* @__PURE__ */
|
|
7564
|
-
/* @__PURE__ */
|
|
7737
|
+
/* @__PURE__ */ jsx3("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
7738
|
+
/* @__PURE__ */ jsx3("circle", { cx: "9", cy: "7", r: "4" }),
|
|
7739
|
+
/* @__PURE__ */ jsx3("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" })
|
|
7565
7740
|
] });
|
|
7566
7741
|
}
|
|
7567
7742
|
function RecordIcon(props) {
|
|
7568
|
-
return /* @__PURE__ */
|
|
7743
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "8", fill: "currentColor", stroke: "none" }) });
|
|
7569
7744
|
}
|
|
7570
7745
|
function SparklesIcon(props) {
|
|
7571
7746
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7572
|
-
/* @__PURE__ */
|
|
7573
|
-
/* @__PURE__ */
|
|
7747
|
+
/* @__PURE__ */ jsx3("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" }),
|
|
7748
|
+
/* @__PURE__ */ jsx3("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" })
|
|
7574
7749
|
] });
|
|
7575
7750
|
}
|
|
7576
7751
|
function LockIcon(props) {
|
|
7577
7752
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7578
|
-
/* @__PURE__ */
|
|
7579
|
-
/* @__PURE__ */
|
|
7753
|
+
/* @__PURE__ */ jsx3("rect", { x: "4", y: "10", width: "16", height: "11", rx: "2" }),
|
|
7754
|
+
/* @__PURE__ */ jsx3("path", { d: "M8 10V7a4 4 0 0 1 8 0v3" })
|
|
7580
7755
|
] });
|
|
7581
7756
|
}
|
|
7582
7757
|
function LayoutIcon(props) {
|
|
7583
7758
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7584
|
-
/* @__PURE__ */
|
|
7585
|
-
/* @__PURE__ */
|
|
7759
|
+
/* @__PURE__ */ jsx3("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
|
|
7760
|
+
/* @__PURE__ */ jsx3("path", { d: "M3 9h18M9 21V9" })
|
|
7586
7761
|
] });
|
|
7587
7762
|
}
|
|
7588
7763
|
function SettingsIcon(props) {
|
|
7589
7764
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7590
|
-
/* @__PURE__ */
|
|
7591
|
-
/* @__PURE__ */
|
|
7765
|
+
/* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "3" }),
|
|
7766
|
+
/* @__PURE__ */ jsx3("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" })
|
|
7592
7767
|
] });
|
|
7593
7768
|
}
|
|
7594
7769
|
function CheckIcon(props) {
|
|
7595
|
-
return /* @__PURE__ */
|
|
7770
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("path", { d: "M20 6 9 17l-5-5" }) });
|
|
7596
7771
|
}
|
|
7597
7772
|
function CloseIcon(props) {
|
|
7598
|
-
return /* @__PURE__ */
|
|
7773
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("path", { d: "M18 6 6 18M6 6l12 12" }) });
|
|
7599
7774
|
}
|
|
7600
7775
|
function PinIcon(props) {
|
|
7601
7776
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7602
|
-
/* @__PURE__ */
|
|
7603
|
-
/* @__PURE__ */
|
|
7777
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 17v5" }),
|
|
7778
|
+
/* @__PURE__ */ jsx3("path", { d: "M9 2h6l-1 6 3.5 3.5V14H6.5v-2.5L10 8 9 2Z" })
|
|
7604
7779
|
] });
|
|
7605
7780
|
}
|
|
7606
7781
|
function WifiLowIcon(props) {
|
|
7607
7782
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7608
|
-
/* @__PURE__ */
|
|
7609
|
-
/* @__PURE__ */
|
|
7783
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 20h.01" }),
|
|
7784
|
+
/* @__PURE__ */ jsx3("path", { d: "M8.5 16.5a5 5 0 0 1 7 0" })
|
|
7610
7785
|
] });
|
|
7611
7786
|
}
|
|
7612
7787
|
function SmileIcon(props) {
|
|
7613
7788
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7614
|
-
/* @__PURE__ */
|
|
7615
|
-
/* @__PURE__ */
|
|
7616
|
-
/* @__PURE__ */
|
|
7617
|
-
/* @__PURE__ */
|
|
7789
|
+
/* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "10" }),
|
|
7790
|
+
/* @__PURE__ */ jsx3("path", { d: "M8 14s1.5 2 4 2 4-2 4-2" }),
|
|
7791
|
+
/* @__PURE__ */ jsx3("line", { x1: "9", x2: "9.01", y1: "9", y2: "9" }),
|
|
7792
|
+
/* @__PURE__ */ jsx3("line", { x1: "15", x2: "15.01", y1: "9", y2: "9" })
|
|
7618
7793
|
] });
|
|
7619
7794
|
}
|
|
7620
7795
|
function MoreIcon(props) {
|
|
7621
7796
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7622
|
-
/* @__PURE__ */
|
|
7623
|
-
/* @__PURE__ */
|
|
7624
|
-
/* @__PURE__ */
|
|
7797
|
+
/* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "1" }),
|
|
7798
|
+
/* @__PURE__ */ jsx3("circle", { cx: "19", cy: "12", r: "1" }),
|
|
7799
|
+
/* @__PURE__ */ jsx3("circle", { cx: "5", cy: "12", r: "1" })
|
|
7625
7800
|
] });
|
|
7626
7801
|
}
|
|
7627
7802
|
function SearchIcon(props) {
|
|
7628
7803
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7629
|
-
/* @__PURE__ */
|
|
7630
|
-
/* @__PURE__ */
|
|
7804
|
+
/* @__PURE__ */ jsx3("circle", { cx: "11", cy: "11", r: "8" }),
|
|
7805
|
+
/* @__PURE__ */ jsx3("path", { d: "m21 21-4.3-4.3" })
|
|
7631
7806
|
] });
|
|
7632
7807
|
}
|
|
7633
7808
|
function KeyboardIcon(props) {
|
|
7634
7809
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7635
|
-
/* @__PURE__ */
|
|
7636
|
-
/* @__PURE__ */
|
|
7810
|
+
/* @__PURE__ */ jsx3("path", { d: "M10 8h.01M12 12h.01M14 8h.01M16 12h.01M18 8h.01M6 8h.01M7 16h10M8 12h.01" }),
|
|
7811
|
+
/* @__PURE__ */ jsx3("rect", { width: "20", height: "16", x: "2", y: "4", rx: "2" })
|
|
7637
7812
|
] });
|
|
7638
7813
|
}
|
|
7639
7814
|
function SpotlightIcon(props) {
|
|
7640
|
-
return /* @__PURE__ */
|
|
7815
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("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" }) });
|
|
7641
7816
|
}
|
|
7642
7817
|
function SignalIcon({ bars, ...props }) {
|
|
7643
7818
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7644
|
-
/* @__PURE__ */
|
|
7645
|
-
/* @__PURE__ */
|
|
7646
|
-
/* @__PURE__ */
|
|
7647
|
-
/* @__PURE__ */
|
|
7819
|
+
/* @__PURE__ */ jsx3("path", { d: "M4 20v-2", opacity: bars >= 1 ? 1 : 0.3 }),
|
|
7820
|
+
/* @__PURE__ */ jsx3("path", { d: "M10 20v-6", opacity: bars >= 2 ? 1 : 0.3 }),
|
|
7821
|
+
/* @__PURE__ */ jsx3("path", { d: "M16 20V9", opacity: bars >= 3 ? 1 : 0.3 }),
|
|
7822
|
+
/* @__PURE__ */ jsx3("path", { d: "M22 20V4", opacity: bars >= 3 ? 1 : 0.3 })
|
|
7648
7823
|
] });
|
|
7649
7824
|
}
|
|
7650
7825
|
function SpeakerIcon(props) {
|
|
7651
7826
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7652
|
-
/* @__PURE__ */
|
|
7653
|
-
/* @__PURE__ */
|
|
7654
|
-
/* @__PURE__ */
|
|
7827
|
+
/* @__PURE__ */ jsx3("path", { d: "M11 5 6 9H2v6h4l5 4V5Z" }),
|
|
7828
|
+
/* @__PURE__ */ jsx3("path", { d: "M15.54 8.46a5 5 0 0 1 0 7.07" }),
|
|
7829
|
+
/* @__PURE__ */ jsx3("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14" })
|
|
7655
7830
|
] });
|
|
7656
7831
|
}
|
|
7657
7832
|
function FlagIcon(props) {
|
|
7658
7833
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7659
|
-
/* @__PURE__ */
|
|
7660
|
-
/* @__PURE__ */
|
|
7834
|
+
/* @__PURE__ */ jsx3("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" }),
|
|
7835
|
+
/* @__PURE__ */ jsx3("line", { x1: "4", x2: "4", y1: "22", y2: "15" })
|
|
7661
7836
|
] });
|
|
7662
7837
|
}
|
|
7663
7838
|
function PencilIcon(props) {
|
|
7664
|
-
return /* @__PURE__ */
|
|
7839
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" }) });
|
|
7665
7840
|
}
|
|
7666
7841
|
function ActivitiesIcon(props) {
|
|
7667
7842
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7668
|
-
/* @__PURE__ */
|
|
7669
|
-
/* @__PURE__ */
|
|
7670
|
-
/* @__PURE__ */
|
|
7843
|
+
/* @__PURE__ */ jsx3("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" }),
|
|
7844
|
+
/* @__PURE__ */ jsx3("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }),
|
|
7845
|
+
/* @__PURE__ */ jsx3("circle", { cx: "17.5", cy: "17.5", r: "3.5" })
|
|
7671
7846
|
] });
|
|
7672
7847
|
}
|
|
7673
7848
|
function PollIcon(props) {
|
|
7674
7849
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7675
|
-
/* @__PURE__ */
|
|
7676
|
-
/* @__PURE__ */
|
|
7677
|
-
/* @__PURE__ */
|
|
7850
|
+
/* @__PURE__ */ jsx3("line", { x1: "18", x2: "18", y1: "20", y2: "10" }),
|
|
7851
|
+
/* @__PURE__ */ jsx3("line", { x1: "12", x2: "12", y1: "20", y2: "4" }),
|
|
7852
|
+
/* @__PURE__ */ jsx3("line", { x1: "6", x2: "6", y1: "20", y2: "14" })
|
|
7678
7853
|
] });
|
|
7679
7854
|
}
|
|
7680
7855
|
function QuestionIcon(props) {
|
|
7681
7856
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7682
|
-
/* @__PURE__ */
|
|
7683
|
-
/* @__PURE__ */
|
|
7684
|
-
/* @__PURE__ */
|
|
7857
|
+
/* @__PURE__ */ jsx3("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }),
|
|
7858
|
+
/* @__PURE__ */ jsx3("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }),
|
|
7859
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 17h.01" })
|
|
7685
7860
|
] });
|
|
7686
7861
|
}
|
|
7687
7862
|
function WhiteboardIcon(props) {
|
|
7688
7863
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7689
|
-
/* @__PURE__ */
|
|
7690
|
-
/* @__PURE__ */
|
|
7691
|
-
/* @__PURE__ */
|
|
7864
|
+
/* @__PURE__ */ jsx3("path", { d: "M2 3h20" }),
|
|
7865
|
+
/* @__PURE__ */ jsx3("path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3" }),
|
|
7866
|
+
/* @__PURE__ */ jsx3("path", { d: "m7 21 5-5 5 5" })
|
|
7692
7867
|
] });
|
|
7693
7868
|
}
|
|
7694
7869
|
function BreakoutIcon(props) {
|
|
7695
7870
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7696
|
-
/* @__PURE__ */
|
|
7697
|
-
/* @__PURE__ */
|
|
7698
|
-
/* @__PURE__ */
|
|
7871
|
+
/* @__PURE__ */ jsx3("rect", { width: "7", height: "18", x: "3", y: "3", rx: "1" }),
|
|
7872
|
+
/* @__PURE__ */ jsx3("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }),
|
|
7873
|
+
/* @__PURE__ */ jsx3("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" })
|
|
7699
7874
|
] });
|
|
7700
7875
|
}
|
|
7701
7876
|
function UpvoteIcon(props) {
|
|
7702
|
-
return /* @__PURE__ */
|
|
7877
|
+
return /* @__PURE__ */ jsx3(Icon, { ...props, children: /* @__PURE__ */ jsx3("path", { d: "M9 18v-6H5l7-7 7 7h-4v6H9z" }) });
|
|
7703
7878
|
}
|
|
7704
7879
|
function EraserIcon(props) {
|
|
7705
7880
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7706
|
-
/* @__PURE__ */
|
|
7707
|
-
/* @__PURE__ */
|
|
7708
|
-
/* @__PURE__ */
|
|
7881
|
+
/* @__PURE__ */ jsx3("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" }),
|
|
7882
|
+
/* @__PURE__ */ jsx3("path", { d: "M22 21H7" }),
|
|
7883
|
+
/* @__PURE__ */ jsx3("path", { d: "m5 11 9 9" })
|
|
7709
7884
|
] });
|
|
7710
7885
|
}
|
|
7711
7886
|
function HighlighterIcon(props) {
|
|
7712
7887
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7713
|
-
/* @__PURE__ */
|
|
7714
|
-
/* @__PURE__ */
|
|
7888
|
+
/* @__PURE__ */ jsx3("path", { d: "m9 11-6 6v3h9l3-3" }),
|
|
7889
|
+
/* @__PURE__ */ jsx3("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" })
|
|
7715
7890
|
] });
|
|
7716
7891
|
}
|
|
7717
7892
|
function UndoIcon(props) {
|
|
7718
7893
|
return /* @__PURE__ */ jsxs(Icon, { ...props, children: [
|
|
7719
|
-
/* @__PURE__ */
|
|
7720
|
-
/* @__PURE__ */
|
|
7894
|
+
/* @__PURE__ */ jsx3("path", { d: "M9 14 4 9l5-5" }),
|
|
7895
|
+
/* @__PURE__ */ jsx3("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" })
|
|
7721
7896
|
] });
|
|
7722
7897
|
}
|
|
7723
7898
|
|
|
7724
7899
|
// src/react/collab.tsx
|
|
7725
|
-
import { jsx as
|
|
7900
|
+
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
7726
7901
|
function useCollab() {
|
|
7727
7902
|
const host = useMeetHost();
|
|
7728
7903
|
const snapshot = useMeetSnapshot();
|
|
@@ -7754,7 +7929,7 @@ function useCollab() {
|
|
|
7754
7929
|
}
|
|
7755
7930
|
function useNotice() {
|
|
7756
7931
|
const [notice, setNotice] = useState3(null);
|
|
7757
|
-
|
|
7932
|
+
useEffect4(() => {
|
|
7758
7933
|
if (notice === null) return void 0;
|
|
7759
7934
|
const timer = setTimeout(() => setNotice(null), notice.failed ? 7e3 : 3e3);
|
|
7760
7935
|
return () => clearTimeout(timer);
|
|
@@ -7763,7 +7938,7 @@ function useNotice() {
|
|
|
7763
7938
|
}
|
|
7764
7939
|
function Notice({ notice }) {
|
|
7765
7940
|
if (notice === null) return null;
|
|
7766
|
-
return /* @__PURE__ */
|
|
7941
|
+
return /* @__PURE__ */ jsx4("p", { className: notice.failed ? "mx-meet__panel-note mx-meet__collab-error" : "mx-meet__panel-note", role: "status", children: notice.text });
|
|
7767
7942
|
}
|
|
7768
7943
|
var ACTIVITY_LABELS = {
|
|
7769
7944
|
polls: "Polls",
|
|
@@ -7773,10 +7948,10 @@ var ACTIVITY_LABELS = {
|
|
|
7773
7948
|
};
|
|
7774
7949
|
function ActivityIcon({ panel }) {
|
|
7775
7950
|
const props = { width: 16, height: 16 };
|
|
7776
|
-
if (panel === "polls") return /* @__PURE__ */
|
|
7777
|
-
if (panel === "qa") return /* @__PURE__ */
|
|
7778
|
-
if (panel === "whiteboard") return /* @__PURE__ */
|
|
7779
|
-
return /* @__PURE__ */
|
|
7951
|
+
if (panel === "polls") return /* @__PURE__ */ jsx4(PollIcon, { ...props });
|
|
7952
|
+
if (panel === "qa") return /* @__PURE__ */ jsx4(QuestionIcon, { ...props });
|
|
7953
|
+
if (panel === "whiteboard") return /* @__PURE__ */ jsx4(WhiteboardIcon, { ...props });
|
|
7954
|
+
return /* @__PURE__ */ jsx4(BreakoutIcon, { ...props });
|
|
7780
7955
|
}
|
|
7781
7956
|
function useAvailableActivities() {
|
|
7782
7957
|
const { collab, isHost } = useCollab();
|
|
@@ -7806,10 +7981,10 @@ function ActivitiesControl({
|
|
|
7806
7981
|
if (available.length === 0) return null;
|
|
7807
7982
|
return /* @__PURE__ */ jsxs2("span", { className: "mx-meet__anchor", children: [
|
|
7808
7983
|
/* @__PURE__ */ jsxs2(ControlButton, { label: "Activities", active: open || active !== null, onClick: () => setOpen(!open), children: [
|
|
7809
|
-
/* @__PURE__ */
|
|
7810
|
-
attention ? /* @__PURE__ */
|
|
7984
|
+
/* @__PURE__ */ jsx4(ActivitiesIcon, {}),
|
|
7985
|
+
attention ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
7811
7986
|
] }),
|
|
7812
|
-
open ? /* @__PURE__ */
|
|
7987
|
+
open ? /* @__PURE__ */ jsx4(Popover, { label: "Activities", onClose: () => setOpen(false), children: /* @__PURE__ */ jsx4("div", { className: "mx-meet__menu", role: "menu", children: available.map((panel) => /* @__PURE__ */ jsxs2(
|
|
7813
7988
|
MenuItem,
|
|
7814
7989
|
{
|
|
7815
7990
|
onSelect: () => {
|
|
@@ -7817,7 +7992,7 @@ function ActivitiesControl({
|
|
|
7817
7992
|
onOpen(panel);
|
|
7818
7993
|
},
|
|
7819
7994
|
children: [
|
|
7820
|
-
/* @__PURE__ */
|
|
7995
|
+
/* @__PURE__ */ jsx4(ActivityIcon, { panel }),
|
|
7821
7996
|
" ",
|
|
7822
7997
|
ACTIVITY_LABELS[panel]
|
|
7823
7998
|
]
|
|
@@ -7865,8 +8040,8 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
7865
8040
|
},
|
|
7866
8041
|
children: [
|
|
7867
8042
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
7868
|
-
/* @__PURE__ */
|
|
7869
|
-
/* @__PURE__ */
|
|
8043
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__field-label", children: "Question" }),
|
|
8044
|
+
/* @__PURE__ */ jsx4(
|
|
7870
8045
|
"input",
|
|
7871
8046
|
{
|
|
7872
8047
|
className: "mx-meet__input",
|
|
@@ -7879,7 +8054,7 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
7879
8054
|
)
|
|
7880
8055
|
] }),
|
|
7881
8056
|
options.map((option, index) => /* @__PURE__ */ jsxs2("div", { className: "mx-meet__composer-row", children: [
|
|
7882
|
-
/* @__PURE__ */
|
|
8057
|
+
/* @__PURE__ */ jsx4(
|
|
7883
8058
|
"input",
|
|
7884
8059
|
{
|
|
7885
8060
|
className: "mx-meet__input",
|
|
@@ -7890,22 +8065,22 @@ function PollComposer({ maxOptions, onDone }) {
|
|
|
7890
8065
|
onChange: (event) => setOptions(options.map((o, i) => i === index ? event.target.value : o))
|
|
7891
8066
|
}
|
|
7892
8067
|
),
|
|
7893
|
-
options.length > 2 ? /* @__PURE__ */
|
|
8068
|
+
options.length > 2 ? /* @__PURE__ */ jsx4(ControlButton, { label: `Remove answer ${index + 1}`, onClick: () => setOptions(options.filter((_, i) => i !== index)), children: /* @__PURE__ */ jsx4(CloseIcon, { width: 14, height: 14 }) }) : null
|
|
7894
8069
|
] }, index)),
|
|
7895
|
-
options.length < maxOptions ? /* @__PURE__ */
|
|
8070
|
+
options.length < maxOptions ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => setOptions([...options, ""]), children: "Add an answer" }) : null,
|
|
7896
8071
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
7897
|
-
/* @__PURE__ */
|
|
8072
|
+
/* @__PURE__ */ jsx4("input", { type: "checkbox", checked: multiple, onChange: (event) => setMultiple(event.target.checked) }),
|
|
7898
8073
|
"People can pick more than one"
|
|
7899
8074
|
] }),
|
|
7900
8075
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
7901
|
-
/* @__PURE__ */
|
|
8076
|
+
/* @__PURE__ */ jsx4("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
|
|
7902
8077
|
"Anonymous \u2014 nobody sees who picked what"
|
|
7903
8078
|
] }),
|
|
7904
|
-
/* @__PURE__ */
|
|
8079
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
7905
8080
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
7906
|
-
/* @__PURE__ */
|
|
7907
|
-
/* @__PURE__ */
|
|
7908
|
-
/* @__PURE__ */
|
|
8081
|
+
/* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__primary mx-meet__primary--small", disabled: !ready || busy, children: "Launch" }),
|
|
8082
|
+
/* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", disabled: !ready || busy, onClick: () => void save(false), children: "Save draft" }),
|
|
8083
|
+
/* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: onDone, children: "Cancel" })
|
|
7909
8084
|
] })
|
|
7910
8085
|
]
|
|
7911
8086
|
}
|
|
@@ -7915,7 +8090,7 @@ function PollCard({ poll }) {
|
|
|
7915
8090
|
const { act, isHost } = useCollab();
|
|
7916
8091
|
const [picked, setPicked] = useState3(poll.myVote.slice());
|
|
7917
8092
|
const [notice, show] = useNotice();
|
|
7918
|
-
|
|
8093
|
+
useEffect4(() => setPicked(poll.myVote.slice()), [poll.myVote]);
|
|
7919
8094
|
const counts = poll.options.some((o) => o.votes !== void 0);
|
|
7920
8095
|
const total = poll.options.reduce((sum, o) => sum + (o.votes ?? 0), 0);
|
|
7921
8096
|
const canVote = poll.state === "live";
|
|
@@ -7927,8 +8102,8 @@ function PollCard({ poll }) {
|
|
|
7927
8102
|
};
|
|
7928
8103
|
return /* @__PURE__ */ jsxs2("article", { className: "mx-meet__collab-card", "aria-label": poll.question, children: [
|
|
7929
8104
|
/* @__PURE__ */ jsxs2("header", { className: "mx-meet__collab-head", children: [
|
|
7930
|
-
/* @__PURE__ */
|
|
7931
|
-
/* @__PURE__ */
|
|
8105
|
+
/* @__PURE__ */ jsx4("strong", { className: "mx-meet__collab-title", children: poll.question }),
|
|
8106
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__collab-state", children: stateWord })
|
|
7932
8107
|
] }),
|
|
7933
8108
|
/* @__PURE__ */ jsxs2("p", { className: "mx-meet__panel-note", children: [
|
|
7934
8109
|
poll.multiple ? "Pick any." : "Pick one.",
|
|
@@ -7936,7 +8111,7 @@ function PollCard({ poll }) {
|
|
|
7936
8111
|
counts && poll.voterCount !== null ? ` ${poll.voterCount} voted.` : "",
|
|
7937
8112
|
isHost && poll.state !== "draft" && !poll.resultsShared ? " Results are visible only to hosts." : ""
|
|
7938
8113
|
] }),
|
|
7939
|
-
/* @__PURE__ */
|
|
8114
|
+
/* @__PURE__ */ jsx4("ul", { className: "mx-meet__poll-options", children: poll.options.map((option) => {
|
|
7940
8115
|
const share = counts && total > 0 ? Math.round((option.votes ?? 0) / total * 100) : 0;
|
|
7941
8116
|
const chosen = picked.includes(option.id);
|
|
7942
8117
|
return /* @__PURE__ */ jsxs2("li", { children: [
|
|
@@ -7949,8 +8124,8 @@ function PollCard({ poll }) {
|
|
|
7949
8124
|
disabled: !canVote,
|
|
7950
8125
|
onClick: () => toggle(option.id),
|
|
7951
8126
|
children: [
|
|
7952
|
-
counts ? /* @__PURE__ */
|
|
7953
|
-
/* @__PURE__ */
|
|
8127
|
+
counts ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__poll-bar", style: { width: `${share}%` }, "aria-hidden": "true" }) : null,
|
|
8128
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__poll-text", children: option.text }),
|
|
7954
8129
|
counts ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__poll-count", children: [
|
|
7955
8130
|
option.votes ?? 0,
|
|
7956
8131
|
" \xB7 ",
|
|
@@ -7960,12 +8135,12 @@ function PollCard({ poll }) {
|
|
|
7960
8135
|
]
|
|
7961
8136
|
}
|
|
7962
8137
|
),
|
|
7963
|
-
option.voters !== void 0 && option.voters.length > 0 ? /* @__PURE__ */
|
|
8138
|
+
option.voters !== void 0 && option.voters.length > 0 ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__poll-voters", children: option.voters.join(", ") }) : null
|
|
7964
8139
|
] }, option.id);
|
|
7965
8140
|
}) }),
|
|
7966
|
-
/* @__PURE__ */
|
|
8141
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
7967
8142
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
7968
|
-
canVote ? /* @__PURE__ */
|
|
8143
|
+
canVote ? /* @__PURE__ */ jsx4(
|
|
7969
8144
|
"button",
|
|
7970
8145
|
{
|
|
7971
8146
|
type: "button",
|
|
@@ -7975,10 +8150,10 @@ function PollCard({ poll }) {
|
|
|
7975
8150
|
children: voted ? "Change vote" : "Vote"
|
|
7976
8151
|
}
|
|
7977
8152
|
) : null,
|
|
7978
|
-
isHost && poll.state === "draft" ? /* @__PURE__ */
|
|
7979
|
-
isHost && poll.state === "live" ? /* @__PURE__ */
|
|
7980
|
-
isHost && poll.state !== "draft" ? /* @__PURE__ */
|
|
7981
|
-
isHost && poll.state === "live" ? null : isHost ? /* @__PURE__ */
|
|
8153
|
+
isHost && poll.state === "draft" ? /* @__PURE__ */ jsx4("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,
|
|
8154
|
+
isHost && poll.state === "live" ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "poll_close", itemId: poll.id }).then(show), children: "End poll" }) : null,
|
|
8155
|
+
isHost && poll.state !== "draft" ? /* @__PURE__ */ jsx4("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,
|
|
8156
|
+
isHost && poll.state === "live" ? null : isHost ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "poll_delete", itemId: poll.id }).then(show), children: "Delete" }) : null
|
|
7982
8157
|
] })
|
|
7983
8158
|
] });
|
|
7984
8159
|
}
|
|
@@ -7989,11 +8164,11 @@ function PollsPanel({ onClose }) {
|
|
|
7989
8164
|
const maxOptions = collab?.settings?.pollMaxOptions ?? 10;
|
|
7990
8165
|
const ordered = [...polls].reverse();
|
|
7991
8166
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Polls", onClose, children: [
|
|
7992
|
-
collab?.error != null ? /* @__PURE__ */
|
|
7993
|
-
isHost && !composing ? /* @__PURE__ */
|
|
7994
|
-
isHost && composing ? /* @__PURE__ */
|
|
7995
|
-
ordered.length === 0 && !composing ? /* @__PURE__ */
|
|
7996
|
-
ordered.map((poll) => /* @__PURE__ */
|
|
8167
|
+
collab?.error != null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
8168
|
+
isHost && !composing ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__primary mx-meet__primary--small", onClick: () => setComposing(true), children: "New poll" }) : null,
|
|
8169
|
+
isHost && composing ? /* @__PURE__ */ jsx4(PollComposer, { maxOptions, onDone: () => setComposing(false) }) : null,
|
|
8170
|
+
ordered.length === 0 && !composing ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: isHost ? "No polls yet. Polls and their results are kept with the meeting." : "No polls yet." }) : null,
|
|
8171
|
+
ordered.map((poll) => /* @__PURE__ */ jsx4(PollCard, { poll }, poll.id))
|
|
7997
8172
|
] });
|
|
7998
8173
|
}
|
|
7999
8174
|
function QuestionCard({ question }) {
|
|
@@ -8013,18 +8188,18 @@ function QuestionCard({ question }) {
|
|
|
8013
8188
|
disabled: question.state === "dismissed",
|
|
8014
8189
|
onClick: () => void act({ action: "question_upvote", itemId: question.id }).then((r) => r.ok ? void 0 : show(r)),
|
|
8015
8190
|
children: [
|
|
8016
|
-
/* @__PURE__ */
|
|
8017
|
-
/* @__PURE__ */
|
|
8191
|
+
/* @__PURE__ */ jsx4(UpvoteIcon, { width: 16, height: 16 }),
|
|
8192
|
+
/* @__PURE__ */ jsx4("span", { children: question.upvotes })
|
|
8018
8193
|
]
|
|
8019
8194
|
}
|
|
8020
8195
|
),
|
|
8021
8196
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__question-body", children: [
|
|
8022
8197
|
/* @__PURE__ */ jsxs2("span", { className: "mx-meet__chat-meta", children: [
|
|
8023
|
-
/* @__PURE__ */
|
|
8024
|
-
question.mine && question.anonymous ? /* @__PURE__ */
|
|
8025
|
-
question.state !== "open" ? /* @__PURE__ */
|
|
8198
|
+
/* @__PURE__ */ jsx4("strong", { children: question.mine ? "You" : question.askerName }),
|
|
8199
|
+
question.mine && question.anonymous ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__chat-private", children: "anonymous" }) : null,
|
|
8200
|
+
question.state !== "open" ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__collab-state", children: question.state === "answered" ? "Answered" : "Dismissed" }) : null
|
|
8026
8201
|
] }),
|
|
8027
|
-
/* @__PURE__ */
|
|
8202
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__chat-text", children: question.text }),
|
|
8028
8203
|
question.answer !== null ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__question-answer", children: [
|
|
8029
8204
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
8030
8205
|
question.answeredByName ?? "Host",
|
|
@@ -8050,7 +8225,7 @@ function QuestionCard({ question }) {
|
|
|
8050
8225
|
});
|
|
8051
8226
|
},
|
|
8052
8227
|
children: [
|
|
8053
|
-
/* @__PURE__ */
|
|
8228
|
+
/* @__PURE__ */ jsx4(
|
|
8054
8229
|
"input",
|
|
8055
8230
|
{
|
|
8056
8231
|
className: "mx-meet__input",
|
|
@@ -8062,16 +8237,16 @@ function QuestionCard({ question }) {
|
|
|
8062
8237
|
autoFocus: true
|
|
8063
8238
|
}
|
|
8064
8239
|
),
|
|
8065
|
-
/* @__PURE__ */
|
|
8240
|
+
/* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__send", children: "Done" })
|
|
8066
8241
|
]
|
|
8067
8242
|
}
|
|
8068
8243
|
) : null,
|
|
8069
|
-
/* @__PURE__ */
|
|
8244
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
8070
8245
|
isHost || question.mine ? /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
|
|
8071
|
-
isHost && question.state === "open" && !answering ? /* @__PURE__ */
|
|
8072
|
-
isHost && question.state === "open" ? /* @__PURE__ */
|
|
8073
|
-
isHost && question.state !== "open" ? /* @__PURE__ */
|
|
8074
|
-
question.mine || isHost ? /* @__PURE__ */
|
|
8246
|
+
isHost && question.state === "open" && !answering ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => setAnswering(true), children: "Answer" }) : null,
|
|
8247
|
+
isHost && question.state === "open" ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_dismiss", itemId: question.id }).then(show), children: "Dismiss" }) : null,
|
|
8248
|
+
isHost && question.state !== "open" ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_reopen", itemId: question.id }).then(show), children: "Reopen" }) : null,
|
|
8249
|
+
question.mine || isHost ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "question_delete", itemId: question.id }).then(show), children: "Delete" }) : null
|
|
8075
8250
|
] }) : null
|
|
8076
8251
|
] });
|
|
8077
8252
|
}
|
|
@@ -8088,7 +8263,7 @@ function QaPanel({ onClose }) {
|
|
|
8088
8263
|
(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 ?? "")
|
|
8089
8264
|
);
|
|
8090
8265
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Q&A", onClose, children: [
|
|
8091
|
-
collab?.error != null ? /* @__PURE__ */
|
|
8266
|
+
collab?.error != null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
8092
8267
|
/* @__PURE__ */ jsxs2(
|
|
8093
8268
|
"form",
|
|
8094
8269
|
{
|
|
@@ -8104,7 +8279,7 @@ function QaPanel({ onClose }) {
|
|
|
8104
8279
|
},
|
|
8105
8280
|
children: [
|
|
8106
8281
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__composer-row", children: [
|
|
8107
|
-
/* @__PURE__ */
|
|
8282
|
+
/* @__PURE__ */ jsx4(
|
|
8108
8283
|
"input",
|
|
8109
8284
|
{
|
|
8110
8285
|
className: "mx-meet__input",
|
|
@@ -8115,17 +8290,17 @@ function QaPanel({ onClose }) {
|
|
|
8115
8290
|
"aria-label": "Ask the host a question"
|
|
8116
8291
|
}
|
|
8117
8292
|
),
|
|
8118
|
-
/* @__PURE__ */
|
|
8293
|
+
/* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Ask" })
|
|
8119
8294
|
] }),
|
|
8120
8295
|
allowAnonymous ? /* @__PURE__ */ jsxs2("label", { className: "mx-meet__toggle", children: [
|
|
8121
|
-
/* @__PURE__ */
|
|
8296
|
+
/* @__PURE__ */ jsx4("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
|
|
8122
8297
|
"Ask anonymously"
|
|
8123
8298
|
] }) : null
|
|
8124
8299
|
]
|
|
8125
8300
|
}
|
|
8126
8301
|
),
|
|
8127
|
-
/* @__PURE__ */
|
|
8128
|
-
questions.length > 1 ? /* @__PURE__ */
|
|
8302
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
8303
|
+
questions.length > 1 ? /* @__PURE__ */ jsx4("div", { className: "mx-meet__pills", role: "group", "aria-label": "Order questions", children: ["popular", "recent"].map((value) => /* @__PURE__ */ jsx4(
|
|
8129
8304
|
"button",
|
|
8130
8305
|
{
|
|
8131
8306
|
type: "button",
|
|
@@ -8136,7 +8311,7 @@ function QaPanel({ onClose }) {
|
|
|
8136
8311
|
},
|
|
8137
8312
|
value
|
|
8138
8313
|
)) }) : null,
|
|
8139
|
-
questions.length === 0 ? /* @__PURE__ */
|
|
8314
|
+
questions.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: "No questions yet. Questions are kept with the meeting." }) : /* @__PURE__ */ jsx4("ul", { className: "mx-meet__chat", children: questions.map((question) => /* @__PURE__ */ jsx4(QuestionCard, { question }, question.id)) })
|
|
8140
8315
|
] });
|
|
8141
8316
|
}
|
|
8142
8317
|
var BOARD_W = 1600;
|
|
@@ -8150,7 +8325,7 @@ function strokePath(points) {
|
|
|
8150
8325
|
return `${move} ${rest.map(([x, y]) => `L${(x * BOARD_W).toFixed(1)} ${(y * BOARD_H).toFixed(1)}`).join(" ")}`;
|
|
8151
8326
|
}
|
|
8152
8327
|
function StrokeView({ stroke, onPick }) {
|
|
8153
|
-
return /* @__PURE__ */
|
|
8328
|
+
return /* @__PURE__ */ jsx4(
|
|
8154
8329
|
"path",
|
|
8155
8330
|
{
|
|
8156
8331
|
d: strokePath(stroke.points),
|
|
@@ -8162,7 +8337,7 @@ function StrokeView({ stroke, onPick }) {
|
|
|
8162
8337
|
strokeLinejoin: "round",
|
|
8163
8338
|
onPointerDown: onPick,
|
|
8164
8339
|
style: onPick !== void 0 ? { cursor: "pointer" } : void 0,
|
|
8165
|
-
children: /* @__PURE__ */
|
|
8340
|
+
children: /* @__PURE__ */ jsx4("title", { children: stroke.byName })
|
|
8166
8341
|
}
|
|
8167
8342
|
);
|
|
8168
8343
|
}
|
|
@@ -8173,7 +8348,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8173
8348
|
const [drawing, setDrawing] = useState3(null);
|
|
8174
8349
|
const [pending, setPending] = useState3([]);
|
|
8175
8350
|
const [notice, show] = useNotice();
|
|
8176
|
-
const svgRef =
|
|
8351
|
+
const svgRef = useRef4(null);
|
|
8177
8352
|
const strokes = collab?.strokes ?? [];
|
|
8178
8353
|
const mine = strokes.filter((s) => s.by === localIdentity);
|
|
8179
8354
|
const point = (event) => {
|
|
@@ -8207,12 +8382,12 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8207
8382
|
};
|
|
8208
8383
|
return /* @__PURE__ */ jsxs2("section", { className: "mx-meet__whiteboard", "aria-label": "Whiteboard", children: [
|
|
8209
8384
|
/* @__PURE__ */ jsxs2("header", { className: "mx-meet__whiteboard-bar", children: [
|
|
8210
|
-
/* @__PURE__ */
|
|
8211
|
-
/* @__PURE__ */
|
|
8212
|
-
["pen", "Pen", /* @__PURE__ */
|
|
8213
|
-
["highlighter", "Highlighter", /* @__PURE__ */
|
|
8214
|
-
["eraser", "Eraser \u2014 click a stroke", /* @__PURE__ */
|
|
8215
|
-
].map(([value, label, icon]) => /* @__PURE__ */
|
|
8385
|
+
/* @__PURE__ */ jsx4("strong", { className: "mx-meet__panel-title", children: "Whiteboard" }),
|
|
8386
|
+
/* @__PURE__ */ jsx4("div", { className: "mx-meet__pills", role: "group", "aria-label": "Tool", children: [
|
|
8387
|
+
["pen", "Pen", /* @__PURE__ */ jsx4(PencilIcon, { width: 16, height: 16 }, "p")],
|
|
8388
|
+
["highlighter", "Highlighter", /* @__PURE__ */ jsx4(HighlighterIcon, { width: 16, height: 16 }, "h")],
|
|
8389
|
+
["eraser", "Eraser \u2014 click a stroke", /* @__PURE__ */ jsx4(EraserIcon, { width: 16, height: 16 }, "e")]
|
|
8390
|
+
].map(([value, label, icon]) => /* @__PURE__ */ jsx4(
|
|
8216
8391
|
"button",
|
|
8217
8392
|
{
|
|
8218
8393
|
type: "button",
|
|
@@ -8225,7 +8400,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8225
8400
|
},
|
|
8226
8401
|
value
|
|
8227
8402
|
)) }),
|
|
8228
|
-
/* @__PURE__ */
|
|
8403
|
+
/* @__PURE__ */ jsx4("div", { className: "mx-meet__swatches", role: "group", "aria-label": "Color", children: INK.map((ink) => /* @__PURE__ */ jsx4(
|
|
8229
8404
|
"button",
|
|
8230
8405
|
{
|
|
8231
8406
|
type: "button",
|
|
@@ -8240,7 +8415,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8240
8415
|
},
|
|
8241
8416
|
ink
|
|
8242
8417
|
)) }),
|
|
8243
|
-
/* @__PURE__ */
|
|
8418
|
+
/* @__PURE__ */ jsx4(
|
|
8244
8419
|
ControlButton,
|
|
8245
8420
|
{
|
|
8246
8421
|
label: "Undo my last stroke",
|
|
@@ -8248,14 +8423,14 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8248
8423
|
const last = mine[mine.length - 1];
|
|
8249
8424
|
if (last !== void 0) void act({ action: "stroke_erase", itemId: last.id }).then((r) => r.ok ? void 0 : show(r));
|
|
8250
8425
|
},
|
|
8251
|
-
children: /* @__PURE__ */
|
|
8426
|
+
children: /* @__PURE__ */ jsx4(UndoIcon, { width: 16, height: 16 })
|
|
8252
8427
|
}
|
|
8253
8428
|
),
|
|
8254
|
-
isHost && strokes.length > 0 ? /* @__PURE__ */
|
|
8255
|
-
/* @__PURE__ */
|
|
8256
|
-
/* @__PURE__ */
|
|
8429
|
+
isHost && strokes.length > 0 ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "whiteboard_clear" }).then(show), children: "Clear board" }) : null,
|
|
8430
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__whiteboard-note", children: "Saved with the meeting" }),
|
|
8431
|
+
/* @__PURE__ */ jsx4(ControlButton, { label: "Close whiteboard", onClick: onClose, children: /* @__PURE__ */ jsx4(CloseIcon, { width: 16, height: 16 }) })
|
|
8257
8432
|
] }),
|
|
8258
|
-
/* @__PURE__ */
|
|
8433
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
8259
8434
|
/* @__PURE__ */ jsxs2(
|
|
8260
8435
|
"svg",
|
|
8261
8436
|
{
|
|
@@ -8280,8 +8455,8 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8280
8455
|
onPointerUp: finish,
|
|
8281
8456
|
onPointerCancel: finish,
|
|
8282
8457
|
children: [
|
|
8283
|
-
/* @__PURE__ */
|
|
8284
|
-
strokes.map((stroke) => /* @__PURE__ */
|
|
8458
|
+
/* @__PURE__ */ jsx4("rect", { x: 0, y: 0, width: BOARD_W, height: BOARD_H, className: "mx-meet__board-paper" }),
|
|
8459
|
+
strokes.map((stroke) => /* @__PURE__ */ jsx4(
|
|
8285
8460
|
StrokeView,
|
|
8286
8461
|
{
|
|
8287
8462
|
stroke,
|
|
@@ -8289,8 +8464,8 @@ function WhiteboardPanel({ onClose }) {
|
|
|
8289
8464
|
},
|
|
8290
8465
|
stroke.id
|
|
8291
8466
|
)),
|
|
8292
|
-
pending.map((stroke) => /* @__PURE__ */
|
|
8293
|
-
drawing !== null ? /* @__PURE__ */
|
|
8467
|
+
pending.map((stroke) => /* @__PURE__ */ jsx4(StrokeView, { stroke }, stroke.id)),
|
|
8468
|
+
drawing !== null ? /* @__PURE__ */ jsx4(
|
|
8294
8469
|
StrokeView,
|
|
8295
8470
|
{
|
|
8296
8471
|
stroke: {
|
|
@@ -8315,7 +8490,7 @@ function clock(ms2) {
|
|
|
8315
8490
|
var BREAKOUT_EXPIRE_RETRY_MS = 5e3;
|
|
8316
8491
|
function useNow(active) {
|
|
8317
8492
|
const [now, setNow] = useState3(() => Date.now());
|
|
8318
|
-
|
|
8493
|
+
useEffect4(() => {
|
|
8319
8494
|
if (!active) return void 0;
|
|
8320
8495
|
const timer = setInterval(() => setNow(Date.now()), 1e3);
|
|
8321
8496
|
return () => clearInterval(timer);
|
|
@@ -8347,8 +8522,8 @@ function BreakoutSetup() {
|
|
|
8347
8522
|
const nameOf = (identity) => people.find((p) => p.identity === identity)?.displayName ?? identity;
|
|
8348
8523
|
return /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-card", children: [
|
|
8349
8524
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
8350
|
-
/* @__PURE__ */
|
|
8351
|
-
/* @__PURE__ */
|
|
8525
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__field-label", children: "Rooms" }),
|
|
8526
|
+
/* @__PURE__ */ jsx4(
|
|
8352
8527
|
"input",
|
|
8353
8528
|
{
|
|
8354
8529
|
className: "mx-meet__input",
|
|
@@ -8360,11 +8535,11 @@ function BreakoutSetup() {
|
|
|
8360
8535
|
}
|
|
8361
8536
|
)
|
|
8362
8537
|
] }),
|
|
8363
|
-
/* @__PURE__ */
|
|
8538
|
+
/* @__PURE__ */ jsx4("div", { className: "mx-meet__pills", role: "group", "aria-label": "How people are placed", children: [
|
|
8364
8539
|
["auto", "Automatically"],
|
|
8365
8540
|
["manual", "Manually"],
|
|
8366
8541
|
["choose", "Let people choose"]
|
|
8367
|
-
].map(([value, label]) => /* @__PURE__ */
|
|
8542
|
+
].map(([value, label]) => /* @__PURE__ */ jsx4(
|
|
8368
8543
|
"button",
|
|
8369
8544
|
{
|
|
8370
8545
|
type: "button",
|
|
@@ -8376,8 +8551,8 @@ function BreakoutSetup() {
|
|
|
8376
8551
|
value
|
|
8377
8552
|
)) }),
|
|
8378
8553
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
8379
|
-
/* @__PURE__ */
|
|
8380
|
-
/* @__PURE__ */
|
|
8554
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__field-label", children: "Timer (minutes, 0 for none)" }),
|
|
8555
|
+
/* @__PURE__ */ jsx4(
|
|
8381
8556
|
"input",
|
|
8382
8557
|
{
|
|
8383
8558
|
className: "mx-meet__input",
|
|
@@ -8389,8 +8564,8 @@ function BreakoutSetup() {
|
|
|
8389
8564
|
}
|
|
8390
8565
|
)
|
|
8391
8566
|
] }),
|
|
8392
|
-
mode === "manual" ? people.length === 0 ? /* @__PURE__ */
|
|
8393
|
-
/* @__PURE__ */
|
|
8567
|
+
mode === "manual" ? people.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: "Nobody else is in the meeting yet." }) : /* @__PURE__ */ jsx4("ul", { className: "mx-meet__people", children: people.map((person) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
|
|
8568
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__person-name", children: person.displayName }),
|
|
8394
8569
|
/* @__PURE__ */ jsxs2(
|
|
8395
8570
|
"select",
|
|
8396
8571
|
{
|
|
@@ -8399,7 +8574,7 @@ function BreakoutSetup() {
|
|
|
8399
8574
|
value: manual[person.identity] ?? -1,
|
|
8400
8575
|
onChange: (event) => setManual({ ...manual, [person.identity]: Number(event.target.value) }),
|
|
8401
8576
|
children: [
|
|
8402
|
-
/* @__PURE__ */
|
|
8577
|
+
/* @__PURE__ */ jsx4("option", { value: -1, children: "Main room" }),
|
|
8403
8578
|
Array.from({ length: rooms }, (_, index) => /* @__PURE__ */ jsxs2("option", { value: index, children: [
|
|
8404
8579
|
"Room ",
|
|
8405
8580
|
index + 1
|
|
@@ -8407,15 +8582,15 @@ function BreakoutSetup() {
|
|
|
8407
8582
|
]
|
|
8408
8583
|
}
|
|
8409
8584
|
)
|
|
8410
|
-
] }, person.identity)) }) : mode === "auto" ? /* @__PURE__ */
|
|
8585
|
+
] }, person.identity)) }) : mode === "auto" ? /* @__PURE__ */ jsx4("ul", { className: "mx-meet__breakout-rooms", children: assignment.map((members, index) => /* @__PURE__ */ jsxs2("li", { children: [
|
|
8411
8586
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
8412
8587
|
"Room ",
|
|
8413
8588
|
index + 1
|
|
8414
8589
|
] }),
|
|
8415
8590
|
" ",
|
|
8416
|
-
/* @__PURE__ */
|
|
8417
|
-
] }, index)) }) : /* @__PURE__ */
|
|
8418
|
-
/* @__PURE__ */
|
|
8591
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__panel-note", children: members.length === 0 ? "empty" : members.map(nameOf).join(", ") })
|
|
8592
|
+
] }, index)) }) : /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: "Everyone picks a room from their own screen." }),
|
|
8593
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
8419
8594
|
/* @__PURE__ */ jsxs2(
|
|
8420
8595
|
"button",
|
|
8421
8596
|
{
|
|
@@ -8470,17 +8645,17 @@ function BreakoutRun({ plan }) {
|
|
|
8470
8645
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
8471
8646
|
plan.allowChoose ? " \xB7 people choose their room" : ""
|
|
8472
8647
|
] }),
|
|
8473
|
-
/* @__PURE__ */
|
|
8648
|
+
/* @__PURE__ */ jsx4("ul", { className: "mx-meet__breakout-rooms", children: plan.rooms.map((room) => {
|
|
8474
8649
|
const here = breakoutRoomId === room.id;
|
|
8475
8650
|
const mayJoin = isHost || plan.allowChoose || mine?.id === room.id;
|
|
8476
8651
|
return /* @__PURE__ */ jsxs2("li", { className: here ? "mx-meet__breakout-room mx-meet__breakout-room--here" : "mx-meet__breakout-room", children: [
|
|
8477
8652
|
/* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-head", children: [
|
|
8478
|
-
/* @__PURE__ */
|
|
8479
|
-
here ? /* @__PURE__ */
|
|
8653
|
+
/* @__PURE__ */ jsx4("strong", { children: room.name }),
|
|
8654
|
+
here ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__collab-state", children: "You are here" }) : mayJoin ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(room.id), children: "Join" }) : null
|
|
8480
8655
|
] }),
|
|
8481
|
-
/* @__PURE__ */
|
|
8482
|
-
isHost && room.identities.length > 0 ? /* @__PURE__ */
|
|
8483
|
-
/* @__PURE__ */
|
|
8656
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__panel-note", children: room.identities.length === 0 ? "Nobody assigned" : room.identities.map(nameOf).join(", ") }),
|
|
8657
|
+
isHost && room.identities.length > 0 ? /* @__PURE__ */ jsx4("ul", { className: "mx-meet__people", children: room.identities.map((identity) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
|
|
8658
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__person-name", children: nameOf(identity) }),
|
|
8484
8659
|
/* @__PURE__ */ jsxs2(
|
|
8485
8660
|
"select",
|
|
8486
8661
|
{
|
|
@@ -8493,15 +8668,15 @@ function BreakoutRun({ plan }) {
|
|
|
8493
8668
|
roomId: event.target.value === "" ? null : event.target.value
|
|
8494
8669
|
}).then(show),
|
|
8495
8670
|
children: [
|
|
8496
|
-
/* @__PURE__ */
|
|
8497
|
-
plan.rooms.map((option) => /* @__PURE__ */
|
|
8671
|
+
/* @__PURE__ */ jsx4("option", { value: "", children: "Main room" }),
|
|
8672
|
+
plan.rooms.map((option) => /* @__PURE__ */ jsx4("option", { value: option.id, children: option.name }, option.id))
|
|
8498
8673
|
]
|
|
8499
8674
|
}
|
|
8500
8675
|
)
|
|
8501
8676
|
] }, identity)) }) : null
|
|
8502
8677
|
] }, room.id);
|
|
8503
8678
|
}) }),
|
|
8504
|
-
breakoutRoomId !== null ? /* @__PURE__ */
|
|
8679
|
+
breakoutRoomId !== null ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(null), children: "Return to the main room" }) : null,
|
|
8505
8680
|
isHost ? /* @__PURE__ */ jsxs2(
|
|
8506
8681
|
"form",
|
|
8507
8682
|
{
|
|
@@ -8516,7 +8691,7 @@ function BreakoutRun({ plan }) {
|
|
|
8516
8691
|
});
|
|
8517
8692
|
},
|
|
8518
8693
|
children: [
|
|
8519
|
-
/* @__PURE__ */
|
|
8694
|
+
/* @__PURE__ */ jsx4(
|
|
8520
8695
|
"input",
|
|
8521
8696
|
{
|
|
8522
8697
|
className: "mx-meet__input",
|
|
@@ -8527,12 +8702,12 @@ function BreakoutRun({ plan }) {
|
|
|
8527
8702
|
"aria-label": "Message every room"
|
|
8528
8703
|
}
|
|
8529
8704
|
),
|
|
8530
|
-
/* @__PURE__ */
|
|
8705
|
+
/* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__send", disabled: broadcast.trim().length === 0, children: "Send" })
|
|
8531
8706
|
]
|
|
8532
8707
|
}
|
|
8533
8708
|
) : null,
|
|
8534
|
-
/* @__PURE__ */
|
|
8535
|
-
isHost ? /* @__PURE__ */
|
|
8709
|
+
/* @__PURE__ */ jsx4(Notice, { notice }),
|
|
8710
|
+
isHost ? /* @__PURE__ */ jsx4(
|
|
8536
8711
|
"button",
|
|
8537
8712
|
{
|
|
8538
8713
|
type: "button",
|
|
@@ -8547,8 +8722,8 @@ function BreakoutsPanel({ onClose }) {
|
|
|
8547
8722
|
const { collab, isHost } = useCollab();
|
|
8548
8723
|
const plan = collab?.breakout?.state === "open" ? collab.breakout : null;
|
|
8549
8724
|
return /* @__PURE__ */ jsxs2(PanelShell, { title: "Breakout rooms", onClose, children: [
|
|
8550
|
-
collab?.error != null ? /* @__PURE__ */
|
|
8551
|
-
plan !== null ? /* @__PURE__ */
|
|
8725
|
+
collab?.error != null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
|
|
8726
|
+
plan !== null ? /* @__PURE__ */ jsx4(BreakoutRun, { plan }) : isHost ? /* @__PURE__ */ jsx4(BreakoutSetup, {}) : /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: "Breakout rooms are closed." })
|
|
8552
8727
|
] });
|
|
8553
8728
|
}
|
|
8554
8729
|
function BreakoutBanner() {
|
|
@@ -8561,9 +8736,9 @@ function BreakoutBanner() {
|
|
|
8561
8736
|
const assigned = assignedRoom(open, localIdentity);
|
|
8562
8737
|
const [dismissedBroadcast, setDismissedBroadcast] = useState3(null);
|
|
8563
8738
|
const [failure, setFailure] = useState3(null);
|
|
8564
|
-
const expireAsked =
|
|
8739
|
+
const expireAsked = useRef4(null);
|
|
8565
8740
|
const moveAt = collab?.moveRequest?.at ?? null;
|
|
8566
|
-
|
|
8741
|
+
useEffect4(() => {
|
|
8567
8742
|
const request = host?.store.snapshot().collab.moveRequest ?? null;
|
|
8568
8743
|
if (request === null || host === null) return;
|
|
8569
8744
|
host.store.patch({ collab: { ...host.store.snapshot().collab, moveRequest: null } });
|
|
@@ -8571,7 +8746,7 @@ function BreakoutBanner() {
|
|
|
8571
8746
|
if ((here ?? null) === request.roomId) return;
|
|
8572
8747
|
void moveTo(request.roomId).then((result) => setFailure(result.ok ? null : result.message));
|
|
8573
8748
|
}, [moveAt, host, moveTo]);
|
|
8574
|
-
|
|
8749
|
+
useEffect4(() => {
|
|
8575
8750
|
if (open === null || remaining === null || remaining > 0) return;
|
|
8576
8751
|
const asked = expireAsked.current;
|
|
8577
8752
|
if (asked !== null && asked.id === open.id && now - asked.at < BREAKOUT_EXPIRE_RETRY_MS) return;
|
|
@@ -8583,16 +8758,16 @@ function BreakoutBanner() {
|
|
|
8583
8758
|
const room = open?.rooms.find((r) => r.id === breakoutRoomId) ?? null;
|
|
8584
8759
|
if (open === null && failure === null) return null;
|
|
8585
8760
|
return /* @__PURE__ */ jsxs2("div", { className: "mx-meet__breakout-banner", role: "status", children: [
|
|
8586
|
-
failure !== null ? /* @__PURE__ */
|
|
8761
|
+
failure !== null ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__collab-error", children: failure }) : null,
|
|
8587
8762
|
room !== null ? /* @__PURE__ */ jsxs2("span", { children: [
|
|
8588
|
-
/* @__PURE__ */
|
|
8763
|
+
/* @__PURE__ */ jsx4("strong", { children: room.name }),
|
|
8589
8764
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
8590
|
-
/* @__PURE__ */
|
|
8765
|
+
/* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__chip", onClick: () => void moveTo(null), children: "Return to main room" })
|
|
8591
8766
|
] }) : assigned !== null ? /* @__PURE__ */ jsxs2("span", { children: [
|
|
8592
8767
|
"You are assigned to ",
|
|
8593
|
-
/* @__PURE__ */
|
|
8768
|
+
/* @__PURE__ */ jsx4("strong", { children: assigned.name }),
|
|
8594
8769
|
remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
|
|
8595
|
-
/* @__PURE__ */
|
|
8770
|
+
/* @__PURE__ */ jsx4(
|
|
8596
8771
|
"button",
|
|
8597
8772
|
{
|
|
8598
8773
|
type: "button",
|
|
@@ -8604,7 +8779,7 @@ function BreakoutBanner() {
|
|
|
8604
8779
|
children: "Join"
|
|
8605
8780
|
}
|
|
8606
8781
|
)
|
|
8607
|
-
] }) : open?.allowChoose ? /* @__PURE__ */
|
|
8782
|
+
] }) : open?.allowChoose ? /* @__PURE__ */ jsx4("span", { children: "Breakout rooms are open \u2014 pick one under Activities." }) : null,
|
|
8608
8783
|
showBroadcast ? /* @__PURE__ */ jsxs2("span", { className: "mx-meet__breakout-broadcast", children: [
|
|
8609
8784
|
/* @__PURE__ */ jsxs2("strong", { children: [
|
|
8610
8785
|
broadcast.by,
|
|
@@ -8612,7 +8787,7 @@ function BreakoutBanner() {
|
|
|
8612
8787
|
] }),
|
|
8613
8788
|
" ",
|
|
8614
8789
|
broadcast.text,
|
|
8615
|
-
/* @__PURE__ */
|
|
8790
|
+
/* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => setDismissedBroadcast(broadcast.at), children: "Dismiss" })
|
|
8616
8791
|
] }) : null
|
|
8617
8792
|
] });
|
|
8618
8793
|
}
|
|
@@ -8621,13 +8796,13 @@ function useCaptionTranslation(lines) {
|
|
|
8621
8796
|
const snapshot = useMeetSnapshot();
|
|
8622
8797
|
const collab = snapshot?.collab ?? null;
|
|
8623
8798
|
const language = collab?.captionLanguage ?? null;
|
|
8624
|
-
const asked =
|
|
8799
|
+
const asked = useRef4(/* @__PURE__ */ new Set());
|
|
8625
8800
|
const translations = collab?.captionTranslations ?? {};
|
|
8626
8801
|
const missing = lines.filter((line) => line.final && translations[line.id] === void 0).map(({ id, text: text3 }) => ({ id, text: text3 }));
|
|
8627
8802
|
const key = `${language ?? ""}|${missing.map((l) => l.id).join(",")}`;
|
|
8628
|
-
const pending =
|
|
8803
|
+
const pending = useRef4(missing);
|
|
8629
8804
|
pending.current = missing;
|
|
8630
|
-
|
|
8805
|
+
useEffect4(() => {
|
|
8631
8806
|
if (host === null || language === null) return;
|
|
8632
8807
|
const batch = pending.current.filter((line) => !asked.current.has(`${language}:${line.id}`)).slice(-20);
|
|
8633
8808
|
if (batch.length === 0) return;
|
|
@@ -8648,7 +8823,7 @@ function CaptionLanguageSettings() {
|
|
|
8648
8823
|
const choices = CAPTION_LANGUAGES.some((l) => l.tag === preferred) ? CAPTION_LANGUAGES : [{ tag: preferred, name: preferred }, ...CAPTION_LANGUAGES];
|
|
8649
8824
|
return /* @__PURE__ */ jsxs2("section", { className: "mx-meet__section", "aria-label": "Captions", children: [
|
|
8650
8825
|
/* @__PURE__ */ jsxs2("label", { className: "mx-meet__field", children: [
|
|
8651
|
-
/* @__PURE__ */
|
|
8826
|
+
/* @__PURE__ */ jsx4("span", { className: "mx-meet__field-label", children: "Translate captions to" }),
|
|
8652
8827
|
/* @__PURE__ */ jsxs2(
|
|
8653
8828
|
"select",
|
|
8654
8829
|
{
|
|
@@ -8666,25 +8841,25 @@ function CaptionLanguageSettings() {
|
|
|
8666
8841
|
});
|
|
8667
8842
|
},
|
|
8668
8843
|
children: [
|
|
8669
|
-
/* @__PURE__ */
|
|
8844
|
+
/* @__PURE__ */ jsx4("option", { value: "", children: "Off \u2014 as spoken" }),
|
|
8670
8845
|
current === "" ? /* @__PURE__ */ jsxs2("option", { value: preferred, children: [
|
|
8671
8846
|
choices.find((c) => c.tag === preferred)?.name ?? preferred,
|
|
8672
8847
|
" (yours)"
|
|
8673
8848
|
] }) : null,
|
|
8674
|
-
choices.filter((choice) => current !== "" || choice.tag !== preferred).map((choice) => /* @__PURE__ */
|
|
8849
|
+
choices.filter((choice) => current !== "" || choice.tag !== preferred).map((choice) => /* @__PURE__ */ jsx4("option", { value: choice.tag, children: choice.name }, choice.tag))
|
|
8675
8850
|
]
|
|
8676
8851
|
}
|
|
8677
8852
|
)
|
|
8678
8853
|
] }),
|
|
8679
|
-
collab?.captionTranslationError != null ? /* @__PURE__ */
|
|
8854
|
+
collab?.captionTranslationError != null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.captionTranslationError }) : null
|
|
8680
8855
|
] });
|
|
8681
8856
|
}
|
|
8682
8857
|
function useCollabPanelRequest(onRequest) {
|
|
8683
8858
|
const host = useMeetHost();
|
|
8684
8859
|
const at = useMeetSnapshot()?.collab.panelRequest?.at ?? null;
|
|
8685
|
-
const callback =
|
|
8860
|
+
const callback = useRef4(onRequest);
|
|
8686
8861
|
callback.current = onRequest;
|
|
8687
|
-
|
|
8862
|
+
useEffect4(() => {
|
|
8688
8863
|
const request = host?.store.snapshot().collab.panelRequest ?? null;
|
|
8689
8864
|
if (request === null || host === null) return;
|
|
8690
8865
|
host.store.patch({ collab: { ...host.store.snapshot().collab, panelRequest: null } });
|
|
@@ -8693,14 +8868,14 @@ function useCollabPanelRequest(onRequest) {
|
|
|
8693
8868
|
}
|
|
8694
8869
|
|
|
8695
8870
|
// src/react/components.tsx
|
|
8696
|
-
import { Fragment, jsx as
|
|
8871
|
+
import { Fragment, jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
8697
8872
|
function InertNotice({ what }) {
|
|
8698
8873
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__empty", role: "status", children: [
|
|
8699
8874
|
/* @__PURE__ */ jsxs3("p", { className: "mx-meet__empty-title", children: [
|
|
8700
8875
|
what,
|
|
8701
8876
|
" is not ready yet"
|
|
8702
8877
|
] }),
|
|
8703
|
-
/* @__PURE__ */
|
|
8878
|
+
/* @__PURE__ */ jsx5("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." })
|
|
8704
8879
|
] });
|
|
8705
8880
|
}
|
|
8706
8881
|
function Avatar({
|
|
@@ -8710,7 +8885,7 @@ function Avatar({
|
|
|
8710
8885
|
}) {
|
|
8711
8886
|
const tint = avatarPaletteIndex(name);
|
|
8712
8887
|
if (url != null && url.length > 0) {
|
|
8713
|
-
return /* @__PURE__ */
|
|
8888
|
+
return /* @__PURE__ */ jsx5(
|
|
8714
8889
|
"img",
|
|
8715
8890
|
{
|
|
8716
8891
|
className: "mx-meet__avatar",
|
|
@@ -8722,7 +8897,7 @@ function Avatar({
|
|
|
8722
8897
|
}
|
|
8723
8898
|
);
|
|
8724
8899
|
}
|
|
8725
|
-
return /* @__PURE__ */
|
|
8900
|
+
return /* @__PURE__ */ jsx5(
|
|
8726
8901
|
"span",
|
|
8727
8902
|
{
|
|
8728
8903
|
className: "mx-meet__avatar mx-meet__avatar--initials",
|
|
@@ -8744,7 +8919,7 @@ function ControlButton({
|
|
|
8744
8919
|
onClick,
|
|
8745
8920
|
children
|
|
8746
8921
|
}) {
|
|
8747
|
-
return /* @__PURE__ */
|
|
8922
|
+
return /* @__PURE__ */ jsx5(
|
|
8748
8923
|
"button",
|
|
8749
8924
|
{
|
|
8750
8925
|
type: "button",
|
|
@@ -8770,7 +8945,7 @@ function RecordingIndicator() {
|
|
|
8770
8945
|
role: "status",
|
|
8771
8946
|
"aria-live": "polite",
|
|
8772
8947
|
children: [
|
|
8773
|
-
/* @__PURE__ */
|
|
8948
|
+
/* @__PURE__ */ jsx5(RecordIcon, { width: 10, height: 10 }),
|
|
8774
8949
|
label
|
|
8775
8950
|
]
|
|
8776
8951
|
}
|
|
@@ -8778,12 +8953,12 @@ function RecordingIndicator() {
|
|
|
8778
8953
|
}
|
|
8779
8954
|
function ConnectionDot({ quality }) {
|
|
8780
8955
|
if (quality === "excellent" || quality === "good" || quality === "unknown") return null;
|
|
8781
|
-
return /* @__PURE__ */
|
|
8956
|
+
return /* @__PURE__ */ jsx5("span", { className: `mx-meet__quality mx-meet__quality--${quality}`, title: `Connection ${quality}`, children: /* @__PURE__ */ jsx5(WifiLowIcon, { width: 14, height: 14 }) });
|
|
8782
8957
|
}
|
|
8783
8958
|
function RoleBadge({ role }) {
|
|
8784
|
-
if (role === "host") return /* @__PURE__ */
|
|
8785
|
-
if (role === "cohost") return /* @__PURE__ */
|
|
8786
|
-
if (role === "guest") return /* @__PURE__ */
|
|
8959
|
+
if (role === "host") return /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Host" });
|
|
8960
|
+
if (role === "cohost") return /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Co-host" });
|
|
8961
|
+
if (role === "guest") return /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Guest" });
|
|
8787
8962
|
return null;
|
|
8788
8963
|
}
|
|
8789
8964
|
function ParticipantTile({
|
|
@@ -8811,8 +8986,9 @@ function ParticipantTile({
|
|
|
8811
8986
|
participant.speaking ? "mx-meet__tile--speaking" : ""
|
|
8812
8987
|
].filter(Boolean).join(" "),
|
|
8813
8988
|
"data-identity": participant.identity,
|
|
8989
|
+
...participantAttributes(participant),
|
|
8814
8990
|
children: [
|
|
8815
|
-
showVideo ? /* @__PURE__ */
|
|
8991
|
+
showVideo ? /* @__PURE__ */ jsx5(
|
|
8816
8992
|
"video",
|
|
8817
8993
|
{
|
|
8818
8994
|
ref: videoRef,
|
|
@@ -8821,43 +8997,43 @@ function ParticipantTile({
|
|
|
8821
8997
|
playsInline: true,
|
|
8822
8998
|
muted: participant.isLocal
|
|
8823
8999
|
}
|
|
8824
|
-
) : /* @__PURE__ */
|
|
9000
|
+
) : /* @__PURE__ */ jsx5("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx5(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: featured ? 96 : 56 }) }),
|
|
8825
9001
|
participant.handRaised ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__tile-hand", title: `Hand raised \xB7 ${ordinal(handPosition)} in line`, children: [
|
|
8826
|
-
/* @__PURE__ */
|
|
9002
|
+
/* @__PURE__ */ jsx5(HandIcon, { width: 14, height: 14 }),
|
|
8827
9003
|
handPosition > 0 ? handPosition : null
|
|
8828
9004
|
] }) : null,
|
|
8829
9005
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__tile-bar", children: [
|
|
8830
9006
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__tile-name", children: [
|
|
8831
|
-
spotlit ? /* @__PURE__ */
|
|
9007
|
+
spotlit ? /* @__PURE__ */ jsx5("span", { title: "Spotlighted for everyone", className: "mx-meet__tile-flag", children: /* @__PURE__ */ jsx5(SpotlightIcon, { width: 12, height: 12 }) }) : null,
|
|
8832
9008
|
participant.displayName,
|
|
8833
9009
|
participant.isLocal ? " (you)" : "",
|
|
8834
|
-
participant.isAgent ? /* @__PURE__ */
|
|
8835
|
-
/* @__PURE__ */
|
|
9010
|
+
participant.isAgent ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "AI" }) : null,
|
|
9011
|
+
/* @__PURE__ */ jsx5(RoleBadge, { role: participant.role })
|
|
8836
9012
|
] }),
|
|
8837
|
-
!participant.micEnabled ? /* @__PURE__ */
|
|
8838
|
-
/* @__PURE__ */
|
|
9013
|
+
!participant.micEnabled ? /* @__PURE__ */ jsx5(MicOffIcon, { width: 14, height: 14 }) : null,
|
|
9014
|
+
/* @__PURE__ */ jsx5(QualityBars, { quality: participant.quality })
|
|
8839
9015
|
] }),
|
|
8840
9016
|
/* @__PURE__ */ jsxs3("div", { className: menu ? "mx-meet__tile-actions mx-meet__tile-actions--open" : "mx-meet__tile-actions", children: [
|
|
8841
|
-
/* @__PURE__ */
|
|
9017
|
+
/* @__PURE__ */ jsx5(
|
|
8842
9018
|
ControlButton,
|
|
8843
9019
|
{
|
|
8844
9020
|
label: pinnedHere ? "Unpin" : `Pin ${participant.displayName} for me`,
|
|
8845
9021
|
active: pinnedHere,
|
|
8846
9022
|
onClick: () => host?.engine.pin(pinnedHere ? null : participant.identity),
|
|
8847
|
-
children: /* @__PURE__ */
|
|
9023
|
+
children: /* @__PURE__ */ jsx5(PinIcon, { width: 16, height: 16 })
|
|
8848
9024
|
}
|
|
8849
9025
|
),
|
|
8850
9026
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
8851
|
-
/* @__PURE__ */
|
|
9027
|
+
/* @__PURE__ */ jsx5(
|
|
8852
9028
|
ControlButton,
|
|
8853
9029
|
{
|
|
8854
9030
|
label: `More for ${participant.displayName}`,
|
|
8855
9031
|
active: menu,
|
|
8856
9032
|
onClick: () => setMenu(!menu),
|
|
8857
|
-
children: /* @__PURE__ */
|
|
9033
|
+
children: /* @__PURE__ */ jsx5(MoreIcon, { width: 16, height: 16 })
|
|
8858
9034
|
}
|
|
8859
9035
|
),
|
|
8860
|
-
menu ? /* @__PURE__ */
|
|
9036
|
+
menu ? /* @__PURE__ */ jsx5(PersonMenu, { participant, onClose: () => setMenu(false), placement: "down" }) : null
|
|
8861
9037
|
] })
|
|
8862
9038
|
] })
|
|
8863
9039
|
]
|
|
@@ -8873,25 +9049,25 @@ function QualityBars({ quality }) {
|
|
|
8873
9049
|
if (quality === "unknown") return null;
|
|
8874
9050
|
const bars = quality === "excellent" ? 3 : quality === "good" ? 2 : quality === "poor" ? 1 : 0;
|
|
8875
9051
|
const label = quality === "lost" ? "Connection lost" : quality === "poor" ? "Poor connection" : `Connection ${quality}`;
|
|
8876
|
-
return /* @__PURE__ */
|
|
9052
|
+
return /* @__PURE__ */ jsx5("span", { className: `mx-meet__signal mx-meet__signal--${quality}`, title: label, "aria-label": label, role: "img", children: /* @__PURE__ */ jsx5(SignalIcon, { bars, width: 14, height: 14 }) });
|
|
8877
9053
|
}
|
|
8878
9054
|
function Stage({ pageSize }) {
|
|
8879
9055
|
const stage = useStage(pageSize);
|
|
8880
9056
|
const columns = gridColumns(stage.tiles.length);
|
|
8881
9057
|
if (stage.feature === null && stage.tiles.length === 0) {
|
|
8882
9058
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__stage mx-meet__stage--empty", children: [
|
|
8883
|
-
/* @__PURE__ */
|
|
8884
|
-
/* @__PURE__ */
|
|
9059
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "Waiting for others to join" }),
|
|
9060
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: "Share the meeting link and people can join from anywhere \u2014 no account needed." })
|
|
8885
9061
|
] });
|
|
8886
9062
|
}
|
|
8887
9063
|
return /* @__PURE__ */ jsxs3("div", { className: `mx-meet__stage${stage.feature !== null ? " mx-meet__stage--speaker" : ""}`, children: [
|
|
8888
|
-
stage.feature !== null ? /* @__PURE__ */
|
|
8889
|
-
/* @__PURE__ */
|
|
9064
|
+
stage.feature !== null ? /* @__PURE__ */ jsx5(ParticipantTile, { participant: stage.feature, featured: true }) : null,
|
|
9065
|
+
/* @__PURE__ */ jsx5(
|
|
8890
9066
|
"div",
|
|
8891
9067
|
{
|
|
8892
9068
|
className: "mx-meet__grid",
|
|
8893
9069
|
style: { "--mx-meet-columns": columns },
|
|
8894
|
-
children: stage.tiles.map((participant) => /* @__PURE__ */
|
|
9070
|
+
children: stage.tiles.map((participant) => /* @__PURE__ */ jsx5(ParticipantTile, { participant }, participant.identity))
|
|
8895
9071
|
}
|
|
8896
9072
|
),
|
|
8897
9073
|
stage.overflow > 0 ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__overflow", children: [
|
|
@@ -8928,7 +9104,7 @@ function ControlBar({ onLeave }) {
|
|
|
8928
9104
|
});
|
|
8929
9105
|
const privateChatAt = snapshot?.privateChatRequest?.at ?? null;
|
|
8930
9106
|
const meetStore = useMeetHost()?.store ?? null;
|
|
8931
|
-
|
|
9107
|
+
useEffect5(() => {
|
|
8932
9108
|
const request = meetStore?.snapshot().privateChatRequest ?? null;
|
|
8933
9109
|
if (request === null) return;
|
|
8934
9110
|
setChatTo(request.to);
|
|
@@ -8945,10 +9121,10 @@ function ControlBar({ onLeave }) {
|
|
|
8945
9121
|
});
|
|
8946
9122
|
const hasSpotlight = snapshot?.spotlight !== null && snapshot?.spotlight !== void 0;
|
|
8947
9123
|
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
8948
|
-
/* @__PURE__ */
|
|
8949
|
-
shortcuts ? /* @__PURE__ */
|
|
8950
|
-
panel === "chat" ? /* @__PURE__ */
|
|
8951
|
-
panel === "people" ? /* @__PURE__ */
|
|
9124
|
+
/* @__PURE__ */ jsx5(MeetingOverlays, {}),
|
|
9125
|
+
shortcuts ? /* @__PURE__ */ jsx5(ShortcutsSheet, { onClose: () => setShortcuts(false) }) : null,
|
|
9126
|
+
panel === "chat" ? /* @__PURE__ */ jsx5(ChatPanel, { onClose: () => setPanel("none"), to: chatTo, onTo: setChatTo }) : null,
|
|
9127
|
+
panel === "people" ? /* @__PURE__ */ jsx5(
|
|
8952
9128
|
PeoplePanel,
|
|
8953
9129
|
{
|
|
8954
9130
|
onClose: () => setPanel("none"),
|
|
@@ -8958,53 +9134,53 @@ function ControlBar({ onLeave }) {
|
|
|
8958
9134
|
}
|
|
8959
9135
|
}
|
|
8960
9136
|
) : null,
|
|
8961
|
-
panel === "ai" ? /* @__PURE__ */
|
|
8962
|
-
panel === "settings" ? /* @__PURE__ */
|
|
8963
|
-
panel === "polls" ? /* @__PURE__ */
|
|
8964
|
-
panel === "qa" ? /* @__PURE__ */
|
|
8965
|
-
panel === "breakouts" ? /* @__PURE__ */
|
|
8966
|
-
whiteboard ? /* @__PURE__ */
|
|
8967
|
-
/* @__PURE__ */
|
|
8968
|
-
controls.notice !== null && panel !== "people" ? /* @__PURE__ */
|
|
9137
|
+
panel === "ai" ? /* @__PURE__ */ jsx5(AiPanel, { onClose: () => setPanel("none") }) : null,
|
|
9138
|
+
panel === "settings" ? /* @__PURE__ */ jsx5(SettingsPanel, { onClose: () => setPanel("none") }) : null,
|
|
9139
|
+
panel === "polls" ? /* @__PURE__ */ jsx5(PollsPanel, { onClose: () => setPanel("none") }) : null,
|
|
9140
|
+
panel === "qa" ? /* @__PURE__ */ jsx5(QaPanel, { onClose: () => setPanel("none") }) : null,
|
|
9141
|
+
panel === "breakouts" ? /* @__PURE__ */ jsx5(BreakoutsPanel, { onClose: () => setPanel("none") }) : null,
|
|
9142
|
+
whiteboard ? /* @__PURE__ */ jsx5(WhiteboardPanel, { onClose: () => setWhiteboard(false) }) : null,
|
|
9143
|
+
/* @__PURE__ */ jsx5(BreakoutBanner, {}),
|
|
9144
|
+
controls.notice !== null && panel !== "people" ? /* @__PURE__ */ jsx5(Toast, { text: controls.notice.text, failed: controls.notice.failed, onDone: controls.clearNotice }) : null,
|
|
8969
9145
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__controls", children: [
|
|
8970
|
-
/* @__PURE__ */
|
|
9146
|
+
/* @__PURE__ */ jsx5(
|
|
8971
9147
|
ControlButton,
|
|
8972
9148
|
{
|
|
8973
9149
|
label: micUnavailable !== null ? `Unmute \u2014 ${micUnavailable.remedy}` : room.local?.micEnabled === true ? "Mute (\u2318D)" : "Unmute (\u2318D)",
|
|
8974
9150
|
active: room.local?.micEnabled === true,
|
|
8975
9151
|
onClick: () => void room.toggleMicrophone(),
|
|
8976
|
-
children: room.local?.micEnabled === true ? /* @__PURE__ */
|
|
9152
|
+
children: room.local?.micEnabled === true ? /* @__PURE__ */ jsx5(MicIcon, {}) : /* @__PURE__ */ jsx5(MicOffIcon, {})
|
|
8977
9153
|
}
|
|
8978
9154
|
),
|
|
8979
|
-
/* @__PURE__ */
|
|
9155
|
+
/* @__PURE__ */ jsx5(
|
|
8980
9156
|
ControlButton,
|
|
8981
9157
|
{
|
|
8982
9158
|
label: room.local?.cameraEnabled === true ? "Stop video (\u2318E)" : "Start video (\u2318E)",
|
|
8983
9159
|
active: room.local?.cameraEnabled === true,
|
|
8984
9160
|
onClick: () => void room.toggleCamera(),
|
|
8985
|
-
children: room.local?.cameraEnabled === true ? /* @__PURE__ */
|
|
9161
|
+
children: room.local?.cameraEnabled === true ? /* @__PURE__ */ jsx5(CameraIcon, {}) : /* @__PURE__ */ jsx5(CameraOffIcon, {})
|
|
8986
9162
|
}
|
|
8987
9163
|
),
|
|
8988
|
-
room.canShareScreen || room.local?.screenSharing === true ? /* @__PURE__ */
|
|
9164
|
+
room.canShareScreen || room.local?.screenSharing === true ? /* @__PURE__ */ jsx5(
|
|
8989
9165
|
ControlButton,
|
|
8990
9166
|
{
|
|
8991
9167
|
label: room.local?.screenSharing === true ? "Stop sharing" : "Share screen",
|
|
8992
9168
|
active: room.local?.screenSharing === true,
|
|
8993
9169
|
onClick: () => void room.toggleScreenShare(),
|
|
8994
|
-
children: /* @__PURE__ */
|
|
9170
|
+
children: /* @__PURE__ */ jsx5(ScreenShareIcon, {})
|
|
8995
9171
|
}
|
|
8996
9172
|
) : null,
|
|
8997
9173
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
8998
|
-
/* @__PURE__ */
|
|
9174
|
+
/* @__PURE__ */ jsx5(
|
|
8999
9175
|
ControlButton,
|
|
9000
9176
|
{
|
|
9001
9177
|
label: "Send a reaction",
|
|
9002
9178
|
active: popover === "reactions",
|
|
9003
9179
|
onClick: () => setPopover(popover === "reactions" ? "none" : "reactions"),
|
|
9004
|
-
children: /* @__PURE__ */
|
|
9180
|
+
children: /* @__PURE__ */ jsx5(SmileIcon, {})
|
|
9005
9181
|
}
|
|
9006
9182
|
),
|
|
9007
|
-
popover === "reactions" ? /* @__PURE__ */
|
|
9183
|
+
popover === "reactions" ? /* @__PURE__ */ jsx5(Popover, { label: "Reactions", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsx5("div", { className: "mx-meet__emoji-bar", children: MEET_REACTIONS.map((emoji) => /* @__PURE__ */ jsx5(
|
|
9008
9184
|
"button",
|
|
9009
9185
|
{
|
|
9010
9186
|
type: "button",
|
|
@@ -9016,18 +9192,18 @@ function ControlBar({ onLeave }) {
|
|
|
9016
9192
|
emoji
|
|
9017
9193
|
)) }) }) : null
|
|
9018
9194
|
] }),
|
|
9019
|
-
/* @__PURE__ */
|
|
9195
|
+
/* @__PURE__ */ jsx5(
|
|
9020
9196
|
ControlButton,
|
|
9021
9197
|
{
|
|
9022
9198
|
label: room.local?.handRaised === true ? "Lower hand (\u2318\u2325H)" : "Raise hand (\u2318\u2325H)",
|
|
9023
9199
|
active: room.local?.handRaised === true,
|
|
9024
9200
|
onClick: () => void room.toggleHand(),
|
|
9025
|
-
children: /* @__PURE__ */
|
|
9201
|
+
children: /* @__PURE__ */ jsx5(HandIcon, {})
|
|
9026
9202
|
}
|
|
9027
9203
|
),
|
|
9028
9204
|
/* @__PURE__ */ jsxs3(ControlButton, { label: "Chat (\u2318\u2325C)", active: panel === "chat", onClick: () => toggle("chat"), children: [
|
|
9029
|
-
/* @__PURE__ */
|
|
9030
|
-
unread > 0 ? /* @__PURE__ */
|
|
9205
|
+
/* @__PURE__ */ jsx5(ChatIcon, {}),
|
|
9206
|
+
unread > 0 ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
9031
9207
|
] }),
|
|
9032
9208
|
/* @__PURE__ */ jsxs3(
|
|
9033
9209
|
ControlButton,
|
|
@@ -9036,32 +9212,32 @@ function ControlBar({ onLeave }) {
|
|
|
9036
9212
|
active: panel === "people",
|
|
9037
9213
|
onClick: () => toggle("people"),
|
|
9038
9214
|
children: [
|
|
9039
|
-
/* @__PURE__ */
|
|
9040
|
-
lobby.waiting.length > 0 || controls.isHost && queue.length > 0 ? /* @__PURE__ */
|
|
9215
|
+
/* @__PURE__ */ jsx5(PeopleIcon, {}),
|
|
9216
|
+
lobby.waiting.length > 0 || controls.isHost && queue.length > 0 ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
|
|
9041
9217
|
]
|
|
9042
9218
|
}
|
|
9043
9219
|
),
|
|
9044
|
-
/* @__PURE__ */
|
|
9220
|
+
/* @__PURE__ */ jsx5(
|
|
9045
9221
|
ActivitiesControl,
|
|
9046
9222
|
{
|
|
9047
9223
|
active: whiteboard ? "whiteboard" : panel === "polls" || panel === "qa" || panel === "breakouts" ? panel : null,
|
|
9048
9224
|
onOpen: openActivity
|
|
9049
9225
|
}
|
|
9050
9226
|
),
|
|
9051
|
-
/* @__PURE__ */
|
|
9052
|
-
recording.canStart ? /* @__PURE__ */
|
|
9053
|
-
recording.canStop ? /* @__PURE__ */
|
|
9227
|
+
/* @__PURE__ */ jsx5(AiControl, { active: panel === "ai", onToggle: () => toggle("ai") }),
|
|
9228
|
+
recording.canStart ? /* @__PURE__ */ jsx5(ControlButton, { label: "Start recording", onClick: () => void recording.start(), children: /* @__PURE__ */ jsx5(RecordIcon, {}) }) : null,
|
|
9229
|
+
recording.canStop ? /* @__PURE__ */ jsx5(ControlButton, { label: "Stop recording", active: true, onClick: () => void recording.stop(), children: /* @__PURE__ */ jsx5(RecordIcon, {}) }) : null,
|
|
9054
9230
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
9055
|
-
/* @__PURE__ */
|
|
9231
|
+
/* @__PURE__ */ jsx5(
|
|
9056
9232
|
ControlButton,
|
|
9057
9233
|
{
|
|
9058
9234
|
label: "More options",
|
|
9059
9235
|
active: popover === "more" || panel === "settings",
|
|
9060
9236
|
onClick: () => setPopover(popover === "more" ? "none" : "more"),
|
|
9061
|
-
children: /* @__PURE__ */
|
|
9237
|
+
children: /* @__PURE__ */ jsx5(MoreIcon, {})
|
|
9062
9238
|
}
|
|
9063
9239
|
),
|
|
9064
|
-
popover === "more" ? /* @__PURE__ */
|
|
9240
|
+
popover === "more" ? /* @__PURE__ */ jsx5(Popover, { label: "More options", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
|
|
9065
9241
|
/* @__PURE__ */ jsxs3(
|
|
9066
9242
|
MenuItem,
|
|
9067
9243
|
{
|
|
@@ -9070,7 +9246,7 @@ function ControlBar({ onLeave }) {
|
|
|
9070
9246
|
setPanel("settings");
|
|
9071
9247
|
},
|
|
9072
9248
|
children: [
|
|
9073
|
-
/* @__PURE__ */
|
|
9249
|
+
/* @__PURE__ */ jsx5(SettingsIcon, { width: 16, height: 16 }),
|
|
9074
9250
|
" Settings"
|
|
9075
9251
|
]
|
|
9076
9252
|
}
|
|
@@ -9083,13 +9259,13 @@ function ControlBar({ onLeave }) {
|
|
|
9083
9259
|
setShortcuts(true);
|
|
9084
9260
|
},
|
|
9085
9261
|
children: [
|
|
9086
|
-
/* @__PURE__ */
|
|
9262
|
+
/* @__PURE__ */ jsx5(KeyboardIcon, { width: 16, height: 16 }),
|
|
9087
9263
|
" Keyboard shortcuts"
|
|
9088
9264
|
]
|
|
9089
9265
|
}
|
|
9090
9266
|
),
|
|
9091
9267
|
controls.isHost ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
9092
|
-
/* @__PURE__ */
|
|
9268
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__menu-sep", role: "separator" }),
|
|
9093
9269
|
/* @__PURE__ */ jsxs3(
|
|
9094
9270
|
MenuItem,
|
|
9095
9271
|
{
|
|
@@ -9098,7 +9274,7 @@ function ControlBar({ onLeave }) {
|
|
|
9098
9274
|
void controls.run({ action: "mute_all" });
|
|
9099
9275
|
},
|
|
9100
9276
|
children: [
|
|
9101
|
-
/* @__PURE__ */
|
|
9277
|
+
/* @__PURE__ */ jsx5(MicOffIcon, { width: 16, height: 16 }),
|
|
9102
9278
|
" Mute everyone"
|
|
9103
9279
|
]
|
|
9104
9280
|
}
|
|
@@ -9111,7 +9287,7 @@ function ControlBar({ onLeave }) {
|
|
|
9111
9287
|
void controls.run({ action: "ask_all_unmute" });
|
|
9112
9288
|
},
|
|
9113
9289
|
children: [
|
|
9114
|
-
/* @__PURE__ */
|
|
9290
|
+
/* @__PURE__ */ jsx5(MicIcon, { width: 16, height: 16 }),
|
|
9115
9291
|
" Ask everyone to unmute"
|
|
9116
9292
|
]
|
|
9117
9293
|
}
|
|
@@ -9124,7 +9300,7 @@ function ControlBar({ onLeave }) {
|
|
|
9124
9300
|
void controls.run({ action: "lower_all_hands" });
|
|
9125
9301
|
},
|
|
9126
9302
|
children: [
|
|
9127
|
-
/* @__PURE__ */
|
|
9303
|
+
/* @__PURE__ */ jsx5(HandIcon, { width: 16, height: 16 }),
|
|
9128
9304
|
" Lower all hands (",
|
|
9129
9305
|
queue.length,
|
|
9130
9306
|
")"
|
|
@@ -9139,7 +9315,7 @@ function ControlBar({ onLeave }) {
|
|
|
9139
9315
|
void controls.run({ action: "spotlight", identity: null });
|
|
9140
9316
|
},
|
|
9141
9317
|
children: [
|
|
9142
|
-
/* @__PURE__ */
|
|
9318
|
+
/* @__PURE__ */ jsx5(SpotlightIcon, { width: 16, height: 16 }),
|
|
9143
9319
|
" Remove spotlight"
|
|
9144
9320
|
]
|
|
9145
9321
|
}
|
|
@@ -9147,7 +9323,7 @@ function ControlBar({ onLeave }) {
|
|
|
9147
9323
|
] }) : null
|
|
9148
9324
|
] }) }) : null
|
|
9149
9325
|
] }),
|
|
9150
|
-
/* @__PURE__ */
|
|
9326
|
+
/* @__PURE__ */ jsx5(
|
|
9151
9327
|
ControlButton,
|
|
9152
9328
|
{
|
|
9153
9329
|
label: "Leave",
|
|
@@ -9156,7 +9332,7 @@ function ControlBar({ onLeave }) {
|
|
|
9156
9332
|
void room.leave();
|
|
9157
9333
|
onLeave?.();
|
|
9158
9334
|
},
|
|
9159
|
-
children: /* @__PURE__ */
|
|
9335
|
+
children: /* @__PURE__ */ jsx5(PhoneOffIcon, {})
|
|
9160
9336
|
}
|
|
9161
9337
|
)
|
|
9162
9338
|
] })
|
|
@@ -9167,12 +9343,12 @@ function useUnreadChat(open) {
|
|
|
9167
9343
|
const chat = snapshot?.chat ?? [];
|
|
9168
9344
|
const local = snapshot?.localIdentity ?? null;
|
|
9169
9345
|
const [seen, setSeen] = useState4(0);
|
|
9170
|
-
|
|
9346
|
+
useEffect5(() => {
|
|
9171
9347
|
if (open) setSeen(chat.length);
|
|
9172
9348
|
}, [open, chat.length]);
|
|
9173
9349
|
const loaded = snapshot?.chatLoaded === true;
|
|
9174
9350
|
const [baseline, setBaseline] = useState4(null);
|
|
9175
|
-
|
|
9351
|
+
useEffect5(() => {
|
|
9176
9352
|
if (loaded && baseline === null) setBaseline(chat.length);
|
|
9177
9353
|
}, [loaded, baseline, chat.length]);
|
|
9178
9354
|
if (open) return 0;
|
|
@@ -9185,7 +9361,7 @@ function Popover({
|
|
|
9185
9361
|
children,
|
|
9186
9362
|
placement = "up"
|
|
9187
9363
|
}) {
|
|
9188
|
-
const ref =
|
|
9364
|
+
const ref = useRef5(null);
|
|
9189
9365
|
const [style, setStyle] = useState4({
|
|
9190
9366
|
position: "fixed",
|
|
9191
9367
|
top: 0,
|
|
@@ -9237,7 +9413,7 @@ function Popover({
|
|
|
9237
9413
|
window.removeEventListener("scroll", place, true);
|
|
9238
9414
|
};
|
|
9239
9415
|
}, [placement]);
|
|
9240
|
-
|
|
9416
|
+
useEffect5(() => {
|
|
9241
9417
|
const onKey = (event) => {
|
|
9242
9418
|
if (event.key === "Escape") onClose();
|
|
9243
9419
|
};
|
|
@@ -9252,14 +9428,14 @@ function Popover({
|
|
|
9252
9428
|
window.removeEventListener("pointerdown", onPointer);
|
|
9253
9429
|
};
|
|
9254
9430
|
}, [onClose]);
|
|
9255
|
-
return /* @__PURE__ */
|
|
9431
|
+
return /* @__PURE__ */ jsx5("div", { ref, className: "mx-meet__popover", style, role: "dialog", "aria-label": label, children });
|
|
9256
9432
|
}
|
|
9257
9433
|
function MenuItem({
|
|
9258
9434
|
onSelect,
|
|
9259
9435
|
danger = false,
|
|
9260
9436
|
children
|
|
9261
9437
|
}) {
|
|
9262
|
-
return /* @__PURE__ */
|
|
9438
|
+
return /* @__PURE__ */ jsx5(
|
|
9263
9439
|
"button",
|
|
9264
9440
|
{
|
|
9265
9441
|
type: "button",
|
|
@@ -9271,13 +9447,13 @@ function MenuItem({
|
|
|
9271
9447
|
);
|
|
9272
9448
|
}
|
|
9273
9449
|
function Toast({ text: text3, failed, onDone }) {
|
|
9274
|
-
|
|
9450
|
+
useEffect5(() => {
|
|
9275
9451
|
const timer = setTimeout(onDone, failed ? 7e3 : 4e3);
|
|
9276
9452
|
return () => clearTimeout(timer);
|
|
9277
9453
|
}, [text3, failed, onDone]);
|
|
9278
9454
|
return /* @__PURE__ */ jsxs3("div", { className: failed ? "mx-meet__toast mx-meet__toast--failed" : "mx-meet__toast", role: "status", children: [
|
|
9279
|
-
/* @__PURE__ */
|
|
9280
|
-
/* @__PURE__ */
|
|
9455
|
+
/* @__PURE__ */ jsx5("span", { children: text3 }),
|
|
9456
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: onDone, children: /* @__PURE__ */ jsx5(CloseIcon, { width: 14, height: 14 }) })
|
|
9281
9457
|
] });
|
|
9282
9458
|
}
|
|
9283
9459
|
function MeetingOverlays() {
|
|
@@ -9285,14 +9461,14 @@ function MeetingOverlays() {
|
|
|
9285
9461
|
const { notice, dismiss } = useModerationNotice();
|
|
9286
9462
|
const room = useRoom();
|
|
9287
9463
|
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
9288
|
-
/* @__PURE__ */
|
|
9464
|
+
/* @__PURE__ */ jsx5(ReactionOverlay, { reactions }),
|
|
9289
9465
|
notice !== null && notice.kind !== "removed" ? (
|
|
9290
9466
|
// A host's request ("the host is asking you to unmute"), not an error:
|
|
9291
9467
|
// an assertive status, so it is announced at once without being filed
|
|
9292
9468
|
// as a failure (design-system error-box census).
|
|
9293
9469
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__notice-bar", role: "status", "aria-live": "assertive", children: [
|
|
9294
|
-
/* @__PURE__ */
|
|
9295
|
-
notice.kind === "ask-unmute" && room.local?.micEnabled !== true ? /* @__PURE__ */
|
|
9470
|
+
/* @__PURE__ */ jsx5("span", { children: notice.text }),
|
|
9471
|
+
notice.kind === "ask-unmute" && room.local?.micEnabled !== true ? /* @__PURE__ */ jsx5(
|
|
9296
9472
|
"button",
|
|
9297
9473
|
{
|
|
9298
9474
|
type: "button",
|
|
@@ -9304,20 +9480,20 @@ function MeetingOverlays() {
|
|
|
9304
9480
|
children: "Unmute"
|
|
9305
9481
|
}
|
|
9306
9482
|
) : null,
|
|
9307
|
-
/* @__PURE__ */
|
|
9483
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: dismiss, children: /* @__PURE__ */ jsx5(CloseIcon, { width: 14, height: 14 }) })
|
|
9308
9484
|
] })
|
|
9309
9485
|
) : null
|
|
9310
9486
|
] });
|
|
9311
9487
|
}
|
|
9312
9488
|
function ShortcutsSheet({ onClose }) {
|
|
9313
|
-
|
|
9489
|
+
useEffect5(() => {
|
|
9314
9490
|
const onKey = (event) => {
|
|
9315
9491
|
if (event.key === "Escape") onClose();
|
|
9316
9492
|
};
|
|
9317
9493
|
window.addEventListener("keydown", onKey);
|
|
9318
9494
|
return () => window.removeEventListener("keydown", onKey);
|
|
9319
9495
|
}, [onClose]);
|
|
9320
|
-
return /* @__PURE__ */
|
|
9496
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet__sheet-backdrop", onClick: onClose, children: /* @__PURE__ */ jsxs3(
|
|
9321
9497
|
"div",
|
|
9322
9498
|
{
|
|
9323
9499
|
className: "mx-meet__sheet",
|
|
@@ -9326,12 +9502,12 @@ function ShortcutsSheet({ onClose }) {
|
|
|
9326
9502
|
onClick: (event) => event.stopPropagation(),
|
|
9327
9503
|
children: [
|
|
9328
9504
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__panel-head", children: [
|
|
9329
|
-
/* @__PURE__ */
|
|
9330
|
-
/* @__PURE__ */
|
|
9505
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__panel-title", children: "Keyboard shortcuts" }),
|
|
9506
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: "Close", onClick: onClose, children: /* @__PURE__ */ jsx5(CloseIcon, { width: 16, height: 16 }) })
|
|
9331
9507
|
] }),
|
|
9332
|
-
/* @__PURE__ */
|
|
9333
|
-
/* @__PURE__ */
|
|
9334
|
-
/* @__PURE__ */
|
|
9508
|
+
/* @__PURE__ */ jsx5("dl", { className: "mx-meet__shortcuts", children: MEET_SHORTCUTS.map((shortcut) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__shortcut", children: [
|
|
9509
|
+
/* @__PURE__ */ jsx5("dt", { children: shortcut.label }),
|
|
9510
|
+
/* @__PURE__ */ jsx5("dd", { children: /* @__PURE__ */ jsx5("kbd", { className: "mx-meet__kbd", children: shortcut.keys }) })
|
|
9335
9511
|
] }, shortcut.id)) })
|
|
9336
9512
|
]
|
|
9337
9513
|
}
|
|
@@ -9341,14 +9517,14 @@ function AiControl({ active, onToggle }) {
|
|
|
9341
9517
|
const snapshot = useMeetSnapshot();
|
|
9342
9518
|
const meeting = snapshot?.meeting ?? null;
|
|
9343
9519
|
if (meeting === null || !meeting.aiEnabled) return null;
|
|
9344
|
-
return /* @__PURE__ */
|
|
9520
|
+
return /* @__PURE__ */ jsx5(ControlButton, { label: "Meeting assistant", active, onClick: onToggle, children: /* @__PURE__ */ jsx5(SparklesIcon, {}) });
|
|
9345
9521
|
}
|
|
9346
9522
|
function PanelShell({
|
|
9347
9523
|
title,
|
|
9348
9524
|
onClose,
|
|
9349
9525
|
children
|
|
9350
9526
|
}) {
|
|
9351
|
-
const ref =
|
|
9527
|
+
const ref = useRef5(null);
|
|
9352
9528
|
useLayoutEffect(() => {
|
|
9353
9529
|
const panel = ref.current;
|
|
9354
9530
|
const root = panel?.closest(".mx-meet");
|
|
@@ -9363,10 +9539,10 @@ function PanelShell({
|
|
|
9363
9539
|
}, []);
|
|
9364
9540
|
return /* @__PURE__ */ jsxs3("aside", { ref, className: "mx-meet__panel", "aria-label": title, children: [
|
|
9365
9541
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__panel-head", children: [
|
|
9366
|
-
/* @__PURE__ */
|
|
9367
|
-
/* @__PURE__ */
|
|
9542
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__panel-title", children: title }),
|
|
9543
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: "Close panel", onClick: onClose, children: /* @__PURE__ */ jsx5(CloseIcon, { width: 16, height: 16 }) })
|
|
9368
9544
|
] }),
|
|
9369
|
-
/* @__PURE__ */
|
|
9545
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__panel-body", children })
|
|
9370
9546
|
] });
|
|
9371
9547
|
}
|
|
9372
9548
|
function ChatPanel({
|
|
@@ -9378,15 +9554,15 @@ function ChatPanel({
|
|
|
9378
9554
|
const room = useRoom();
|
|
9379
9555
|
const [draft, setDraft] = useState4("");
|
|
9380
9556
|
const [recipient, setRecipient] = useState4(to);
|
|
9381
|
-
const listRef =
|
|
9557
|
+
const listRef = useRef5(null);
|
|
9382
9558
|
const messages = snapshot?.chat ?? [];
|
|
9383
9559
|
const local = snapshot?.localIdentity ?? null;
|
|
9384
9560
|
const people = (snapshot?.participants ?? []).filter(
|
|
9385
9561
|
(participant) => !participant.isLocal && !participant.isAgent
|
|
9386
9562
|
);
|
|
9387
9563
|
const recipientName = recipient === null ? null : people.find((p) => p.identity === recipient)?.displayName ?? null;
|
|
9388
|
-
|
|
9389
|
-
|
|
9564
|
+
useEffect5(() => setRecipient(to), [to]);
|
|
9565
|
+
useEffect5(() => {
|
|
9390
9566
|
const list = listRef.current;
|
|
9391
9567
|
if (list !== null) list.scrollTop = list.scrollHeight;
|
|
9392
9568
|
}, [messages.length]);
|
|
@@ -9396,9 +9572,9 @@ function ChatPanel({
|
|
|
9396
9572
|
};
|
|
9397
9573
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Chat", onClose, children: [
|
|
9398
9574
|
/* @__PURE__ */ jsxs3("ul", { className: "mx-meet__chat", ref: listRef, children: [
|
|
9399
|
-
snapshot?.chatHistoryError != null ? /* @__PURE__ */
|
|
9400
|
-
snapshot?.chatLoaded !== true && messages.length === 0 ? /* @__PURE__ */
|
|
9401
|
-
messages.map((message) => /* @__PURE__ */
|
|
9575
|
+
snapshot?.chatHistoryError != null ? /* @__PURE__ */ jsx5("li", { className: "mx-meet__panel-note", children: snapshot.chatHistoryError }) : null,
|
|
9576
|
+
snapshot?.chatLoaded !== true && messages.length === 0 ? /* @__PURE__ */ jsx5("li", { className: "mx-meet__panel-note", children: "Reading earlier messages\u2026" }) : messages.length === 0 && snapshot?.chatHistoryError == null ? /* @__PURE__ */ jsx5("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,
|
|
9577
|
+
messages.map((message) => /* @__PURE__ */ jsx5(ChatLine, { message, local, people }, message.id))
|
|
9402
9578
|
] }),
|
|
9403
9579
|
/* @__PURE__ */ jsxs3(
|
|
9404
9580
|
"form",
|
|
@@ -9421,7 +9597,7 @@ function ChatPanel({
|
|
|
9421
9597
|
value: recipient ?? "",
|
|
9422
9598
|
onChange: (event) => choose(event.target.value === "" ? null : event.target.value),
|
|
9423
9599
|
children: [
|
|
9424
|
-
/* @__PURE__ */
|
|
9600
|
+
/* @__PURE__ */ jsx5("option", { value: "", children: "Everyone" }),
|
|
9425
9601
|
people.map((participant) => /* @__PURE__ */ jsxs3("option", { value: participant.identity, children: [
|
|
9426
9602
|
participant.displayName,
|
|
9427
9603
|
" (private)"
|
|
@@ -9430,7 +9606,7 @@ function ChatPanel({
|
|
|
9430
9606
|
}
|
|
9431
9607
|
) : null,
|
|
9432
9608
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__composer-row", children: [
|
|
9433
|
-
/* @__PURE__ */
|
|
9609
|
+
/* @__PURE__ */ jsx5(
|
|
9434
9610
|
"input",
|
|
9435
9611
|
{
|
|
9436
9612
|
className: "mx-meet__input",
|
|
@@ -9441,7 +9617,7 @@ function ChatPanel({
|
|
|
9441
9617
|
maxLength: 4e3
|
|
9442
9618
|
}
|
|
9443
9619
|
),
|
|
9444
|
-
/* @__PURE__ */
|
|
9620
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Send" })
|
|
9445
9621
|
] }),
|
|
9446
9622
|
recipientName !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__panel-note", children: [
|
|
9447
9623
|
"Only ",
|
|
@@ -9471,16 +9647,16 @@ function ChatLine({
|
|
|
9471
9647
|
].filter(Boolean).join(" "),
|
|
9472
9648
|
children: [
|
|
9473
9649
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__chat-meta", children: [
|
|
9474
|
-
/* @__PURE__ */
|
|
9650
|
+
/* @__PURE__ */ jsx5("strong", { children: mine ? "You" : message.displayName }),
|
|
9475
9651
|
counterpart !== null ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__chat-private", children: [
|
|
9476
9652
|
"to ",
|
|
9477
9653
|
counterpart,
|
|
9478
9654
|
" \xB7 private"
|
|
9479
9655
|
] }) : null,
|
|
9480
|
-
/* @__PURE__ */
|
|
9656
|
+
/* @__PURE__ */ jsx5("time", { dateTime: message.at, children: clockOf(message.at) })
|
|
9481
9657
|
] }),
|
|
9482
|
-
/* @__PURE__ */
|
|
9483
|
-
message.failed !== void 0 ? /* @__PURE__ */
|
|
9658
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__chat-text", children: message.text }),
|
|
9659
|
+
message.failed !== void 0 ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__chat-failed", children: message.failed }) : privateTo === null && message.saved === false ? /* @__PURE__ */ jsx5("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
|
|
9484
9660
|
]
|
|
9485
9661
|
}
|
|
9486
9662
|
);
|
|
@@ -9500,14 +9676,14 @@ function PeoplePanel({
|
|
|
9500
9676
|
const needle = query.trim().toLowerCase();
|
|
9501
9677
|
const shown = needle.length === 0 ? everyone : everyone.filter((participant) => participant.displayName.toLowerCase().includes(needle));
|
|
9502
9678
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: `People (${everyone.length})`, onClose, children: [
|
|
9503
|
-
/* @__PURE__ */
|
|
9679
|
+
/* @__PURE__ */ jsx5(LobbyPanel, {}),
|
|
9504
9680
|
queue.length > 0 ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Raised hands", children: [
|
|
9505
9681
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__section-head", children: [
|
|
9506
9682
|
/* @__PURE__ */ jsxs3("h3", { className: "mx-meet__section-title", children: [
|
|
9507
9683
|
"Raised hands \xB7 ",
|
|
9508
9684
|
queue.length
|
|
9509
9685
|
] }),
|
|
9510
|
-
controls.isHost ? /* @__PURE__ */
|
|
9686
|
+
controls.isHost ? /* @__PURE__ */ jsx5(
|
|
9511
9687
|
"button",
|
|
9512
9688
|
{
|
|
9513
9689
|
type: "button",
|
|
@@ -9517,13 +9693,13 @@ function PeoplePanel({
|
|
|
9517
9693
|
}
|
|
9518
9694
|
) : null
|
|
9519
9695
|
] }),
|
|
9520
|
-
/* @__PURE__ */
|
|
9521
|
-
/* @__PURE__ */
|
|
9696
|
+
/* @__PURE__ */ jsx5("ol", { className: "mx-meet__queue", children: queue.map((participant) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__person", children: [
|
|
9697
|
+
/* @__PURE__ */ jsx5(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 28 }),
|
|
9522
9698
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
9523
9699
|
participant.displayName,
|
|
9524
|
-
participant.identity === local ? /* @__PURE__ */
|
|
9700
|
+
participant.identity === local ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__you", children: " (you)" }) : null
|
|
9525
9701
|
] }),
|
|
9526
|
-
controls.isHost || participant.identity === local ? /* @__PURE__ */
|
|
9702
|
+
controls.isHost || participant.identity === local ? /* @__PURE__ */ jsx5(
|
|
9527
9703
|
"button",
|
|
9528
9704
|
{
|
|
9529
9705
|
type: "button",
|
|
@@ -9536,7 +9712,7 @@ function PeoplePanel({
|
|
|
9536
9712
|
] }) : null,
|
|
9537
9713
|
controls.isHost && everyone.length > 1 ? /* @__PURE__ */ jsxs3("div", { className: "mx-meet__bulk", children: [
|
|
9538
9714
|
/* @__PURE__ */ jsxs3("button", { type: "button", className: "mx-meet__chip", onClick: () => void controls.run({ action: "mute_all" }), children: [
|
|
9539
|
-
/* @__PURE__ */
|
|
9715
|
+
/* @__PURE__ */ jsx5(MicOffIcon, { width: 14, height: 14 }),
|
|
9540
9716
|
" Mute all"
|
|
9541
9717
|
] }),
|
|
9542
9718
|
/* @__PURE__ */ jsxs3(
|
|
@@ -9546,15 +9722,15 @@ function PeoplePanel({
|
|
|
9546
9722
|
className: "mx-meet__chip",
|
|
9547
9723
|
onClick: () => void controls.run({ action: "ask_all_unmute" }),
|
|
9548
9724
|
children: [
|
|
9549
|
-
/* @__PURE__ */
|
|
9725
|
+
/* @__PURE__ */ jsx5(MicIcon, { width: 14, height: 14 }),
|
|
9550
9726
|
" Ask all to unmute"
|
|
9551
9727
|
]
|
|
9552
9728
|
}
|
|
9553
9729
|
)
|
|
9554
9730
|
] }) : null,
|
|
9555
9731
|
everyone.length > 4 ? /* @__PURE__ */ jsxs3("label", { className: "mx-meet__search", children: [
|
|
9556
|
-
/* @__PURE__ */
|
|
9557
|
-
/* @__PURE__ */
|
|
9732
|
+
/* @__PURE__ */ jsx5(SearchIcon, { width: 16, height: 16 }),
|
|
9733
|
+
/* @__PURE__ */ jsx5(
|
|
9558
9734
|
"input",
|
|
9559
9735
|
{
|
|
9560
9736
|
className: "mx-meet__input mx-meet__input--bare",
|
|
@@ -9565,31 +9741,31 @@ function PeoplePanel({
|
|
|
9565
9741
|
}
|
|
9566
9742
|
)
|
|
9567
9743
|
] }) : null,
|
|
9568
|
-
controls.notice !== null ? /* @__PURE__ */
|
|
9744
|
+
controls.notice !== null ? /* @__PURE__ */ jsx5("p", { className: controls.notice.failed ? "mx-meet__error" : "mx-meet__notice", role: "status", children: controls.notice.text }) : null,
|
|
9569
9745
|
/* @__PURE__ */ jsxs3("ul", { className: "mx-meet__people", children: [
|
|
9570
9746
|
shown.map((participant) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__person", children: [
|
|
9571
|
-
/* @__PURE__ */
|
|
9747
|
+
/* @__PURE__ */ jsx5(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 32 }),
|
|
9572
9748
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
9573
9749
|
participant.displayName,
|
|
9574
|
-
participant.identity === local ? /* @__PURE__ */
|
|
9575
|
-
/* @__PURE__ */
|
|
9576
|
-
isNoteTaker(participant) ? /* @__PURE__ */
|
|
9577
|
-
snapshot?.spotlight === participant.identity ? /* @__PURE__ */
|
|
9750
|
+
participant.identity === local ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__you", children: " (you)" }) : null,
|
|
9751
|
+
/* @__PURE__ */ jsx5(RoleBadge, { role: participant.identity === local ? myRole : participant.role }),
|
|
9752
|
+
isNoteTaker(participant) ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Meeting assistant" }) : null,
|
|
9753
|
+
snapshot?.spotlight === participant.identity ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Spotlight" }) : null
|
|
9578
9754
|
] }),
|
|
9579
|
-
participant.handRaised ? /* @__PURE__ */
|
|
9580
|
-
!participant.micEnabled && !isNoteTaker(participant) ? /* @__PURE__ */
|
|
9581
|
-
/* @__PURE__ */
|
|
9755
|
+
participant.handRaised ? /* @__PURE__ */ jsx5(HandIcon, { width: 14, height: 14 }) : null,
|
|
9756
|
+
!participant.micEnabled && !isNoteTaker(participant) ? /* @__PURE__ */ jsx5(MicOffIcon, { width: 14, height: 14 }) : null,
|
|
9757
|
+
/* @__PURE__ */ jsx5(QualityBars, { quality: participant.quality }),
|
|
9582
9758
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
|
|
9583
|
-
/* @__PURE__ */
|
|
9759
|
+
/* @__PURE__ */ jsx5(
|
|
9584
9760
|
ControlButton,
|
|
9585
9761
|
{
|
|
9586
9762
|
label: `More for ${participant.displayName}`,
|
|
9587
9763
|
active: menuFor === participant.identity,
|
|
9588
9764
|
onClick: () => setMenuFor(menuFor === participant.identity ? null : participant.identity),
|
|
9589
|
-
children: /* @__PURE__ */
|
|
9765
|
+
children: /* @__PURE__ */ jsx5(MoreIcon, { width: 16, height: 16 })
|
|
9590
9766
|
}
|
|
9591
9767
|
),
|
|
9592
|
-
menuFor === participant.identity ? /* @__PURE__ */
|
|
9768
|
+
menuFor === participant.identity ? /* @__PURE__ */ jsx5(
|
|
9593
9769
|
PersonMenu,
|
|
9594
9770
|
{
|
|
9595
9771
|
participant,
|
|
@@ -9606,7 +9782,7 @@ function PeoplePanel({
|
|
|
9606
9782
|
"\u201D."
|
|
9607
9783
|
] }) : null
|
|
9608
9784
|
] }),
|
|
9609
|
-
snapshot?.meeting !== null && snapshot?.meeting !== void 0 ? /* @__PURE__ */
|
|
9785
|
+
snapshot?.meeting !== null && snapshot?.meeting !== void 0 ? /* @__PURE__ */ jsx5(GuestRecordAccessControl, { meeting: snapshot.meeting }) : null
|
|
9610
9786
|
] });
|
|
9611
9787
|
}
|
|
9612
9788
|
function PersonMenu({
|
|
@@ -9633,10 +9809,10 @@ function PersonMenu({
|
|
|
9633
9809
|
else setRefused(true);
|
|
9634
9810
|
});
|
|
9635
9811
|
};
|
|
9636
|
-
const refusal2 = refused && controls.notice?.failed === true ? /* @__PURE__ */
|
|
9812
|
+
const refusal2 = refused && controls.notice?.failed === true ? /* @__PURE__ */ jsx5(ErrorBox, { as: "p", className: "mx-meet__error", message: controls.notice.text, operation: "Change this participant", origin: "meet/components", children: controls.notice.text }) : null;
|
|
9637
9813
|
if (mode === "rename" || mode === "report") {
|
|
9638
9814
|
const renaming = mode === "rename";
|
|
9639
|
-
return /* @__PURE__ */
|
|
9815
|
+
return /* @__PURE__ */ jsx5(Popover, { label: renaming ? "Rename" : "Report", onClose, placement, children: /* @__PURE__ */ jsxs3(
|
|
9640
9816
|
"form",
|
|
9641
9817
|
{
|
|
9642
9818
|
className: "mx-meet__menu-form",
|
|
@@ -9649,8 +9825,8 @@ function PersonMenu({
|
|
|
9649
9825
|
},
|
|
9650
9826
|
children: [
|
|
9651
9827
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
9652
|
-
/* @__PURE__ */
|
|
9653
|
-
renaming ? /* @__PURE__ */
|
|
9828
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: renaming ? "Name shown in this meeting" : `What did ${participant.displayName} do?` }),
|
|
9829
|
+
renaming ? /* @__PURE__ */ jsx5(
|
|
9654
9830
|
"input",
|
|
9655
9831
|
{
|
|
9656
9832
|
className: "mx-meet__input",
|
|
@@ -9659,7 +9835,7 @@ function PersonMenu({
|
|
|
9659
9835
|
value: text3,
|
|
9660
9836
|
onChange: (event) => setText(event.target.value)
|
|
9661
9837
|
}
|
|
9662
|
-
) : /* @__PURE__ */
|
|
9838
|
+
) : /* @__PURE__ */ jsx5(
|
|
9663
9839
|
"textarea",
|
|
9664
9840
|
{
|
|
9665
9841
|
className: "mx-meet__input",
|
|
@@ -9673,8 +9849,8 @@ function PersonMenu({
|
|
|
9673
9849
|
] }),
|
|
9674
9850
|
refusal2,
|
|
9675
9851
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-actions", children: [
|
|
9676
|
-
/* @__PURE__ */
|
|
9677
|
-
/* @__PURE__ */
|
|
9852
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Back" }),
|
|
9853
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", disabled: text3.trim().length === 0 || controls.busy, children: renaming ? "Rename" : "Report" })
|
|
9678
9854
|
] })
|
|
9679
9855
|
]
|
|
9680
9856
|
}
|
|
@@ -9682,12 +9858,12 @@ function PersonMenu({
|
|
|
9682
9858
|
}
|
|
9683
9859
|
if (mode === "remove" || mode === "transfer") {
|
|
9684
9860
|
const removing = mode === "remove";
|
|
9685
|
-
return /* @__PURE__ */
|
|
9686
|
-
/* @__PURE__ */
|
|
9861
|
+
return /* @__PURE__ */ jsx5(Popover, { label: removing ? "Remove" : "Make host", onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-form", children: [
|
|
9862
|
+
/* @__PURE__ */ jsx5("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.` }),
|
|
9687
9863
|
refusal2,
|
|
9688
9864
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-actions", children: [
|
|
9689
|
-
/* @__PURE__ */
|
|
9690
|
-
/* @__PURE__ */
|
|
9865
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Cancel" }),
|
|
9866
|
+
/* @__PURE__ */ jsx5(
|
|
9691
9867
|
"button",
|
|
9692
9868
|
{
|
|
9693
9869
|
type: "button",
|
|
@@ -9700,7 +9876,7 @@ function PersonMenu({
|
|
|
9700
9876
|
] })
|
|
9701
9877
|
] }) });
|
|
9702
9878
|
}
|
|
9703
|
-
return /* @__PURE__ */
|
|
9879
|
+
return /* @__PURE__ */ jsx5(Popover, { label: `Options for ${participant.displayName}`, onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
|
|
9704
9880
|
/* @__PURE__ */ jsxs3(
|
|
9705
9881
|
MenuItem,
|
|
9706
9882
|
{
|
|
@@ -9709,7 +9885,7 @@ function PersonMenu({
|
|
|
9709
9885
|
onClose();
|
|
9710
9886
|
},
|
|
9711
9887
|
children: [
|
|
9712
|
-
/* @__PURE__ */
|
|
9888
|
+
/* @__PURE__ */ jsx5(PinIcon, { width: 16, height: 16 }),
|
|
9713
9889
|
" ",
|
|
9714
9890
|
pinned ? "Unpin" : "Pin for me"
|
|
9715
9891
|
]
|
|
@@ -9727,39 +9903,39 @@ function PersonMenu({
|
|
|
9727
9903
|
onClose();
|
|
9728
9904
|
},
|
|
9729
9905
|
children: [
|
|
9730
|
-
/* @__PURE__ */
|
|
9906
|
+
/* @__PURE__ */ jsx5(ChatIcon, { width: 16, height: 16 }),
|
|
9731
9907
|
" Message privately"
|
|
9732
9908
|
]
|
|
9733
9909
|
}
|
|
9734
9910
|
) : null,
|
|
9735
9911
|
controls.isHost ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "spotlight", identity: spotlit ? null : participant.identity }), children: [
|
|
9736
|
-
/* @__PURE__ */
|
|
9912
|
+
/* @__PURE__ */ jsx5(SpotlightIcon, { width: 16, height: 16 }),
|
|
9737
9913
|
" ",
|
|
9738
9914
|
spotlit ? "Remove spotlight" : "Spotlight for everyone"
|
|
9739
9915
|
] }) : null,
|
|
9740
9916
|
moderate ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
9741
|
-
/* @__PURE__ */
|
|
9917
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__menu-sep", role: "separator" }),
|
|
9742
9918
|
participant.micEnabled ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "mute", identity: participant.identity }), children: [
|
|
9743
|
-
/* @__PURE__ */
|
|
9919
|
+
/* @__PURE__ */ jsx5(MicOffIcon, { width: 16, height: 16 }),
|
|
9744
9920
|
" Mute"
|
|
9745
9921
|
] }) : !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "ask_unmute", identity: participant.identity }), children: [
|
|
9746
|
-
/* @__PURE__ */
|
|
9922
|
+
/* @__PURE__ */ jsx5(MicIcon, { width: 16, height: 16 }),
|
|
9747
9923
|
" Ask to unmute"
|
|
9748
9924
|
] }) : null,
|
|
9749
9925
|
participant.cameraEnabled ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "stop_video", identity: participant.identity }), children: [
|
|
9750
|
-
/* @__PURE__ */
|
|
9926
|
+
/* @__PURE__ */ jsx5(CameraOffIcon, { width: 16, height: 16 }),
|
|
9751
9927
|
" Stop video"
|
|
9752
9928
|
] }) : null,
|
|
9753
9929
|
participant.screenSharing ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "stop_screen", identity: participant.identity }), children: [
|
|
9754
|
-
/* @__PURE__ */
|
|
9930
|
+
/* @__PURE__ */ jsx5(ScreenShareIcon, { width: 16, height: 16 }),
|
|
9755
9931
|
" Stop screen share"
|
|
9756
9932
|
] }) : null,
|
|
9757
9933
|
participant.handRaised ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "lower_hand", identity: participant.identity }), children: [
|
|
9758
|
-
/* @__PURE__ */
|
|
9934
|
+
/* @__PURE__ */ jsx5(HandIcon, { width: 16, height: 16 }),
|
|
9759
9935
|
" Lower hand"
|
|
9760
9936
|
] }) : null,
|
|
9761
9937
|
hasAccount && !participant.isAgent && participant.role !== "cohost" ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "make_cohost", identity: participant.identity }), children: [
|
|
9762
|
-
/* @__PURE__ */
|
|
9938
|
+
/* @__PURE__ */ jsx5(PeopleIcon, { width: 16, height: 16 }),
|
|
9763
9939
|
" Make co-host"
|
|
9764
9940
|
] }) : null,
|
|
9765
9941
|
!participant.isAgent ? /* @__PURE__ */ jsxs3(
|
|
@@ -9770,18 +9946,18 @@ function PersonMenu({
|
|
|
9770
9946
|
setMode("rename");
|
|
9771
9947
|
},
|
|
9772
9948
|
children: [
|
|
9773
|
-
/* @__PURE__ */
|
|
9949
|
+
/* @__PURE__ */ jsx5(PencilIcon, { width: 16, height: 16 }),
|
|
9774
9950
|
" Rename"
|
|
9775
9951
|
]
|
|
9776
9952
|
}
|
|
9777
9953
|
) : null
|
|
9778
9954
|
] }) : null,
|
|
9779
9955
|
controls.isOwner && participant.role === "cohost" ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => act({ action: "revoke_cohost", identity: participant.identity }), children: [
|
|
9780
|
-
/* @__PURE__ */
|
|
9956
|
+
/* @__PURE__ */ jsx5(PeopleIcon, { width: 16, height: 16 }),
|
|
9781
9957
|
" Remove co-host"
|
|
9782
9958
|
] }) : null,
|
|
9783
9959
|
controls.isOwner && !self && hasAccount && !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { onSelect: () => setMode("transfer"), children: [
|
|
9784
|
-
/* @__PURE__ */
|
|
9960
|
+
/* @__PURE__ */ jsx5(SpotlightIcon, { width: 16, height: 16 }),
|
|
9785
9961
|
" Make host"
|
|
9786
9962
|
] }) : null,
|
|
9787
9963
|
self ? /* @__PURE__ */ jsxs3(
|
|
@@ -9792,7 +9968,7 @@ function PersonMenu({
|
|
|
9792
9968
|
setMode("rename");
|
|
9793
9969
|
},
|
|
9794
9970
|
children: [
|
|
9795
|
-
/* @__PURE__ */
|
|
9971
|
+
/* @__PURE__ */ jsx5(PencilIcon, { width: 16, height: 16 }),
|
|
9796
9972
|
" Rename yourself"
|
|
9797
9973
|
]
|
|
9798
9974
|
}
|
|
@@ -9805,13 +9981,13 @@ function PersonMenu({
|
|
|
9805
9981
|
setMode("report");
|
|
9806
9982
|
},
|
|
9807
9983
|
children: [
|
|
9808
|
-
/* @__PURE__ */
|
|
9984
|
+
/* @__PURE__ */ jsx5(FlagIcon, { width: 16, height: 16 }),
|
|
9809
9985
|
" Report"
|
|
9810
9986
|
]
|
|
9811
9987
|
}
|
|
9812
9988
|
) : null,
|
|
9813
9989
|
moderate && !participant.isAgent ? /* @__PURE__ */ jsxs3(MenuItem, { danger: true, onSelect: () => setMode("remove"), children: [
|
|
9814
|
-
/* @__PURE__ */
|
|
9990
|
+
/* @__PURE__ */ jsx5(CloseIcon, { width: 16, height: 16 }),
|
|
9815
9991
|
" Remove from meeting"
|
|
9816
9992
|
] }) : null
|
|
9817
9993
|
] }) });
|
|
@@ -9819,7 +9995,7 @@ function PersonMenu({
|
|
|
9819
9995
|
function SettingsPanel({ onClose }) {
|
|
9820
9996
|
const host = useRequiredMeetHost();
|
|
9821
9997
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Settings", onClose, children: [
|
|
9822
|
-
/* @__PURE__ */
|
|
9998
|
+
/* @__PURE__ */ jsx5(
|
|
9823
9999
|
DeviceSettings,
|
|
9824
10000
|
{
|
|
9825
10001
|
onPick: (kind, deviceId2) => {
|
|
@@ -9828,8 +10004,8 @@ function SettingsPanel({ onClose }) {
|
|
|
9828
10004
|
}
|
|
9829
10005
|
}
|
|
9830
10006
|
),
|
|
9831
|
-
/* @__PURE__ */
|
|
9832
|
-
/* @__PURE__ */
|
|
10007
|
+
/* @__PURE__ */ jsx5(EffectsSettings, {}),
|
|
10008
|
+
/* @__PURE__ */ jsx5(CaptionLanguageSettings, {})
|
|
9833
10009
|
] });
|
|
9834
10010
|
}
|
|
9835
10011
|
function DeviceSettings({
|
|
@@ -9842,13 +10018,13 @@ function DeviceSettings({
|
|
|
9842
10018
|
const stream = useMicrophoneStream(microphone);
|
|
9843
10019
|
const level = useAudioLevel(stream);
|
|
9844
10020
|
const [testing, setTesting] = useState4(false);
|
|
9845
|
-
|
|
10021
|
+
useEffect5(() => {
|
|
9846
10022
|
void host.devices.refresh();
|
|
9847
10023
|
}, [host]);
|
|
9848
10024
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Devices", children: [
|
|
9849
|
-
/* @__PURE__ */
|
|
9850
|
-
/* @__PURE__ */
|
|
9851
|
-
/* @__PURE__ */
|
|
10025
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "audioinput", label: "Microphone", onPick }),
|
|
10026
|
+
/* @__PURE__ */ jsx5("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__ */ jsx5("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }),
|
|
10027
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "audiooutput", label: "Speaker", onPick }),
|
|
9852
10028
|
/* @__PURE__ */ jsxs3(
|
|
9853
10029
|
"button",
|
|
9854
10030
|
{
|
|
@@ -9860,19 +10036,19 @@ function DeviceSettings({
|
|
|
9860
10036
|
void playTestSound(speaker).finally(() => setTesting(false));
|
|
9861
10037
|
},
|
|
9862
10038
|
children: [
|
|
9863
|
-
/* @__PURE__ */
|
|
10039
|
+
/* @__PURE__ */ jsx5(SpeakerIcon, { width: 14, height: 14 }),
|
|
9864
10040
|
" ",
|
|
9865
10041
|
testing ? "Playing\u2026" : "Test speaker"
|
|
9866
10042
|
]
|
|
9867
10043
|
}
|
|
9868
10044
|
),
|
|
9869
|
-
/* @__PURE__ */
|
|
10045
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "videoinput", label: "Camera", onPick })
|
|
9870
10046
|
] });
|
|
9871
10047
|
}
|
|
9872
10048
|
function EffectsSettings({ preview }) {
|
|
9873
10049
|
const effects = useMediaEffects();
|
|
9874
10050
|
const [error, setError] = useState4(null);
|
|
9875
|
-
const fileRef =
|
|
10051
|
+
const fileRef = useRef5(null);
|
|
9876
10052
|
const supported = effects.backgroundsSupported || preview != null || videoEffectsSupported();
|
|
9877
10053
|
const apply = (next) => {
|
|
9878
10054
|
setError(null);
|
|
@@ -9886,7 +10062,7 @@ function EffectsSettings({ preview }) {
|
|
|
9886
10062
|
};
|
|
9887
10063
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__section", "aria-label": "Effects", children: [
|
|
9888
10064
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
9889
|
-
/* @__PURE__ */
|
|
10065
|
+
/* @__PURE__ */ jsx5(
|
|
9890
10066
|
Checkbox,
|
|
9891
10067
|
{
|
|
9892
10068
|
id: "mx-meet-noise",
|
|
@@ -9895,13 +10071,13 @@ function EffectsSettings({ preview }) {
|
|
|
9895
10071
|
}
|
|
9896
10072
|
),
|
|
9897
10073
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check-text", children: [
|
|
9898
|
-
/* @__PURE__ */
|
|
9899
|
-
/* @__PURE__ */
|
|
10074
|
+
/* @__PURE__ */ jsx5(Label, { htmlFor: "mx-meet-noise", children: "Noise suppression" }),
|
|
10075
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__hint", children: "Filters keyboards, fans and background chatter." })
|
|
9900
10076
|
] })
|
|
9901
10077
|
] }),
|
|
9902
10078
|
supported ? /* @__PURE__ */ jsxs3("div", { className: "mx-meet__field", children: [
|
|
9903
|
-
/* @__PURE__ */
|
|
9904
|
-
/* @__PURE__ */
|
|
10079
|
+
/* @__PURE__ */ jsx5(Label, { children: "Background" }),
|
|
10080
|
+
/* @__PURE__ */ jsx5(
|
|
9905
10081
|
SegmentedControl,
|
|
9906
10082
|
{
|
|
9907
10083
|
fullWidth: true,
|
|
@@ -9920,7 +10096,7 @@ function EffectsSettings({ preview }) {
|
|
|
9920
10096
|
]
|
|
9921
10097
|
}
|
|
9922
10098
|
),
|
|
9923
|
-
/* @__PURE__ */
|
|
10099
|
+
/* @__PURE__ */ jsx5(
|
|
9924
10100
|
"input",
|
|
9925
10101
|
{
|
|
9926
10102
|
ref: fileRef,
|
|
@@ -9935,7 +10111,7 @@ function EffectsSettings({ preview }) {
|
|
|
9935
10111
|
}
|
|
9936
10112
|
}
|
|
9937
10113
|
),
|
|
9938
|
-
error !== null ? /* @__PURE__ */
|
|
10114
|
+
error !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__error", children: error }) : null
|
|
9939
10115
|
] }) : null
|
|
9940
10116
|
] });
|
|
9941
10117
|
}
|
|
@@ -9995,7 +10171,7 @@ async function playTestSound(sinkId) {
|
|
|
9995
10171
|
}
|
|
9996
10172
|
function useMicrophoneStream(deviceId2) {
|
|
9997
10173
|
const [stream, setStream] = useState4(null);
|
|
9998
|
-
|
|
10174
|
+
useEffect5(() => {
|
|
9999
10175
|
if (deviceId2 === "off") return void 0;
|
|
10000
10176
|
let live = true;
|
|
10001
10177
|
let opened = null;
|
|
@@ -10022,26 +10198,35 @@ function LobbyPanel() {
|
|
|
10022
10198
|
if (!lobby.canAdmit || lobby.waiting.length === 0) return null;
|
|
10023
10199
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__lobby", "aria-label": "Waiting room", children: [
|
|
10024
10200
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__lobby-head", children: [
|
|
10025
|
-
/* @__PURE__ */
|
|
10026
|
-
/* @__PURE__ */
|
|
10201
|
+
/* @__PURE__ */ jsx5("h3", { className: "mx-meet__lobby-title", children: lobby.waiting.length === 1 ? "1 person is waiting" : `${lobby.waiting.length} people are waiting` }),
|
|
10202
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: () => void lobby.admitAll(), children: "Admit all" })
|
|
10027
10203
|
] }),
|
|
10028
|
-
/* @__PURE__ */
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
entry
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10040
|
-
onClick: () => void lobby.
|
|
10041
|
-
|
|
10042
|
-
|
|
10043
|
-
|
|
10044
|
-
|
|
10204
|
+
/* @__PURE__ */ jsx5("ul", { className: "mx-meet__lobby-list", children: lobby.waiting.map((entry) => /* @__PURE__ */ jsxs3(
|
|
10205
|
+
"li",
|
|
10206
|
+
{
|
|
10207
|
+
className: "mx-meet__lobby-row",
|
|
10208
|
+
"data-meet-lobby-entry": "",
|
|
10209
|
+
"data-meet-participant-name": entry.displayName,
|
|
10210
|
+
children: [
|
|
10211
|
+
/* @__PURE__ */ jsx5(Avatar, { name: entry.displayName, url: entry.avatarUrl, size: 32 }),
|
|
10212
|
+
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
10213
|
+
entry.displayName,
|
|
10214
|
+
entry.userId === null ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Guest" }) : null
|
|
10215
|
+
] }),
|
|
10216
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: `Admit ${entry.displayName}`, onClick: () => void lobby.admit(entry), children: /* @__PURE__ */ jsx5(CheckIcon, { width: 16, height: 16 }) }),
|
|
10217
|
+
/* @__PURE__ */ jsx5(
|
|
10218
|
+
ControlButton,
|
|
10219
|
+
{
|
|
10220
|
+
label: `Deny ${entry.displayName}`,
|
|
10221
|
+
danger: true,
|
|
10222
|
+
onClick: () => void lobby.deny(entry),
|
|
10223
|
+
children: /* @__PURE__ */ jsx5(CloseIcon, { width: 16, height: 16 })
|
|
10224
|
+
}
|
|
10225
|
+
)
|
|
10226
|
+
]
|
|
10227
|
+
},
|
|
10228
|
+
entry.identity
|
|
10229
|
+
)) })
|
|
10045
10230
|
] });
|
|
10046
10231
|
}
|
|
10047
10232
|
function NoteTakerRow() {
|
|
@@ -10050,19 +10235,19 @@ function NoteTakerRow() {
|
|
|
10050
10235
|
const duplicateError = status.refusal !== null && ai.error !== null && status.refusal.reason === ai.error.message && status.refusal.remedy === ai.error.remedy;
|
|
10051
10236
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-taker", "aria-label": "Note-taker", children: [
|
|
10052
10237
|
/* @__PURE__ */ jsxs3("p", { className: `mx-meet__note-taker-state mx-meet__note-taker-state--${status.state}`, children: [
|
|
10053
|
-
/* @__PURE__ */
|
|
10238
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__note-taker-dot", "aria-hidden": "true" }),
|
|
10054
10239
|
ai.noteTakerLabel
|
|
10055
10240
|
] }),
|
|
10056
|
-
status.detail !== null ? /* @__PURE__ */
|
|
10241
|
+
status.detail !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: status.detail }) : null,
|
|
10057
10242
|
status.refusal !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: status.refusal, operation: "Join this meeting", origin: "meet/components", children: [
|
|
10058
|
-
/* @__PURE__ */
|
|
10059
|
-
status.refusal.remedy.length > 0 ? /* @__PURE__ */
|
|
10243
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: status.refusal.reason }),
|
|
10244
|
+
status.refusal.remedy.length > 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: status.refusal.remedy }) : null
|
|
10060
10245
|
] }) : null,
|
|
10061
10246
|
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: [
|
|
10062
|
-
/* @__PURE__ */
|
|
10063
|
-
/* @__PURE__ */
|
|
10247
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
|
|
10248
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
|
|
10064
10249
|
] }) : null,
|
|
10065
|
-
ai.canControlNoteTaker ? status.state === "transcribing" || status.state === "joining" || status.state === "handoff_pending" ? /* @__PURE__ */
|
|
10250
|
+
ai.canControlNoteTaker ? status.state === "transcribing" || status.state === "joining" || status.state === "handoff_pending" ? /* @__PURE__ */ jsx5(
|
|
10066
10251
|
"button",
|
|
10067
10252
|
{
|
|
10068
10253
|
type: "button",
|
|
@@ -10070,7 +10255,7 @@ function NoteTakerRow() {
|
|
|
10070
10255
|
onClick: () => void ai.stopNoteTaker(),
|
|
10071
10256
|
children: "Dismiss the note-taker"
|
|
10072
10257
|
}
|
|
10073
|
-
) : /* @__PURE__ */
|
|
10258
|
+
) : /* @__PURE__ */ jsx5(
|
|
10074
10259
|
"button",
|
|
10075
10260
|
{
|
|
10076
10261
|
type: "button",
|
|
@@ -10087,10 +10272,10 @@ function NoteList({
|
|
|
10087
10272
|
empty
|
|
10088
10273
|
}) {
|
|
10089
10274
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": title, children: [
|
|
10090
|
-
/* @__PURE__ */
|
|
10091
|
-
notes.length === 0 ? /* @__PURE__ */
|
|
10275
|
+
/* @__PURE__ */ jsx5("h3", { className: "mx-meet__note-group-title", children: title }),
|
|
10276
|
+
notes.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: empty }) : /* @__PURE__ */ jsx5("ul", { className: "mx-meet__notes", children: notes.map((note) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__note", children: [
|
|
10092
10277
|
note.text,
|
|
10093
|
-
note.assigneeDisplayName !== void 0 && note.assigneeDisplayName !== null ? /* @__PURE__ */
|
|
10278
|
+
note.assigneeDisplayName !== void 0 && note.assigneeDisplayName !== null ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__assignee", children: note.assigneeDisplayName }) : null
|
|
10094
10279
|
] }, note.id)) })
|
|
10095
10280
|
] });
|
|
10096
10281
|
}
|
|
@@ -10098,10 +10283,10 @@ function AiPanel({ onClose }) {
|
|
|
10098
10283
|
const ai = useMeetAi();
|
|
10099
10284
|
const [question, setQuestion] = useState4("");
|
|
10100
10285
|
return /* @__PURE__ */ jsxs3(PanelShell, { title: "Meeting assistant", onClose, children: [
|
|
10101
|
-
/* @__PURE__ */
|
|
10286
|
+
/* @__PURE__ */ jsx5(NoteTakerRow, {}),
|
|
10102
10287
|
ai.summary !== null ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": "Summary", children: [
|
|
10103
|
-
/* @__PURE__ */
|
|
10104
|
-
/* @__PURE__ */
|
|
10288
|
+
/* @__PURE__ */ jsx5("h3", { className: "mx-meet__note-group-title", children: "Summary" }),
|
|
10289
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__summary", children: ai.summary.text })
|
|
10105
10290
|
] }) : null,
|
|
10106
10291
|
ai.wrapUp !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__wrap-up-notice", role: "status", children: [
|
|
10107
10292
|
"The wrap-up is written \u2014 ",
|
|
@@ -10115,7 +10300,7 @@ function AiPanel({ onClose }) {
|
|
|
10115
10300
|
ai.wrapUp.segmentCount === 1 ? "transcript line" : "transcript lines",
|
|
10116
10301
|
"."
|
|
10117
10302
|
] }) : null,
|
|
10118
|
-
/* @__PURE__ */
|
|
10303
|
+
/* @__PURE__ */ jsx5(
|
|
10119
10304
|
NoteList,
|
|
10120
10305
|
{
|
|
10121
10306
|
title: "Notes",
|
|
@@ -10123,7 +10308,7 @@ function AiPanel({ onClose }) {
|
|
|
10123
10308
|
empty: "Notes appear here as the meeting goes on."
|
|
10124
10309
|
}
|
|
10125
10310
|
),
|
|
10126
|
-
/* @__PURE__ */
|
|
10311
|
+
/* @__PURE__ */ jsx5(
|
|
10127
10312
|
NoteList,
|
|
10128
10313
|
{
|
|
10129
10314
|
title: "Decisions",
|
|
@@ -10131,7 +10316,7 @@ function AiPanel({ onClose }) {
|
|
|
10131
10316
|
empty: "Nothing has been decided yet."
|
|
10132
10317
|
}
|
|
10133
10318
|
),
|
|
10134
|
-
/* @__PURE__ */
|
|
10319
|
+
/* @__PURE__ */ jsx5(
|
|
10135
10320
|
NoteList,
|
|
10136
10321
|
{
|
|
10137
10322
|
title: "Action items",
|
|
@@ -10140,14 +10325,14 @@ function AiPanel({ onClose }) {
|
|
|
10140
10325
|
}
|
|
10141
10326
|
),
|
|
10142
10327
|
ai.transcript.length > 0 ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": "Transcript", children: [
|
|
10143
|
-
/* @__PURE__ */
|
|
10144
|
-
/* @__PURE__ */
|
|
10328
|
+
/* @__PURE__ */ jsx5("h3", { className: "mx-meet__note-group-title", children: "Transcript" }),
|
|
10329
|
+
/* @__PURE__ */ jsx5("ul", { className: "mx-meet__transcript", children: ai.transcript.map((line) => /* @__PURE__ */ jsxs3(
|
|
10145
10330
|
"li",
|
|
10146
10331
|
{
|
|
10147
10332
|
className: line.final && line.source === "record" ? "mx-meet__line" : "mx-meet__line mx-meet__line--interim",
|
|
10148
10333
|
children: [
|
|
10149
|
-
/* @__PURE__ */
|
|
10150
|
-
/* @__PURE__ */
|
|
10334
|
+
/* @__PURE__ */ jsx5("strong", { children: line.speaker }),
|
|
10335
|
+
/* @__PURE__ */ jsx5("span", { children: line.text })
|
|
10151
10336
|
]
|
|
10152
10337
|
},
|
|
10153
10338
|
line.id
|
|
@@ -10164,7 +10349,7 @@ function AiPanel({ onClose }) {
|
|
|
10164
10349
|
void ai.ask(asked);
|
|
10165
10350
|
},
|
|
10166
10351
|
children: [
|
|
10167
|
-
/* @__PURE__ */
|
|
10352
|
+
/* @__PURE__ */ jsx5(
|
|
10168
10353
|
"input",
|
|
10169
10354
|
{
|
|
10170
10355
|
className: "mx-meet__input",
|
|
@@ -10174,12 +10359,12 @@ function AiPanel({ onClose }) {
|
|
|
10174
10359
|
"aria-label": "Ask about this meeting"
|
|
10175
10360
|
}
|
|
10176
10361
|
),
|
|
10177
|
-
/* @__PURE__ */
|
|
10362
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__send", disabled: ai.asking, children: ai.asking ? "Asking\u2026" : "Ask" })
|
|
10178
10363
|
]
|
|
10179
10364
|
}
|
|
10180
10365
|
),
|
|
10181
|
-
ai.asking && ai.phase !== null ? /* @__PURE__ */
|
|
10182
|
-
ai.answer !== null ? /* @__PURE__ */
|
|
10366
|
+
ai.asking && ai.phase !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", role: "status", children: ai.phase }) : null,
|
|
10367
|
+
ai.answer !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__answer", children: ai.answer }) : null,
|
|
10183
10368
|
ai.answer !== null && ai.coverage !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__coverage", children: [
|
|
10184
10369
|
"Answered from ",
|
|
10185
10370
|
ai.coverage.segmentsUsed,
|
|
@@ -10190,8 +10375,8 @@ function AiPanel({ onClose }) {
|
|
|
10190
10375
|
"."
|
|
10191
10376
|
] }) : null,
|
|
10192
10377
|
ai.error !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: ai.error, operation: "Run the meeting assistant", origin: "meet/components", children: [
|
|
10193
|
-
/* @__PURE__ */
|
|
10194
|
-
/* @__PURE__ */
|
|
10378
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
|
|
10379
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
|
|
10195
10380
|
] }) : null
|
|
10196
10381
|
] });
|
|
10197
10382
|
}
|
|
@@ -10208,37 +10393,46 @@ function Captions({ lines = 3 }) {
|
|
|
10208
10393
|
{
|
|
10209
10394
|
className: line.final ? "mx-meet__caption" : "mx-meet__caption mx-meet__caption--interim",
|
|
10210
10395
|
children: [
|
|
10211
|
-
/* @__PURE__ */
|
|
10396
|
+
/* @__PURE__ */ jsx5("strong", { children: line.speaker }),
|
|
10212
10397
|
" ",
|
|
10213
10398
|
translated ?? line.text,
|
|
10214
|
-
translated !== void 0 ? /* @__PURE__ */
|
|
10399
|
+
translated !== void 0 ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__caption-original", children: line.text }) : null
|
|
10215
10400
|
]
|
|
10216
10401
|
},
|
|
10217
10402
|
line.id
|
|
10218
10403
|
);
|
|
10219
10404
|
}),
|
|
10220
|
-
translation.language !== null && translation.error !== null ? /* @__PURE__ */
|
|
10405
|
+
translation.language !== null && translation.error !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__caption mx-meet__caption--interim", children: translation.error }) : null
|
|
10221
10406
|
] });
|
|
10222
10407
|
}
|
|
10223
10408
|
function ConsentNotice() {
|
|
10224
10409
|
const notice = useConsentNotice();
|
|
10225
10410
|
if (notice === null) return null;
|
|
10226
|
-
return /* @__PURE__ */
|
|
10411
|
+
return /* @__PURE__ */ jsx5("p", { className: "mx-meet__consent", role: "status", children: notice });
|
|
10227
10412
|
}
|
|
10228
10413
|
function AttendanceNotice() {
|
|
10229
10414
|
const media = useLocalMedia();
|
|
10230
10415
|
const notice = listenOnlyNotice(media);
|
|
10231
10416
|
if (notice === null) return null;
|
|
10232
10417
|
const refused = media.microphone.unavailable;
|
|
10233
|
-
|
|
10234
|
-
|
|
10235
|
-
|
|
10236
|
-
|
|
10418
|
+
const code = microphoneNoticeCode(media.microphone);
|
|
10419
|
+
return /* @__PURE__ */ jsxs3(
|
|
10420
|
+
"p",
|
|
10421
|
+
{
|
|
10422
|
+
className: "mx-meet__banner mx-meet__banner--attendance",
|
|
10423
|
+
role: "status",
|
|
10424
|
+
...code !== null ? { "data-meet-notice": code } : {},
|
|
10425
|
+
children: [
|
|
10426
|
+
notice,
|
|
10427
|
+
refused === null ? null : /* @__PURE__ */ jsx5("span", { className: "mx-meet__remedy", children: refused.remedy })
|
|
10428
|
+
]
|
|
10429
|
+
}
|
|
10430
|
+
);
|
|
10237
10431
|
}
|
|
10238
10432
|
function PreJoin(props) {
|
|
10239
10433
|
const host = useMeetHost();
|
|
10240
|
-
if (host === null) return /* @__PURE__ */
|
|
10241
|
-
return /* @__PURE__ */
|
|
10434
|
+
if (host === null) return /* @__PURE__ */ jsx5(InertNotice, { what: "This meeting" });
|
|
10435
|
+
return /* @__PURE__ */ jsx5(PreJoinBody, { ...props, host });
|
|
10242
10436
|
}
|
|
10243
10437
|
function PreJoinBody({
|
|
10244
10438
|
roomName,
|
|
@@ -10261,12 +10455,12 @@ function PreJoinBody({
|
|
|
10261
10455
|
const micStream = useMicrophoneStream(microphone ? mic : "off");
|
|
10262
10456
|
const level = useAudioLevel(micStream);
|
|
10263
10457
|
const [speakerTesting, setSpeakerTesting] = useState4(false);
|
|
10264
|
-
|
|
10458
|
+
useEffect5(() => {
|
|
10265
10459
|
void host.devices.refresh();
|
|
10266
10460
|
}, [host]);
|
|
10267
10461
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin", children: [
|
|
10268
10462
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__preview", children: [
|
|
10269
|
-
mode === "video" && preview.preview !== null ? /* @__PURE__ */
|
|
10463
|
+
mode === "video" && preview.preview !== null ? /* @__PURE__ */ jsx5(
|
|
10270
10464
|
"video",
|
|
10271
10465
|
{
|
|
10272
10466
|
className: "mx-meet__video mx-meet__video--mirror",
|
|
@@ -10277,16 +10471,16 @@ function PreJoinBody({
|
|
|
10277
10471
|
if (element !== null) preview.preview?.attach(element);
|
|
10278
10472
|
}
|
|
10279
10473
|
}
|
|
10280
|
-
) : /* @__PURE__ */
|
|
10281
|
-
mode === "video" && preview.error !== null ? /* @__PURE__ */
|
|
10282
|
-
microphone && micStream !== null ? /* @__PURE__ */
|
|
10474
|
+
) : /* @__PURE__ */ jsx5("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx5(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 96 }) }),
|
|
10475
|
+
mode === "video" && preview.error !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__preview-note", children: preview.error }) : null,
|
|
10476
|
+
microphone && micStream !== null ? /* @__PURE__ */ jsx5("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__ */ jsx5("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }) : null
|
|
10283
10477
|
] }),
|
|
10284
10478
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin-panel", children: [
|
|
10285
|
-
/* @__PURE__ */
|
|
10286
|
-
notice?.kind === "removed" ? /* @__PURE__ */
|
|
10479
|
+
/* @__PURE__ */ jsx5("h1", { className: "mx-meet__prejoin-title", children: "Ready to join?" }),
|
|
10480
|
+
notice?.kind === "removed" ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__warning", children: notice.text }) : null,
|
|
10287
10481
|
devices?.labelsHidden === true ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__panel-note", children: [
|
|
10288
10482
|
"Your browser is hiding device names until you allow camera and microphone access.",
|
|
10289
|
-
/* @__PURE__ */
|
|
10483
|
+
/* @__PURE__ */ jsx5(
|
|
10290
10484
|
"button",
|
|
10291
10485
|
{
|
|
10292
10486
|
type: "button",
|
|
@@ -10298,10 +10492,10 @@ function PreJoinBody({
|
|
|
10298
10492
|
}
|
|
10299
10493
|
)
|
|
10300
10494
|
] }) : null,
|
|
10301
|
-
devices?.fallbackNotice != null ? /* @__PURE__ */
|
|
10302
|
-
/* @__PURE__ */
|
|
10495
|
+
devices?.fallbackNotice != null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__warning", children: devices.fallbackNotice }) : null,
|
|
10496
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "audioinput", label: "Microphone" }),
|
|
10303
10497
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__field-row", children: [
|
|
10304
|
-
/* @__PURE__ */
|
|
10498
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "audiooutput", label: "Speaker" }),
|
|
10305
10499
|
/* @__PURE__ */ jsxs3(
|
|
10306
10500
|
Button,
|
|
10307
10501
|
{
|
|
@@ -10315,19 +10509,19 @@ function PreJoinBody({
|
|
|
10315
10509
|
);
|
|
10316
10510
|
},
|
|
10317
10511
|
children: [
|
|
10318
|
-
/* @__PURE__ */
|
|
10512
|
+
/* @__PURE__ */ jsx5(SpeakerIcon, {}),
|
|
10319
10513
|
" ",
|
|
10320
10514
|
speakerTesting ? "Playing\u2026" : "Test"
|
|
10321
10515
|
]
|
|
10322
10516
|
}
|
|
10323
10517
|
)
|
|
10324
10518
|
] }),
|
|
10325
|
-
/* @__PURE__ */
|
|
10326
|
-
/* @__PURE__ */
|
|
10327
|
-
recording.consentNotice !== null ? /* @__PURE__ */
|
|
10519
|
+
/* @__PURE__ */ jsx5(DevicePicker, { kind: "videoinput", label: "Camera" }),
|
|
10520
|
+
/* @__PURE__ */ jsx5(EffectsSettings, { preview: preview.preview }),
|
|
10521
|
+
recording.consentNotice !== null ? /* @__PURE__ */ jsx5(Alert, { variant: "info", children: /* @__PURE__ */ jsx5(AlertDescription, { children: recording.consentNotice }) }) : null,
|
|
10328
10522
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__prejoin-actions", children: [
|
|
10329
10523
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
10330
|
-
/* @__PURE__ */
|
|
10524
|
+
/* @__PURE__ */ jsx5(
|
|
10331
10525
|
Checkbox,
|
|
10332
10526
|
{
|
|
10333
10527
|
id: "mx-meet-join-video",
|
|
@@ -10335,10 +10529,10 @@ function PreJoinBody({
|
|
|
10335
10529
|
onCheckedChange: (checked) => setMode(checked === true ? "video" : "audio")
|
|
10336
10530
|
}
|
|
10337
10531
|
),
|
|
10338
|
-
/* @__PURE__ */
|
|
10532
|
+
/* @__PURE__ */ jsx5(Label, { htmlFor: "mx-meet-join-video", children: "Join with video" })
|
|
10339
10533
|
] }),
|
|
10340
10534
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__check", children: [
|
|
10341
|
-
/* @__PURE__ */
|
|
10535
|
+
/* @__PURE__ */ jsx5(
|
|
10342
10536
|
Checkbox,
|
|
10343
10537
|
{
|
|
10344
10538
|
id: "mx-meet-join-mic",
|
|
@@ -10346,9 +10540,9 @@ function PreJoinBody({
|
|
|
10346
10540
|
onCheckedChange: (checked) => setMicrophone(checked === true)
|
|
10347
10541
|
}
|
|
10348
10542
|
),
|
|
10349
|
-
/* @__PURE__ */
|
|
10543
|
+
/* @__PURE__ */ jsx5(Label, { htmlFor: "mx-meet-join-mic", children: "Join with microphone" })
|
|
10350
10544
|
] }),
|
|
10351
|
-
/* @__PURE__ */
|
|
10545
|
+
/* @__PURE__ */ jsx5(
|
|
10352
10546
|
Button,
|
|
10353
10547
|
{
|
|
10354
10548
|
type: "button",
|
|
@@ -10371,7 +10565,7 @@ function PreJoinBody({
|
|
|
10371
10565
|
] }),
|
|
10372
10566
|
room.failure !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__error", children: [
|
|
10373
10567
|
room.failure.message,
|
|
10374
|
-
/* @__PURE__ */
|
|
10568
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__remedy", children: room.failure.remedy })
|
|
10375
10569
|
] }) : null
|
|
10376
10570
|
] })
|
|
10377
10571
|
] });
|
|
@@ -10379,10 +10573,10 @@ function PreJoinBody({
|
|
|
10379
10573
|
function useCameraPreview(deviceId2, effects) {
|
|
10380
10574
|
const [preview, setPreview] = useState4(null);
|
|
10381
10575
|
const [error, setError] = useState4(null);
|
|
10382
|
-
const current =
|
|
10383
|
-
const initialEffect =
|
|
10576
|
+
const current = useRef5(null);
|
|
10577
|
+
const initialEffect = useRef5(toVideoEffect(effects));
|
|
10384
10578
|
initialEffect.current = toVideoEffect(effects);
|
|
10385
|
-
|
|
10579
|
+
useEffect5(() => {
|
|
10386
10580
|
if (deviceId2 === void 0) return void 0;
|
|
10387
10581
|
let live = true;
|
|
10388
10582
|
setError(null);
|
|
@@ -10430,7 +10624,7 @@ function DevicePicker({
|
|
|
10430
10624
|
const valueOf = (deviceId2) => deviceId2.length > 0 ? deviceId2 : "default";
|
|
10431
10625
|
const current = devices?.selected[kind] ?? host.devices.resolve(kind) ?? "";
|
|
10432
10626
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__field", children: [
|
|
10433
|
-
/* @__PURE__ */
|
|
10627
|
+
/* @__PURE__ */ jsx5(Label, { htmlFor: triggerId, children: label }),
|
|
10434
10628
|
/* @__PURE__ */ jsxs3(
|
|
10435
10629
|
Select,
|
|
10436
10630
|
{
|
|
@@ -10441,8 +10635,8 @@ function DevicePicker({
|
|
|
10441
10635
|
else host.devices.select(kind, deviceId2);
|
|
10442
10636
|
},
|
|
10443
10637
|
children: [
|
|
10444
|
-
/* @__PURE__ */
|
|
10445
|
-
/* @__PURE__ */
|
|
10638
|
+
/* @__PURE__ */ jsx5(SelectTrigger, { id: triggerId, "aria-label": label, children: /* @__PURE__ */ jsx5(SelectValue, { placeholder: label }) }),
|
|
10639
|
+
/* @__PURE__ */ jsx5(SelectContent, { children: list.map((device) => /* @__PURE__ */ jsx5(SelectItem, { value: valueOf(device.deviceId), children: device.label.length > 0 ? device.label : `${label} (name hidden)` }, device.deviceId || "default")) })
|
|
10446
10640
|
]
|
|
10447
10641
|
}
|
|
10448
10642
|
)
|
|
@@ -10451,9 +10645,9 @@ function DevicePicker({
|
|
|
10451
10645
|
function MeetingRoom(props) {
|
|
10452
10646
|
const host = useMeetHost();
|
|
10453
10647
|
if (host === null) {
|
|
10454
|
-
return /* @__PURE__ */
|
|
10648
|
+
return /* @__PURE__ */ jsx5(MeetRoot, { meeting: props.meeting, children: /* @__PURE__ */ jsx5("div", { className: "mx-meet", children: /* @__PURE__ */ jsx5(InertNotice, { what: "This meeting" }) }) });
|
|
10455
10649
|
}
|
|
10456
|
-
return /* @__PURE__ */
|
|
10650
|
+
return /* @__PURE__ */ jsx5(MeetRoot, { meeting: props.meeting, children: /* @__PURE__ */ jsx5(MeetingRoomBody, { ...props, host }) });
|
|
10457
10651
|
}
|
|
10458
10652
|
function MeetingRoomBody({
|
|
10459
10653
|
roomName,
|
|
@@ -10468,25 +10662,25 @@ function MeetingRoomBody({
|
|
|
10468
10662
|
const isHost = useIsHost();
|
|
10469
10663
|
const elapsed = useElapsed(snapshot?.meeting?.startedAt ?? null);
|
|
10470
10664
|
const phase = snapshot?.phase ?? "idle";
|
|
10471
|
-
|
|
10665
|
+
useEffect5(() => {
|
|
10472
10666
|
host.meetings.watch(roomName);
|
|
10473
10667
|
}, [host, roomName]);
|
|
10474
|
-
|
|
10668
|
+
useEffect5(() => {
|
|
10475
10669
|
if (given === void 0) return;
|
|
10476
10670
|
if (host.store.snapshot().meeting !== null) return;
|
|
10477
10671
|
host.store.patch({ meeting: given, locked: given.locked });
|
|
10478
10672
|
}, [host, given]);
|
|
10479
10673
|
const watchedId = meetingId ?? snapshot?.meeting?.id ?? null;
|
|
10480
|
-
|
|
10674
|
+
useEffect5(() => {
|
|
10481
10675
|
if (watchedId === null) return;
|
|
10482
10676
|
host.meetings.watchMeeting(asMeetingId(watchedId));
|
|
10483
10677
|
}, [host, watchedId]);
|
|
10484
10678
|
const record = snapshot?.meeting ?? given ?? null;
|
|
10485
10679
|
if (hasEnded(record) && phase !== "connected" && phase !== "reconnecting") {
|
|
10486
|
-
return /* @__PURE__ */
|
|
10680
|
+
return /* @__PURE__ */ jsx5(MeetingRecordView, { meeting: record });
|
|
10487
10681
|
}
|
|
10488
10682
|
if (phase === "idle" || phase === "failed" || phase === "left") {
|
|
10489
|
-
return /* @__PURE__ */
|
|
10683
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet", children: /* @__PURE__ */ jsx5(
|
|
10490
10684
|
PreJoin,
|
|
10491
10685
|
{
|
|
10492
10686
|
roomName,
|
|
@@ -10496,41 +10690,41 @@ function MeetingRoomBody({
|
|
|
10496
10690
|
) });
|
|
10497
10691
|
}
|
|
10498
10692
|
if (phase === "lobby") {
|
|
10499
|
-
return /* @__PURE__ */
|
|
10693
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet mx-meet--lobby", children: /* @__PURE__ */ jsx5(WaitingRoom, { roomName, host }) });
|
|
10500
10694
|
}
|
|
10501
10695
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet", children: [
|
|
10502
|
-
/* @__PURE__ */
|
|
10503
|
-
/* @__PURE__ */
|
|
10696
|
+
/* @__PURE__ */ jsx5(ConsentNotice, {}),
|
|
10697
|
+
/* @__PURE__ */ jsx5(AttendanceNotice, {}),
|
|
10504
10698
|
/* @__PURE__ */ jsxs3("header", { className: "mx-meet__header", children: [
|
|
10505
|
-
/* @__PURE__ */
|
|
10699
|
+
/* @__PURE__ */ jsx5("h1", { className: "mx-meet__title", children: snapshot?.meeting?.title ?? "Meeting" }),
|
|
10506
10700
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__meta", children: [
|
|
10507
10701
|
participantSummary(snapshot?.participants ?? []),
|
|
10508
10702
|
elapsed > 0 ? ` \xB7 ${formatDurationMs4(elapsed)}` : ""
|
|
10509
10703
|
] }),
|
|
10510
|
-
/* @__PURE__ */
|
|
10704
|
+
/* @__PURE__ */ jsx5(RecordingIndicator, {}),
|
|
10511
10705
|
snapshot?.locked === true ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__badge", children: [
|
|
10512
|
-
/* @__PURE__ */
|
|
10706
|
+
/* @__PURE__ */ jsx5(LockIcon, { width: 12, height: 12 }),
|
|
10513
10707
|
" Locked"
|
|
10514
10708
|
] }) : null,
|
|
10515
|
-
headerControls !== void 0 && headerControls !== null ? /* @__PURE__ */
|
|
10516
|
-
isHost ? /* @__PURE__ */
|
|
10709
|
+
headerControls !== void 0 && headerControls !== null ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__header-controls", "data-meet-header-controls": "", children: headerControls }) : null,
|
|
10710
|
+
isHost ? /* @__PURE__ */ jsx5(HostMenu, {}) : null
|
|
10517
10711
|
] }),
|
|
10518
|
-
phase === "reconnecting" ? /* @__PURE__ */
|
|
10519
|
-
/* @__PURE__ */
|
|
10520
|
-
/* @__PURE__ */
|
|
10521
|
-
/* @__PURE__ */
|
|
10712
|
+
phase === "reconnecting" ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__banner", role: "status", children: "Reconnecting\u2026" }) : null,
|
|
10713
|
+
/* @__PURE__ */ jsx5(Stage, {}),
|
|
10714
|
+
/* @__PURE__ */ jsx5(Captions, {}),
|
|
10715
|
+
/* @__PURE__ */ jsx5(ControlBar, { ...onLeave !== void 0 ? { onLeave } : {} })
|
|
10522
10716
|
] });
|
|
10523
10717
|
}
|
|
10524
10718
|
function WaitingRoom({ roomName, host }) {
|
|
10525
|
-
const knocked =
|
|
10526
|
-
|
|
10719
|
+
const knocked = useRef5(false);
|
|
10720
|
+
useEffect5(() => {
|
|
10527
10721
|
if (knocked.current) return;
|
|
10528
10722
|
knocked.current = true;
|
|
10529
10723
|
host.meetings.knock(roomName);
|
|
10530
10724
|
}, [host, roomName]);
|
|
10531
10725
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__waiting", children: [
|
|
10532
|
-
/* @__PURE__ */
|
|
10533
|
-
/* @__PURE__ */
|
|
10726
|
+
/* @__PURE__ */ jsx5(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 72 }),
|
|
10727
|
+
/* @__PURE__ */ jsx5("h1", { className: "mx-meet__prejoin-title", children: "Waiting for the host to let you in" }),
|
|
10534
10728
|
/* @__PURE__ */ jsxs3("p", { className: "mx-meet__empty-body", children: [
|
|
10535
10729
|
"You are in the waiting room as ",
|
|
10536
10730
|
host.identity.displayName,
|
|
@@ -10545,7 +10739,7 @@ function HostMenu() {
|
|
|
10545
10739
|
const [confirmingEnd, setConfirmingEnd] = useState4(false);
|
|
10546
10740
|
const locked = snapshot?.locked === true;
|
|
10547
10741
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__host-menu", children: [
|
|
10548
|
-
/* @__PURE__ */
|
|
10742
|
+
/* @__PURE__ */ jsx5(
|
|
10549
10743
|
"button",
|
|
10550
10744
|
{
|
|
10551
10745
|
type: "button",
|
|
@@ -10557,8 +10751,8 @@ function HostMenu() {
|
|
|
10557
10751
|
}
|
|
10558
10752
|
),
|
|
10559
10753
|
end.canEnd ? confirmingEnd ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__confirm", role: "group", "aria-label": "End this meeting?", children: [
|
|
10560
|
-
/* @__PURE__ */
|
|
10561
|
-
/* @__PURE__ */
|
|
10754
|
+
/* @__PURE__ */ jsx5("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." }),
|
|
10755
|
+
/* @__PURE__ */ jsx5(
|
|
10562
10756
|
"button",
|
|
10563
10757
|
{
|
|
10564
10758
|
type: "button",
|
|
@@ -10570,7 +10764,7 @@ function HostMenu() {
|
|
|
10570
10764
|
children: "End it"
|
|
10571
10765
|
}
|
|
10572
10766
|
),
|
|
10573
|
-
/* @__PURE__ */
|
|
10767
|
+
/* @__PURE__ */ jsx5(
|
|
10574
10768
|
"button",
|
|
10575
10769
|
{
|
|
10576
10770
|
type: "button",
|
|
@@ -10579,7 +10773,7 @@ function HostMenu() {
|
|
|
10579
10773
|
children: "Keep it running"
|
|
10580
10774
|
}
|
|
10581
10775
|
)
|
|
10582
|
-
] }) : /* @__PURE__ */
|
|
10776
|
+
] }) : /* @__PURE__ */ jsx5(
|
|
10583
10777
|
"button",
|
|
10584
10778
|
{
|
|
10585
10779
|
type: "button",
|
|
@@ -10588,7 +10782,7 @@ function HostMenu() {
|
|
|
10588
10782
|
children: end.ending ? "Ending\u2026" : "End meeting for everyone"
|
|
10589
10783
|
}
|
|
10590
10784
|
) : null,
|
|
10591
|
-
end.notice !== null ? /* @__PURE__ */
|
|
10785
|
+
end.notice !== null ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__notice", role: "status", children: end.notice }) : null
|
|
10592
10786
|
] });
|
|
10593
10787
|
}
|
|
10594
10788
|
function CallButton({
|
|
@@ -10598,7 +10792,7 @@ function CallButton({
|
|
|
10598
10792
|
}) {
|
|
10599
10793
|
const calls = useCalls();
|
|
10600
10794
|
if (!calls.canCall) return null;
|
|
10601
|
-
return /* @__PURE__ */
|
|
10795
|
+
return /* @__PURE__ */ jsx5(
|
|
10602
10796
|
"button",
|
|
10603
10797
|
{
|
|
10604
10798
|
type: "button",
|
|
@@ -10607,41 +10801,41 @@ function CallButton({
|
|
|
10607
10801
|
void calls.call([person.userId], mode);
|
|
10608
10802
|
},
|
|
10609
10803
|
"aria-label": `Call ${person.displayName}`,
|
|
10610
|
-
children: children ?? /* @__PURE__ */
|
|
10804
|
+
children: children ?? /* @__PURE__ */ jsx5(PhoneIcon, { width: 18, height: 18 })
|
|
10611
10805
|
}
|
|
10612
10806
|
);
|
|
10613
10807
|
}
|
|
10614
10808
|
function IncomingCallHost() {
|
|
10615
10809
|
const calls = useCalls();
|
|
10616
10810
|
if (calls.incoming.length === 0) return null;
|
|
10617
|
-
return /* @__PURE__ */
|
|
10811
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet__ringing-stack", children: calls.incoming.map((invite) => /* @__PURE__ */ jsx5(IncomingCallCard, { invite }, invite.id)) });
|
|
10618
10812
|
}
|
|
10619
10813
|
function IncomingCallCard({ invite }) {
|
|
10620
10814
|
const calls = useCalls();
|
|
10621
10815
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__ringing", role: "alertdialog", "aria-label": "Incoming call", children: [
|
|
10622
|
-
/* @__PURE__ */
|
|
10816
|
+
/* @__PURE__ */ jsx5(Avatar, { name: invite.callerName, url: invite.callerAvatarUrl, size: 56 }),
|
|
10623
10817
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__ringing-text", children: [
|
|
10624
|
-
/* @__PURE__ */
|
|
10625
|
-
/* @__PURE__ */
|
|
10818
|
+
/* @__PURE__ */ jsx5("strong", { children: invite.callerName }),
|
|
10819
|
+
/* @__PURE__ */ jsx5("span", { children: invite.mode === "video" ? "Incoming video call" : "Incoming call" })
|
|
10626
10820
|
] }),
|
|
10627
10821
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__ringing-actions", children: [
|
|
10628
|
-
/* @__PURE__ */
|
|
10629
|
-
invite.mode === "video" ? /* @__PURE__ */
|
|
10822
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: "Decline", danger: true, onClick: () => void calls.decline(invite), children: /* @__PURE__ */ jsx5(PhoneOffIcon, {}) }),
|
|
10823
|
+
invite.mode === "video" ? /* @__PURE__ */ jsx5(
|
|
10630
10824
|
ControlButton,
|
|
10631
10825
|
{
|
|
10632
10826
|
label: "Accept without video",
|
|
10633
10827
|
onClick: () => void calls.accept({ ...invite, mode: "audio" }),
|
|
10634
|
-
children: /* @__PURE__ */
|
|
10828
|
+
children: /* @__PURE__ */ jsx5(CameraOffIcon, {})
|
|
10635
10829
|
}
|
|
10636
10830
|
) : null,
|
|
10637
|
-
/* @__PURE__ */
|
|
10831
|
+
/* @__PURE__ */ jsx5(ControlButton, { label: "Accept", onClick: () => void calls.accept(invite), children: /* @__PURE__ */ jsx5(PhoneIcon, {}) })
|
|
10638
10832
|
] })
|
|
10639
10833
|
] });
|
|
10640
10834
|
}
|
|
10641
10835
|
function ScheduleMeeting(props) {
|
|
10642
10836
|
const host = useMeetHost();
|
|
10643
|
-
if (host === null) return /* @__PURE__ */
|
|
10644
|
-
return /* @__PURE__ */
|
|
10837
|
+
if (host === null) return /* @__PURE__ */ jsx5(InertNotice, { what: "Scheduling a meeting" });
|
|
10838
|
+
return /* @__PURE__ */ jsx5(ScheduleMeetingBody, { ...props, host });
|
|
10645
10839
|
}
|
|
10646
10840
|
function ScheduleMeetingBody({
|
|
10647
10841
|
appBaseUrl,
|
|
@@ -10654,7 +10848,7 @@ function ScheduleMeetingBody({
|
|
|
10654
10848
|
const [busy, setBusy] = useState4(false);
|
|
10655
10849
|
const [link, setLink] = useState4(null);
|
|
10656
10850
|
const [error, setError] = useState4(null);
|
|
10657
|
-
const disabled =
|
|
10851
|
+
const disabled = useMemo4(() => title.trim().length === 0 || busy, [title, busy]);
|
|
10658
10852
|
return /* @__PURE__ */ jsxs3(
|
|
10659
10853
|
"form",
|
|
10660
10854
|
{
|
|
@@ -10681,8 +10875,8 @@ function ScheduleMeetingBody({
|
|
|
10681
10875
|
},
|
|
10682
10876
|
children: [
|
|
10683
10877
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
10684
|
-
/* @__PURE__ */
|
|
10685
|
-
/* @__PURE__ */
|
|
10878
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Title" }),
|
|
10879
|
+
/* @__PURE__ */ jsx5(
|
|
10686
10880
|
"input",
|
|
10687
10881
|
{
|
|
10688
10882
|
className: "mx-meet__input",
|
|
@@ -10693,8 +10887,8 @@ function ScheduleMeetingBody({
|
|
|
10693
10887
|
)
|
|
10694
10888
|
] }),
|
|
10695
10889
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
10696
|
-
/* @__PURE__ */
|
|
10697
|
-
/* @__PURE__ */
|
|
10890
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "When" }),
|
|
10891
|
+
/* @__PURE__ */ jsx5(
|
|
10698
10892
|
"input",
|
|
10699
10893
|
{
|
|
10700
10894
|
className: "mx-meet__input",
|
|
@@ -10705,7 +10899,7 @@ function ScheduleMeetingBody({
|
|
|
10705
10899
|
)
|
|
10706
10900
|
] }),
|
|
10707
10901
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
10708
|
-
/* @__PURE__ */
|
|
10902
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "Repeats" }),
|
|
10709
10903
|
/* @__PURE__ */ jsxs3(
|
|
10710
10904
|
"select",
|
|
10711
10905
|
{
|
|
@@ -10713,18 +10907,18 @@ function ScheduleMeetingBody({
|
|
|
10713
10907
|
value: kind,
|
|
10714
10908
|
onChange: (event) => setKind(event.target.value),
|
|
10715
10909
|
children: [
|
|
10716
|
-
/* @__PURE__ */
|
|
10717
|
-
/* @__PURE__ */
|
|
10910
|
+
/* @__PURE__ */ jsx5("option", { value: "scheduled", children: "Once" }),
|
|
10911
|
+
/* @__PURE__ */ jsx5("option", { value: "recurring", children: "Recurring \u2014 one link, every time" })
|
|
10718
10912
|
]
|
|
10719
10913
|
}
|
|
10720
10914
|
)
|
|
10721
10915
|
] }),
|
|
10722
|
-
/* @__PURE__ */
|
|
10916
|
+
/* @__PURE__ */ jsx5("button", { type: "submit", className: "mx-meet__primary", disabled, children: busy ? "Creating\u2026" : "Create meeting" }),
|
|
10723
10917
|
link !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__link-out", children: [
|
|
10724
|
-
/* @__PURE__ */
|
|
10725
|
-
/* @__PURE__ */
|
|
10918
|
+
/* @__PURE__ */ jsx5("span", { children: "Anyone with this link can join \u2014 no account needed." }),
|
|
10919
|
+
/* @__PURE__ */ jsx5("code", { children: link })
|
|
10726
10920
|
] }) : null,
|
|
10727
|
-
error !== null ? /* @__PURE__ */
|
|
10921
|
+
error !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__error", children: error }) : null
|
|
10728
10922
|
]
|
|
10729
10923
|
}
|
|
10730
10924
|
);
|
|
@@ -10733,7 +10927,7 @@ function ReactionOverlay({
|
|
|
10733
10927
|
reactions
|
|
10734
10928
|
}) {
|
|
10735
10929
|
if (reactions.length === 0) return null;
|
|
10736
|
-
return /* @__PURE__ */
|
|
10930
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet__reactions", "aria-hidden": "true", children: reactions.map((reaction) => /* @__PURE__ */ jsx5("span", { className: "mx-meet__reaction", children: reaction.emoji }, reaction.id)) });
|
|
10737
10931
|
}
|
|
10738
10932
|
function GuestRecordAccessControl({
|
|
10739
10933
|
meeting
|
|
@@ -10746,10 +10940,10 @@ function GuestRecordAccessControl({
|
|
|
10746
10940
|
if (host === null || !isHost) return null;
|
|
10747
10941
|
const resolved = access.setting === "default" && access.effective !== null ? ` Right now that means: ${guestRecordAccessLabel(access.effective.level).toLowerCase()}.` : "";
|
|
10748
10942
|
return /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "What guests may read", children: [
|
|
10749
|
-
/* @__PURE__ */
|
|
10943
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "What guests may read" }),
|
|
10750
10944
|
/* @__PURE__ */ jsxs3("label", { className: "mx-meet__field", children: [
|
|
10751
|
-
/* @__PURE__ */
|
|
10752
|
-
/* @__PURE__ */
|
|
10945
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__field-label", children: "People who attended by link, without an account" }),
|
|
10946
|
+
/* @__PURE__ */ jsx5(
|
|
10753
10947
|
"select",
|
|
10754
10948
|
{
|
|
10755
10949
|
className: "mx-meet__select",
|
|
@@ -10760,7 +10954,7 @@ function GuestRecordAccessControl({
|
|
|
10760
10954
|
event.target.value
|
|
10761
10955
|
);
|
|
10762
10956
|
},
|
|
10763
|
-
children: GUEST_RECORD_ACCESS_CHOICES.map((choice) => /* @__PURE__ */
|
|
10957
|
+
children: GUEST_RECORD_ACCESS_CHOICES.map((choice) => /* @__PURE__ */ jsx5("option", { value: choice, children: guestRecordAccessLabel(choice) }, choice))
|
|
10764
10958
|
}
|
|
10765
10959
|
)
|
|
10766
10960
|
] }),
|
|
@@ -10768,10 +10962,10 @@ function GuestRecordAccessControl({
|
|
|
10768
10962
|
guestRecordAccessExplanation(access.setting),
|
|
10769
10963
|
resolved
|
|
10770
10964
|
] }),
|
|
10771
|
-
access.saving ? /* @__PURE__ */
|
|
10965
|
+
access.saving ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", role: "status", children: "Saving what guests may read\u2026" }) : null,
|
|
10772
10966
|
access.error !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: access.error, operation: "Change who can join", origin: "meet/components", children: [
|
|
10773
|
-
/* @__PURE__ */
|
|
10774
|
-
/* @__PURE__ */
|
|
10967
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: access.error.message }),
|
|
10968
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: access.error.remedy })
|
|
10775
10969
|
] }) : null
|
|
10776
10970
|
] });
|
|
10777
10971
|
}
|
|
@@ -10781,9 +10975,9 @@ function MeetingRecordView({
|
|
|
10781
10975
|
}) {
|
|
10782
10976
|
const host = useMeetHost();
|
|
10783
10977
|
if (host === null) {
|
|
10784
|
-
return /* @__PURE__ */
|
|
10978
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsx5(InertNotice, { what: "This meeting record" }) });
|
|
10785
10979
|
}
|
|
10786
|
-
return /* @__PURE__ */
|
|
10980
|
+
return /* @__PURE__ */ jsx5(MeetingRecordBody, { meeting, ...onRejoin !== void 0 ? { onRejoin } : {} });
|
|
10787
10981
|
}
|
|
10788
10982
|
function MeetingRecordBody({
|
|
10789
10983
|
meeting,
|
|
@@ -10794,16 +10988,16 @@ function MeetingRecordBody({
|
|
|
10794
10988
|
const [question, setQuestion] = useState4("");
|
|
10795
10989
|
const [tab, setTab] = useState4("summary");
|
|
10796
10990
|
if (record.failure !== null) {
|
|
10797
|
-
return /* @__PURE__ */
|
|
10798
|
-
/* @__PURE__ */
|
|
10799
|
-
/* @__PURE__ */
|
|
10800
|
-
/* @__PURE__ */
|
|
10991
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__empty", error: record.failure, operation: "Open this meeting record", origin: "meet/components", children: [
|
|
10992
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "This meeting record could not be opened" }),
|
|
10993
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: record.failure.message }),
|
|
10994
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: record.failure.remedy })
|
|
10801
10995
|
] }) });
|
|
10802
10996
|
}
|
|
10803
10997
|
if (record.loading || record.record === null) {
|
|
10804
|
-
return /* @__PURE__ */
|
|
10805
|
-
/* @__PURE__ */
|
|
10806
|
-
/* @__PURE__ */
|
|
10998
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__empty", role: "status", children: [
|
|
10999
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "Opening the meeting record\u2026" }),
|
|
11000
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: "Reading the summary, the notes and the transcript this meeting left behind." })
|
|
10807
11001
|
] }) });
|
|
10808
11002
|
}
|
|
10809
11003
|
const bundle = record.record;
|
|
@@ -10823,43 +11017,43 @@ function MeetingRecordBody({
|
|
|
10823
11017
|
const entirelyRestricted = everyRecordPartRefused && bundle.attendees.length === 0 && bundle.liveNotes.length === 0 && bundle.transcript.length === 0 && bundle.recording === null && bundle.summary === null && bundle.decisions.length === 0 && bundle.actionItems.length === 0;
|
|
10824
11018
|
if (entirelyRestricted) {
|
|
10825
11019
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet mx-meet--record", children: [
|
|
10826
|
-
/* @__PURE__ */
|
|
10827
|
-
/* @__PURE__ */
|
|
10828
|
-
/* @__PURE__ */
|
|
10829
|
-
/* @__PURE__ */
|
|
10830
|
-
onRejoin !== void 0 ? /* @__PURE__ */
|
|
11020
|
+
/* @__PURE__ */ jsx5("header", { className: "mx-meet__record-head", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-head-inner", children: [
|
|
11021
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-eyebrow", children: "Meeting record" }),
|
|
11022
|
+
/* @__PURE__ */ jsx5("h1", { className: "mx-meet__record-title", children: meeting.title }),
|
|
11023
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-when", children: meetingWhen(meeting) }),
|
|
11024
|
+
onRejoin !== void 0 ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: onRejoin, children: "Open this link again" }) : null
|
|
10831
11025
|
] }) }),
|
|
10832
|
-
/* @__PURE__ */
|
|
10833
|
-
/* @__PURE__ */
|
|
10834
|
-
/* @__PURE__ */
|
|
10835
|
-
/* @__PURE__ */
|
|
11026
|
+
/* @__PURE__ */ jsx5("div", { className: "mx-meet__record-body", children: restrictionNotices.map((notice2) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-access", role: "status", children: [
|
|
11027
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-title", children: "About this record" }),
|
|
11028
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-message", children: notice2.message }),
|
|
11029
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-remedy", children: notice2.remedy })
|
|
10836
11030
|
] }, notice2.parts.join("-"))) })
|
|
10837
11031
|
] });
|
|
10838
11032
|
}
|
|
10839
11033
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet mx-meet--record", children: [
|
|
10840
|
-
/* @__PURE__ */
|
|
10841
|
-
/* @__PURE__ */
|
|
10842
|
-
/* @__PURE__ */
|
|
10843
|
-
/* @__PURE__ */
|
|
10844
|
-
onRejoin !== void 0 ? /* @__PURE__ */
|
|
11034
|
+
/* @__PURE__ */ jsx5("header", { className: "mx-meet__record-head", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-head-inner", children: [
|
|
11035
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-eyebrow", children: "Meeting record" }),
|
|
11036
|
+
/* @__PURE__ */ jsx5("h1", { className: "mx-meet__record-title", children: meeting.title }),
|
|
11037
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-when", children: meetingWhen(meeting) }),
|
|
11038
|
+
onRejoin !== void 0 ? /* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: onRejoin, children: "Open this link again" }) : null
|
|
10845
11039
|
] }) }),
|
|
10846
11040
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-body", children: [
|
|
10847
11041
|
restrictionNotices.map((notice2) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-access", role: "status", children: [
|
|
10848
|
-
/* @__PURE__ */
|
|
10849
|
-
/* @__PURE__ */
|
|
10850
|
-
/* @__PURE__ */
|
|
11042
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-title", children: "About this record" }),
|
|
11043
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-message", children: notice2.message }),
|
|
11044
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__record-access-remedy", children: notice2.remedy })
|
|
10851
11045
|
] }, notice2.parts.join("-"))),
|
|
10852
11046
|
attended.length === 0 ? (
|
|
10853
11047
|
/* NOT SILENCE. A refused attendance read used to remove the whole
|
|
10854
11048
|
section, so the reader could not tell "nobody" from "not shown". */
|
|
10855
11049
|
/* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Who attended", children: [
|
|
10856
|
-
/* @__PURE__ */
|
|
10857
|
-
/* @__PURE__ */
|
|
11050
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Who attended" }),
|
|
11051
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: absenceSentence(bundle, "attendance", "Nobody is recorded as having attended.") })
|
|
10858
11052
|
] })
|
|
10859
11053
|
) : /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Who attended", children: [
|
|
10860
|
-
/* @__PURE__ */
|
|
10861
|
-
/* @__PURE__ */
|
|
10862
|
-
/* @__PURE__ */
|
|
11054
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Who attended" }),
|
|
11055
|
+
/* @__PURE__ */ jsx5("ul", { className: "mx-meet__record-attendees", children: attended.map((person) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__record-attendee", children: [
|
|
11056
|
+
/* @__PURE__ */ jsx5(
|
|
10863
11057
|
Avatar,
|
|
10864
11058
|
{
|
|
10865
11059
|
name: displayNameFor(bundle.names, person.identity, person.displayName),
|
|
@@ -10869,24 +11063,24 @@ function MeetingRecordBody({
|
|
|
10869
11063
|
),
|
|
10870
11064
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
|
|
10871
11065
|
displayNameFor(bundle.names, person.identity, person.displayName),
|
|
10872
|
-
person.role === "host" ? /* @__PURE__ */
|
|
10873
|
-
person.role === "guest" ? /* @__PURE__ */
|
|
10874
|
-
person.isAgent ? /* @__PURE__ */
|
|
11066
|
+
person.role === "host" ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Host" }) : null,
|
|
11067
|
+
person.role === "guest" ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Guest" }) : null,
|
|
11068
|
+
person.isAgent ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Meeting assistant" }) : null
|
|
10875
11069
|
] })
|
|
10876
11070
|
] }, person.id)) })
|
|
10877
11071
|
] }),
|
|
10878
11072
|
bundle.recording !== null ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section mx-meet__recording-card", "aria-label": "Recording", children: [
|
|
10879
|
-
/* @__PURE__ */
|
|
11073
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Recording" }),
|
|
10880
11074
|
fileId !== null ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
10881
|
-
/* @__PURE__ */
|
|
10882
|
-
notice !== null ? /* @__PURE__ */
|
|
10883
|
-
] }) : /* @__PURE__ */
|
|
11075
|
+
/* @__PURE__ */ jsx5(RecordingPlayer, { fileId }),
|
|
11076
|
+
notice !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: notice }) : null
|
|
11077
|
+
] }) : /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: notice ?? "This recording has no file." })
|
|
10884
11078
|
] }) : wasRefused(bundle, "recording") ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Recording", children: [
|
|
10885
|
-
/* @__PURE__ */
|
|
10886
|
-
/* @__PURE__ */
|
|
11079
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Recording" }),
|
|
11080
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: REFUSED_ABSENCE })
|
|
10887
11081
|
] }) : null,
|
|
10888
11082
|
/* @__PURE__ */ jsxs3("nav", { className: "mx-meet__record-tabs", "aria-label": "Meeting record sections", children: [
|
|
10889
|
-
/* @__PURE__ */
|
|
11083
|
+
/* @__PURE__ */ jsx5(
|
|
10890
11084
|
"button",
|
|
10891
11085
|
{
|
|
10892
11086
|
type: "button",
|
|
@@ -10896,7 +11090,7 @@ function MeetingRecordBody({
|
|
|
10896
11090
|
children: "Summary & decisions"
|
|
10897
11091
|
}
|
|
10898
11092
|
),
|
|
10899
|
-
/* @__PURE__ */
|
|
11093
|
+
/* @__PURE__ */ jsx5(
|
|
10900
11094
|
"button",
|
|
10901
11095
|
{
|
|
10902
11096
|
type: "button",
|
|
@@ -10906,7 +11100,7 @@ function MeetingRecordBody({
|
|
|
10906
11100
|
children: "Notes as it happened"
|
|
10907
11101
|
}
|
|
10908
11102
|
),
|
|
10909
|
-
/* @__PURE__ */
|
|
11103
|
+
/* @__PURE__ */ jsx5(
|
|
10910
11104
|
"button",
|
|
10911
11105
|
{
|
|
10912
11106
|
type: "button",
|
|
@@ -10919,13 +11113,13 @@ function MeetingRecordBody({
|
|
|
10919
11113
|
] }),
|
|
10920
11114
|
tab === "summary" ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
10921
11115
|
/* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Summary", children: [
|
|
10922
|
-
/* @__PURE__ */
|
|
10923
|
-
wrapUp.state === "written" ? /* @__PURE__ */
|
|
10924
|
-
/* @__PURE__ */
|
|
10925
|
-
/* @__PURE__ */
|
|
10926
|
-
] }) : /* @__PURE__ */
|
|
11116
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Summary" }),
|
|
11117
|
+
wrapUp.state === "written" ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__record-summary", children: bundle.summary?.text }) : wrapUp.state === "in-progress" ? /* @__PURE__ */ jsxs3("div", { className: "mx-meet__panel-note", role: "status", children: [
|
|
11118
|
+
/* @__PURE__ */ jsx5("p", { children: wrapUp.message }),
|
|
11119
|
+
/* @__PURE__ */ jsx5("button", { type: "button", className: "mx-meet__link", onClick: record.reload, children: "Check again" })
|
|
11120
|
+
] }) : /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", role: wrapUp.state === "failed" ? "alert" : void 0, children: wrapUp.message })
|
|
10927
11121
|
] }),
|
|
10928
|
-
/* @__PURE__ */
|
|
11122
|
+
/* @__PURE__ */ jsx5(
|
|
10929
11123
|
NoteList,
|
|
10930
11124
|
{
|
|
10931
11125
|
title: "Decisions",
|
|
@@ -10937,7 +11131,7 @@ function MeetingRecordBody({
|
|
|
10937
11131
|
)
|
|
10938
11132
|
}
|
|
10939
11133
|
),
|
|
10940
|
-
/* @__PURE__ */
|
|
11134
|
+
/* @__PURE__ */ jsx5(
|
|
10941
11135
|
NoteList,
|
|
10942
11136
|
{
|
|
10943
11137
|
title: "Action items",
|
|
@@ -10951,12 +11145,12 @@ function MeetingRecordBody({
|
|
|
10951
11145
|
)
|
|
10952
11146
|
] }) : null,
|
|
10953
11147
|
tab === "notes" ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Notes as it happened", children: [
|
|
10954
|
-
/* @__PURE__ */
|
|
10955
|
-
bundle.liveNotes.length === 0 ? /* @__PURE__ */
|
|
11148
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Notes as it happened" }),
|
|
11149
|
+
bundle.liveNotes.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: absenceSentence(
|
|
10956
11150
|
bundle,
|
|
10957
11151
|
"notes",
|
|
10958
11152
|
"No live notes are available for this meeting."
|
|
10959
|
-
) }) : /* @__PURE__ */
|
|
11153
|
+
) }) : /* @__PURE__ */ jsx5("ul", { className: "mx-meet__notes", children: bundle.liveNotes.map((note) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__note", children: [
|
|
10960
11154
|
note.window !== null ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__badge", children: [
|
|
10961
11155
|
"Window ",
|
|
10962
11156
|
note.window
|
|
@@ -10967,24 +11161,24 @@ function MeetingRecordBody({
|
|
|
10967
11161
|
tab === "transcript" ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Transcript", children: [
|
|
10968
11162
|
/* @__PURE__ */ jsxs3("h2", { className: "mx-meet__record-section-title", children: [
|
|
10969
11163
|
"Transcript",
|
|
10970
|
-
/* @__PURE__ */
|
|
11164
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet__record-count", children: bundle.transcript.length === 1 ? "1 line" : `${bundle.transcript.length} lines` })
|
|
10971
11165
|
] }),
|
|
10972
|
-
blocks.length === 0 ? /* @__PURE__ */
|
|
11166
|
+
blocks.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: absenceSentence(
|
|
10973
11167
|
bundle,
|
|
10974
11168
|
"transcript",
|
|
10975
11169
|
"No transcript is available for this meeting."
|
|
10976
|
-
) }) : /* @__PURE__ */
|
|
11170
|
+
) }) : /* @__PURE__ */ jsx5("ol", { className: "mx-meet__record-transcript", children: blocks.map((block) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__record-block", children: [
|
|
10977
11171
|
/* @__PURE__ */ jsxs3("p", { className: "mx-meet__record-speaker", children: [
|
|
10978
11172
|
block.speaker,
|
|
10979
|
-
/* @__PURE__ */
|
|
11173
|
+
/* @__PURE__ */ jsx5("time", { className: "mx-meet__record-time", dateTime: block.startedAt, children: clockOf(block.startedAt) })
|
|
10980
11174
|
] }),
|
|
10981
|
-
block.lines.map((line) => /* @__PURE__ */
|
|
11175
|
+
block.lines.map((line) => /* @__PURE__ */ jsx5("p", { className: "mx-meet__record-line", children: line.text }, line.id))
|
|
10982
11176
|
] }, block.id)) })
|
|
10983
11177
|
] }) : null,
|
|
10984
|
-
/* @__PURE__ */
|
|
11178
|
+
/* @__PURE__ */ jsx5(GuestRecordAccessControl, { meeting }),
|
|
10985
11179
|
/* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Ask about this meeting", children: [
|
|
10986
|
-
/* @__PURE__ */
|
|
10987
|
-
guestFinishedMeeting ? /* @__PURE__ */
|
|
11180
|
+
/* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Ask about this meeting" }),
|
|
11181
|
+
guestFinishedMeeting ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: "Sign in to ask the assistant about a meeting after it ends." }) : /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
10988
11182
|
/* @__PURE__ */ jsxs3(
|
|
10989
11183
|
"form",
|
|
10990
11184
|
{
|
|
@@ -10996,7 +11190,7 @@ function MeetingRecordBody({
|
|
|
10996
11190
|
void record.ask(trimmed);
|
|
10997
11191
|
},
|
|
10998
11192
|
children: [
|
|
10999
|
-
/* @__PURE__ */
|
|
11193
|
+
/* @__PURE__ */ jsx5(
|
|
11000
11194
|
"input",
|
|
11001
11195
|
{
|
|
11002
11196
|
className: "mx-meet__input",
|
|
@@ -11006,7 +11200,7 @@ function MeetingRecordBody({
|
|
|
11006
11200
|
"aria-label": "Ask about this meeting"
|
|
11007
11201
|
}
|
|
11008
11202
|
),
|
|
11009
|
-
/* @__PURE__ */
|
|
11203
|
+
/* @__PURE__ */ jsx5(
|
|
11010
11204
|
"button",
|
|
11011
11205
|
{
|
|
11012
11206
|
type: "submit",
|
|
@@ -11018,7 +11212,7 @@ function MeetingRecordBody({
|
|
|
11018
11212
|
]
|
|
11019
11213
|
}
|
|
11020
11214
|
),
|
|
11021
|
-
record.answer !== null ? /* @__PURE__ */
|
|
11215
|
+
record.answer !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__answer", children: record.answer }) : null,
|
|
11022
11216
|
record.coverage !== null ? /* @__PURE__ */ jsxs3("p", { className: "mx-meet__coverage", children: [
|
|
11023
11217
|
"Answered from ",
|
|
11024
11218
|
record.coverage.segmentsUsed,
|
|
@@ -11031,8 +11225,8 @@ function MeetingRecordBody({
|
|
|
11031
11225
|
"."
|
|
11032
11226
|
] }) : null,
|
|
11033
11227
|
record.askError !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error: record.askError, operation: "Ask about this meeting", origin: "meet/components", children: [
|
|
11034
|
-
/* @__PURE__ */
|
|
11035
|
-
/* @__PURE__ */
|
|
11228
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: record.askError.message }),
|
|
11229
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: record.askError.remedy })
|
|
11036
11230
|
] }) : null
|
|
11037
11231
|
] })
|
|
11038
11232
|
] })
|
|
@@ -11043,21 +11237,21 @@ var STREAM_REFUSED = "Streaming playback did not start, so this recording was do
|
|
|
11043
11237
|
var PLAYBACK_RETRY_REMEDY = "Reload the page and try again. If it still will not play, ask a meeting host to check the recording.";
|
|
11044
11238
|
function RecordingPlayer(props) {
|
|
11045
11239
|
const host = useMeetHost();
|
|
11046
|
-
if (host === null) return /* @__PURE__ */
|
|
11047
|
-
return /* @__PURE__ */
|
|
11240
|
+
if (host === null) return /* @__PURE__ */ jsx5(InertNotice, { what: "This recording" });
|
|
11241
|
+
return /* @__PURE__ */ jsx5(RecordingPlayerBody, { ...props, host });
|
|
11048
11242
|
}
|
|
11049
11243
|
function RecordingPlayerBody({ fileId, host }) {
|
|
11050
11244
|
const [media, setMedia] = useState4(null);
|
|
11051
11245
|
const [loading, setLoading] = useState4(false);
|
|
11052
11246
|
const [error, setError] = useState4(null);
|
|
11053
|
-
|
|
11247
|
+
useEffect5(() => {
|
|
11054
11248
|
if (media === null || media.kind !== "bytes") return void 0;
|
|
11055
11249
|
const url = media.url;
|
|
11056
11250
|
return () => URL.revokeObjectURL(url);
|
|
11057
11251
|
}, [media]);
|
|
11058
11252
|
if (media !== null) {
|
|
11059
11253
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-section", children: [
|
|
11060
|
-
/* @__PURE__ */
|
|
11254
|
+
/* @__PURE__ */ jsx5(
|
|
11061
11255
|
"video",
|
|
11062
11256
|
{
|
|
11063
11257
|
className: "mx-meet__record-player",
|
|
@@ -11099,15 +11293,15 @@ function RecordingPlayerBody({ fileId, host }) {
|
|
|
11099
11293
|
}
|
|
11100
11294
|
}
|
|
11101
11295
|
),
|
|
11102
|
-
media.fallbackReason !== null ? /* @__PURE__ */
|
|
11296
|
+
media.fallbackReason !== null ? /* @__PURE__ */ jsx5("p", { className: "mx-meet__panel-note", children: media.fallbackReason }) : null
|
|
11103
11297
|
] });
|
|
11104
11298
|
}
|
|
11105
11299
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-section", children: [
|
|
11106
11300
|
error !== null ? /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__refusal", error, operation: "Complete this meeting action", origin: "meet/components", children: [
|
|
11107
|
-
/* @__PURE__ */
|
|
11108
|
-
/* @__PURE__ */
|
|
11301
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-reason", children: error.message }),
|
|
11302
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__refusal-remedy", children: error.remedy })
|
|
11109
11303
|
] }) : null,
|
|
11110
|
-
/* @__PURE__ */
|
|
11304
|
+
/* @__PURE__ */ jsx5(
|
|
11111
11305
|
"button",
|
|
11112
11306
|
{
|
|
11113
11307
|
type: "button",
|
|
@@ -11143,35 +11337,35 @@ function clockOf(iso) {
|
|
|
11143
11337
|
function MeetingList({ baseUrl }) {
|
|
11144
11338
|
const host = useMeetHost();
|
|
11145
11339
|
const list = useMeetings();
|
|
11146
|
-
if (host === null) return /* @__PURE__ */
|
|
11340
|
+
if (host === null) return /* @__PURE__ */ jsx5(InertNotice, { what: "Your meetings" });
|
|
11147
11341
|
if (list.failure !== null) {
|
|
11148
11342
|
return /* @__PURE__ */ jsxs3(ErrorBox, { as: "div", className: "mx-meet__empty", error: list.failure, operation: "List your meetings", origin: "meet/components", children: [
|
|
11149
|
-
/* @__PURE__ */
|
|
11150
|
-
/* @__PURE__ */
|
|
11151
|
-
/* @__PURE__ */
|
|
11343
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "Your meetings could not be listed" }),
|
|
11344
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: list.failure.message }),
|
|
11345
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: list.failure.remedy })
|
|
11152
11346
|
] });
|
|
11153
11347
|
}
|
|
11154
11348
|
if (list.loading) {
|
|
11155
|
-
return /* @__PURE__ */
|
|
11349
|
+
return /* @__PURE__ */ jsx5("div", { className: "mx-meet__empty", role: "status", children: /* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "Loading your meetings\u2026" }) });
|
|
11156
11350
|
}
|
|
11157
11351
|
if (list.meetings.length === 0) {
|
|
11158
11352
|
return /* @__PURE__ */ jsxs3("div", { className: "mx-meet__empty", role: "status", children: [
|
|
11159
|
-
/* @__PURE__ */
|
|
11160
|
-
/* @__PURE__ */
|
|
11353
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-title", children: "No meetings yet" }),
|
|
11354
|
+
/* @__PURE__ */ jsx5("p", { className: "mx-meet__empty-body", children: "Create one above. Its link works before, during and after the meeting \u2014 afterwards it opens the record." })
|
|
11161
11355
|
] });
|
|
11162
11356
|
}
|
|
11163
11357
|
const origin = baseUrl ?? (typeof window === "undefined" ? "" : window.location.origin);
|
|
11164
|
-
return /* @__PURE__ */
|
|
11358
|
+
return /* @__PURE__ */ jsx5("ul", { className: "mx-meet-list", children: list.meetings.map((meeting) => {
|
|
11165
11359
|
const ended = meeting.endedAt !== null;
|
|
11166
11360
|
return /* @__PURE__ */ jsxs3("li", { className: "mx-meet-list__row", children: [
|
|
11167
11361
|
/* @__PURE__ */ jsxs3("div", { className: "mx-meet-list__main", children: [
|
|
11168
11362
|
/* @__PURE__ */ jsxs3("span", { className: "mx-meet-list__title", children: [
|
|
11169
11363
|
meeting.title,
|
|
11170
|
-
ended ? /* @__PURE__ */
|
|
11364
|
+
ended ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Ended" }) : null
|
|
11171
11365
|
] }),
|
|
11172
|
-
/* @__PURE__ */
|
|
11366
|
+
/* @__PURE__ */ jsx5("span", { className: "mx-meet-list__when", children: meetingWhen(meeting) })
|
|
11173
11367
|
] }),
|
|
11174
|
-
/* @__PURE__ */
|
|
11368
|
+
/* @__PURE__ */ jsx5("a", { className: "mx-meet-list__action", href: meetingLink(origin, meeting.slug), children: ended ? "Open the record" : "Join" })
|
|
11175
11369
|
] }, meeting.id);
|
|
11176
11370
|
}) });
|
|
11177
11371
|
}
|
|
@@ -11389,6 +11583,7 @@ export {
|
|
|
11389
11583
|
MODERATION_ACTIONS,
|
|
11390
11584
|
MeetError,
|
|
11391
11585
|
MeetProvider,
|
|
11586
|
+
MeetRoot,
|
|
11392
11587
|
MeetingList,
|
|
11393
11588
|
MeetingOverlays,
|
|
11394
11589
|
MeetingRecordView,
|
|
@@ -11534,6 +11729,7 @@ export {
|
|
|
11534
11729
|
meetingWhen,
|
|
11535
11730
|
mergeCaption,
|
|
11536
11731
|
mergeRecord,
|
|
11732
|
+
microphoneNoticeCode,
|
|
11537
11733
|
normalizeDeviceError,
|
|
11538
11734
|
normalizeMeetError,
|
|
11539
11735
|
normalizeSpoken,
|
|
@@ -11542,8 +11738,13 @@ export {
|
|
|
11542
11738
|
noteTakerParticipant,
|
|
11543
11739
|
noteTakerStatus,
|
|
11544
11740
|
notesDocument,
|
|
11741
|
+
observe as observeMeeting,
|
|
11742
|
+
observedDevice,
|
|
11743
|
+
observedPhase,
|
|
11744
|
+
observedQuality,
|
|
11545
11745
|
orderParticipants,
|
|
11546
11746
|
parseRoomToken,
|
|
11747
|
+
participantAttributes,
|
|
11547
11748
|
participantSummary,
|
|
11548
11749
|
playableRecordingFileId,
|
|
11549
11750
|
projectInvitee,
|
|
@@ -11564,12 +11765,14 @@ export {
|
|
|
11564
11765
|
recordingOffsetMs,
|
|
11565
11766
|
roleOf,
|
|
11566
11767
|
roomTopic,
|
|
11768
|
+
rootAttributes,
|
|
11567
11769
|
searchTranscript,
|
|
11568
11770
|
sendFollowUp,
|
|
11569
11771
|
setGuestRecordAccess,
|
|
11570
11772
|
settingsPatch,
|
|
11571
11773
|
snapshotParticipant,
|
|
11572
11774
|
snippetRuns,
|
|
11775
|
+
staticObservation,
|
|
11573
11776
|
summarizeMeetingRecordRestrictions,
|
|
11574
11777
|
transcriptDocument,
|
|
11575
11778
|
unavailableFrom,
|
|
@@ -11583,6 +11786,8 @@ export {
|
|
|
11583
11786
|
useCollab,
|
|
11584
11787
|
useCollabPanelRequest,
|
|
11585
11788
|
useConsentNotice,
|
|
11789
|
+
useCoreObservation,
|
|
11790
|
+
useCoreRootProps,
|
|
11586
11791
|
useDeviceSnapshot,
|
|
11587
11792
|
useElapsed,
|
|
11588
11793
|
useEndMeeting,
|