import { HelpMenuGroup, MomentObservation, PeriodObservation } from './model'; import { Thumbnail } from '../timeline/thumbnail/thumbnail'; import { OmakaseChartCue } from './chart'; import { MarkerApi } from '../api'; import { OmakaseTextTrackCue, OmpAudioTrack, SubtitlesVttTrack } from './track'; import { Video, VideoLoadOptions } from '../video'; import { BufferedTimespan, OmpAudioRouterInputSoloMuteState, OmpAudioRouterState, OmpMainAudioInputSoloMuteState, OmpMainAudioState, OmpMediaElementState, OmpPeakProcessorDataMessage, OmpPeakProcessorDataPeaks, OmpSidecarAudioInputSoloMuteState, OmpSidecarAudioState, VideoSafeZone, VideoWindowPlaybackState } from '../video/model'; import { Events as HlsEvents } from 'hls.js'; export interface OmpEvent { } export interface OmpCancelableEvent { cancelableEvent: { cancelBubble: boolean; }; } export interface OmpMouseEvent extends OmpEvent, OmpCancelableEvent { mouseEvent: MouseEvent; } export interface ClickEvent extends OmpMouseEvent { } export interface MouseEnterEvent extends OmpMouseEvent { } export interface MouseMoveEvent extends OmpMouseEvent { } export interface MouseLeaveEvent extends OmpMouseEvent { } export interface MouseOutEvent extends OmpMouseEvent { } export interface MouseOverEvent extends OmpMouseEvent { } export interface SyncTickEvent extends OmpEvent { } export interface VideoEvent extends OmpEvent { } export interface VideoLoadingEvent extends VideoEvent { sourceUrl: string; frameRate?: number; options?: VideoLoadOptions; isAttaching?: boolean; isDetaching?: boolean; } export interface VideoLoadedEvent extends VideoEvent { video: Video; videoLoadOptions?: VideoLoadOptions; isAttaching?: boolean; isDetaching?: boolean; } export interface VideoPlayEvent extends VideoEvent { /** * Current time */ currentTime: number; /** * Current timecode */ currentTimecode: string; } export interface VideoTimeChangeEvent extends VideoEvent { /** * Current time */ currentTime: number; /** * Current frame */ frame: number; } export interface VideoSeekingEvent extends VideoEvent { /** * Seek from time */ fromTime: number; /** * Seek from timecode */ fromTimecode: string; /** * Time to seek */ toTime: number; /** * Seek to timecode */ toTimecode: string; } export interface VideoSeekedEvent extends VideoEvent { /** * Current time */ currentTime: number; /** * Current timecode */ currentTimecode: string; /** * Previous time */ previousTime: number; /** * Previous timecode */ previousTimecode: string; } export interface VideoBufferingEvent extends VideoEvent { bufferedTimespans: BufferedTimespan[]; } export interface VideoPlaybackRateEvent extends VideoEvent { /** * Playback rate */ playbackRate: number; } export interface VideoDurationEvent extends VideoEvent { /** * Duration */ duration: number; } export interface VideoEndedEvent extends VideoEvent { } export interface VideoHelpMenuChangeEvent extends VideoEvent { helpMenuGroups: HelpMenuGroup[]; } export interface VideoFullscreenChangeEvent extends VideoEvent { fullscreen: boolean; } export interface VideoSafeZoneChangeEvent extends VideoEvent { videoSafeZones: VideoSafeZone[]; } export interface VideoWindowPlaybackStateChangeEvent extends VideoEvent { videoWindowPlaybackState: VideoWindowPlaybackState; } export type VideoErrorType = 'VIDEO_LOAD_ERROR' | 'VIDEO_ERROR'; export interface VideoErrorEvent extends VideoEvent { type: VideoErrorType; message?: string; } export interface AudioEvent extends OmpEvent { } export interface VolumeChangeEvent extends AudioEvent { /** * Volume */ volume: number; /** * Muted */ muted: boolean; /** * Previous volume value */ oldVolume: number; } export interface AudioLoadedEvent extends AudioEvent { /** * Audio tracks */ audioTracks: OmpAudioTrack[]; /** * Audio track */ activeAudioTrack: OmpAudioTrack | undefined; } export interface AudioSwitchedEvent extends AudioEvent { /** * Audio track */ activeAudioTrack: OmpAudioTrack; } export interface AudioUpdatedEvent extends AudioEvent { /** * Audio tracks */ audioTracks: OmpAudioTrack[]; } export interface MainAudioEvent extends AudioEvent { } export interface MainAudioChangeEvent extends MainAudioEvent { mainAudioState: OmpMainAudioState; } export interface OmpAudioRouterChangeEvent extends AudioEvent { audioRouterState: OmpAudioRouterState; } export interface AudioPeakProcessorMessageEvent extends AudioEvent { data: OmpPeakProcessorDataMessage | OmpPeakProcessorDataPeaks; } export interface OmpAudioRouterInputSoloMuteEvent extends AudioEvent { audioRouterInputSoloMuteState: OmpAudioRouterInputSoloMuteState; } export interface MainAudioInputSoloMuteEvent extends MainAudioEvent { mainAudioInputSoloMuteState: OmpMainAudioInputSoloMuteState; } export interface OmpMediaElementEvent { mediaElementState: OmpMediaElementState; } export interface OmpMediaElementLoadingEvent extends OmpMediaElementEvent { } export interface OmpMediaElementLoadedEvent extends OmpMediaElementEvent { } export interface OmpMediaElementErrorEvent extends OmpMediaElementEvent { error: any; } export interface SidecarAudioEvent extends AudioEvent { /** * Sidecar audio state */ sidecarAudioState: OmpSidecarAudioState; } export interface SidecarAudioLoadingEvent extends SidecarAudioEvent { } export interface SidecarAudioLoadedEvent extends SidecarAudioEvent { } export interface SidecarAudioCreateEvent extends SidecarAudioEvent { } export interface SidecarAudioLoadedEvent extends SidecarAudioEvent { } export interface SidecarAudioRemoveEvent extends SidecarAudioEvent { } export interface SidecarAudioChangeEvent extends SidecarAudioEvent { } export interface SidecarAudioVolumeChangeEvent extends SidecarAudioEvent, VolumeChangeEvent { } export interface SidecarAudiosChangeEvent extends AudioEvent { /** * Sidecar audio states */ sidecarAudioStates: OmpSidecarAudioState[]; } export interface SidecarAudioVideoCurrentTimeBufferingEvent extends SidecarAudioEvent { /** * Is buffering video current time */ buffering: boolean; } export interface SidecarAudioPeakProcessorMessageEvent extends AudioPeakProcessorMessageEvent { sidecarAudioTrackId: string; } export interface SidecarAudioInputSoloMuteEvent extends AudioEvent { /** * Changed sidecar audio input state */ changedSidecarAudioInputSoloMuteState: OmpSidecarAudioInputSoloMuteState; /** * All available Sidecar audio input states */ sidecarAudioInputSoloMuteStates: OmpSidecarAudioInputSoloMuteState[]; } export interface SubtitlesEvent extends OmpEvent { tracks: SubtitlesVttTrack[]; currentTrack: SubtitlesVttTrack | undefined; } export interface SubtitlesLoadedEvent extends SubtitlesEvent { } export interface SubtitlesCreateEvent extends SubtitlesEvent { } export interface SubtitlesChartEvent extends OmpEvent { cue?: OmakaseTextTrackCue; } export interface TimelineEvent extends OmpEvent { } export interface TimelineReadyEvent extends TimelineEvent { } export interface TimelineZoomEvent extends TimelineEvent { zoomPercent: number; } export interface TimelineScrollEvent extends TimelineEvent { scrollPercent: number; } export interface TimecodeClickEvent extends ClickEvent { timecode: string; } export interface TimecodeMouseMoveEvent extends MouseMoveEvent { timecode: string; } export interface ScrubberMoveEvent extends TimelineEvent { timecode: string; snapped: boolean; } export interface PlayheadMoveEvent extends TimelineEvent { timecode: string; } export interface ScrollbarEvent extends OmpEvent { } export interface ScrollbarScrollEvent extends ScrollbarEvent { scrollPercent: number; } export interface ScrollbarZoomEvent extends ScrollbarEvent { zoomPercent: number; zoomFocus: number; } export interface ThumbnailEvent extends OmpEvent { thumbnail: Thumbnail; } export interface MarkerEvent extends OmpEvent { } export interface MarkerChangeEvent extends MarkerEvent { } export interface MarkerMouseEvent extends MarkerEvent { marker: MarkerApi; } export interface MarkerFocusEvent extends MarkerEvent { marker: MarkerApi; } export interface MarkerCreateEvent extends MarkerEvent { marker: MarkerApi; } export interface MarkerDeleteEvent extends MarkerEvent { marker: MarkerApi; } export interface MarkerUpdateEvent extends MarkerEvent { marker: MarkerApi; oldValue: MarkerApi; } export interface MarkerSelectedEvent extends MarkerEvent { marker?: MarkerApi; } export interface MarkerInitEvent extends MarkerEvent { markers: MarkerApi[]; } export interface MomentMarkerChangeEvent extends MarkerChangeEvent { timeObservation: MomentObservation; oldTimeObservation: MomentObservation; } export interface PeriodMarkerChangeEvent extends MarkerChangeEvent { timeObservation: PeriodObservation; oldTimeObservation: PeriodObservation; } export interface ChartEvent extends OmpEvent { } export interface ChartCueEvent extends ChartEvent { cue: OmakaseChartCue; } export interface MarkerListEvent extends OmpEvent { } export interface MarkerListClickEvent extends MarkerListEvent { marker: MarkerApi; } export interface MarkerListDeleteEvent extends MarkerListEvent { marker: MarkerApi; } export interface MarkerListUpdateEvent extends MarkerListEvent { marker: MarkerApi; } export interface MarkerListCreateEvent extends MarkerListEvent { marker: MarkerApi; } export interface MarkerListInitEvent extends MarkerListEvent { markers: MarkerApi[]; } export interface MarkerListActionEvent extends MarkerListEvent { marker: MarkerApi; action: string; } export interface MarkerListSelectedEvent extends MarkerListEvent { marker?: MarkerApi; } export interface ThumnbailVttUrlChangedEvent extends VideoEvent { thumbnailVttUrl?: string; } export interface OmpNamedEvent extends OmpEvent { eventName: OmpNamedEventEventName; } export interface OmpNamedEvent extends OmpEvent { eventName: OmpNamedEventEventName; } export type OmpNamedEventEventName = 'hlsManifestParsed' | 'hlsMediaAttached' | 'hlsFragLoading' | 'hlsFragLoaded' | 'hlsError'; export interface OmpHlsNamedEvent extends OmpNamedEvent { hlsEventName: HlsEvents; data: any; }