UNPKG

vidstack

Version:

Build awesome media experiences on the web.

61 lines (58 loc) 2.09 kB
import { onDispose } from 'maverick.js'; import { a0 as canUseVideoPresentation, $ as canUsePictureInPicture, Y as canPlayHLSNatively, a1 as ATTACH_VIDEO } from '../../media-core.js'; import { H as HTMLMediaProvider } from '../html/provider.js'; import { N as NativeHLSTextTracks } from './native-hls-text-tracks.js'; import { V as VideoPictureInPicture } from './picture-in-picture.js'; import { V as VideoPresentation, F as FullscreenPresentationAdapter, P as PIPPresentationAdapter } from './presentation/video-presentation.js'; import 'maverick.js/element'; import 'maverick.js/std'; import '../type-check.js'; import '../audio/loader.js'; import 'maverick.js/dom'; import '../hls/loader.js'; import './loader.js'; import '../html/html–media-events.js'; import '../hls/hls.js'; import '../../media-ui.js'; import '../../icons/icon.js'; import 'media-captions'; import '../html/native-audio-tracks.js'; class VideoProvider extends HTMLMediaProvider { $$PROVIDER_TYPE = "VIDEO"; get type() { return "video"; } fullscreen; pictureInPicture; constructor(video, context) { super(video); if (canUseVideoPresentation(video)) { const presentation = new VideoPresentation(video, context); this.fullscreen = new FullscreenPresentationAdapter(presentation); this.pictureInPicture = new PIPPresentationAdapter(presentation); } else if (canUsePictureInPicture(video)) { this.pictureInPicture = new VideoPictureInPicture(video, context); } } setup(context) { super.setup(context); if (canPlayHLSNatively(this.video)) { new NativeHLSTextTracks(this.video, context); } context.textRenderers[ATTACH_VIDEO](this.video); onDispose(() => { context.textRenderers[ATTACH_VIDEO](null); }); if (this.type === "video") context.delegate._dispatch("provider-setup", { detail: this }); } /** * The native HTML `<video>` element. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement} */ get video() { return this._media; } } export { VideoProvider };