TeaWeb/shared/js/ui/frames/control-bar/Definitions.ts
2021-02-15 17:47:04 +01:00

57 lines
No EOL
2.8 KiB
TypeScript

import {RemoteIconInfo} from "tc-shared/file/Icons";
import {VideoBroadcastType} from "tc-shared/connection/VideoConnection";
export type ControlBarMode = "main" | "channel-popout";
export type ConnectionState = { currentlyConnected: boolean, generallyConnected: boolean, multisession: boolean };
export type Bookmark = { uniqueId: string, label: string, icon: RemoteIconInfo | undefined, children?: Bookmark[] };
export type AwayState = { locallyAway: boolean, globallyAway: "partial" | "full" | "none" };
export type MicrophoneState = "enabled" | "disabled" | "muted";
export type VideoState = "enabled" | "disabled" | "unavailable" | "unsupported" | "disconnected";
export type HostButtonInfo = { title?: string, target?: string, url: string };
export type VideoDeviceInfo = { name: string, id: string };
export type MicrophoneDeviceInfo = { name: string, id: string, driver: string, selected: boolean };
export interface ControlBarEvents {
action_connection_connect: { newTab: boolean },
action_connection_disconnect: { generally: boolean },
action_bookmark_connect: { bookmarkUniqueId: string, newTab: boolean },
action_bookmark_manage: {},
action_bookmark_add_current_server: {},
action_toggle_away: { away: boolean, globally: boolean, promptMessage?: boolean },
action_toggle_microphone: { enabled: boolean, targetDeviceId?: string },
action_toggle_speaker: { enabled: boolean },
action_toggle_subscribe: { subscribe: boolean },
action_toggle_query: { show: boolean },
action_query_manage: {},
action_toggle_video: { broadcastType: VideoBroadcastType, enable: boolean, quickStart?: boolean, deviceId?: string },
action_manage_video: { broadcastType: VideoBroadcastType },
action_open_microphone_settings: {},
query_mode: {},
query_connection_state: {},
query_bookmarks: {},
query_away_state: {},
query_microphone_state: {},
query_microphone_list: {},
query_speaker_state: {},
query_subscribe_state: {},
query_query_state: {},
query_host_button: {},
query_video_state: { broadcastType: VideoBroadcastType },
query_camera_list: {}
notify_mode: { mode: ControlBarMode }
notify_connection_state: { state: ConnectionState },
notify_bookmarks: { marks: Bookmark[] },
notify_away_state: { state: AwayState },
notify_microphone_state: { state: MicrophoneState },
notify_microphone_list: { devices: MicrophoneDeviceInfo[] },
notify_speaker_state: { enabled: boolean },
notify_subscribe_state: { subscribe: boolean },
notify_query_state: { shown: boolean },
notify_host_button: { button: HostButtonInfo | undefined },
notify_video_state: { broadcastType: VideoBroadcastType, state: VideoState },
notify_camera_list: { devices: VideoDeviceInfo[] }
notify_destroy: {}
}