modern-api.fullscreen
Version:
Fullscreen APIs
62 lines (60 loc) • 1.68 kB
JavaScript
// index.ts
var getPrefix = () => {
if (document.fullscreenEnabled)
return "";
if (document.webkitFullscreenEnabled)
return "webkit";
if (document.mozFullScreenEnabled)
return "moz";
if (document.msFullscreenEnabled)
return "ms";
};
var fullscreenSupported = typeof getPrefix() === "string";
var fullscreenElement = () => {
const prefix = getPrefix();
if (prefix === void 0)
return null;
if (prefix === "")
return document.fullscreenElement;
if (prefix === "moz") {
return document.mozFullScreenElement;
}
return document[`${prefix}FullscreenElement`];
};
var requestFullscreen = (el) => {
const prefix = getPrefix();
return new Promise((resolve) => {
if (prefix === void 0)
return resolve(void 0);
if (prefix === "")
return el.requestFullscreen().then(resolve);
return el[`${prefix}RequestFullscreen`]().then(resolve);
});
};
var exitFullscreen = () => {
const prefix = getPrefix();
return new Promise((resolve) => {
if (prefix === void 0)
return resolve(void 0);
if (prefix === "")
return document.exitFullscreen().then(resolve);
return document[`${prefix}ExitFullscreen`]().then(resolve);
});
};
var onFullscreen = ({
onScreen,
onExit,
onError
}) => {
const prefix = getPrefix();
if (prefix === void 0)
return;
if (onScreen || onExit) {
document[`on${prefix}fullscreenchange`] = (e) => {
fullscreenElement() ? onScreen && onScreen(e) : onExit && onExit(e);
};
}
if (onError)
document[`on${prefix}fullscreenerror`] = onError;
};
export { exitFullscreen, fullscreenElement, fullscreenSupported, onFullscreen, requestFullscreen };