UNPKG

modern-api.fullscreen

Version:
62 lines (60 loc) 1.68 kB
// 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 };