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; readonly onVideoSafeZoneChange$: Subject; protected readonly _config: VideoDomControllerConfig; protected readonly _playerChromingDomController: PlayerChromingDomControllerApi; protected readonly _divPlayer: HTMLElement; protected _videoController: VideoControllerApi; protected _videoEventBreaker$: Subject; /** * 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; protected _fullscreenChangeHandler: () => void; protected _videoSafeZones: VideoSafeZone[]; protected _destroyed$: Subject; constructor(config: Partial); get playerChromingDomController(): PlayerChromingDomControllerApi; updateChromingTemplate(playerChroming: PlayerChroming): void; private createPlayerDom; getPlayerChromingElement(querySelector: string): T; private getPlayerElement; private getShadowElementByClass; private getPlayerElements; private onHelpMenuChangeHandler; private arePlaybackButtonEventsHandled; isFullscreen(): boolean; toggleFullscreen(): Observable; clearSafeZones(): Observable; addSafeZone(videoSafeZone: VideoSafeZone): Observable; removeSafeZone(id: string): Observable; getSafeZones(): VideoSafeZone[]; loadThumbnailVtt(vttUrl: string): Observable; setWatermark(watermark: string): void; isPiPSupported(): boolean; attachVideoController(videoController: VideoControllerApi): void; getVideoElement(): HTMLVideoElement; private createHTMLTrackElement; appendHTMLTrackElement(omakaseTextTrack: OmakaseTextTrack): Observable; 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; destroy(): void; }