UNPKG

@byomakase/omakase-player

Version:

## Omakase Player - Open source JavaScript framework for building frame accurate video experiences

99 lines (98 loc) 4.75 kB
import { Observable, Subject } from 'rxjs'; import { OmakaseTextTrack, VideoFullscreenChangeEvent, VideoSafeZoneChangeEvent } from '../types'; import { VideoControllerApi } from './video-controller-api'; import { VideoKeyframe, VideoKeyframeOptions, MarkerTrackConfig, VideoSafeZone } from './model'; import { VideoDomControllerApi } from './video-dom-controller-api'; import { OmakaseDropdownToggle } from '../components/omakase-dropdown-toggle'; import { PlayerChroming } from './../player-chroming/model'; import { MarkerTrackApi } from '../api'; import { TimeRangeMarkerTrackApi } from '../api/time-range-marker-track-api'; import { PlayerChromingDomControllerApi } from '../player-chroming/player-chroming-dom-controller-api'; import { DomController } from '../dom/dom-controller'; export interface VideoDomControllerConfig { playerHTMLElementId: string; crossorigin: 'anonymous' | 'use-credentials'; detachedPlayer: boolean; disablePictureInPicture: boolean; playerChroming: PlayerChroming; playerClickHandler?: () => void; } export declare const VIDEO_DOM_CONTROLLER_CONFIG_DEFAULT: VideoDomControllerConfig; export declare class VideoDomController extends DomController implements VideoDomControllerApi { readonly onFullscreenChange$: Subject<VideoFullscreenChangeEvent>; readonly onVideoSafeZoneChange$: Subject<VideoSafeZoneChangeEvent>; protected readonly _config: VideoDomControllerConfig; protected readonly _playerChromingDomController: PlayerChromingDomControllerApi; protected readonly _divPlayer: HTMLElement; protected _videoController: VideoControllerApi; protected _videoEventBreaker$: Subject<void>; /** * Main video element * @protected */ protected _videoElement: HTMLVideoElement; protected _divPlayerWrapper: HTMLElement; protected _divButtonOverlayPlay?: HTMLElement; protected _divButtonOverlayPause?: HTMLElement; protected _divButtonOverlayLoading?: HTMLElement; protected _divButtonOverlayError?: HTMLElement; protected _divButtonOverlayReplay?: HTMLElement; protected _divButtonOverlayAttach?: HTMLElement; protected _divButtonHelp?: HTMLElement; protected _divHelp?: HTMLElement; protected _divHelpMenu?: HTMLElement; protected _audioTextToggle?: OmakaseDropdownToggle; protected _divSectionBottomRight: HTMLElement; protected _divButtonAttach: HTMLElement; protected _divButtonFullscreen?: HTMLElement; protected _divErrorMessage: HTMLElement; protected _divSafeZoneWrapper: HTMLElement; protected _divWatermarkWrapper: HTMLElement; protected _divWatermark: HTMLElement; protected _divAlerts: HTMLElement; protected _divBackgroundImage: HTMLElement; protected _divDetachedBackground: HTMLElement; protected _showTemporaryOnMouseMoveTimeoutId?: ReturnType<typeof setTimeout>; protected _fullscreenChangeHandler: () => void; protected _videoSafeZones: VideoSafeZone[]; protected _destroyed$: Subject<void>; constructor(config: Partial<VideoDomControllerConfig>); get playerChromingDomController(): PlayerChromingDomControllerApi; updateChromingTemplate(playerChroming: PlayerChroming): void; private createPlayerDom; getPlayerChromingElement<T>(querySelector: string): T; private getPlayerElement; private getShadowElementByClass; private getPlayerElements; private onHelpMenuChangeHandler; private arePlaybackButtonEventsHandled; isFullscreen(): boolean; toggleFullscreen(): Observable<void>; clearSafeZones(): Observable<void>; addSafeZone(videoSafeZone: VideoSafeZone): Observable<VideoSafeZone>; removeSafeZone(id: string): Observable<void>; getSafeZones(): VideoSafeZone[]; loadThumbnailVtt(vttUrl: string): Observable<void>; setWatermark(watermark: string): void; isPiPSupported(): boolean; attachVideoController(videoController: VideoControllerApi): void; getVideoElement(): HTMLVideoElement; private createHTMLTrackElement; appendHTMLTrackElement(omakaseTextTrack: OmakaseTextTrack): Observable<HTMLTrackElement | undefined>; getTextTrackList(): TextTrackList; getTextTrackById(id: string): TextTrack | undefined; /** * https://github.com/whatwg/html/issues/1921 * https://github.com/web-platform-tests/wpt/pull/6594 * * @param id * @private */ removeTextTrackById(id: string): boolean; createMarkerTrack(config: MarkerTrackConfig): MarkerTrackApi; getProgressMarkerTrack(): TimeRangeMarkerTrackApi | undefined; isCompactAudioTheme(): boolean; useMediaCaptions(): boolean; extractVideoKeyframe(options?: VideoKeyframeOptions): Observable<VideoKeyframe>; destroy(): void; }