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.
97 lines (96 loc) • 5.16 kB
TypeScript
import { Participant, Stream, ChangeVidsParameters, ChangeVidsType } from '../@types/types';
import * as i0 from "@angular/core";
export interface ReorderStreamsParameters extends ChangeVidsParameters {
allVideoStreams: (Stream | Participant)[];
participants: Participant[];
oldAllStreams: (Stream | Participant)[];
screenId?: string;
adminVidID?: string;
newLimitedStreams: (Stream | Participant)[];
newLimitedStreamsIDs: string[];
activeSounds: string[];
screenShareIDStream?: string;
screenShareNameStream?: string;
adminIDStream?: string;
adminNameStream?: string;
updateNewLimitedStreams: (streams: (Stream | Participant)[]) => void;
updateNewLimitedStreamsIDs: (ids: string[]) => void;
updateActiveSounds: (sounds: string[]) => void;
updateScreenShareIDStream: (id: string) => void;
updateScreenShareNameStream: (name: string) => void;
updateAdminIDStream: (id: string) => void;
updateAdminNameStream: (name: string) => void;
updateYouYouStream: (streams: (Stream | Participant)[]) => void;
changeVids: ChangeVidsType;
getUpdatedAllParams: () => ReorderStreamsParameters;
[key: string]: any;
}
export interface ReorderStreamsOptions {
add?: boolean;
screenChanged?: boolean;
parameters: ReorderStreamsParameters;
}
export type ReorderStreamsType = (options: ReorderStreamsOptions) => Promise<void>;
/**
* Reorders the video streams based on the provided options and updates the UI accordingly.
*
* This method handles the logic for reordering streams in a video conferencing application,
* managing the addition and arrangement of streams based on various conditions such as
* participant roles, screen sharing status, and current streams.
*
* @param {ReorderStreamsOptions} options - The options for reordering streams.
* @param {boolean} [options.add=false] - Whether to add new streams or not.
* @param {boolean} [options.screenChanged=false] - Whether the screen has changed or not.
* @param {ReorderStreamsParameters} options.parameters - The parameters required for reordering streams.
* @param {Array<Stream | Participant>} options.parameters.allVideoStreams - Array of all video streams.
* @param {Array<Participant>} options.parameters.participants - Array of participants.
* @param {Array<Stream | Participant>} options.parameters.oldAllStreams - Array of old streams.
* @param {string} [options.parameters.screenId] - ID of the screen.
* @param {string} [options.parameters.adminVidID] - ID of the admin video.
* @param {Array<Stream | Participant>} options.parameters.newLimitedStreams - Array of new limited streams.
* @param {Array<string>} options.parameters.newLimitedStreamsIDs - Array of new limited stream IDs.
* @param {Array<string>} options.parameters.activeSounds - Array of active sounds.
* @param {string} [options.parameters.screenShareIDStream] - ID of the screen share stream.
* @param {string} [options.parameters.screenShareNameStream] - Name of the screen share stream.
* @param {string} [options.parameters.adminIDStream] - ID of the admin stream.
* @param {string} [options.parameters.adminNameStream] - Name of the admin stream.
* @param {Function} options.parameters.updateNewLimitedStreams - Function to update new limited streams.
* @param {Function} options.parameters.updateNewLimitedStreamsIDs - Function to update new limited stream IDs.
* @param {Function} options.parameters.updateActiveSounds - Function to update active sounds.
* @param {Function} options.parameters.updateScreenShareIDStream - Function to update screen share ID stream.
* @param {Function} options.parameters.updateScreenShareNameStream - Function to update screen share name stream.
* @param {Function} options.parameters.updateAdminIDStream - Function to update admin ID stream.
* @param {Function} options.parameters.updateAdminNameStream - Function to update admin name stream.
* @param {Function} options.parameters.updateYouYouStream - Function to update YouYou stream.
* @param {Function} options.parameters.changeVids - Function to reflect changes on the UI.
*
* @returns {Promise<void>} A promise that resolves when the reordering is complete.
*
* @throws Will throw an error if there is an issue during the reordering process.
*
* @example
* ```typescript
* await reorderStreams({
* add: true,
* screenChanged: false,
* parameters: {
* allVideoStreams: [...],
* participants: [...],
* oldAllStreams: [...],
* newLimitedStreams: [],
* newLimitedStreamsIDs: [],
* activeSounds: [],
* updateNewLimitedStreams: (streams) => { console.log(updated) },
* updateNewLimitedStreamsIDs: (ids) => { console.log(updated) },
* updateActiveSounds: (sounds) => { console.log(updated) },
* changeVids: async (options) => { },
* // ...other parameters
* },
* });
* ```
*/
export declare class ReorderStreams {
reorderStreams({ add, screenChanged, parameters, }: ReorderStreamsOptions): Promise<void>;
static ɵfac: i0.ɵɵFactoryDeclaration<ReorderStreams, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ReorderStreams>;
}