UNPKG

@signalwire/js

Version:
59 lines (52 loc) 1.74 kB
import { Rooms, extendComponent, BaseConnectionContract, RoomLeft, RoomLeftEventParams, BaseConnectionState, } from '@signalwire/core' import { BaseConnection, MediaEventNames } from '@signalwire/webrtc' import { RoomScreenShareMethods } from './utils/interfaces' type RoomSessionScreenShareEventsHandlerMap = Record< BaseConnectionState, (params: RoomSessionScreenShare) => void > & Record<RoomLeft, (params?: RoomLeftEventParams) => void> & Record<MediaEventNames, () => void> export type RoomSessionScreenShareEvents = { [k in keyof RoomSessionScreenShareEventsHandlerMap]: RoomSessionScreenShareEventsHandlerMap[k] } /** @deprecated Use {@link RoomSessionScreenShare} instead */ export interface RoomScreenShare extends RoomSessionScreenShare {} export interface RoomSessionScreenShare extends RoomScreenShareMethods, BaseConnectionContract<RoomSessionScreenShareEvents> { join(): Promise<void> leave(): Promise<void> /** @internal */ runWorker: BaseConnection<RoomSessionScreenShareEvents>['runWorker'] } export class RoomSessionScreenShareConnection extends BaseConnection<RoomSessionScreenShareEvents> { join() { return super.invite() } leave() { return super.hangup() } } /** * Represents a screen sharing. */ export const RoomSessionScreenShareAPI = extendComponent< RoomSessionScreenShareConnection, RoomScreenShareMethods >(RoomSessionScreenShareConnection, { audioMute: Rooms.audioMuteMember, audioUnmute: Rooms.audioUnmuteMember, videoMute: Rooms.videoMuteMember, videoUnmute: Rooms.videoUnmuteMember, setMicrophoneVolume: Rooms.setInputVolumeMember, setInputVolume: Rooms.setInputVolumeMember, setInputSensitivity: Rooms.setInputSensitivityMember, })