@ai-matrx/meet 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/{collab-B6scmSST.d.cts → collab-BBQxcyRQ.d.cts} +53 -2
- package/dist/{collab-B6scmSST.d.ts → collab-BBQxcyRQ.d.ts} +53 -2
- package/dist/{components-BeCQ9h0h.d.cts → components-1XBHgMYK.d.ts} +6 -2
- package/dist/{components-D0TqyeiY.d.ts → components-CK0EyqGL.d.cts} +6 -2
- package/dist/core.cjs +1225 -939
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +101 -26
- package/dist/core.d.ts +101 -26
- package/dist/core.js +1225 -939
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1225 -939
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1225 -939
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +3120 -2694
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +69 -6
- package/dist/react.d.ts +69 -6
- package/dist/react.js +2775 -2349
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +1051 -911
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.d.cts +2 -2
- package/dist/skins/meet.d.ts +2 -2
- package/dist/skins/meet.js +702 -562
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +8 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog — `@ai-matrx/meet`
|
|
2
2
|
|
|
3
|
+
## 0.10.1
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/meet/v0.10.0..npm/meet/v0.10.1 -- apps/shared/meet`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.10.0
|
|
10
|
+
### Unreleased
|
|
11
|
+
### S4: admission truth — the wait reads the server
|
|
12
|
+
|
|
13
|
+
- **The waiting room reads `GET /v1/meet/state`** (`MEET_ROUTES.state`) on a timer
|
|
14
|
+
(`waiting_poll_seconds`), on every `mx.state.changed` hint, on `online` and on visibility
|
|
15
|
+
return. `snapshot.waiting` holds the row's word; `useWaiting()` exposes it with `withdraw()`
|
|
16
|
+
and `askAgain()`. New phases rendered: `waiting:host_not_started`, `denied`, `knock_expired`,
|
|
17
|
+
`left` (withdrawn); `data-meet-host-present` while waiting.
|
|
18
|
+
- **Admission RPCs** `meet_admit`, `meet_deny`, `meet_undeny`, `meet_admit_all` return rows
|
|
19
|
+
(`repository.decideAdmission`, `repository.admitAll`); `MeetingSession.undeny`.
|
|
20
|
+
- **A token that cannot subscribe never renders the in-call screen.**
|
|
21
|
+
- **Removed (no shim):** `MEET_EVENTS.knock`, `.admission`, `.lock`, `.recording`;
|
|
22
|
+
`MeetingSession.knock`, `useLobby().knock`, the `onDenied` option, `RPCS.admit =
|
|
23
|
+
meet_admit_participant` (dropped from the database). `MEET_EVENTS.stateChanged` is the one
|
|
24
|
+
room-channel event. `AdmissionState` widens to the server's eight states.
|
|
25
|
+
|
|
26
|
+
Consumer action: none for `<MeetingSkinRoot>` consumers; a custom waiting screen reads
|
|
27
|
+
`useWaiting()`.
|
|
28
|
+
|
|
3
29
|
## 0.9.0
|
|
4
30
|
### S3: the meeting pass, the role/standing vocabulary, refusal phases
|
|
5
31
|
|
|
@@ -82,12 +82,20 @@ declare function isLinkFollower(standing: ParticipantStanding | null | undefined
|
|
|
82
82
|
* client's own state can grant it anything.
|
|
83
83
|
*/
|
|
84
84
|
declare function isHostRole(role: ParticipantRole): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* THE SILENT OBSERVER (HR-360 wave 2, MD-16) — the watch-only role `viewer` the core design
|
|
87
|
+
* already froze: publishes nothing, has no tile on anyone's stage, and is listed in People
|
|
88
|
+
* as "Observing". The server decides it at the join gate; nothing here grants it.
|
|
89
|
+
*/
|
|
90
|
+
declare function isObserverRole(role: ParticipantRole | null | undefined): boolean;
|
|
91
|
+
/** Who sees the "Observing" line in People — knob `meet.observers_visible_to`. */
|
|
92
|
+
type ObserversVisibleTo = "everyone" | "hosts";
|
|
85
93
|
/**
|
|
86
94
|
* THE LOBBY LADDER (D6). A guest link-follower starts `knocking`; the host
|
|
87
95
|
* admits or denies. An authenticated member of the meeting's org is `admitted`
|
|
88
96
|
* on arrival unless the meeting is locked.
|
|
89
97
|
*/
|
|
90
|
-
type AdmissionState = "knocking" | "admitted" | "denied" | "removed";
|
|
98
|
+
type AdmissionState = "waiting_host" | "knocking" | "admitted" | "denied" | "expired" | "withdrawn" | "removed" | "ended";
|
|
91
99
|
interface LobbyEntry {
|
|
92
100
|
readonly identity: ParticipantIdentity;
|
|
93
101
|
readonly displayName: string;
|
|
@@ -95,6 +103,8 @@ interface LobbyEntry {
|
|
|
95
103
|
readonly userId: UserId | null;
|
|
96
104
|
readonly state: AdmissionState;
|
|
97
105
|
readonly knockedAt: string;
|
|
106
|
+
/** When an unanswered knock lapses (`knock_timeout_minutes`); null = never. */
|
|
107
|
+
readonly knockExpiresAt?: string | null | undefined;
|
|
98
108
|
readonly decidedAt: string | null;
|
|
99
109
|
readonly decidedBy: UserId | null;
|
|
100
110
|
}
|
|
@@ -373,6 +383,9 @@ interface MeetingAttendee {
|
|
|
373
383
|
readonly userId: UserId | null;
|
|
374
384
|
readonly role: ParticipantRole;
|
|
375
385
|
readonly admissionState: AdmissionState;
|
|
386
|
+
/** When this person knocked, and when an unanswered knock lapses (null = never). */
|
|
387
|
+
readonly knockedAt?: string | null | undefined;
|
|
388
|
+
readonly knockExpiresAt?: string | null | undefined;
|
|
376
389
|
readonly isAgent: boolean;
|
|
377
390
|
/** FIRST arrival in the room — a rejoin never moves it. */
|
|
378
391
|
readonly joinedAt: string | null;
|
|
@@ -627,6 +640,39 @@ declare function createMeetApi(options: MeetApiOptions): MeetApi;
|
|
|
627
640
|
/** `GET /files/{id}/download?inline=1` — the platform files route (R3). */
|
|
628
641
|
declare function fileDownloadPath(fileId: string): string;
|
|
629
642
|
|
|
643
|
+
/**
|
|
644
|
+
* THE APP PANEL SLOT (HR-360 wave 2, Meet register MD-15).
|
|
645
|
+
*
|
|
646
|
+
* A meeting can carry one APP PANEL: a surface the HOST APP registered under a key, opened
|
|
647
|
+
* beside the call on one record (`meet_meetings.metadata.app_panel = {key, record_id}`,
|
|
648
|
+
* written by `meet_schedule_meeting`'s `app_panel` setting). The package knows only the key
|
|
649
|
+
* and the record id; the host app's registered component reads the record through the
|
|
650
|
+
* person's OWN doors, so someone who cannot read the record sees nothing of it.
|
|
651
|
+
*
|
|
652
|
+
* Everyone in the call looks at the same SECTION of the panel: one shared focus per run,
|
|
653
|
+
* kept by the server and carried on the existing collab packet (`collab.focus`,
|
|
654
|
+
* action `focus_set`) — never a second channel.
|
|
655
|
+
*/
|
|
656
|
+
|
|
657
|
+
interface MeetingAppPanel {
|
|
658
|
+
/** The registered surface key, e.g. `hr.review_360`. */
|
|
659
|
+
readonly key: string;
|
|
660
|
+
/** The record the panel opens on. */
|
|
661
|
+
readonly recordId: string;
|
|
662
|
+
}
|
|
663
|
+
/** The app panel this meeting carries, or null. Malformed values are never guessed at. */
|
|
664
|
+
declare function appPanelOf(meeting: Pick<MeetingRecord, "metadata"> | null | undefined): MeetingAppPanel | null;
|
|
665
|
+
/** The `p_settings` of `meet_schedule_meeting`, with the panel and the named observers. */
|
|
666
|
+
declare function scheduleSettingsPatch(settings: MeetingSettings, appPanel: MeetingAppPanel | undefined, observers: readonly string[] | undefined): Record<string, unknown>;
|
|
667
|
+
/** The one shared section focus of the meeting's app panel (`collab.focus`). */
|
|
668
|
+
interface MeetAppFocus {
|
|
669
|
+
readonly panel: string;
|
|
670
|
+
readonly section: string;
|
|
671
|
+
readonly byName: string;
|
|
672
|
+
readonly at: string;
|
|
673
|
+
}
|
|
674
|
+
declare function focusFromRow(value: unknown): MeetAppFocus | null;
|
|
675
|
+
|
|
630
676
|
/**
|
|
631
677
|
* MEETING ROOM ITEMS — polls, Q&A, the shared whiteboard and breakout rooms (Meet wave 5).
|
|
632
678
|
*
|
|
@@ -752,6 +798,11 @@ interface CollabSnapshot {
|
|
|
752
798
|
readonly captionLanguage: string | null;
|
|
753
799
|
readonly captionTranslations: Readonly<Record<string, string>>;
|
|
754
800
|
readonly captionTranslationError: string | null;
|
|
801
|
+
/**
|
|
802
|
+
* HR-360 wave 2 (MD-15): the meeting's app panel's ONE shared section focus for this run,
|
|
803
|
+
* as the server keeps it (`focus_set`); optional so a snapshot built before 0.11 compiles.
|
|
804
|
+
*/
|
|
805
|
+
readonly focus?: MeetAppFocus | null;
|
|
755
806
|
}
|
|
756
807
|
declare const EMPTY_COLLAB: CollabSnapshot;
|
|
757
808
|
type Row = Record<string, unknown>;
|
|
@@ -808,4 +859,4 @@ interface MeetingActivities {
|
|
|
808
859
|
*/
|
|
809
860
|
declare function loadMeetingActivities(api: MeetApi, meetingId: string, meetingPass?: string | null): Promise<MeetingActivities>;
|
|
810
861
|
|
|
811
|
-
export { type
|
|
862
|
+
export { type MeetingOccurrence as $, type AccessTokenSource as A, type MeetPoll as B, type CollabPanel as C, type MeetPollOption as D, EMPTY_COLLAB as E, FILE_SESSION_PATH as F, type MeetPollState as G, type MeetQuestion as H, type InviteeInput as I, type JsonObject as J, type MeetQuestionState as K, type LobbyEntry as L, type MeetingRecord as M, type MeetStroke as N, type OrganizationId as O, type ParticipantIdentity as P, type MeetingActivities as Q, type RoomName as R, type StageLayout as S, type TranscriptSource as T, type UserId as U, type MeetingAttendee as V, type WrapUpAnnouncement as W, type MeetingChanges as X, type MeetingInvitee as Y, type MeetingKind as Z, type MeetingNoteKind as _, type MeetParticipant as a, type MeetingSettings as a0, type NoteTakerState as a1, ORGANIZATION_HEADER as a2, type ObserversVisibleTo as a3, type OccurrenceOverride as a4, type OccurrenceState as a5, type ParticipantStanding as a6, ROLE_RANK as a7, type RecordingPolicy as a8, type RecordingRecord as a9, isObserverRole as aA, loadMeetingActivities as aB, scheduleSettingsPatch as aC, withItem as aD, type RecordingSource as aE, type RecordingState as aa, type RoomPhase as ab, type RsvpAnswer as ac, type RsvpInvitation as ad, type RsvpState as ae, type TranscriptSegment as af, type UpcomingOccurrence as ag, appPanelOf as ah, applyCollabPacket as ai, asCallId as aj, asMeetingId as ak, asOrganizationId as al, asParticipantIdentity as am, asRoomName as an, asUserId as ao, assignedRoom as ap, autoAssign as aq, breakoutRemainingMs as ar, collabFromState as as, createMeetApi as at, defaultCaptionLanguage as au, fileDownloadPath as av, focusFromRow as aw, isGuest as ax, isHostRole as ay, isLinkFollower as az, type MeetApi as b, type MeetIdentity as c, type CallInvite as d, type ParticipantRole as e, type CallMode as f, type MeetingNote as g, type MeetingId as h, type MeetingAppPanel as i, type CollabSnapshot as j, type AdmissionState as k, CAPTION_LANGUAGES as l, type CallId as m, type CallState as n, type CallablePerson as o, type ConnectionQuality as p, type InviteeRole as q, type JsonValue as r, type MeetApiOptions as s, type MeetApiRequest as t, type MeetAppFocus as u, type MeetBreakoutBroadcast as v, type MeetBreakoutPlan as w, type MeetBreakoutRoom as x, type MeetCollabSettings as y, type MeetFileMedia as z };
|
|
@@ -82,12 +82,20 @@ declare function isLinkFollower(standing: ParticipantStanding | null | undefined
|
|
|
82
82
|
* client's own state can grant it anything.
|
|
83
83
|
*/
|
|
84
84
|
declare function isHostRole(role: ParticipantRole): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* THE SILENT OBSERVER (HR-360 wave 2, MD-16) — the watch-only role `viewer` the core design
|
|
87
|
+
* already froze: publishes nothing, has no tile on anyone's stage, and is listed in People
|
|
88
|
+
* as "Observing". The server decides it at the join gate; nothing here grants it.
|
|
89
|
+
*/
|
|
90
|
+
declare function isObserverRole(role: ParticipantRole | null | undefined): boolean;
|
|
91
|
+
/** Who sees the "Observing" line in People — knob `meet.observers_visible_to`. */
|
|
92
|
+
type ObserversVisibleTo = "everyone" | "hosts";
|
|
85
93
|
/**
|
|
86
94
|
* THE LOBBY LADDER (D6). A guest link-follower starts `knocking`; the host
|
|
87
95
|
* admits or denies. An authenticated member of the meeting's org is `admitted`
|
|
88
96
|
* on arrival unless the meeting is locked.
|
|
89
97
|
*/
|
|
90
|
-
type AdmissionState = "knocking" | "admitted" | "denied" | "removed";
|
|
98
|
+
type AdmissionState = "waiting_host" | "knocking" | "admitted" | "denied" | "expired" | "withdrawn" | "removed" | "ended";
|
|
91
99
|
interface LobbyEntry {
|
|
92
100
|
readonly identity: ParticipantIdentity;
|
|
93
101
|
readonly displayName: string;
|
|
@@ -95,6 +103,8 @@ interface LobbyEntry {
|
|
|
95
103
|
readonly userId: UserId | null;
|
|
96
104
|
readonly state: AdmissionState;
|
|
97
105
|
readonly knockedAt: string;
|
|
106
|
+
/** When an unanswered knock lapses (`knock_timeout_minutes`); null = never. */
|
|
107
|
+
readonly knockExpiresAt?: string | null | undefined;
|
|
98
108
|
readonly decidedAt: string | null;
|
|
99
109
|
readonly decidedBy: UserId | null;
|
|
100
110
|
}
|
|
@@ -373,6 +383,9 @@ interface MeetingAttendee {
|
|
|
373
383
|
readonly userId: UserId | null;
|
|
374
384
|
readonly role: ParticipantRole;
|
|
375
385
|
readonly admissionState: AdmissionState;
|
|
386
|
+
/** When this person knocked, and when an unanswered knock lapses (null = never). */
|
|
387
|
+
readonly knockedAt?: string | null | undefined;
|
|
388
|
+
readonly knockExpiresAt?: string | null | undefined;
|
|
376
389
|
readonly isAgent: boolean;
|
|
377
390
|
/** FIRST arrival in the room — a rejoin never moves it. */
|
|
378
391
|
readonly joinedAt: string | null;
|
|
@@ -627,6 +640,39 @@ declare function createMeetApi(options: MeetApiOptions): MeetApi;
|
|
|
627
640
|
/** `GET /files/{id}/download?inline=1` — the platform files route (R3). */
|
|
628
641
|
declare function fileDownloadPath(fileId: string): string;
|
|
629
642
|
|
|
643
|
+
/**
|
|
644
|
+
* THE APP PANEL SLOT (HR-360 wave 2, Meet register MD-15).
|
|
645
|
+
*
|
|
646
|
+
* A meeting can carry one APP PANEL: a surface the HOST APP registered under a key, opened
|
|
647
|
+
* beside the call on one record (`meet_meetings.metadata.app_panel = {key, record_id}`,
|
|
648
|
+
* written by `meet_schedule_meeting`'s `app_panel` setting). The package knows only the key
|
|
649
|
+
* and the record id; the host app's registered component reads the record through the
|
|
650
|
+
* person's OWN doors, so someone who cannot read the record sees nothing of it.
|
|
651
|
+
*
|
|
652
|
+
* Everyone in the call looks at the same SECTION of the panel: one shared focus per run,
|
|
653
|
+
* kept by the server and carried on the existing collab packet (`collab.focus`,
|
|
654
|
+
* action `focus_set`) — never a second channel.
|
|
655
|
+
*/
|
|
656
|
+
|
|
657
|
+
interface MeetingAppPanel {
|
|
658
|
+
/** The registered surface key, e.g. `hr.review_360`. */
|
|
659
|
+
readonly key: string;
|
|
660
|
+
/** The record the panel opens on. */
|
|
661
|
+
readonly recordId: string;
|
|
662
|
+
}
|
|
663
|
+
/** The app panel this meeting carries, or null. Malformed values are never guessed at. */
|
|
664
|
+
declare function appPanelOf(meeting: Pick<MeetingRecord, "metadata"> | null | undefined): MeetingAppPanel | null;
|
|
665
|
+
/** The `p_settings` of `meet_schedule_meeting`, with the panel and the named observers. */
|
|
666
|
+
declare function scheduleSettingsPatch(settings: MeetingSettings, appPanel: MeetingAppPanel | undefined, observers: readonly string[] | undefined): Record<string, unknown>;
|
|
667
|
+
/** The one shared section focus of the meeting's app panel (`collab.focus`). */
|
|
668
|
+
interface MeetAppFocus {
|
|
669
|
+
readonly panel: string;
|
|
670
|
+
readonly section: string;
|
|
671
|
+
readonly byName: string;
|
|
672
|
+
readonly at: string;
|
|
673
|
+
}
|
|
674
|
+
declare function focusFromRow(value: unknown): MeetAppFocus | null;
|
|
675
|
+
|
|
630
676
|
/**
|
|
631
677
|
* MEETING ROOM ITEMS — polls, Q&A, the shared whiteboard and breakout rooms (Meet wave 5).
|
|
632
678
|
*
|
|
@@ -752,6 +798,11 @@ interface CollabSnapshot {
|
|
|
752
798
|
readonly captionLanguage: string | null;
|
|
753
799
|
readonly captionTranslations: Readonly<Record<string, string>>;
|
|
754
800
|
readonly captionTranslationError: string | null;
|
|
801
|
+
/**
|
|
802
|
+
* HR-360 wave 2 (MD-15): the meeting's app panel's ONE shared section focus for this run,
|
|
803
|
+
* as the server keeps it (`focus_set`); optional so a snapshot built before 0.11 compiles.
|
|
804
|
+
*/
|
|
805
|
+
readonly focus?: MeetAppFocus | null;
|
|
755
806
|
}
|
|
756
807
|
declare const EMPTY_COLLAB: CollabSnapshot;
|
|
757
808
|
type Row = Record<string, unknown>;
|
|
@@ -808,4 +859,4 @@ interface MeetingActivities {
|
|
|
808
859
|
*/
|
|
809
860
|
declare function loadMeetingActivities(api: MeetApi, meetingId: string, meetingPass?: string | null): Promise<MeetingActivities>;
|
|
810
861
|
|
|
811
|
-
export { type
|
|
862
|
+
export { type MeetingOccurrence as $, type AccessTokenSource as A, type MeetPoll as B, type CollabPanel as C, type MeetPollOption as D, EMPTY_COLLAB as E, FILE_SESSION_PATH as F, type MeetPollState as G, type MeetQuestion as H, type InviteeInput as I, type JsonObject as J, type MeetQuestionState as K, type LobbyEntry as L, type MeetingRecord as M, type MeetStroke as N, type OrganizationId as O, type ParticipantIdentity as P, type MeetingActivities as Q, type RoomName as R, type StageLayout as S, type TranscriptSource as T, type UserId as U, type MeetingAttendee as V, type WrapUpAnnouncement as W, type MeetingChanges as X, type MeetingInvitee as Y, type MeetingKind as Z, type MeetingNoteKind as _, type MeetParticipant as a, type MeetingSettings as a0, type NoteTakerState as a1, ORGANIZATION_HEADER as a2, type ObserversVisibleTo as a3, type OccurrenceOverride as a4, type OccurrenceState as a5, type ParticipantStanding as a6, ROLE_RANK as a7, type RecordingPolicy as a8, type RecordingRecord as a9, isObserverRole as aA, loadMeetingActivities as aB, scheduleSettingsPatch as aC, withItem as aD, type RecordingSource as aE, type RecordingState as aa, type RoomPhase as ab, type RsvpAnswer as ac, type RsvpInvitation as ad, type RsvpState as ae, type TranscriptSegment as af, type UpcomingOccurrence as ag, appPanelOf as ah, applyCollabPacket as ai, asCallId as aj, asMeetingId as ak, asOrganizationId as al, asParticipantIdentity as am, asRoomName as an, asUserId as ao, assignedRoom as ap, autoAssign as aq, breakoutRemainingMs as ar, collabFromState as as, createMeetApi as at, defaultCaptionLanguage as au, fileDownloadPath as av, focusFromRow as aw, isGuest as ax, isHostRole as ay, isLinkFollower as az, type MeetApi as b, type MeetIdentity as c, type CallInvite as d, type ParticipantRole as e, type CallMode as f, type MeetingNote as g, type MeetingId as h, type MeetingAppPanel as i, type CollabSnapshot as j, type AdmissionState as k, CAPTION_LANGUAGES as l, type CallId as m, type CallState as n, type CallablePerson as o, type ConnectionQuality as p, type InviteeRole as q, type JsonValue as r, type MeetApiOptions as s, type MeetApiRequest as t, type MeetAppFocus as u, type MeetBreakoutBroadcast as v, type MeetBreakoutPlan as w, type MeetBreakoutRoom as x, type MeetCollabSettings as y, type MeetFileMedia as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { M as MeetingRecord, P as ParticipantIdentity, R as RoomName, a as MeetParticipant } from './collab-
|
|
2
|
+
import { M as MeetingRecord, P as ParticipantIdentity, R as RoomName, a as MeetParticipant } from './collab-BBQxcyRQ.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* THE PRODUCT UI (R6/R7). Not a headless kernel with a note telling the host to
|
|
@@ -190,6 +190,8 @@ declare function PreJoin(props: {
|
|
|
190
190
|
meetingId?: string;
|
|
191
191
|
slug?: string;
|
|
192
192
|
onJoined?: () => void;
|
|
193
|
+
/** HR-360 wave 2 (MD-16): join as a silent observer — no camera, no microphone. */
|
|
194
|
+
observe?: boolean;
|
|
193
195
|
}): ReactNode;
|
|
194
196
|
/**
|
|
195
197
|
* THE MEET SKIN'S ROOM (v0) — today's pre-join, waiting room and live room,
|
|
@@ -199,11 +201,13 @@ declare function PreJoin(props: {
|
|
|
199
201
|
* meeting's record. This renders only once a runtime exists and the meeting
|
|
200
202
|
* is live or joinable.
|
|
201
203
|
*/
|
|
202
|
-
declare function MeetSkinRoom({ roomName, meetingId, slug, onLeave, headerControls, }: {
|
|
204
|
+
declare function MeetSkinRoom({ roomName, meetingId, slug, onLeave, headerControls, observe, }: {
|
|
203
205
|
roomName: RoomName;
|
|
204
206
|
meetingId?: string;
|
|
205
207
|
slug?: string;
|
|
206
208
|
onLeave?: () => void;
|
|
209
|
+
/** HR-360 wave 2 (MD-16): the pre-join joins as a silent observer. */
|
|
210
|
+
observe?: boolean;
|
|
207
211
|
/**
|
|
208
212
|
* A HOST-PROVIDED control for the in-meeting header — rendered in the header
|
|
209
213
|
* row of the live room only. The package never inspects it.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { M as MeetingRecord, P as ParticipantIdentity, R as RoomName, a as MeetParticipant } from './collab-
|
|
2
|
+
import { M as MeetingRecord, P as ParticipantIdentity, R as RoomName, a as MeetParticipant } from './collab-BBQxcyRQ.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* THE PRODUCT UI (R6/R7). Not a headless kernel with a note telling the host to
|
|
@@ -190,6 +190,8 @@ declare function PreJoin(props: {
|
|
|
190
190
|
meetingId?: string;
|
|
191
191
|
slug?: string;
|
|
192
192
|
onJoined?: () => void;
|
|
193
|
+
/** HR-360 wave 2 (MD-16): join as a silent observer — no camera, no microphone. */
|
|
194
|
+
observe?: boolean;
|
|
193
195
|
}): ReactNode;
|
|
194
196
|
/**
|
|
195
197
|
* THE MEET SKIN'S ROOM (v0) — today's pre-join, waiting room and live room,
|
|
@@ -199,11 +201,13 @@ declare function PreJoin(props: {
|
|
|
199
201
|
* meeting's record. This renders only once a runtime exists and the meeting
|
|
200
202
|
* is live or joinable.
|
|
201
203
|
*/
|
|
202
|
-
declare function MeetSkinRoom({ roomName, meetingId, slug, onLeave, headerControls, }: {
|
|
204
|
+
declare function MeetSkinRoom({ roomName, meetingId, slug, onLeave, headerControls, observe, }: {
|
|
203
205
|
roomName: RoomName;
|
|
204
206
|
meetingId?: string;
|
|
205
207
|
slug?: string;
|
|
206
208
|
onLeave?: () => void;
|
|
209
|
+
/** HR-360 wave 2 (MD-16): the pre-join joins as a silent observer. */
|
|
210
|
+
observe?: boolean;
|
|
207
211
|
/**
|
|
208
212
|
* A HOST-PROVIDED control for the in-meeting header — rendered in the header
|
|
209
213
|
* row of the live room only. The package never inspects it.
|