@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
99 lines (98 loc) • 4.75 kB
TypeScript
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;
}