Fired when the active-speaker set changes.
Optional avatar URL for the agent participant (matched by agent role).
Fired before connecting. Cancelable.
Fired before the active device is switched. Cancelable.
Fired before disconnecting/leaving. Cancelable (e.g. confirm "leave call?").
Fired before a local-media track is toggled. Cancelable.
Fired before a data-channel message is sent. Cancelable; Text is mutable.
Turns the leave button into a Zoom/Teams-style split offering Leave vs. End meeting for everyone.
Purely presentational here — this generic component has no notion of "ending for everyone"; it just emits
EndForAll so the host (e.g. the MJ binding) can tear down agents/the room. Default false (plain Leave).
Fired when a chat message (chat-topic data) is received or sent locally.
The accumulated chat messages.
Open the chat panel by default on connect.
Fired when the room connects.
Fired for every inbound data-channel message (all topics).
Whether the device menu popover is open.
The device lists for the device menu.
Fired when the room disconnects.
The display name to publish for the local participant.
End-to-end-encryption passphrase. When set with E2EEWorker, the room connects with E2EE.
The E2EE web worker (host-provided, bundler-specific). Required for E2EEPassphrase.
Expose the background-blur toggle in the settings menu.
Allow toggling the camera.
Allow opening the device-settings menu.
Show the layout switcher (gallery / active speaker / split / audio-only).
Allow leaving the room from the control bar.
Allow toggling the microphone.
Expose the Krisp noise-filter toggle in the settings menu (LiveKit Cloud).
Allow pinning a participant to the spotlight (hover pin button on tiles).
Allow screen sharing.
Fired when the user chooses "End meeting for everyone" from the split-leave menu (only reachable when CanEndForAll). The host should tear down the meeting (e.g. stop all agents), then disconnect.
Fired when a room error occurs.
Whether a recording is currently in progress (host-managed).
The last room error message, surfaced in the overlay.
The stage layout mode.
Fired when the user changes the layout via the layout switcher.
Whether the layout switcher popover is open.
ReadonlyLayoutThe available layout options for the switcher.
Fired when the local-media toggle state changes.
Fired when a participant joins.
Fired when a participant leaves.
The identity of the pinned participant (drives spotlight when EnablePinning).
The PreJoin choices, once confirmed.
Whether the user has passed the PreJoin lobby (or PreJoin is disabled).
Fired when reconnection succeeds.
Fired when reconnection begins.
The active camera deviceId, used to pre-select it in the device menu.
The active microphone deviceId, used to pre-select it in the device menu.
The active speaker deviceId, used to pre-select it in the device menu.
Highlight active speakers with a ring.
Show the agent-state visualizer (listening/thinking/speaking) for the agent participant.
Show per-tile audio meters.
Enable the data-channel chat feature (toggle + panel).
Render the connecting/reconnecting/error overlay.
Show per-tile connection-quality indicators.
Show the control bar at all.
Show the header bar.
Show participant name badges on tiles.
Show the participant count in the header.
Enable the participants roster panel (toggle + panel).
Show a device-preview PreJoin lobby before connecting (suppresses auto-connect until the user joins).
Show the recording toggle in the control bar (the host wires the actual egress call).
Show the local participant's self-view tile.
Enable the collaborative whiteboard surface (data-channel-synced; agent co-authoring supported).
Which side panel is currently open.
The split-view ratio (left/screen pane fraction, 0.2–0.8).
Start with the camera enabled.
Start with the microphone enabled.
The current normalized room state snapshot.
Fired on every normalized room state change.
The header title.
Fired when the user toggles recording (the host performs the server-side egress call).
The unread chat count (since the chat panel was last open).
Whether the whiteboard surface is currently shown (replaces the participant stage).
The agent participant whose name/state the agent indicator shows. In a MULTI-agent room this prefers the agent that is currently speaking (so the indicator reads e.g. "Marketing Agent · speaking", not whichever agent merely joined first), falling back to the first agent when none is speaking.
The agent's visual state: an explicit data-channel signal wins, else derived from speaking activity.
All participants (local + remote) for the roster panel.
The underlying controller — exposed for advanced/imperative host scenarios.
The participants to render on the stage (local optionally included).
The non-spotlight participants for the spotlight-layout filmstrip.
Whether the room is connected.
The participant currently sharing their screen (for split view), if any.
The LiveKit server URL (e.g. wss://livekit.myorg.com).
Whether the connection overlay should be visible.
The "speaker" pane participant for split view (active speaker → agent → first remote → local).
The participant featured in spotlight layout (pinned → active speaker → agent → first remote → local).
The signed access token authorizing this participant to join the room.
Per-tile avatar URL for a participant (agent gets the configured agent avatar).
Connects to the room using the current inputs. Safe to call repeatedly.
Leaves the room.
A callback method that is invoked immediately after the default change detector has completed one change-check cycle for a component's view.
A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
Toggles camera background blur.
Closes the device menu.
Resumes audio playback after a browser autoplay block (must run from a user gesture).
Toggles the Krisp noise filter.
Opens the device menu and (re)loads device lists.
Handles PreJoin completion: stores the choices, marks PreJoin complete, and connects.
Sends a chat message on the chat topic and optimistically renders it locally.
Ends the split-view drag.
Updates the split ratio while dragging the divider, clamped to 20–80%.
Begins dragging the split-view divider.
Toggles the camera.
Toggles the chat panel and clears the unread count when opening.
Toggles the layout switcher popover.
Toggles the microphone.
Toggles the participants panel.
Pins/unpins a participant to the spotlight (toggles off if already pinned).
Toggles recording intent (the host performs the actual server-side egress call).
Toggles screen sharing.
Toggles the collaborative whiteboard surface.
Broadcasts a local whiteboard snapshot to the room over the data channel.
mj-livekit-room— a full-featured, framework-portable LiveKit room UI. Owns a LiveKitRoomController, renders a participant grid/spotlight, control bar, chat, device picker, and participants roster, and re-surfaces the core's cancelable event model as@Output()s.Every feature is gated by an
@Inputso a host can compose exactly the experience it wants (voice-only widget, full conferencing surface, embedded co-agent panel, …) without forking the component.Public class members are PascalCase (MJ convention); private/protected members are camelCase.