@ai-matrx/meet 0.7.82 → 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/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 useEffect2, useMemo as useMemo2, useRef as useRef2, useState as useState2, useSyncExternalStore as useSyncExternalStore2 } from "react";
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 = useMemo2(
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
- useEffect2(() => {
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 = useRef2(null);
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
- useEffect2(() => {
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 = useMemo2(
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 = useMemo2(
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
- useEffect2(() => {
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
- useEffect2(() => {
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 useMemo2(
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
- useEffect2(() => {
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 = useRef2(handlers);
6928
+ const ref = useRef3(handlers);
6754
6929
  ref.current = handlers;
6755
- useEffect2(() => {
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 = useRef2(() => Promise.reject(new Error("not ready")));
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
- useEffect2(() => {
7022
+ useEffect3(() => {
6848
7023
  if (key === null) return;
6849
7024
  void cache.ensure(key, () => readRef.current());
6850
7025
  }, [cache, key]);
6851
- useEffect2(() => {
7026
+ useEffect3(() => {
6852
7027
  if (key !== null && meeting !== null) cache.setMeeting(key, meeting);
6853
7028
  }, [cache, key, meeting]);
6854
- useEffect2(() => {
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
- useEffect2(() => {
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
- useEffect2(() => {
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 useEffect4, useLayoutEffect, useMemo as useMemo3, useRef as useRef4, useState as useState4 } from "react";
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 useEffect3, useRef as useRef3, useState as useState3 } from "react";
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 jsx2, jsxs } from "react/jsx-runtime";
7662
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
7488
7663
  function Icon({ children, ...props }) {
7489
- return /* @__PURE__ */ jsx2(
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__ */ jsx2("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z" }),
7510
- /* @__PURE__ */ jsx2("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
7511
- /* @__PURE__ */ jsx2("path", { d: "M12 19v3" })
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__ */ jsx2("path", { d: "M2 2l20 20" }),
7517
- /* @__PURE__ */ jsx2("path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12" }),
7518
- /* @__PURE__ */ jsx2("path", { d: "M15 9.34V5a3 3 0 0 0-5.94-.6" }),
7519
- /* @__PURE__ */ jsx2("path", { d: "M19 10v2a7 7 0 0 1-.11 1.23M5 10v2a7 7 0 0 0 11 5.66" }),
7520
- /* @__PURE__ */ jsx2("path", { d: "M12 19v3" })
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__ */ jsx2("path", { d: "m23 7-7 5 7 5V7Z" }),
7526
- /* @__PURE__ */ jsx2("rect", { x: "1", y: "5", width: "15", height: "14", rx: "2" })
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__ */ jsx2("path", { d: "M2 2l20 20" }),
7532
- /* @__PURE__ */ jsx2("path", { d: "M10.66 5H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10" }),
7533
- /* @__PURE__ */ jsx2("path", { d: "M16 16a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2" })
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__ */ jsx2("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2" }),
7539
- /* @__PURE__ */ jsx2("path", { d: "M8 21h8M12 17v4" }),
7540
- /* @__PURE__ */ jsx2("path", { d: "M12 13V8m0 0-2.5 2.5M12 8l2.5 2.5" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("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" }) });
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__ */ jsx2(Icon, { fill: "currentColor", stroke: "none", ...props, children: /* @__PURE__ */ jsx2("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" }) });
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__ */ jsx2("path", { d: "M18 11V6a2 2 0 0 0-4 0v5" }),
7552
- /* @__PURE__ */ jsx2("path", { d: "M14 10V4a2 2 0 0 0-4 0v7" }),
7553
- /* @__PURE__ */ jsx2("path", { d: "M10 10.5V6a2 2 0 0 0-4 0v8" }),
7554
- /* @__PURE__ */ jsx2("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" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z" }) });
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__ */ jsx2("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
7563
- /* @__PURE__ */ jsx2("circle", { cx: "9", cy: "7", r: "4" }),
7564
- /* @__PURE__ */ jsx2("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "12", r: "8", fill: "currentColor", stroke: "none" }) });
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__ */ jsx2("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" }),
7573
- /* @__PURE__ */ jsx2("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" })
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__ */ jsx2("rect", { x: "4", y: "10", width: "16", height: "11", rx: "2" }),
7579
- /* @__PURE__ */ jsx2("path", { d: "M8 10V7a4 4 0 0 1 8 0v3" })
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__ */ jsx2("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
7585
- /* @__PURE__ */ jsx2("path", { d: "M3 9h18M9 21V9" })
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__ */ jsx2("circle", { cx: "12", cy: "12", r: "3" }),
7591
- /* @__PURE__ */ jsx2("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" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M20 6 9 17l-5-5" }) });
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M18 6 6 18M6 6l12 12" }) });
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__ */ jsx2("path", { d: "M12 17v5" }),
7603
- /* @__PURE__ */ jsx2("path", { d: "M9 2h6l-1 6 3.5 3.5V14H6.5v-2.5L10 8 9 2Z" })
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__ */ jsx2("path", { d: "M12 20h.01" }),
7609
- /* @__PURE__ */ jsx2("path", { d: "M8.5 16.5a5 5 0 0 1 7 0" })
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__ */ jsx2("circle", { cx: "12", cy: "12", r: "10" }),
7615
- /* @__PURE__ */ jsx2("path", { d: "M8 14s1.5 2 4 2 4-2 4-2" }),
7616
- /* @__PURE__ */ jsx2("line", { x1: "9", x2: "9.01", y1: "9", y2: "9" }),
7617
- /* @__PURE__ */ jsx2("line", { x1: "15", x2: "15.01", y1: "9", y2: "9" })
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__ */ jsx2("circle", { cx: "12", cy: "12", r: "1" }),
7623
- /* @__PURE__ */ jsx2("circle", { cx: "19", cy: "12", r: "1" }),
7624
- /* @__PURE__ */ jsx2("circle", { cx: "5", cy: "12", r: "1" })
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__ */ jsx2("circle", { cx: "11", cy: "11", r: "8" }),
7630
- /* @__PURE__ */ jsx2("path", { d: "m21 21-4.3-4.3" })
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__ */ jsx2("path", { d: "M10 8h.01M12 12h.01M14 8h.01M16 12h.01M18 8h.01M6 8h.01M7 16h10M8 12h.01" }),
7636
- /* @__PURE__ */ jsx2("rect", { width: "20", height: "16", x: "2", y: "4", rx: "2" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("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" }) });
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__ */ jsx2("path", { d: "M4 20v-2", opacity: bars >= 1 ? 1 : 0.3 }),
7645
- /* @__PURE__ */ jsx2("path", { d: "M10 20v-6", opacity: bars >= 2 ? 1 : 0.3 }),
7646
- /* @__PURE__ */ jsx2("path", { d: "M16 20V9", opacity: bars >= 3 ? 1 : 0.3 }),
7647
- /* @__PURE__ */ jsx2("path", { d: "M22 20V4", opacity: bars >= 3 ? 1 : 0.3 })
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__ */ jsx2("path", { d: "M11 5 6 9H2v6h4l5 4V5Z" }),
7653
- /* @__PURE__ */ jsx2("path", { d: "M15.54 8.46a5 5 0 0 1 0 7.07" }),
7654
- /* @__PURE__ */ jsx2("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14" })
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__ */ jsx2("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" }),
7660
- /* @__PURE__ */ jsx2("line", { x1: "4", x2: "4", y1: "22", y2: "15" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" }) });
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__ */ jsx2("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" }),
7669
- /* @__PURE__ */ jsx2("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }),
7670
- /* @__PURE__ */ jsx2("circle", { cx: "17.5", cy: "17.5", r: "3.5" })
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__ */ jsx2("line", { x1: "18", x2: "18", y1: "20", y2: "10" }),
7676
- /* @__PURE__ */ jsx2("line", { x1: "12", x2: "12", y1: "20", y2: "4" }),
7677
- /* @__PURE__ */ jsx2("line", { x1: "6", x2: "6", y1: "20", y2: "14" })
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__ */ jsx2("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }),
7683
- /* @__PURE__ */ jsx2("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }),
7684
- /* @__PURE__ */ jsx2("path", { d: "M12 17h.01" })
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__ */ jsx2("path", { d: "M2 3h20" }),
7690
- /* @__PURE__ */ jsx2("path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3" }),
7691
- /* @__PURE__ */ jsx2("path", { d: "m7 21 5-5 5 5" })
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__ */ jsx2("rect", { width: "7", height: "18", x: "3", y: "3", rx: "1" }),
7697
- /* @__PURE__ */ jsx2("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }),
7698
- /* @__PURE__ */ jsx2("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" })
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__ */ jsx2(Icon, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M9 18v-6H5l7-7 7 7h-4v6H9z" }) });
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__ */ jsx2("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" }),
7707
- /* @__PURE__ */ jsx2("path", { d: "M22 21H7" }),
7708
- /* @__PURE__ */ jsx2("path", { d: "m5 11 9 9" })
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__ */ jsx2("path", { d: "m9 11-6 6v3h9l3-3" }),
7714
- /* @__PURE__ */ jsx2("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" })
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__ */ jsx2("path", { d: "M9 14 4 9l5-5" }),
7720
- /* @__PURE__ */ jsx2("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" })
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 jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
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
- useEffect3(() => {
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__ */ jsx3("p", { className: notice.failed ? "mx-meet__panel-note mx-meet__collab-error" : "mx-meet__panel-note", role: "status", children: notice.text });
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__ */ jsx3(PollIcon, { ...props });
7777
- if (panel === "qa") return /* @__PURE__ */ jsx3(QuestionIcon, { ...props });
7778
- if (panel === "whiteboard") return /* @__PURE__ */ jsx3(WhiteboardIcon, { ...props });
7779
- return /* @__PURE__ */ jsx3(BreakoutIcon, { ...props });
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__ */ jsx3(ActivitiesIcon, {}),
7810
- attention ? /* @__PURE__ */ jsx3("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
7984
+ /* @__PURE__ */ jsx4(ActivitiesIcon, {}),
7985
+ attention ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
7811
7986
  ] }),
7812
- open ? /* @__PURE__ */ jsx3(Popover, { label: "Activities", onClose: () => setOpen(false), children: /* @__PURE__ */ jsx3("div", { className: "mx-meet__menu", role: "menu", children: available.map((panel) => /* @__PURE__ */ jsxs2(
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__ */ jsx3(ActivityIcon, { panel }),
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__ */ jsx3("span", { className: "mx-meet__field-label", children: "Question" }),
7869
- /* @__PURE__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3(ControlButton, { label: `Remove answer ${index + 1}`, onClick: () => setOptions(options.filter((_, i) => i !== index)), children: /* @__PURE__ */ jsx3(CloseIcon, { width: 14, height: 14 }) }) : null
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__ */ jsx3("button", { type: "button", className: "mx-meet__link", onClick: () => setOptions([...options, ""]), children: "Add an answer" }) : null,
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__ */ jsx3("input", { type: "checkbox", checked: multiple, onChange: (event) => setMultiple(event.target.checked) }),
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__ */ jsx3("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
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__ */ jsx3(Notice, { notice }),
8079
+ /* @__PURE__ */ jsx4(Notice, { notice }),
7905
8080
  /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
7906
- /* @__PURE__ */ jsx3("button", { type: "submit", className: "mx-meet__primary mx-meet__primary--small", disabled: !ready || busy, children: "Launch" }),
7907
- /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", disabled: !ready || busy, onClick: () => void save(false), children: "Save draft" }),
7908
- /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__link", onClick: onDone, children: "Cancel" })
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
- useEffect3(() => setPicked(poll.myVote.slice()), [poll.myVote]);
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__ */ jsx3("strong", { className: "mx-meet__collab-title", children: poll.question }),
7931
- /* @__PURE__ */ jsx3("span", { className: "mx-meet__collab-state", children: stateWord })
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__ */ jsx3("ul", { className: "mx-meet__poll-options", children: poll.options.map((option) => {
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__ */ jsx3("span", { className: "mx-meet__poll-bar", style: { width: `${share}%` }, "aria-hidden": "true" }) : null,
7953
- /* @__PURE__ */ jsx3("span", { className: "mx-meet__poll-text", children: option.text }),
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__ */ jsx3("span", { className: "mx-meet__poll-voters", children: option.voters.join(", ") }) : null
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__ */ jsx3(Notice, { notice }),
8141
+ /* @__PURE__ */ jsx4(Notice, { notice }),
7967
8142
  /* @__PURE__ */ jsxs2("div", { className: "mx-meet__collab-actions", children: [
7968
- canVote ? /* @__PURE__ */ jsx3(
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__ */ jsx3("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,
7979
- isHost && poll.state === "live" ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "poll_close", itemId: poll.id }).then(show), children: "End poll" }) : null,
7980
- isHost && poll.state !== "draft" ? /* @__PURE__ */ jsx3("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,
7981
- isHost && poll.state === "live" ? null : isHost ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "poll_delete", itemId: poll.id }).then(show), children: "Delete" }) : null
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__ */ jsx3("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
7993
- isHost && !composing ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__primary mx-meet__primary--small", onClick: () => setComposing(true), children: "New poll" }) : null,
7994
- isHost && composing ? /* @__PURE__ */ jsx3(PollComposer, { maxOptions, onDone: () => setComposing(false) }) : null,
7995
- ordered.length === 0 && !composing ? /* @__PURE__ */ jsx3("p", { className: "mx-meet__panel-note", children: isHost ? "No polls yet. Polls and their results are kept with the meeting." : "No polls yet." }) : null,
7996
- ordered.map((poll) => /* @__PURE__ */ jsx3(PollCard, { poll }, poll.id))
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__ */ jsx3(UpvoteIcon, { width: 16, height: 16 }),
8017
- /* @__PURE__ */ jsx3("span", { children: question.upvotes })
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__ */ jsx3("strong", { children: question.mine ? "You" : question.askerName }),
8024
- question.mine && question.anonymous ? /* @__PURE__ */ jsx3("span", { className: "mx-meet__chat-private", children: "anonymous" }) : null,
8025
- question.state !== "open" ? /* @__PURE__ */ jsx3("span", { className: "mx-meet__collab-state", children: question.state === "answered" ? "Answered" : "Dismissed" }) : null
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__ */ jsx3("span", { className: "mx-meet__chat-text", children: question.text }),
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__ */ jsx3(
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__ */ jsx3("button", { type: "submit", className: "mx-meet__send", children: "Done" })
8240
+ /* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__send", children: "Done" })
8066
8241
  ]
8067
8242
  }
8068
8243
  ) : null,
8069
- /* @__PURE__ */ jsx3(Notice, { notice }),
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__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => setAnswering(true), children: "Answer" }) : null,
8072
- isHost && question.state === "open" ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_dismiss", itemId: question.id }).then(show), children: "Dismiss" }) : null,
8073
- isHost && question.state !== "open" ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "question_reopen", itemId: question.id }).then(show), children: "Reopen" }) : null,
8074
- question.mine || isHost ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__link", onClick: () => void act({ action: "question_delete", itemId: question.id }).then(show), children: "Delete" }) : null
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__ */ jsx3("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
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__ */ jsx3(
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__ */ jsx3("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Ask" })
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__ */ jsx3("input", { type: "checkbox", checked: anonymous, onChange: (event) => setAnonymous(event.target.checked) }),
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__ */ jsx3(Notice, { notice }),
8128
- questions.length > 1 ? /* @__PURE__ */ jsx3("div", { className: "mx-meet__pills", role: "group", "aria-label": "Order questions", children: ["popular", "recent"].map((value) => /* @__PURE__ */ jsx3(
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__ */ jsx3("p", { className: "mx-meet__panel-note", children: "No questions yet. Questions are kept with the meeting." }) : /* @__PURE__ */ jsx3("ul", { className: "mx-meet__chat", children: questions.map((question) => /* @__PURE__ */ jsx3(QuestionCard, { question }, question.id)) })
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__ */ jsx3(
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__ */ jsx3("title", { children: stroke.byName })
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 = useRef3(null);
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__ */ jsx3("strong", { className: "mx-meet__panel-title", children: "Whiteboard" }),
8211
- /* @__PURE__ */ jsx3("div", { className: "mx-meet__pills", role: "group", "aria-label": "Tool", children: [
8212
- ["pen", "Pen", /* @__PURE__ */ jsx3(PencilIcon, { width: 16, height: 16 }, "p")],
8213
- ["highlighter", "Highlighter", /* @__PURE__ */ jsx3(HighlighterIcon, { width: 16, height: 16 }, "h")],
8214
- ["eraser", "Eraser \u2014 click a stroke", /* @__PURE__ */ jsx3(EraserIcon, { width: 16, height: 16 }, "e")]
8215
- ].map(([value, label, icon]) => /* @__PURE__ */ jsx3(
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__ */ jsx3("div", { className: "mx-meet__swatches", role: "group", "aria-label": "Color", children: INK.map((ink) => /* @__PURE__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3(UndoIcon, { width: 16, height: 16 })
8426
+ children: /* @__PURE__ */ jsx4(UndoIcon, { width: 16, height: 16 })
8252
8427
  }
8253
8428
  ),
8254
- isHost && strokes.length > 0 ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void act({ action: "whiteboard_clear" }).then(show), children: "Clear board" }) : null,
8255
- /* @__PURE__ */ jsx3("span", { className: "mx-meet__whiteboard-note", children: "Saved with the meeting" }),
8256
- /* @__PURE__ */ jsx3(ControlButton, { label: "Close whiteboard", onClick: onClose, children: /* @__PURE__ */ jsx3(CloseIcon, { width: 16, height: 16 }) })
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__ */ jsx3(Notice, { notice }),
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__ */ jsx3("rect", { x: 0, y: 0, width: BOARD_W, height: BOARD_H, className: "mx-meet__board-paper" }),
8284
- strokes.map((stroke) => /* @__PURE__ */ jsx3(
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__ */ jsx3(StrokeView, { stroke }, stroke.id)),
8293
- drawing !== null ? /* @__PURE__ */ jsx3(
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
- useEffect3(() => {
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__ */ jsx3("span", { className: "mx-meet__field-label", children: "Rooms" }),
8351
- /* @__PURE__ */ jsx3(
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__ */ jsx3("div", { className: "mx-meet__pills", role: "group", "aria-label": "How people are placed", children: [
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__ */ jsx3(
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__ */ jsx3("span", { className: "mx-meet__field-label", children: "Timer (minutes, 0 for none)" }),
8380
- /* @__PURE__ */ jsx3(
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__ */ jsx3("p", { className: "mx-meet__panel-note", children: "Nobody else is in the meeting yet." }) : /* @__PURE__ */ jsx3("ul", { className: "mx-meet__people", children: people.map((person) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
8393
- /* @__PURE__ */ jsx3("span", { className: "mx-meet__person-name", children: person.displayName }),
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__ */ jsx3("option", { value: -1, children: "Main room" }),
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__ */ jsx3("ul", { className: "mx-meet__breakout-rooms", children: assignment.map((members, index) => /* @__PURE__ */ jsxs2("li", { children: [
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__ */ jsx3("span", { className: "mx-meet__panel-note", children: members.length === 0 ? "empty" : members.map(nameOf).join(", ") })
8417
- ] }, index)) }) : /* @__PURE__ */ jsx3("p", { className: "mx-meet__panel-note", children: "Everyone picks a room from their own screen." }),
8418
- /* @__PURE__ */ jsx3(Notice, { notice }),
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__ */ jsx3("ul", { className: "mx-meet__breakout-rooms", children: plan.rooms.map((room) => {
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__ */ jsx3("strong", { children: room.name }),
8479
- here ? /* @__PURE__ */ jsx3("span", { className: "mx-meet__collab-state", children: "You are here" }) : mayJoin ? /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(room.id), children: "Join" }) : null
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__ */ jsx3("span", { className: "mx-meet__panel-note", children: room.identities.length === 0 ? "Nobody assigned" : room.identities.map(nameOf).join(", ") }),
8482
- isHost && room.identities.length > 0 ? /* @__PURE__ */ jsx3("ul", { className: "mx-meet__people", children: room.identities.map((identity) => /* @__PURE__ */ jsxs2("li", { className: "mx-meet__person", children: [
8483
- /* @__PURE__ */ jsx3("span", { className: "mx-meet__person-name", children: nameOf(identity) }),
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__ */ jsx3("option", { value: "", children: "Main room" }),
8497
- plan.rooms.map((option) => /* @__PURE__ */ jsx3("option", { value: option.id, children: option.name }, option.id))
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__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void join(null), children: "Return to the main room" }) : null,
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__ */ jsx3(
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__ */ jsx3("button", { type: "submit", className: "mx-meet__send", disabled: broadcast.trim().length === 0, children: "Send" })
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__ */ jsx3(Notice, { notice }),
8535
- isHost ? /* @__PURE__ */ jsx3(
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__ */ jsx3("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.error }) : null,
8551
- plan !== null ? /* @__PURE__ */ jsx3(BreakoutRun, { plan }) : isHost ? /* @__PURE__ */ jsx3(BreakoutSetup, {}) : /* @__PURE__ */ jsx3("p", { className: "mx-meet__panel-note", children: "Breakout rooms are closed." })
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 = useRef3(null);
8739
+ const expireAsked = useRef4(null);
8565
8740
  const moveAt = collab?.moveRequest?.at ?? null;
8566
- useEffect3(() => {
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
- useEffect3(() => {
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__ */ jsx3("span", { className: "mx-meet__collab-error", children: failure }) : null,
8761
+ failure !== null ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__collab-error", children: failure }) : null,
8587
8762
  room !== null ? /* @__PURE__ */ jsxs2("span", { children: [
8588
- /* @__PURE__ */ jsx3("strong", { children: room.name }),
8763
+ /* @__PURE__ */ jsx4("strong", { children: room.name }),
8589
8764
  remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
8590
- /* @__PURE__ */ jsx3("button", { type: "button", className: "mx-meet__chip", onClick: () => void moveTo(null), children: "Return to main room" })
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__ */ jsx3("strong", { children: assigned.name }),
8768
+ /* @__PURE__ */ jsx4("strong", { children: assigned.name }),
8594
8769
  remaining !== null ? ` \xB7 ${clock(remaining)} left` : "",
8595
- /* @__PURE__ */ jsx3(
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__ */ jsx3("span", { children: "Breakout rooms are open \u2014 pick one under Activities." }) : null,
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__ */ jsx3("button", { type: "button", className: "mx-meet__link", onClick: () => setDismissedBroadcast(broadcast.at), children: "Dismiss" })
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 = useRef3(/* @__PURE__ */ new Set());
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 = useRef3(missing);
8803
+ const pending = useRef4(missing);
8629
8804
  pending.current = missing;
8630
- useEffect3(() => {
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__ */ jsx3("span", { className: "mx-meet__field-label", children: "Translate captions to" }),
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__ */ jsx3("option", { value: "", children: "Off \u2014 as spoken" }),
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__ */ jsx3("option", { value: choice.tag, children: choice.name }, choice.tag))
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__ */ jsx3("p", { className: "mx-meet__panel-note mx-meet__collab-error", children: collab.captionTranslationError }) : null
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 = useRef3(onRequest);
8860
+ const callback = useRef4(onRequest);
8686
8861
  callback.current = onRequest;
8687
- useEffect3(() => {
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 jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
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__ */ jsx4("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." })
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(RecordIcon, { width: 10, height: 10 }),
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__ */ jsx4("span", { className: `mx-meet__quality mx-meet__quality--${quality}`, title: `Connection ${quality}`, children: /* @__PURE__ */ jsx4(WifiLowIcon, { width: 14, height: 14 }) });
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__ */ jsx4("span", { className: "mx-meet__badge", children: "Host" });
8785
- if (role === "cohost") return /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Co-host" });
8786
- if (role === "guest") return /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Guest" });
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__ */ jsx4(
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__ */ jsx4("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx4(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: featured ? 96 : 56 }) }),
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__ */ jsx4(HandIcon, { width: 14, height: 14 }),
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__ */ jsx4("span", { title: "Spotlighted for everyone", className: "mx-meet__tile-flag", children: /* @__PURE__ */ jsx4(SpotlightIcon, { width: 12, height: 12 }) }) : null,
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__ */ jsx4("span", { className: "mx-meet__badge", children: "AI" }) : null,
8835
- /* @__PURE__ */ jsx4(RoleBadge, { role: participant.role })
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__ */ jsx4(MicOffIcon, { width: 14, height: 14 }) : null,
8838
- /* @__PURE__ */ jsx4(QualityBars, { quality: participant.quality })
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__ */ jsx4(
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__ */ jsx4(PinIcon, { width: 16, height: 16 })
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__ */ jsx4(
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__ */ jsx4(MoreIcon, { width: 16, height: 16 })
9033
+ children: /* @__PURE__ */ jsx5(MoreIcon, { width: 16, height: 16 })
8858
9034
  }
8859
9035
  ),
8860
- menu ? /* @__PURE__ */ jsx4(PersonMenu, { participant, onClose: () => setMenu(false), placement: "down" }) : null
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__ */ jsx4("span", { className: `mx-meet__signal mx-meet__signal--${quality}`, title: label, "aria-label": label, role: "img", children: /* @__PURE__ */ jsx4(SignalIcon, { bars, width: 14, height: 14 }) });
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__ */ jsx4("p", { className: "mx-meet__empty-title", children: "Waiting for others to join" }),
8884
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: "Share the meeting link and people can join from anywhere \u2014 no account needed." })
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__ */ jsx4(ParticipantTile, { participant: stage.feature, featured: true }) : null,
8889
- /* @__PURE__ */ jsx4(
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__ */ jsx4(ParticipantTile, { participant }, participant.identity))
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
- useEffect4(() => {
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__ */ jsx4(MeetingOverlays, {}),
8949
- shortcuts ? /* @__PURE__ */ jsx4(ShortcutsSheet, { onClose: () => setShortcuts(false) }) : null,
8950
- panel === "chat" ? /* @__PURE__ */ jsx4(ChatPanel, { onClose: () => setPanel("none"), to: chatTo, onTo: setChatTo }) : null,
8951
- panel === "people" ? /* @__PURE__ */ jsx4(
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__ */ jsx4(AiPanel, { onClose: () => setPanel("none") }) : null,
8962
- panel === "settings" ? /* @__PURE__ */ jsx4(SettingsPanel, { onClose: () => setPanel("none") }) : null,
8963
- panel === "polls" ? /* @__PURE__ */ jsx4(PollsPanel, { onClose: () => setPanel("none") }) : null,
8964
- panel === "qa" ? /* @__PURE__ */ jsx4(QaPanel, { onClose: () => setPanel("none") }) : null,
8965
- panel === "breakouts" ? /* @__PURE__ */ jsx4(BreakoutsPanel, { onClose: () => setPanel("none") }) : null,
8966
- whiteboard ? /* @__PURE__ */ jsx4(WhiteboardPanel, { onClose: () => setWhiteboard(false) }) : null,
8967
- /* @__PURE__ */ jsx4(BreakoutBanner, {}),
8968
- controls.notice !== null && panel !== "people" ? /* @__PURE__ */ jsx4(Toast, { text: controls.notice.text, failed: controls.notice.failed, onDone: controls.clearNotice }) : null,
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__ */ jsx4(
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__ */ jsx4(MicIcon, {}) : /* @__PURE__ */ jsx4(MicOffIcon, {})
9152
+ children: room.local?.micEnabled === true ? /* @__PURE__ */ jsx5(MicIcon, {}) : /* @__PURE__ */ jsx5(MicOffIcon, {})
8977
9153
  }
8978
9154
  ),
8979
- /* @__PURE__ */ jsx4(
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__ */ jsx4(CameraIcon, {}) : /* @__PURE__ */ jsx4(CameraOffIcon, {})
9161
+ children: room.local?.cameraEnabled === true ? /* @__PURE__ */ jsx5(CameraIcon, {}) : /* @__PURE__ */ jsx5(CameraOffIcon, {})
8986
9162
  }
8987
9163
  ),
8988
- room.canShareScreen || room.local?.screenSharing === true ? /* @__PURE__ */ jsx4(
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__ */ jsx4(ScreenShareIcon, {})
9170
+ children: /* @__PURE__ */ jsx5(ScreenShareIcon, {})
8995
9171
  }
8996
9172
  ) : null,
8997
9173
  /* @__PURE__ */ jsxs3("span", { className: "mx-meet__anchor", children: [
8998
- /* @__PURE__ */ jsx4(
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__ */ jsx4(SmileIcon, {})
9180
+ children: /* @__PURE__ */ jsx5(SmileIcon, {})
9005
9181
  }
9006
9182
  ),
9007
- popover === "reactions" ? /* @__PURE__ */ jsx4(Popover, { label: "Reactions", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsx4("div", { className: "mx-meet__emoji-bar", children: MEET_REACTIONS.map((emoji) => /* @__PURE__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(HandIcon, {})
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__ */ jsx4(ChatIcon, {}),
9030
- unread > 0 ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
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__ */ jsx4(PeopleIcon, {}),
9040
- lobby.waiting.length > 0 || controls.isHost && queue.length > 0 ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__dot", "aria-hidden": "true" }) : null
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__ */ jsx4(
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__ */ jsx4(AiControl, { active: panel === "ai", onToggle: () => toggle("ai") }),
9052
- recording.canStart ? /* @__PURE__ */ jsx4(ControlButton, { label: "Start recording", onClick: () => void recording.start(), children: /* @__PURE__ */ jsx4(RecordIcon, {}) }) : null,
9053
- recording.canStop ? /* @__PURE__ */ jsx4(ControlButton, { label: "Stop recording", active: true, onClick: () => void recording.stop(), children: /* @__PURE__ */ jsx4(RecordIcon, {}) }) : null,
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__ */ jsx4(
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__ */ jsx4(MoreIcon, {})
9237
+ children: /* @__PURE__ */ jsx5(MoreIcon, {})
9062
9238
  }
9063
9239
  ),
9064
- popover === "more" ? /* @__PURE__ */ jsx4(Popover, { label: "More options", onClose: () => setPopover("none"), children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
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__ */ jsx4(SettingsIcon, { width: 16, height: 16 }),
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__ */ jsx4(KeyboardIcon, { width: 16, height: 16 }),
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__ */ jsx4("div", { className: "mx-meet__menu-sep", role: "separator" }),
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__ */ jsx4(MicOffIcon, { width: 16, height: 16 }),
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__ */ jsx4(MicIcon, { width: 16, height: 16 }),
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__ */ jsx4(HandIcon, { width: 16, height: 16 }),
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__ */ jsx4(SpotlightIcon, { width: 16, height: 16 }),
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__ */ jsx4(
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__ */ jsx4(PhoneOffIcon, {})
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
- useEffect4(() => {
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
- useEffect4(() => {
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 = useRef4(null);
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
- useEffect4(() => {
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__ */ jsx4("div", { ref, className: "mx-meet__popover", style, role: "dialog", "aria-label": label, children });
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__ */ jsx4(
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
- useEffect4(() => {
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__ */ jsx4("span", { children: text3 }),
9280
- /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: onDone, children: /* @__PURE__ */ jsx4(CloseIcon, { width: 14, height: 14 }) })
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__ */ jsx4(ReactionOverlay, { reactions }),
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__ */ jsx4("span", { children: notice.text }),
9295
- notice.kind === "ask-unmute" && room.local?.micEnabled !== true ? /* @__PURE__ */ jsx4(
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__ */ jsx4("button", { type: "button", className: "mx-meet__toast-close", "aria-label": "Dismiss", onClick: dismiss, children: /* @__PURE__ */ jsx4(CloseIcon, { width: 14, height: 14 }) })
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
- useEffect4(() => {
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__ */ jsx4("div", { className: "mx-meet__sheet-backdrop", onClick: onClose, children: /* @__PURE__ */ jsxs3(
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__ */ jsx4("h2", { className: "mx-meet__panel-title", children: "Keyboard shortcuts" }),
9330
- /* @__PURE__ */ jsx4(ControlButton, { label: "Close", onClick: onClose, children: /* @__PURE__ */ jsx4(CloseIcon, { width: 16, height: 16 }) })
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__ */ jsx4("dl", { className: "mx-meet__shortcuts", children: MEET_SHORTCUTS.map((shortcut) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__shortcut", children: [
9333
- /* @__PURE__ */ jsx4("dt", { children: shortcut.label }),
9334
- /* @__PURE__ */ jsx4("dd", { children: /* @__PURE__ */ jsx4("kbd", { className: "mx-meet__kbd", children: shortcut.keys }) })
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__ */ jsx4(ControlButton, { label: "Meeting assistant", active, onClick: onToggle, children: /* @__PURE__ */ jsx4(SparklesIcon, {}) });
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 = useRef4(null);
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__ */ jsx4("h2", { className: "mx-meet__panel-title", children: title }),
9367
- /* @__PURE__ */ jsx4(ControlButton, { label: "Close panel", onClick: onClose, children: /* @__PURE__ */ jsx4(CloseIcon, { width: 16, height: 16 }) })
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__ */ jsx4("div", { className: "mx-meet__panel-body", children })
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 = useRef4(null);
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
- useEffect4(() => setRecipient(to), [to]);
9389
- useEffect4(() => {
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__ */ jsx4("li", { className: "mx-meet__panel-note", children: snapshot.chatHistoryError }) : null,
9400
- snapshot?.chatLoaded !== true && messages.length === 0 ? /* @__PURE__ */ jsx4("li", { className: "mx-meet__panel-note", children: "Reading earlier messages\u2026" }) : messages.length === 0 && snapshot?.chatHistoryError == null ? /* @__PURE__ */ jsx4("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,
9401
- messages.map((message) => /* @__PURE__ */ jsx4(ChatLine, { message, local, people }, message.id))
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__ */ jsx4("option", { value: "", children: "Everyone" }),
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__ */ jsx4(
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__ */ jsx4("button", { type: "submit", className: "mx-meet__send", disabled: draft.trim().length === 0, children: "Send" })
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__ */ jsx4("strong", { children: mine ? "You" : message.displayName }),
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__ */ jsx4("time", { dateTime: message.at, children: clockOf(message.at) })
9656
+ /* @__PURE__ */ jsx5("time", { dateTime: message.at, children: clockOf(message.at) })
9481
9657
  ] }),
9482
- /* @__PURE__ */ jsx4("span", { className: "mx-meet__chat-text", children: message.text }),
9483
- message.failed !== void 0 ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__chat-failed", children: message.failed }) : privateTo === null && message.saved === false ? /* @__PURE__ */ jsx4("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
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__ */ jsx4(LobbyPanel, {}),
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__ */ jsx4(
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__ */ jsx4("ol", { className: "mx-meet__queue", children: queue.map((participant) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__person", children: [
9521
- /* @__PURE__ */ jsx4(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 28 }),
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__ */ jsx4("span", { className: "mx-meet__you", children: " (you)" }) : null
9700
+ participant.identity === local ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__you", children: " (you)" }) : null
9525
9701
  ] }),
9526
- controls.isHost || participant.identity === local ? /* @__PURE__ */ jsx4(
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__ */ jsx4(MicOffIcon, { width: 14, height: 14 }),
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__ */ jsx4(MicIcon, { width: 14, height: 14 }),
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__ */ jsx4(SearchIcon, { width: 16, height: 16 }),
9557
- /* @__PURE__ */ jsx4(
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__ */ jsx4("p", { className: controls.notice.failed ? "mx-meet__error" : "mx-meet__notice", role: "status", children: controls.notice.text }) : null,
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__ */ jsx4(Avatar, { name: participant.displayName, url: participant.avatarUrl, size: 32 }),
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__ */ jsx4("span", { className: "mx-meet__you", children: " (you)" }) : null,
9575
- /* @__PURE__ */ jsx4(RoleBadge, { role: participant.identity === local ? myRole : participant.role }),
9576
- isNoteTaker(participant) ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Meeting assistant" }) : null,
9577
- snapshot?.spotlight === participant.identity ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Spotlight" }) : null
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__ */ jsx4(HandIcon, { width: 14, height: 14 }) : null,
9580
- !participant.micEnabled && !isNoteTaker(participant) ? /* @__PURE__ */ jsx4(MicOffIcon, { width: 14, height: 14 }) : null,
9581
- /* @__PURE__ */ jsx4(QualityBars, { quality: participant.quality }),
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__ */ jsx4(
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__ */ jsx4(MoreIcon, { width: 16, height: 16 })
9765
+ children: /* @__PURE__ */ jsx5(MoreIcon, { width: 16, height: 16 })
9590
9766
  }
9591
9767
  ),
9592
- menuFor === participant.identity ? /* @__PURE__ */ jsx4(
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__ */ jsx4(GuestRecordAccessControl, { meeting: snapshot.meeting }) : null
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__ */ jsx4(ErrorBox, { as: "p", className: "mx-meet__error", message: controls.notice.text, operation: "Change this participant", origin: "meet/components", children: controls.notice.text }) : null;
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__ */ jsx4(Popover, { label: renaming ? "Rename" : "Report", onClose, placement, children: /* @__PURE__ */ jsxs3(
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__ */ jsx4("span", { className: "mx-meet__field-label", children: renaming ? "Name shown in this meeting" : `What did ${participant.displayName} do?` }),
9653
- renaming ? /* @__PURE__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Back" }),
9677
- /* @__PURE__ */ jsx4("button", { type: "submit", className: "mx-meet__send", disabled: text3.trim().length === 0 || controls.busy, children: renaming ? "Rename" : "Report" })
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__ */ jsx4(Popover, { label: removing ? "Remove" : "Make host", onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu-form", children: [
9686
- /* @__PURE__ */ jsx4("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.` }),
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__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => setMode("menu"), children: "Cancel" }),
9690
- /* @__PURE__ */ jsx4(
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__ */ jsx4(Popover, { label: `Options for ${participant.displayName}`, onClose, placement, children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__menu", role: "menu", children: [
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__ */ jsx4(PinIcon, { width: 16, height: 16 }),
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__ */ jsx4(ChatIcon, { width: 16, height: 16 }),
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__ */ jsx4(SpotlightIcon, { width: 16, height: 16 }),
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__ */ jsx4("div", { className: "mx-meet__menu-sep", role: "separator" }),
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__ */ jsx4(MicOffIcon, { width: 16, height: 16 }),
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__ */ jsx4(MicIcon, { width: 16, height: 16 }),
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__ */ jsx4(CameraOffIcon, { width: 16, height: 16 }),
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__ */ jsx4(ScreenShareIcon, { width: 16, height: 16 }),
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__ */ jsx4(HandIcon, { width: 16, height: 16 }),
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__ */ jsx4(PeopleIcon, { width: 16, height: 16 }),
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__ */ jsx4(PencilIcon, { width: 16, height: 16 }),
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__ */ jsx4(PeopleIcon, { width: 16, height: 16 }),
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__ */ jsx4(SpotlightIcon, { width: 16, height: 16 }),
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__ */ jsx4(PencilIcon, { width: 16, height: 16 }),
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__ */ jsx4(FlagIcon, { width: 16, height: 16 }),
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__ */ jsx4(CloseIcon, { width: 16, height: 16 }),
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__ */ jsx4(
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__ */ jsx4(EffectsSettings, {}),
9832
- /* @__PURE__ */ jsx4(CaptionLanguageSettings, {})
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
- useEffect4(() => {
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__ */ jsx4(DevicePicker, { kind: "audioinput", label: "Microphone", onPick }),
9850
- /* @__PURE__ */ jsx4("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__ */ jsx4("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }),
9851
- /* @__PURE__ */ jsx4(DevicePicker, { kind: "audiooutput", label: "Speaker", onPick }),
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__ */ jsx4(SpeakerIcon, { width: 14, height: 14 }),
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__ */ jsx4(DevicePicker, { kind: "videoinput", label: "Camera", onPick })
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 = useRef4(null);
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__ */ jsx4(
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__ */ jsx4(Label, { htmlFor: "mx-meet-noise", children: "Noise suppression" }),
9899
- /* @__PURE__ */ jsx4("span", { className: "mx-meet__hint", children: "Filters keyboards, fans and background chatter." })
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__ */ jsx4(Label, { children: "Background" }),
9904
- /* @__PURE__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("p", { className: "mx-meet__error", children: error }) : null
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
- useEffect4(() => {
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__ */ jsx4("h3", { className: "mx-meet__lobby-title", children: lobby.waiting.length === 1 ? "1 person is waiting" : `${lobby.waiting.length} people are waiting` }),
10026
- /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: () => void lobby.admitAll(), children: "Admit all" })
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__ */ jsx4("ul", { className: "mx-meet__lobby-list", children: lobby.waiting.map((entry) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__lobby-row", children: [
10029
- /* @__PURE__ */ jsx4(Avatar, { name: entry.displayName, url: entry.avatarUrl, size: 32 }),
10030
- /* @__PURE__ */ jsxs3("span", { className: "mx-meet__person-name", children: [
10031
- entry.displayName,
10032
- entry.userId === null ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Guest" }) : null
10033
- ] }),
10034
- /* @__PURE__ */ jsx4(ControlButton, { label: `Admit ${entry.displayName}`, onClick: () => void lobby.admit(entry), children: /* @__PURE__ */ jsx4(CheckIcon, { width: 16, height: 16 }) }),
10035
- /* @__PURE__ */ jsx4(
10036
- ControlButton,
10037
- {
10038
- label: `Deny ${entry.displayName}`,
10039
- danger: true,
10040
- onClick: () => void lobby.deny(entry),
10041
- children: /* @__PURE__ */ jsx4(CloseIcon, { width: 16, height: 16 })
10042
- }
10043
- )
10044
- ] }, entry.identity)) })
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__ */ jsx4("span", { className: "mx-meet__note-taker-dot", "aria-hidden": "true" }),
10238
+ /* @__PURE__ */ jsx5("span", { className: "mx-meet__note-taker-dot", "aria-hidden": "true" }),
10054
10239
  ai.noteTakerLabel
10055
10240
  ] }),
10056
- status.detail !== null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: status.detail }) : null,
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: status.refusal.reason }),
10059
- status.refusal.remedy.length > 0 ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: status.refusal.remedy }) : null
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
10063
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("h3", { className: "mx-meet__note-group-title", children: title }),
10091
- notes.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: empty }) : /* @__PURE__ */ jsx4("ul", { className: "mx-meet__notes", children: notes.map((note) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__note", children: [
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__ */ jsx4("span", { className: "mx-meet__assignee", children: note.assigneeDisplayName }) : null
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__ */ jsx4(NoteTakerRow, {}),
10286
+ /* @__PURE__ */ jsx5(NoteTakerRow, {}),
10102
10287
  ai.summary !== null ? /* @__PURE__ */ jsxs3("section", { className: "mx-meet__note-group", "aria-label": "Summary", children: [
10103
- /* @__PURE__ */ jsx4("h3", { className: "mx-meet__note-group-title", children: "Summary" }),
10104
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__summary", children: ai.summary.text })
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("h3", { className: "mx-meet__note-group-title", children: "Transcript" }),
10144
- /* @__PURE__ */ jsx4("ul", { className: "mx-meet__transcript", children: ai.transcript.map((line) => /* @__PURE__ */ jsxs3(
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__ */ jsx4("strong", { children: line.speaker }),
10150
- /* @__PURE__ */ jsx4("span", { children: line.text })
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__ */ jsx4(
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__ */ jsx4("button", { type: "submit", className: "mx-meet__send", disabled: ai.asking, children: ai.asking ? "Asking\u2026" : "Ask" })
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__ */ jsx4("p", { className: "mx-meet__panel-note", role: "status", children: ai.phase }) : null,
10182
- ai.answer !== null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__answer", children: ai.answer }) : null,
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: ai.error.message }),
10194
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: ai.error.remedy })
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__ */ jsx4("strong", { children: line.speaker }),
10396
+ /* @__PURE__ */ jsx5("strong", { children: line.speaker }),
10212
10397
  " ",
10213
10398
  translated ?? line.text,
10214
- translated !== void 0 ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__caption-original", children: line.text }) : null
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__ */ jsx4("p", { className: "mx-meet__caption mx-meet__caption--interim", children: translation.error }) : null
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__ */ jsx4("p", { className: "mx-meet__consent", role: "status", children: notice });
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
- return /* @__PURE__ */ jsxs3("p", { className: "mx-meet__banner mx-meet__banner--attendance", role: "status", children: [
10234
- notice,
10235
- refused === null ? null : /* @__PURE__ */ jsx4("span", { className: "mx-meet__remedy", children: refused.remedy })
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__ */ jsx4(InertNotice, { what: "This meeting" });
10241
- return /* @__PURE__ */ jsx4(PreJoinBody, { ...props, host });
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
- useEffect4(() => {
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__ */ jsx4(
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__ */ jsx4("div", { className: "mx-meet__tile-placeholder", children: /* @__PURE__ */ jsx4(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 96 }) }),
10281
- mode === "video" && preview.error !== null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__preview-note", children: preview.error }) : null,
10282
- microphone && micStream !== null ? /* @__PURE__ */ jsx4("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__ */ jsx4("span", { style: { width: `${Math.min(100, Math.round(level * 160))}%` } }) }) : null
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__ */ jsx4("h1", { className: "mx-meet__prejoin-title", children: "Ready to join?" }),
10286
- notice?.kind === "removed" ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__warning", children: notice.text }) : null,
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__ */ jsx4(
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__ */ jsx4("p", { className: "mx-meet__warning", children: devices.fallbackNotice }) : null,
10302
- /* @__PURE__ */ jsx4(DevicePicker, { kind: "audioinput", label: "Microphone" }),
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__ */ jsx4(DevicePicker, { kind: "audiooutput", label: "Speaker" }),
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__ */ jsx4(SpeakerIcon, {}),
10512
+ /* @__PURE__ */ jsx5(SpeakerIcon, {}),
10319
10513
  " ",
10320
10514
  speakerTesting ? "Playing\u2026" : "Test"
10321
10515
  ]
10322
10516
  }
10323
10517
  )
10324
10518
  ] }),
10325
- /* @__PURE__ */ jsx4(DevicePicker, { kind: "videoinput", label: "Camera" }),
10326
- /* @__PURE__ */ jsx4(EffectsSettings, { preview: preview.preview }),
10327
- recording.consentNotice !== null ? /* @__PURE__ */ jsx4(Alert, { variant: "info", children: /* @__PURE__ */ jsx4(AlertDescription, { children: recording.consentNotice }) }) : null,
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__ */ jsx4(
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__ */ jsx4(Label, { htmlFor: "mx-meet-join-video", children: "Join with video" })
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__ */ jsx4(
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__ */ jsx4(Label, { htmlFor: "mx-meet-join-mic", children: "Join with microphone" })
10543
+ /* @__PURE__ */ jsx5(Label, { htmlFor: "mx-meet-join-mic", children: "Join with microphone" })
10350
10544
  ] }),
10351
- /* @__PURE__ */ jsx4(
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__ */ jsx4("span", { className: "mx-meet__remedy", children: room.failure.remedy })
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 = useRef4(null);
10383
- const initialEffect = useRef4(toVideoEffect(effects));
10576
+ const current = useRef5(null);
10577
+ const initialEffect = useRef5(toVideoEffect(effects));
10384
10578
  initialEffect.current = toVideoEffect(effects);
10385
- useEffect4(() => {
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__ */ jsx4(Label, { htmlFor: triggerId, children: label }),
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__ */ jsx4(SelectTrigger, { id: triggerId, "aria-label": label, children: /* @__PURE__ */ jsx4(SelectValue, { placeholder: label }) }),
10445
- /* @__PURE__ */ jsx4(SelectContent, { children: list.map((device) => /* @__PURE__ */ jsx4(SelectItem, { value: valueOf(device.deviceId), children: device.label.length > 0 ? device.label : `${label} (name hidden)` }, device.deviceId || "default")) })
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__ */ jsx4("div", { className: "mx-meet", children: /* @__PURE__ */ jsx4(InertNotice, { what: "This meeting" }) });
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__ */ jsx4(MeetingRoomBody, { ...props, host });
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
- useEffect4(() => {
10665
+ useEffect5(() => {
10472
10666
  host.meetings.watch(roomName);
10473
10667
  }, [host, roomName]);
10474
- useEffect4(() => {
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
- useEffect4(() => {
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__ */ jsx4(MeetingRecordView, { meeting: record });
10680
+ return /* @__PURE__ */ jsx5(MeetingRecordView, { meeting: record });
10487
10681
  }
10488
10682
  if (phase === "idle" || phase === "failed" || phase === "left") {
10489
- return /* @__PURE__ */ jsx4("div", { className: "mx-meet", children: /* @__PURE__ */ jsx4(
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__ */ jsx4("div", { className: "mx-meet mx-meet--lobby", children: /* @__PURE__ */ jsx4(WaitingRoom, { roomName, host }) });
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__ */ jsx4(ConsentNotice, {}),
10503
- /* @__PURE__ */ jsx4(AttendanceNotice, {}),
10696
+ /* @__PURE__ */ jsx5(ConsentNotice, {}),
10697
+ /* @__PURE__ */ jsx5(AttendanceNotice, {}),
10504
10698
  /* @__PURE__ */ jsxs3("header", { className: "mx-meet__header", children: [
10505
- /* @__PURE__ */ jsx4("h1", { className: "mx-meet__title", children: snapshot?.meeting?.title ?? "Meeting" }),
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__ */ jsx4(RecordingIndicator, {}),
10704
+ /* @__PURE__ */ jsx5(RecordingIndicator, {}),
10511
10705
  snapshot?.locked === true ? /* @__PURE__ */ jsxs3("span", { className: "mx-meet__badge", children: [
10512
- /* @__PURE__ */ jsx4(LockIcon, { width: 12, height: 12 }),
10706
+ /* @__PURE__ */ jsx5(LockIcon, { width: 12, height: 12 }),
10513
10707
  " Locked"
10514
10708
  ] }) : null,
10515
- headerControls !== void 0 && headerControls !== null ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__header-controls", "data-meet-header-controls": "", children: headerControls }) : null,
10516
- isHost ? /* @__PURE__ */ jsx4(HostMenu, {}) : null
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__ */ jsx4("p", { className: "mx-meet__banner", role: "status", children: "Reconnecting\u2026" }) : null,
10519
- /* @__PURE__ */ jsx4(Stage, {}),
10520
- /* @__PURE__ */ jsx4(Captions, {}),
10521
- /* @__PURE__ */ jsx4(ControlBar, { ...onLeave !== void 0 ? { onLeave } : {} })
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 = useRef4(false);
10526
- useEffect4(() => {
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__ */ jsx4(Avatar, { name: host.identity.displayName, url: host.identity.avatarUrl, size: 72 }),
10533
- /* @__PURE__ */ jsx4("h1", { className: "mx-meet__prejoin-title", children: "Waiting for the host to let you in" }),
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__ */ jsx4(
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__ */ jsx4("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." }),
10561
- /* @__PURE__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("span", { className: "mx-meet__notice", role: "status", children: end.notice }) : null
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__ */ jsx4(
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__ */ jsx4(PhoneIcon, { width: 18, height: 18 })
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__ */ jsx4("div", { className: "mx-meet__ringing-stack", children: calls.incoming.map((invite) => /* @__PURE__ */ jsx4(IncomingCallCard, { invite }, invite.id)) });
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__ */ jsx4(Avatar, { name: invite.callerName, url: invite.callerAvatarUrl, size: 56 }),
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__ */ jsx4("strong", { children: invite.callerName }),
10625
- /* @__PURE__ */ jsx4("span", { children: invite.mode === "video" ? "Incoming video call" : "Incoming call" })
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__ */ jsx4(ControlButton, { label: "Decline", danger: true, onClick: () => void calls.decline(invite), children: /* @__PURE__ */ jsx4(PhoneOffIcon, {}) }),
10629
- invite.mode === "video" ? /* @__PURE__ */ jsx4(
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__ */ jsx4(CameraOffIcon, {})
10828
+ children: /* @__PURE__ */ jsx5(CameraOffIcon, {})
10635
10829
  }
10636
10830
  ) : null,
10637
- /* @__PURE__ */ jsx4(ControlButton, { label: "Accept", onClick: () => void calls.accept(invite), children: /* @__PURE__ */ jsx4(PhoneIcon, {}) })
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__ */ jsx4(InertNotice, { what: "Scheduling a meeting" });
10644
- return /* @__PURE__ */ jsx4(ScheduleMeetingBody, { ...props, host });
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 = useMemo3(() => title.trim().length === 0 || busy, [title, busy]);
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__ */ jsx4("span", { className: "mx-meet__field-label", children: "Title" }),
10685
- /* @__PURE__ */ jsx4(
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__ */ jsx4("span", { className: "mx-meet__field-label", children: "When" }),
10697
- /* @__PURE__ */ jsx4(
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__ */ jsx4("span", { className: "mx-meet__field-label", children: "Repeats" }),
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__ */ jsx4("option", { value: "scheduled", children: "Once" }),
10717
- /* @__PURE__ */ jsx4("option", { value: "recurring", children: "Recurring \u2014 one link, every time" })
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__ */ jsx4("button", { type: "submit", className: "mx-meet__primary", disabled, children: busy ? "Creating\u2026" : "Create meeting" }),
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__ */ jsx4("span", { children: "Anyone with this link can join \u2014 no account needed." }),
10725
- /* @__PURE__ */ jsx4("code", { children: link })
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__ */ jsx4("p", { className: "mx-meet__error", children: error }) : null
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__ */ jsx4("div", { className: "mx-meet__reactions", "aria-hidden": "true", children: reactions.map((reaction) => /* @__PURE__ */ jsx4("span", { className: "mx-meet__reaction", children: reaction.emoji }, reaction.id)) });
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "What guests may read" }),
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__ */ jsx4("span", { className: "mx-meet__field-label", children: "People who attended by link, without an account" }),
10752
- /* @__PURE__ */ jsx4(
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__ */ jsx4("option", { value: choice, children: guestRecordAccessLabel(choice) }, choice))
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__ */ jsx4("p", { className: "mx-meet__panel-note", role: "status", children: "Saving what guests may read\u2026" }) : null,
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: access.error.message }),
10774
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: access.error.remedy })
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__ */ jsx4("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsx4(InertNotice, { what: "This meeting record" }) });
10978
+ return /* @__PURE__ */ jsx5("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsx5(InertNotice, { what: "This meeting record" }) });
10785
10979
  }
10786
- return /* @__PURE__ */ jsx4(MeetingRecordBody, { meeting, ...onRejoin !== void 0 ? { onRejoin } : {} });
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__ */ jsx4("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: [
10798
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-title", children: "This meeting record could not be opened" }),
10799
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: record.failure.message }),
10800
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: record.failure.remedy })
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__ */ jsx4("div", { className: "mx-meet mx-meet--record", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__empty", role: "status", children: [
10805
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-title", children: "Opening the meeting record\u2026" }),
10806
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: "Reading the summary, the notes and the transcript this meeting left behind." })
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__ */ jsx4("header", { className: "mx-meet__record-head", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-head-inner", children: [
10827
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-eyebrow", children: "Meeting record" }),
10828
- /* @__PURE__ */ jsx4("h1", { className: "mx-meet__record-title", children: meeting.title }),
10829
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-when", children: meetingWhen(meeting) }),
10830
- onRejoin !== void 0 ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: onRejoin, children: "Open this link again" }) : null
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__ */ jsx4("div", { className: "mx-meet__record-body", children: restrictionNotices.map((notice2) => /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-access", role: "status", children: [
10833
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-access-title", children: "About this record" }),
10834
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-access-message", children: notice2.message }),
10835
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-access-remedy", children: notice2.remedy })
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__ */ jsx4("header", { className: "mx-meet__record-head", children: /* @__PURE__ */ jsxs3("div", { className: "mx-meet__record-head-inner", children: [
10841
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-eyebrow", children: "Meeting record" }),
10842
- /* @__PURE__ */ jsx4("h1", { className: "mx-meet__record-title", children: meeting.title }),
10843
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-when", children: meetingWhen(meeting) }),
10844
- onRejoin !== void 0 ? /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: onRejoin, children: "Open this link again" }) : null
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__ */ jsx4("p", { className: "mx-meet__record-access-title", children: "About this record" }),
10849
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-access-message", children: notice2.message }),
10850
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-access-remedy", children: notice2.remedy })
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Who attended" }),
10857
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: absenceSentence(bundle, "attendance", "Nobody is recorded as having attended.") })
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Who attended" }),
10861
- /* @__PURE__ */ jsx4("ul", { className: "mx-meet__record-attendees", children: attended.map((person) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__record-attendee", children: [
10862
- /* @__PURE__ */ jsx4(
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__ */ jsx4("span", { className: "mx-meet__badge", children: "Host" }) : null,
10873
- person.role === "guest" ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Guest" }) : null,
10874
- person.isAgent ? /* @__PURE__ */ jsx4("span", { className: "mx-meet__badge", children: "Meeting assistant" }) : null
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Recording" }),
11073
+ /* @__PURE__ */ jsx5("h2", { className: "mx-meet__record-section-title", children: "Recording" }),
10880
11074
  fileId !== null ? /* @__PURE__ */ jsxs3(Fragment, { children: [
10881
- /* @__PURE__ */ jsx4(RecordingPlayer, { fileId }),
10882
- notice !== null ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: notice }) : null
10883
- ] }) : /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: notice ?? "This recording has no file." })
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Recording" }),
10886
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: REFUSED_ABSENCE })
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Summary" }),
10923
- wrapUp.state === "written" ? /* @__PURE__ */ jsx4("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: [
10924
- /* @__PURE__ */ jsx4("p", { children: wrapUp.message }),
10925
- /* @__PURE__ */ jsx4("button", { type: "button", className: "mx-meet__link", onClick: record.reload, children: "Check again" })
10926
- ] }) : /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", role: wrapUp.state === "failed" ? "alert" : void 0, children: wrapUp.message })
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Notes as it happened" }),
10955
- bundle.liveNotes.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: absenceSentence(
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__ */ jsx4("ul", { className: "mx-meet__notes", children: bundle.liveNotes.map((note) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__note", children: [
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__ */ jsx4("span", { className: "mx-meet__record-count", children: bundle.transcript.length === 1 ? "1 line" : `${bundle.transcript.length} lines` })
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__ */ jsx4("p", { className: "mx-meet__panel-note", children: absenceSentence(
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__ */ jsx4("ol", { className: "mx-meet__record-transcript", children: blocks.map((block) => /* @__PURE__ */ jsxs3("li", { className: "mx-meet__record-block", children: [
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__ */ jsx4("time", { className: "mx-meet__record-time", dateTime: block.startedAt, children: clockOf(block.startedAt) })
11173
+ /* @__PURE__ */ jsx5("time", { className: "mx-meet__record-time", dateTime: block.startedAt, children: clockOf(block.startedAt) })
10980
11174
  ] }),
10981
- block.lines.map((line) => /* @__PURE__ */ jsx4("p", { className: "mx-meet__record-line", children: line.text }, line.id))
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__ */ jsx4(GuestRecordAccessControl, { meeting }),
11178
+ /* @__PURE__ */ jsx5(GuestRecordAccessControl, { meeting }),
10985
11179
  /* @__PURE__ */ jsxs3("section", { className: "mx-meet__record-section", "aria-label": "Ask about this meeting", children: [
10986
- /* @__PURE__ */ jsx4("h2", { className: "mx-meet__record-section-title", children: "Ask about this meeting" }),
10987
- guestFinishedMeeting ? /* @__PURE__ */ jsx4("p", { className: "mx-meet__panel-note", children: "Sign in to ask the assistant about a meeting after it ends." }) : /* @__PURE__ */ jsxs3(Fragment, { children: [
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsx4("p", { className: "mx-meet__answer", children: record.answer }) : null,
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: record.askError.message }),
11035
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: record.askError.remedy })
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__ */ jsx4(InertNotice, { what: "This recording" });
11047
- return /* @__PURE__ */ jsx4(RecordingPlayerBody, { ...props, host });
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
- useEffect4(() => {
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__ */ jsx4(
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__ */ jsx4("p", { className: "mx-meet__panel-note", children: media.fallbackReason }) : null
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__ */ jsx4("p", { className: "mx-meet__refusal-reason", children: error.message }),
11108
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__refusal-remedy", children: error.remedy })
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__ */ jsx4(
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__ */ jsx4(InertNotice, { what: "Your meetings" });
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__ */ jsx4("p", { className: "mx-meet__empty-title", children: "Your meetings could not be listed" }),
11150
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: list.failure.message }),
11151
- /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-body", children: list.failure.remedy })
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__ */ jsx4("div", { className: "mx-meet__empty", role: "status", children: /* @__PURE__ */ jsx4("p", { className: "mx-meet__empty-title", children: "Loading your meetings\u2026" }) });
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__ */ jsx4("p", { className: "mx-meet__empty-title", children: "No meetings yet" }),
11160
- /* @__PURE__ */ jsx4("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." })
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__ */ jsx4("ul", { className: "mx-meet-list", children: list.meetings.map((meeting) => {
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__ */ jsx4("span", { className: "mx-meet__badge", children: "Ended" }) : null
11364
+ ended ? /* @__PURE__ */ jsx5("span", { className: "mx-meet__badge", children: "Ended" }) : null
11171
11365
  ] }),
11172
- /* @__PURE__ */ jsx4("span", { className: "mx-meet-list__when", children: meetingWhen(meeting) })
11366
+ /* @__PURE__ */ jsx5("span", { className: "mx-meet-list__when", children: meetingWhen(meeting) })
11173
11367
  ] }),
11174
- /* @__PURE__ */ jsx4("a", { className: "mx-meet-list__action", href: meetingLink(origin, meeting.slug), children: ended ? "Open the record" : "Join" })
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,