function addOverlay(overlay: HTMLElement) {
// const overlay = document.getElementById('overlay');
overlay.style.opacity = "1"; // Затемнено
overlay.style.display = "inherit"; //
}
function removeOverlay(overlay: HTMLElement) {
overlay.style.opacity = "0"; // Вернуть в исходное состояние
overlay.style.display = "none"; //
}
function addRemoveOverlayTimer(overlay: HTMLElement, time = 1000) {
addOverlay(overlay);
setTimeout(() => {
removeOverlay(overlay);
}, time); // 1 секунда затемнения
}
// Флаги для отслеживания состояния
let isMouseInside = true;
let isWindowFocused = true;
export default function unscreen(overlay: HTMLElement, root: HTMLElement) {
overlay.style.display = "none";
// Проверка состояния и выполнение нужного действия
function checkFocusAndMouse() {
if (!isWindowFocused || !isMouseInside) {
// ИЛИ
addOverlay(overlay);
} else if (isWindowFocused && isMouseInside) {
// И
removeOverlay(overlay);
}
}
// Добавляем обработчики событий
window.addEventListener("blur", () => {
isWindowFocused = false;
checkFocusAndMouse(); // Проверяем состояние
}); // Когда окно теряет фокус
window.addEventListener("focus", () => {
isWindowFocused = true;
checkFocusAndMouse(); // Проверяем состояние
}); // Когда окно получает фокус
window.addEventListener("mouseleave", () => {
isMouseInside = false;
checkFocusAndMouse(); // Проверяем состояние
}); // Когда мышка покидает окно
window.addEventListener("mouseenter", () => {
isMouseInside = true;
checkFocusAndMouse(); // Проверяем состояние
}); // Когда мышка возвращается в окно
root.addEventListener("contextmenu", (event) => event.preventDefault());
window.addEventListener("keydown", function (event) {
if (event.key === "PrintScreen" || (event.ctrlKey && event.key === "p")) {
addRemoveOverlayTimer(overlay);
}
});
// Проверка для мобильных устройств
root.addEventListener("touchstart", function (event) {
// Пример: если есть более чем один жест
if (event.touches.length > 1) {
addRemoveOverlayTimer(overlay);
}
});
window.addEventListener("beforeprint", function () {
addRemoveOverlayTimer(overlay);
});
}