mediasfu-angular
Version:
mediasfu-angular - Angular 17/18/19 WebRTC SDK for video conferencing, webinars, broadcasts, live streaming, chat, recording, whiteboard, and AI agents. Prebuilt rooms and fully custom UIs.
929 lines • 147 kB
TypeScript
import { Injector, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Socket } from 'socket.io-client';
import { MainAspectComponent } from '../display-components/main-aspect-component/main-aspect-component.component';
import { ControlButtonsComponent } from '../display-components/control-buttons-component/control-buttons-component.component';
import { ControlButtonsAltComponent } from '../display-components/control-buttons-alt-component/control-buttons-alt-component.component';
import { ControlButtonsComponentTouch } from '../display-components/control-buttons-component-touch/control-buttons-component-touch.component';
import { OtherGridComponent } from '../display-components/other-grid-component/other-grid-component.component';
import { MainScreenComponent } from '../display-components/main-screen-component/main-screen-component.component';
import { MainGridComponent } from '../display-components/main-grid-component/main-grid-component.component';
import { SubAspectComponent } from '../display-components/sub-aspect-component/sub-aspect-component.component';
import { MainContainerComponent } from '../display-components/main-container-component/main-container-component.component';
import { TranslationSettingsModal, type TranslationChannelAvailability } from '../translation-components/translation-settings-modal/translation-settings-modal.component';
import { WelcomePageOptions } from '../misc-components/welcome-page/welcome-page.component';
import { BackgroundModal } from '../background-components/background-modal/background-modal.component';
import { BreakoutRoomsModal } from '../breakout-components/breakout-rooms-modal.component';
import { ConfigureWhiteboardModal } from '../whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component';
import { Whiteboard } from '../whiteboard-components/whiteboard/whiteboard.component';
import { Screenboard } from '../screenboard-components/screenboard/screenboard.component';
import { ModernCoHostModalComponent } from '../../modern/modal-components/modern-co-host-modal.component';
import { ModernConfirmExitModalComponent } from '../../modern/modal-components/modern-confirm-exit-modal.component';
import { ModernConfirmHereModalComponent } from '../../modern/modal-components/modern-confirm-here-modal.component';
import { ModernDisplaySettingsModalComponent } from '../../modern/modal-components/modern-display-settings-modal.component';
import { ModernEventSettingsModalComponent } from '../../modern/modal-components/modern-event-settings-modal.component';
import { ModernMediaSettingsModalComponent } from '../../modern/modal-components/modern-media-settings-modal.component';
import { ModernMenuModalComponent } from '../../modern/modal-components/modern-menu-modal.component';
import { ModernMessagesModalComponent } from '../../modern/modal-components/modern-messages-modal.component';
import { ModernPollModalComponent } from '../../modern/modal-components/modern-poll-modal.component';
import { ModernParticipantsModalComponent } from '../../modern/modal-components/modern-participants-modal.component';
import { ModernRecordingModalComponent } from '../../modern/modal-components/modern-recording-modal.component';
import { ModernRequestsModalComponent } from '../../modern/modal-components/modern-requests-modal.component';
import { ModernShareEventModalComponent } from '../../modern/modal-components/modern-share-event-modal.component';
import { ModernWaitingRoomModalComponent } from '../../modern/modal-components/modern-waiting-room-modal.component';
import { ModernAlertComponent } from '../../modern/display-components/modern-alert.component';
import { ModernLoadingModalComponent } from '../../modern/display-components/modern-loading-modal.component';
import { ScreenboardModal } from '../screenboard-components/screenboard-modal/screenboard-modal.component';
import { FlexibleGrid } from '../display-components/flexible-grid/flexible-grid.component';
import { FlexibleVideo } from '../display-components/flexible-video/flexible-video.component';
import { AudioGrid } from '../display-components/audio-grid/audio-grid.component';
import { ModernPaginationComponent } from '../../modern/display-components/modern-pagination.component';
import { MenuWidget } from '../display-components/control-widgets/menu-widget.component';
import { MessageWidget } from '../display-components/control-widgets/message-widget.component';
import { MenuRecordWidget } from '../display-components/control-widgets/menu-record-widget.component';
import { RecordTimerWidget } from '../display-components/control-widgets/record-timer-widget.component';
import { MenuParticipantsWidget } from '../display-components/control-widgets/menu-participants-widget.component';
import { ScreenShareWidget } from '../display-components/control-widgets/screenshare-widget.component';
import { ButtonTouch, ResponseJoinRoom, CoHostResponsibility, EventType, Participant, ConsumeSocket, MeetingRoomParams, VidCons, HParamsType, VParamsType, ScreenParamsType, AParamsType, UserRecordingParams, Stream, AudioDecibels, ScreenState, GridSizes, CustomMediaComponent, Message, WaitingRoomParticipant, ComponentSizes, Transport as TransportType, Shape, Poll, BreakoutParticipant, WhiteboardUser, Request, MainButtonAlt, MainCustomButton, SeedData, PreJoinPageOptions, CreateMediaSFURoomOptions, JoinMediaSFURoomOptions, JoinRoomOnMediaSFUType, CreateRoomOnMediaSFUType } from '../../@types/types';
import { LaunchMenuModal } from '../../methods/menu-methods/launch-menu-modal.service';
import { LaunchRecording } from '../../methods/recording-methods/launch-recording.service';
import { StartRecording } from '../../methods/recording-methods/start-recording.service';
import { ConfirmRecording } from '../../methods/recording-methods/confirm-recording.service';
import { LaunchWaiting } from '../../methods/waiting-methods/launch-waiting.service';
import { launchCoHost } from '../../methods/co-host-methods/launch-co-host.service';
import { LaunchMediaSettings } from '../../methods/media-settings-methods/launch-media-settings.service';
import { LaunchDisplaySettings } from '../../methods/display-settings-methods/launch-display-settings.service';
import { LaunchSettings } from '../../methods/settings-methods/launch-settings.service';
import { LaunchRequests } from '../../methods/requests-methods/launch-requests.service';
import { LaunchParticipants } from '../../methods/participants-methods/launch-participants.service';
import { LaunchMessages } from '../../methods/message-methods/launch-messages.service';
import { LaunchConfirmExit } from '../../methods/exit-methods/launch-confirm-exit.service';
import { SendMessage } from '../../methods/message-methods/send-message.service';
import { MuteParticipants } from '../../methods/participants-methods/mute-participants.service';
import { MessageParticipants } from '../../methods/participants-methods/message-participants.service';
import { RemoveParticipants } from '../../methods/participants-methods/remove-participants.service';
import { LaunchPoll } from '../../methods/polls-methods/launch-poll.service';
import { LaunchBreakoutRooms } from '../../methods/breakout-room-methods/launch-breakout-rooms.service';
import { LaunchConfigureWhiteboard } from '../../methods/whiteboard-methods/launch-configure-whiteboard.service';
import { SocketManager } from '../../sockets/socket-manager.service';
import { JoinRoomClient } from '../../producer-client/producer-client-emits/join-room-client.service';
import { JoinLocalRoom } from '../../producers/producer-emits/join-local-room.service';
import { UpdateRoomParametersClient } from '../../producer-client/producer-client-emits/update-room-parameters-client.service';
import { CreateDeviceClient } from '../../producer-client/producer-client-emits/create-device-client.service';
import { SwitchVideoAlt } from '../../methods/stream-methods/switch-video-alt.service';
import { ClickVideo } from '../../methods/stream-methods/click-video.service';
import { ClickAudio } from '../../methods/stream-methods/click-audio.service';
import { ClickScreenShare } from '../../methods/stream-methods/click-screen-share.service';
import { StreamSuccessVideo } from '../../consumers/stream-success-video.service';
import { StreamSuccessAudio } from '../../consumers/stream-success-audio.service';
import { StreamSuccessScreen } from '../../consumers/stream-success-screen.service';
import { StreamSuccessAudioSwitch } from '../../consumers/stream-success-audio-switch.service';
import { CheckPermission } from '../../consumers/check-permission.service';
import { UpdateMiniCardsGrid } from '../../consumers/update-mini-cards-grid.service';
import { MixStreams } from '../../consumers/mix-streams.service';
import { DispStreams } from '../../consumers/disp-streams.service';
import { StopShareScreen } from '../../consumers/stop-share-screen.service';
import { CheckScreenShare } from '../../consumers/check-screen-share.service';
import { StartShareScreen } from '../../consumers/start-share-screen.service';
import { RequestScreenShare } from '../../consumers/request-screen-share.service';
import { ReorderStreams } from '../../consumers/reorder-streams.service';
import { PrepopulateUserMedia } from '../../consumers/prepopulate-user-media.service';
import { GetVideos } from '../../consumers/get-videos.service';
import { RePort } from '../../consumers/re-port.service';
import { Trigger } from '../../consumers/trigger.service';
import { ConsumerResume } from '../../consumers/consumer-resume.service';
import { ConnectSendTransportAudio } from '../../consumers/connect-send-transport-audio.service';
import { ConnectSendTransportVideo } from '../../consumers/connect-send-transport-video.service';
import { ConnectSendTransportScreen } from '../../consumers/connect-send-transport-screen.service';
import { ProcessConsumerTransports } from '../../consumers/process-consumer-transports.service';
import { ResumePauseStreams } from '../../consumers/resume-pause-streams.service';
import { Readjust } from '../../consumers/readjust.service';
import { CheckGrid } from '../../consumers/check-grid.service';
import { GetEstimate } from '../../consumers/get-estimate.service';
import { CalculateRowsAndColumns } from '../../consumers/calculate-rows-and-columns.service';
import { AddVideosGrid } from '../../consumers/add-videos-grid.service';
import { OnScreenChanges } from '../../consumers/on-screen-changes.service';
import { ChangeVids } from '../../consumers/change-vids.service';
import { CompareActiveNames } from '../../consumers/compare-active-names.service';
import { CompareScreenStates } from '../../consumers/compare-screen-states.service';
import { CreateSendTransport } from '../../consumers/create-send-transport.service';
import { ResumeSendTransportAudio } from '../../consumers/resume-send-transport-audio.service';
import { ReceiveAllPipedTransports } from '../../consumers/receive-all-piped-transports.service';
import { DisconnectSendTransportVideo } from '../../consumers/disconnect-send-transport-video.service';
import { DisconnectSendTransportAudio } from '../../consumers/disconnect-send-transport-audio.service';
import { DisconnectSendTransportScreen } from '../../consumers/disconnect-send-transport-screen.service';
import { ConnectSendTransport } from '../../consumers/connect-send-transport.service';
import { GetPipedProducersAlt } from '../../consumers/get-piped-producers-alt.service';
import { SignalNewConsumerTransport } from '../../consumers/signal-new-consumer-transport.service';
import { ConnectRecvTransport } from '../../consumers/connect-recv-transport.service';
import { ReUpdateInter } from '../../consumers/re-update-inter.service';
import { UpdateParticipantAudioDecibels } from '../../consumers/update-participant-audio-decibels.service';
import { CloseAndResize } from '../../consumers/close-and-resize.service';
import { AutoAdjust } from '../../consumers/auto-adjust.service';
import { SwitchUserVideoAlt } from '../../consumers/switch-user-video-alt.service';
import { SwitchUserVideo } from '../../consumers/switch-user-video.service';
import { SwitchUserAudio } from '../../consumers/switch-user-audio.service';
import { ReceiveRoomMessages } from '../../consumers/receive-room-messages.service';
import { FormatNumber } from '../../methods/utils/format-number.service';
import { ConnectIps } from '../../consumers/connect-ips.service';
import { ConnectLocalIps } from '../../consumers/connect-local-ips.service';
import { PollUpdated } from '../../methods/polls-methods/poll-updated.service';
import { HandleCreatePoll } from '../../methods/polls-methods/handle-create-poll.service';
import { HandleVotePoll } from '../../methods/polls-methods/handle-vote-poll.service';
import { HandleEndPoll } from '../../methods/polls-methods/handle-end-poll.service';
import { BreakoutRoomUpdated } from '../../methods/breakout-room-methods/breakout-room-updated.service';
import { StartMeetingProgressTimer } from '../../methods/utils/meeting-timer/start-meeting-progress-timer.service';
import { UpdateRecording } from '../../methods/recording-methods/update-recording.service';
import { StopRecording } from '../../methods/recording-methods/stop-recording.service';
import { UserWaiting } from '../../producers/socket-receive-methods/user-waiting.service';
import { PersonJoined } from '../../producers/socket-receive-methods/person-joined.service';
import { AllWaitingRoomMembers } from '../../producers/socket-receive-methods/all-waiting-room-members.service';
import { RoomRecordParams } from '../../producers/socket-receive-methods/room-record-params.service';
import { BanParticipant } from '../../producers/socket-receive-methods/ban-participant.service';
import { UpdatedCoHost } from '../../producers/socket-receive-methods/updated-co-host.service';
import { ParticipantRequested } from '../../producers/socket-receive-methods/participant-requested.service';
import { ScreenProducerId } from '../../producers/socket-receive-methods/screen-producer-id.service';
import { UpdateMediaSettings } from '../../producers/socket-receive-methods/update-media-settings.service';
import { ProducerMediaPaused } from '../../producers/socket-receive-methods/producer-media-paused.service';
import { ProducerMediaResumed } from '../../producers/socket-receive-methods/producer-media-resumed.service';
import { ProducerMediaClosed } from '../../producers/socket-receive-methods/producer-media-closed.service';
import { ControlMediaHost } from '../../producers/socket-receive-methods/control-media-host.service';
import { MeetingEnded } from '../../producers/socket-receive-methods/meeting-ended.service';
import { DisconnectUserSelf } from '../../producers/socket-receive-methods/disconnect-user-self.service';
import { ReceiveMessage } from '../../producers/socket-receive-methods/receive-message.service';
import { MeetingTimeRemaining } from '../../producers/socket-receive-methods/meeting-time-remaining.service';
import { MeetingStillThere } from '../../producers/socket-receive-methods/meeting-still-there.service';
import { StartRecords } from '../../producers/socket-receive-methods/start-records.service';
import { ReInitiateRecording } from '../../producers/socket-receive-methods/re-initiate-recording.service';
import { GetDomains } from '../../producers/socket-receive-methods/get-domains.service';
import { UpdateConsumingDomains } from '../../producers/socket-receive-methods/update-consuming-domains.service';
import { RecordingNotice } from '../../producers/socket-receive-methods/recording-notice.service';
import { TimeLeftRecording } from '../../producers/socket-receive-methods/time-left-recording.service';
import { StoppedRecording } from '../../producers/socket-receive-methods/stopped-recording.service';
import { HostRequestResponse } from '../../producers/socket-receive-methods/host-request-response.service';
import { AllMembers } from '../../producers/socket-receive-methods/all-members.service';
import { AllMembersRest } from '../../producers/socket-receive-methods/all-members-rest.service';
import { Disconnect } from '../../producers/socket-receive-methods/disconnect.service';
import { PanelistsUpdated } from '../../producers/socket-receive-methods/panelists-updated.service';
import { PanelistFocusChanged } from '../../producers/socket-receive-methods/panelist-focus-changed.service';
import { ReceiveControlMedia } from '../../producers/socket-receive-methods/receive-control-media.service';
import { AddedAsPanelist } from '../../producers/socket-receive-methods/added-as-panelist.service';
import { RemovedFromPanelists } from '../../producers/socket-receive-methods/removed-from-panelists.service';
import { PermissionUpdated } from '../../producers/socket-receive-methods/permission-updated.service';
import { PermissionConfigUpdated } from '../../producers/socket-receive-methods/permission-config-updated.service';
import { TranslationReceiveMethods, type TranslationProducerMap, type TranslationRoomConfig } from '../../producers/socket-receive-methods/translation-receive-methods.service';
import { TranslationConsumerSwitch } from '../../consumers/translation-consumer-switch.service';
import { PermissionConfig } from '../../methods/permissions-methods/update-permission-config.service';
import { LiveSubtitleService } from '../../services/live-subtitle.service';
import { CaptureCanvasStream } from '../../methods/whiteboard-methods/capture-canvas-stream.service';
import { ResumePauseAudioStreams } from '../../consumers/resume-pause-audio-streams.service';
import { ProcessConsumerTransportsAudio } from '../../consumers/process-consumer-transports-audio.service';
import { types } from 'mediasoup-client';
import type { SelfieSegmentation } from '@mediapipe/selfie_segmentation';
import { MediasfuUICustomOverrides } from '../../@types/ui-overrides.types';
import { UIOverrideResolverService } from '../../services/ui-override-resolver.service';
import * as i0 from "@angular/core";
type Device = types.Device;
type Producer = types.Producer;
type ProducerOptions = types.ProducerOptions;
type RtpCapabilities = types.RtpCapabilities;
type Transport = types.Transport;
interface SpeakerTranslationState {
speakerId: string;
speakerName: string;
inputLanguage: string;
outputLanguage: string;
originalProducerId: string;
enabled: boolean;
}
interface SpeakerTranslationStateUpdateOptions {
speakerName?: string;
inputLanguage?: string;
enabled?: boolean;
}
export type MediasfuGenericOptions = {
PrejoinPage?: (options: PreJoinPageOptions | WelcomePageOptions) => HTMLElement;
localLink?: string;
connectMediaSFU?: boolean;
credentials?: {
apiUserName: string;
apiKey: string;
};
useLocalUIMode?: boolean;
seedData?: SeedData;
useSeed?: boolean;
imgSrc?: string;
sourceParameters?: {
[key: string]: any;
};
updateSourceParameters?: (data: {
[key: string]: any;
}) => void;
returnUI?: boolean;
noUIPreJoinOptions?: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions;
joinMediaSFURoom?: JoinRoomOnMediaSFUType;
createMediaSFURoom?: CreateRoomOnMediaSFUType;
canUsePersonalTranslation?: boolean;
personalTranslationUsername?: string;
};
type SidebarPanelContent = 'menu' | 'messages' | 'participants' | 'shareEvent' | 'recording' | 'eventSettings' | 'translation' | 'requests' | 'waiting' | 'coHost' | 'mediaSettings' | 'background' | 'displaySettings' | 'poll' | 'breakoutRooms' | 'configureWhiteboard';
type SidebarContent = 'none' | SidebarPanelContent;
/**
* MediasfuGeneric component provides a customizable interface with a full suite of modal windows and flexible layout options for interactive media applications.
*
* @component
* @selector app-mediasfu-generic
* @standalone true
* @imports [RouterOutlet, CommonModule, BreakoutRoomsModal, BackgroundModal, CoHostModal, AlertComponent, AudioGrid, ControlButtonsAltComponent, ControlButtonsComponentTouch, ControlButtonsComponent, FlexibleGrid, FlexibleVideo, LoadingModal, Pagination, SubAspectComponent, DisplaySettingsModal, EventSettingsModal, ConfirmExitModal, MediaSettingsModal, MenuModal, MessagesModal, ConfirmHereModal, ShareEventModal, WelcomePage, ParticipantsModal, PollModal, RecordingModal, RequestsModal, MainAspectComponent, MainContainerComponent, MainGridComponent, MainScreenComponent, OtherGridComponent, Screenboard, ScreenboardModal, Whiteboard, ConfigureWhiteboardModal, WaitingRoomModal, MenuWidget, MessageWidget, MenuRecordWidget, RecordTimerWidget, MenuParticipantsWidget, ScreenShareWidget]
*
* @template
* The template structure:
* - Conditional rendering of a PrejoinPage or WelcomePage for introductory or pre-session screens.
* - Main content area with nested components for grid layouts, flexible video, and audio grids.
* - Modals for user interactions, including participant management, event settings, breakout rooms, whiteboarding, and media settings.
*
* @input {any} PrejoinPage - Component for the prejoin page, defaults to `WelcomePage`.
* @input {MediasfuGenericOptions} options - Configuration options for the component.
* @input {boolean} connectMediaSFU - Flag to enable/disable connection to the MediaSFU server.
* @input {string} localLink - Local link for the Community Edition server.
* @input {{ apiUserName: string; apiKey: string }} credentials - API credentials for secure access.
* @input {boolean} useLocalUIMode - Flag to toggle local UI settings.
* @input {SeedData} seedData - Seed data for initializing the component with specific configurations.
* @input {boolean} useSeed - Enable/disable use of seed data.
* @input {string} imgSrc - URL for branding images or logos.
* @input {object} sourceParameters - Additional parameters for the source.
* @input {Function} updateSourceParameters - Function to update the source parameters.
* @input {boolean} returnUI - Flag to return the UI elements.
* @input {CreateMediaSFURoomOptions | JoinMediaSFURoomOptions} noUIPreJoinOptions - Options for the prejoin page without UI.
* @input {JoinRoomOnMediaSFUType} joinMediaSFURoom - Function to join a room on MediaSFU.
* @input {CreateRoomOnMediaSFUType} createMediaSFURoom - Function to create a room on MediaSFU.
* @input {any} customVideoCard - Custom component to replace the default VideoCard component.
* @input {any} customAudioCard - Custom component to replace the default AudioCard component.
* @input {any} customMiniCard - Custom component to replace the default MiniCard component.
* @input {any} customMainComponent - Custom component that provides complete control over the main UI, bypassing default MediaSFU styling.
*
* @property {string} title - The title of the component, defaults to "MediaSFU-Generic".
*
* @styles
* Component-specific styles, including full-screen settings and customizable colors for backgrounds.
*
* @providers [CookieService] - Provides cookies service for session handling.
*
* @constructor
* @class MediasfuGeneric
* @implements OnInit, OnDestroy
*
* @method ngOnInit - Initializes the component and its configurations.
* @method ngOnDestroy - Performs cleanup, removing event listeners and intervals as needed.
*
* @example
* ```html
* <app-mediasfu-generic
* [PrejoinPage]="CustomPrejoinComponent"
* [localLink]="'https://localhost:3000'"
* [connectMediaSFU]="true"
* [credentials]="{ apiUserName: 'username', apiKey: 'apikey' }"
* [useLocalUIMode]="true"
* [seedData]="seedDataObject"
* [useSeed]="true"
* [imgSrc]="'https://example.com/logo.png'"
* [sourceParameters]="{ source: 'camera', width: 640, height: 480 }"
* [updateSourceParameters]="updateSourceParameters"
* [returnUI]="true"
* [noUIPreJoinOptions]="{ roomName: 'room1', userName: 'user1' }"
* [joinMediaSFURoom]="joinMediaSFURoom"
* [createMediaSFURoom]="createMediaSFURoom"
* [customVideoCard]="CustomVideoCardComponent"
* [customAudioCard]="CustomAudioCardComponent"
* [customMiniCard]="CustomMiniCardComponent"
* [customMainComponent]="CustomMainComponent">
* </app-mediasfu-generic>
* ```
*/
export declare class MediasfuGeneric implements OnInit, OnDestroy {
private cdr;
private injector;
updateMiniCardsGrid: UpdateMiniCardsGrid;
mixStreams: MixStreams;
dispStreams: DispStreams;
stopShareScreen: StopShareScreen;
checkScreenShare: CheckScreenShare;
startShareScreen: StartShareScreen;
requestScreenShare: RequestScreenShare;
reorderStreams: ReorderStreams;
prepopulateUserMedia: PrepopulateUserMedia;
getVideos: GetVideos;
rePort: RePort;
trigger: Trigger;
consumerResume: ConsumerResume;
connectSendTransport: ConnectSendTransport;
connectSendTransportAudio: ConnectSendTransportAudio;
connectSendTransportVideo: ConnectSendTransportVideo;
connectSendTransportScreen: ConnectSendTransportScreen;
processConsumerTransports: ProcessConsumerTransports;
resumePauseStreams: ResumePauseStreams;
readjust: Readjust;
checkGrid: CheckGrid;
getEstimate: GetEstimate;
calculateRowsAndColumns: CalculateRowsAndColumns;
addVideosGrid: AddVideosGrid;
onScreenChanges: OnScreenChanges;
changeVids: ChangeVids;
compareActiveNames: CompareActiveNames;
compareScreenStates: CompareScreenStates;
createSendTransport: CreateSendTransport;
resumeSendTransportAudio: ResumeSendTransportAudio;
receiveAllPipedTransports: ReceiveAllPipedTransports;
disconnectSendTransportVideo: DisconnectSendTransportVideo;
disconnectSendTransportAudio: DisconnectSendTransportAudio;
disconnectSendTransportScreen: DisconnectSendTransportScreen;
getPipedProducersAlt: GetPipedProducersAlt;
signalNewConsumerTransport: SignalNewConsumerTransport;
connectRecvTransport: ConnectRecvTransport;
reUpdateInter: ReUpdateInter;
updateParticipantAudioDecibels: UpdateParticipantAudioDecibels;
closeAndResize: CloseAndResize;
autoAdjust: AutoAdjust;
switchUserVideoAlt: SwitchUserVideoAlt;
switchUserVideo: SwitchUserVideo;
switchUserAudio: SwitchUserAudio;
getDomains: GetDomains;
formatNumber: FormatNumber;
connectIps: ConnectIps;
connectLocalIps: ConnectLocalIps;
createDeviceClient: CreateDeviceClient;
handleCreatePoll: HandleCreatePoll;
handleEndPoll: HandleEndPoll;
handleVotePoll: HandleVotePoll;
captureCanvasStream: CaptureCanvasStream;
resumePauseAudioStreams: ResumePauseAudioStreams;
processConsumerTransportsAudio: ProcessConsumerTransportsAudio;
launchMenuModal: LaunchMenuModal;
launchRecording: LaunchRecording;
startRecording: StartRecording;
confirmRecording: ConfirmRecording;
launchWaiting: LaunchWaiting;
launchCoHost: launchCoHost;
launchMediaSettings: LaunchMediaSettings;
launchDisplaySettings: LaunchDisplaySettings;
launchSettings: LaunchSettings;
launchRequests: LaunchRequests;
launchParticipants: LaunchParticipants;
launchMessages: LaunchMessages;
launchConfirmExit: LaunchConfirmExit;
sendMessage: SendMessage;
muteParticipants: MuteParticipants;
messageParticipants: MessageParticipants;
removeParticipants: RemoveParticipants;
launchPoll: LaunchPoll;
launchBreakoutRooms: LaunchBreakoutRooms;
launchConfigureWhiteboard: LaunchConfigureWhiteboard;
startMeetingProgressTimer: StartMeetingProgressTimer;
updateRecording: UpdateRecording;
stopRecording: StopRecording;
userWaiting: UserWaiting;
personJoined: PersonJoined;
allWaitingRoomMembers: AllWaitingRoomMembers;
roomRecordParams: RoomRecordParams;
banParticipant: BanParticipant;
updatedCoHost: UpdatedCoHost;
participantRequested: ParticipantRequested;
screenProducerId: ScreenProducerId;
updateMediaSettings: UpdateMediaSettings;
producerMediaPaused: ProducerMediaPaused;
producerMediaResumed: ProducerMediaResumed;
producerMediaClosed: ProducerMediaClosed;
controlMediaHost: ControlMediaHost;
meetingEnded: MeetingEnded;
disconnectUserSelf: DisconnectUserSelf;
receiveMessage: ReceiveMessage;
meetingTimeRemaining: MeetingTimeRemaining;
meetingStillThere: MeetingStillThere;
startRecords: StartRecords;
reInitiateRecording: ReInitiateRecording;
recordingNotice: RecordingNotice;
timeLeftRecording: TimeLeftRecording;
stoppedRecording: StoppedRecording;
hostRequestResponse: HostRequestResponse;
allMembers: AllMembers;
allMembersRest: AllMembersRest;
disconnect: Disconnect;
pollUpdated: PollUpdated;
breakoutRoomUpdated: BreakoutRoomUpdated;
socketManager: SocketManager;
joinRoomClient: JoinRoomClient;
joinLocalRoom: JoinLocalRoom;
updateRoomParametersClient: UpdateRoomParametersClient;
clickVideo: ClickVideo;
clickAudio: ClickAudio;
clickScreenShare: ClickScreenShare;
switchVideoAlt: SwitchVideoAlt;
streamSuccessVideo: StreamSuccessVideo;
streamSuccessAudio: StreamSuccessAudio;
streamSuccessScreen: StreamSuccessScreen;
streamSuccessAudioSwitch: StreamSuccessAudioSwitch;
checkPermission: CheckPermission;
updateConsumingDomains: UpdateConsumingDomains;
receiveRoomMessages: ReceiveRoomMessages;
private uiOverrideResolver;
liveSubtitleService: LiveSubtitleService;
translationConsumerSwitch: TranslationConsumerSwitch;
panelistsUpdated?: PanelistsUpdated;
panelistFocusChanged?: PanelistFocusChanged;
receiveControlMedia?: ReceiveControlMedia;
addedAsPanelist?: AddedAsPanelist;
removedFromPanelists?: RemovedFromPanelists;
permissionUpdated?: PermissionUpdated;
permissionConfigUpdated?: PermissionConfigUpdated;
translationReceiveMethods?: TranslationReceiveMethods;
PrejoinPage: any;
localLink: string;
connectMediaSFU: boolean;
credentials: {
apiUserName: string;
apiKey: string;
};
useLocalUIMode: boolean;
seedData?: SeedData;
useSeed: boolean;
imgSrc: string;
sourceParameters: {
[key: string]: any;
};
updateSourceParameters?: (data: {
[key: string]: any;
}) => void;
returnUI?: boolean;
noUIPreJoinOptions?: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions;
joinMediaSFURoom?: JoinRoomOnMediaSFUType;
createMediaSFURoom?: CreateRoomOnMediaSFUType;
canUsePersonalTranslation: boolean;
personalTranslationUsername?: string;
customVideoCard?: any;
customAudioCard?: any;
customMiniCard?: any;
customMainComponent?: any;
containerStyle?: Record<string, any>;
uiOverrides?: MediasfuUICustomOverrides;
title: string;
protected readonly MainContainerComponentRef: typeof MainContainerComponent;
protected readonly MainAspectComponentRef: typeof MainAspectComponent;
protected readonly MainScreenComponentRef: typeof MainScreenComponent;
protected readonly MainGridComponentRef: typeof MainGridComponent;
protected readonly OtherGridComponentRef: typeof OtherGridComponent;
protected readonly FlexibleVideoComponentRef: typeof FlexibleVideo;
protected readonly WhiteboardComponentRef: typeof Whiteboard;
protected readonly PaginationComponentRef: typeof ModernPaginationComponent;
protected readonly AudioGridComponentRef: typeof AudioGrid;
protected readonly FlexibleGridComponentRef: typeof FlexibleGrid;
protected readonly SubAspectComponentRef: typeof SubAspectComponent;
protected readonly ControlButtonsComponentRef: typeof ControlButtonsComponent;
protected readonly ControlButtonsTouchComponentRef: typeof ControlButtonsComponentTouch;
protected readonly ControlButtonsAltComponentRef: typeof ControlButtonsAltComponent;
protected readonly AlertComponentRef: typeof ModernAlertComponent;
protected readonly MenuModalComponentRef: typeof ModernMenuModalComponent;
protected readonly SidebarMenuModalComponentRef: typeof ModernMenuModalComponent;
protected readonly EventSettingsModalComponentRef: typeof ModernEventSettingsModalComponent;
protected readonly TranslationSettingsModalComponentRef: typeof TranslationSettingsModal;
protected readonly RequestsModalComponentRef: typeof ModernRequestsModalComponent;
protected readonly WaitingRoomModalComponentRef: typeof ModernWaitingRoomModalComponent;
protected readonly CoHostModalComponentRef: typeof ModernCoHostModalComponent;
protected readonly MediaSettingsModalComponentRef: typeof ModernMediaSettingsModalComponent;
protected readonly ParticipantsModalComponentRef: typeof ModernParticipantsModalComponent;
protected readonly MessagesModalComponentRef: typeof ModernMessagesModalComponent;
protected readonly DisplaySettingsModalComponentRef: typeof ModernDisplaySettingsModalComponent;
protected readonly ConfirmExitModalComponentRef: typeof ModernConfirmExitModalComponent;
protected readonly ConfirmHereModalComponentRef: typeof ModernConfirmHereModalComponent;
protected readonly ShareEventModalComponentRef: typeof ModernShareEventModalComponent;
protected readonly RecordingModalComponentRef: typeof ModernRecordingModalComponent;
protected readonly PollModalComponentRef: typeof ModernPollModalComponent;
protected readonly BackgroundModalComponentRef: typeof BackgroundModal;
protected readonly BreakoutRoomsModalComponentRef: typeof BreakoutRoomsModal;
protected readonly ConfigureWhiteboardModalComponentRef: typeof ConfigureWhiteboardModal;
protected readonly ScreenboardModalComponentRef: typeof ScreenboardModal;
protected readonly ScreenboardComponentRef: typeof Screenboard;
protected readonly LoadingModalComponentRef: typeof ModernLoadingModalComponent;
mainContainerOverrideProps: () => {
containerStyle: Record<string, any>;
controlHeight: number;
eventType: EventType;
parameters: any;
};
roomSurfaceColor: () => string;
roomModalSurfaceColor: () => string;
roomAccentSurfaceColor: () => string;
controlStripTextColor: () => string;
mainAspectContainerStyle: () => Partial<CSSStyleDeclaration>;
mainScreenContainerStyle: () => Partial<CSSStyleDeclaration>;
mainAspectOverrideProps: () => {
backgroundColor: string;
defaultFraction: number;
showControls: boolean;
updateIsWideScreen: (value: boolean) => void;
updateIsMediumScreen: (value: boolean) => void;
updateIsSmallScreen: (value: boolean) => void;
containerStyle: Partial<CSSStyleDeclaration>;
parameters: any;
};
mainScreenOverrideProps: () => {
doStack: boolean;
mainSize: number;
defaultFraction: number;
showControls: boolean;
containerWidthFraction: number;
containerStyle: Partial<CSSStyleDeclaration>;
updateComponentSizes: (sizes: ComponentSizes) => void;
parameters: any;
};
mainGridOverrideProps: () => {
height: number;
width: number;
backgroundColor: string;
mainSize: number;
showAspect: boolean;
timeBackgroundColor: string;
meetingProgressTime: string;
parameters: any;
};
flexibleVideoOverrideProps: () => {
customWidth: number;
customHeight: number;
rows: number;
columns: number;
componentsToRender: CustomMediaComponent[];
showAspect: boolean;
localStreamScreen: MediaStream;
annotateScreenStream: boolean;
Screenboard: {
component: typeof Screenboard;
inputs: {
customWidth: number;
customHeight: number;
parameters: any;
showAspect: boolean;
};
};
parameters: any;
customVideoCard: any;
customAudioCard: any;
customMiniCard: any;
};
whiteboardOverrideProps: () => {
customWidth: number;
customHeight: number;
parameters: any;
showAspect: boolean;
};
otherGridOverrideProps: () => {
height: number;
width: number;
backgroundColor: string;
showAspect: boolean;
timeBackgroundColor: string;
showTimer: boolean;
meetingProgressTime: string;
parameters: any;
};
paginationOverrideProps: () => {
totalPages: number;
currentUserPage: number;
showAspect: boolean;
paginationHeight: number;
direction: "horizontal" | "vertical";
parameters: any;
};
audioGridOverrideProps: () => {
componentsToRender: CustomMediaComponent[];
parameters: any;
};
flexibleGridOverrideProps: () => {
customWidth: number;
customHeight: number;
rows: number;
columns: number;
componentsToRender: CustomMediaComponent[];
backgroundColor: string;
parameters: any;
customVideoCard: any;
customAudioCard: any;
customMiniCard: any;
};
flexibleGridAltOverrideProps: () => {
customWidth: number;
customHeight: number;
rows: number;
columns: number;
componentsToRender: CustomMediaComponent[];
backgroundColor: string;
parameters: any;
customVideoCard: any;
customAudioCard: any;
customMiniCard: any;
};
subAspectOverrideProps: () => {
backgroundColor: string;
showControls: boolean;
containerWidthFraction: number;
defaultFractionSub: number;
parameters: any;
};
controlButtonsOverrideProps: () => {
buttons: any[];
isDarkMode: boolean;
buttonColor: string;
buttonBackgroundColor: {
default: string;
pressed: string;
};
alignment: string;
vertical: boolean;
buttonsContainerStyle: {
width: string;
marginTop: string;
marginBottom: string;
backgroundColor: string;
};
parameters: any;
};
controlButtonsTouchBroadcastOverrideProps: () => {
buttons: ButtonTouch[];
position: string;
location: string;
direction: string;
showAspect: boolean;
variant: string;
parameters: any;
};
controlButtonsTouchRecordOverrideProps: () => {
buttons: {
icon: import("@fortawesome/fontawesome-common-types").IconDefinition;
text: string;
onPress: () => void;
activeColor: () => string;
inActiveColor: () => string;
show: boolean;
}[];
direction: string;
showAspect: boolean;
location: string;
position: string;
variant: string;
parameters: any;
};
controlButtonsTouchRecordAltOverrideProps: () => {
buttons: MainButtonAlt[];
direction: string;
showAspect: boolean;
location: string;
position: string;
variant: string;
parameters: any;
};
controlButtonsTouchChatOverrideProps: () => {
buttons: ButtonTouch[];
position: string;
location: string;
direction: string;
showAspect: boolean;
variant: string;
parameters: any;
};
menuModalOverrideProps: () => {
backgroundColor: string;
isVisible: boolean;
isDarkMode: boolean;
onToggleTheme: (value: boolean) => void;
onClose: () => void;
customButtons: MainCustomButton[];
roomName: string;
adminPasscode: string;
islevel: string;
eventType: EventType;
localLink: string;
parameters: any;
};
sidebarMenuModalOverrideProps: () => {
backgroundColor: string;
isVisible: boolean;
onClose: () => void;
renderMode: "inline";
showHeader: boolean;
contentStyle: Partial<CSSStyleDeclaration>;
isDarkMode: boolean;
onToggleTheme: (value: boolean) => void;
customButtons: MainCustomButton[];
roomName: string;
adminPasscode: string;
islevel: string;
eventType: EventType;
localLink: string;
parameters: any;
};
eventSettingsModalOverrideProps: () => {
isEventSettingsModalVisible: boolean;
isDarkMode: boolean;
onEventSettingsClose: () => void;
audioSetting: string;
videoSetting: string;
screenshareSetting: string;
chatSetting: string;
updateAudioSetting: (value: string) => void;
updateVideoSetting: (value: string) => void;
updateScreenshareSetting: (value: string) => void;
updateChatSetting: (value: string) => void;
updateIsSettingsModalVisible: (value: boolean) => void;
roomName: string;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
parameters: any;
};
translationSettingsModalOverrideProps: () => {
isVisible: boolean;
onClose: () => void;
isDarkMode: boolean;
translationSupported: boolean;
translationConfig: TranslationRoomConfig;
member: string;
islevel: string;
audioProducerId: string;
participants: Participant[];
mySpokenLanguage: string;
mySpokenLanguageEnabled: boolean;
myDefaultOutputLanguage: string;
myDefaultListenLanguage: string;
listenPreferences: Map<string, string>;
availableTranslationChannels: Map<string, TranslationChannelAvailability>;
updateMySpokenLanguage: (value: string) => void;
updateMySpokenLanguageEnabled: (value: boolean) => void;
updateMyDefaultOutputLanguage: (value: string | null) => void;
updateMyDefaultListenLanguage: (value: string | null) => void;
updateListenPreferences: (value: Map<string, string> | ((prev: Map<string, string>) => Map<string, string>)) => void;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
roomName: string;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
showSubtitlesOnCards: boolean;
updateShowSubtitlesOnCards: (value: boolean) => void;
canUsePersonalTranslation: boolean;
personalTranslationUsername: string;
parameters: any;
};
requestsModalOverrideProps: () => {
backgroundColor: string;
isRequestsModalVisible: boolean;
onRequestClose: () => void;
requestCounter: number;
onRequestFilterChange: (value: string) => void;
updateRequestList: (value: Request[]) => void;
requestList: Request[];
roomName: string;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
parameters: any;
};
waitingRoomModalOverrideProps: () => {
backgroundColor: string;
isWaitingModalVisible: boolean;
onWaitingRoomClose: () => void;
waitingRoomCounter: number;
onWaitingRoomFilterChange: (value: string) => void;
waitingRoomList: WaitingRoomParticipant[];
updateWaitingList: (value: WaitingRoomParticipant[]) => void;
roomName: string;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
parameters: {
filteredWaitingRoomList: WaitingRoomParticipant[];
getUpdatedAllParams: () => any;
};
};
coHostModalOverrideProps: () => {
backgroundColor: string;
isCoHostModalVisible: boolean;
onCoHostClose: () => void;
coHostResponsibility: CoHostResponsibility[];
participants: Participant[];
currentCohost: string;
roomName: string;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
updateCoHostResponsibility: (value: CoHostResponsibility[]) => void;
updateCoHost: (value: string) => void;
updateIsCoHostModalVisible: (value: boolean) => void;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
parameters: any;
};
mediaSettingsModalOverrideProps: () => {
backgroundColor: string;
isMediaSettingsModalVisible: boolean;
onMediaSettingsClose: () => void;
onOpenBackgroundSidebar: () => void;
parameters: any;
};
participantsModalOverrideProps: () => {
backgroundColor: string;
isParticipantsModalVisible: boolean;
onParticipantsClose: () => void;
participantsCounter: number;
onParticipantsFilterChange: (value: string) => void;
parameters: {
updateParticipants: (value: Participant[]) => void;
filteredParticipants: Participant[];
updateIsParticipantsModalVisible: (value: boolean) => void;
updateDirectMessageDetails: (value: Participant | null) => void;
updateStartDirectMessage: (value: boolean) => void;
updateIsMessagesModalVisible: (value: boolean) => void;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
participants: Participant[];
roomName: string;
islevel: string;
member: string;
coHostResponsibility: CoHostResponsibility[];
coHost: string;
eventType: EventType;
startDirectMessage: boolean;
directMessageDetails: Participant;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
getUpdatedAllParams: () => any;
};
};
displaySettingsModalOverrideProps: () => {
backgroundColor: string;
isDisplaySettingsModalVisible: boolean;
onDisplaySettingsClose: () => void;
parameters: any;
};
recordingModalOverrideProps: () => {
backgroundColor: string;
isRecordingModalVisible: boolean;
onClose: () => void;
startRecording: ({ parameters }: import("../../@types/types").StartRecordingOptions) => Promise<boolean | undefined>;
confirmRecording: ({ parameters }: import("../../@types/types").ConfirmRecordingOptions) => Promise<void>;
parameters: any;
};
messagesModalOverrideProps: () => {
backgroundColor: string;
isMessagesModalVisible: boolean;
onMessagesClose: () => void;
messages: Message[];
eventType: EventType;
member: string;
islevel: string;
coHostResponsibility: CoHostResponsibility[];
coHost: string;
startDirectMessage: boolean;
directMessageDetails: Participant;
updateStartDirectMessage: (value: boolean) => void;
updateDirectMessageDetails: (value: Participant | null) => void;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
roomName: string;
socket: Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap>;
chatSetting: string;
parameters: any;
};
sidebarMessagesModalOverrideProps: () => {
backgroundColor: string;
isMessagesModalVisible: boolean;
onMessagesClose: () => void;
renderMode: "inline";
showHeader: boolean;
contentStyle: Partial<CSSStyleDeclaration>;
messages: Message[];
eventType: EventType;
member: string;
islevel: string;
coHostResponsibility: CoHostResponsibility[];
coHost: string;
startDirectMessage: boolean;
directMessageDetails: Participant;
updateStartDirectMessage: (value: boolean) => void;
updateDirectMessageDetails: (value: Participant | null) => void;
showAlert: ({ message, type, duration, position, }: {
message: string;
type: "success" | "danger" | "info" | "warning";
duration?: number;
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left" | "center";
}) => void;
roomName: string;
socket: Socket<import("@s