Files
v10/dist/dev/dom/presentation/fullscreen.js

57 lines
2.2 KiB
JavaScript

import { isFunction } from "@videojs/utils/predicate";
//#region src/dom/presentation/fullscreen.ts
function isFullscreenEnabled() {
const doc = document;
if (doc.fullscreenEnabled || doc.webkitFullscreenEnabled) return true;
return isFunction(document.createElement("video").webkitSetPresentationMode);
}
function getFullscreenElement() {
const doc = document;
return doc.fullscreenElement ?? doc.webkitFullscreenElement ?? null;
}
function matchesFullscreen(element) {
if (!(element instanceof Element)) return false;
try {
return element.matches(":fullscreen");
} catch {
return false;
}
}
function isFullscreen(container, media) {
if (media.webkitPresentationMode === "fullscreen") return true;
const fullscreenElement = getFullscreenElement();
if (fullscreenElement && (fullscreenElement === container || fullscreenElement === media)) return true;
if (matchesFullscreen(container) || matchesFullscreen(media)) return true;
return media.isFullscreen ?? false;
}
async function requestFullscreen(container, media) {
const doc = document;
if (container && (doc.fullscreenEnabled || doc.webkitFullscreenEnabled)) {
const el = container;
if (isFunction(el.requestFullscreen)) return el.requestFullscreen();
if (isFunction(el.webkitRequestFullscreen)) return el.webkitRequestFullscreen();
}
const webkitVideo = media;
if (isFunction(webkitVideo.webkitSetPresentationMode)) {
webkitVideo.webkitSetPresentationMode("fullscreen");
return;
}
const video = media;
if (isFunction(video.requestFullscreen)) return video.requestFullscreen();
}
async function exitFullscreen(media) {
const doc = document;
const webkitVideo = media;
if (webkitVideo.webkitPresentationMode === "fullscreen" && isFunction(webkitVideo.webkitSetPresentationMode)) {
webkitVideo.webkitSetPresentationMode("inline");
return;
}
if (isFunction(doc.exitFullscreen)) return doc.exitFullscreen();
if (isFunction(doc.webkitExitFullscreen)) return doc.webkitExitFullscreen();
const video = media;
if (isFunction(video.exitFullscreen)) return video.exitFullscreen();
}
//#endregion
export { exitFullscreen, getFullscreenElement, isFullscreen, isFullscreenEnabled, requestFullscreen };
//# sourceMappingURL=fullscreen.js.map