MBHaxe/src/JSPlatform.hx
2024-06-24 21:47:40 +05:30

54 lines
1.6 KiB
Haxe

package src;
import src.Util;
class JSPlatform {
#if js
public static function initFullscreenEnforcer() {
var dislikesFullscreen = false;
var fullscreenEnforcer = js.Browser.document.querySelector("#fullscreen-enforcer");
fullscreenEnforcer.addEventListener('click', () -> {
js.Browser.document.documentElement.requestFullscreen();
});
var enterFullscreenButton = js.Browser.document.querySelector("#enter-fullscreen");
enterFullscreenButton.addEventListener('click', () -> {
js.Browser.document.documentElement.requestFullscreen();
dislikesFullscreen = false;
});
var fullscreenButtonVisibility = true;
var setEnterFullscreenButtonVisibility = (state:Bool) -> {
fullscreenButtonVisibility = state;
if (state && Util.isTouchDevice() && !Util.isSafari() && !Util.isInFullscreen()) {
enterFullscreenButton.classList.remove('hidden');
} else {
enterFullscreenButton.classList.add('hidden');
}
}
var lastImmunityTime = Math.NEGATIVE_INFINITY;
if (!Util.isIOS()) {
js.Browser.window.setInterval(() -> {
if (js.Browser.document.activeElement != null) {
if (Util.isTouchDevice() && !Util.isSafari()) {
if (Util.isInFullscreen()) {
// They're in fullscreen, hide the overlay
fullscreenEnforcer.classList.add('hidden');
} else if (!dislikesFullscreen && js.Browser.window.performance.now() - lastImmunityTime > 666) {
// They're not in fullscreen, show the overlay
fullscreenEnforcer.classList.remove('hidden');
}
}
setEnterFullscreenButtonVisibility(fullscreenButtonVisibility);
}
}, 250);
}
}
#end
}