mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
38 lines
1.6 KiB
JavaScript
38 lines
1.6 KiB
JavaScript
import { isFunction } from "@videojs/utils/predicate";
|
|
//#region src/dom/presentation/pip.ts
|
|
function isPictureInPictureEnabled() {
|
|
if (document.pictureInPictureEnabled) {
|
|
const isSafari = /.*Version\/.*Safari\/.*/.test(navigator.userAgent);
|
|
const isPWA = typeof matchMedia === "function" && matchMedia("(display-mode: standalone)").matches;
|
|
return !isSafari || !isPWA;
|
|
}
|
|
return isFunction(document.createElement("video").webkitSetPresentationMode);
|
|
}
|
|
function isPictureInPicture(media) {
|
|
if (media.webkitPresentationMode === "picture-in-picture") return true;
|
|
if (document.pictureInPictureElement === media) return true;
|
|
return media.isPictureInPicture ?? false;
|
|
}
|
|
async function requestPictureInPicture(media) {
|
|
const webkitVideo = media;
|
|
if (isFunction(webkitVideo.webkitSetPresentationMode)) {
|
|
webkitVideo.webkitSetPresentationMode("picture-in-picture");
|
|
return;
|
|
}
|
|
const video = media;
|
|
if (isFunction(video.requestPictureInPicture)) return video.requestPictureInPicture();
|
|
}
|
|
async function exitPictureInPicture(media) {
|
|
const webkitVideo = media;
|
|
if (webkitVideo.webkitPresentationMode === "picture-in-picture" && isFunction(webkitVideo.webkitSetPresentationMode)) {
|
|
webkitVideo.webkitSetPresentationMode("inline");
|
|
return;
|
|
}
|
|
if (isFunction(document.exitPictureInPicture)) return document.exitPictureInPicture();
|
|
const video = media;
|
|
if (isFunction(video.exitPictureInPicture)) return video.exitPictureInPicture();
|
|
}
|
|
//#endregion
|
|
export { exitPictureInPicture, isPictureInPicture, isPictureInPictureEnabled, requestPictureInPicture };
|
|
|
|
//# sourceMappingURL=pip.js.map
|