@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
63 lines • 3.62 kB
JavaScript
/**
* Check if an element is in fullscreen or not.
* @returns `true` if `elem` is displayed in fullscreen.
*/
export function tgdFullscreenTest(element) {
const root = globalThis.document.fullscreenElement;
if (!element || !root)
return false;
let parent = element.parentElement;
while (parent) {
if (parent === globalThis.document.fullscreenElement) {
return root.clientWidth === element.clientWidth && root.clientHeight === element.clientHeight;
}
parent = parent.parentElement;
}
return globalThis.document.fullscreenElement === element;
}
/**
* Request for an element to go fullscreen.
* @returns `true` in case of success.
*/
export async function tgdFullscreenRequest(element, options) {
if (!element)
return false;
try {
await element.requestFullscreen(options ?? {
navigationUI: "hide",
});
return true;
}
catch {
return false;
}
}
/**
* Exit fullscreen mode.
* @returns `true` in case of success.
*/
export async function tgdFullscreenExit() {
if (!globalThis.document.fullscreenElement)
return false;
try {
await globalThis.document.exitFullscreen();
return true;
}
catch {
return false;
}
}
/**
* If `element` is not in fullscreen mode, request it.
* Otherwise, exit from fullscreen mode.
*/
export async function tgdFullscreenToggle(element, options) {
if (!element)
return false;
return tgdFullscreenTest(element)
? tgdFullscreenExit()
: tgdFullscreenRequest(element, options ?? {
navigationUI: "hide",
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mdWxsc2NyZWVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUF1QjtJQUNyRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFBO0lBQ2xELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFbkMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQTtJQUNsQyxPQUFPLE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQTtRQUNqRyxDQUFDO1FBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUE7SUFDakMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsS0FBSyxPQUFPLENBQUE7QUFDNUQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsT0FBdUIsRUFBRSxPQUEyQjtJQUMzRixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTFCLElBQUksQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUMzQixPQUFPLElBQUk7WUFDUCxZQUFZLEVBQUUsTUFBTTtTQUN2QixDQUNKLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCO0lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRXhELElBQUksQ0FBQztRQUNELE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUMxQyxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsT0FBdUIsRUFBRSxPQUEyQjtJQUMxRixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTFCLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxpQkFBaUIsRUFBRTtRQUNyQixDQUFDLENBQUMsb0JBQW9CLENBQ2hCLE9BQU8sRUFDUCxPQUFPLElBQUk7WUFDUCxZQUFZLEVBQUUsTUFBTTtTQUN2QixDQUNKLENBQUE7QUFDWCxDQUFDIn0=