mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
57 lines
2.2 KiB
JavaScript
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
|