Files

65 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

2026-10-30 12:28:48 +01:00
// Generated, do not edit. sha256:93e679e11f5329a380a996f2d99d603c26410a0b331dfefcb1da78dc2058cc17
2026-10-29 11:57:29 +01:00
import { appSetting, setAppSetting } from '../app-settings.js';
import { t } from '../i18n/index.js';
import { EYE, EYE_OFF } from './icons.js';
import { CONFIG } from '../../shared/config.js';
let idleTimer = null;
let btn = null;
function isOn() { return appSetting('blur') === 1; }
export const isBlurred = () => isOn();
export const unblur = () => setOn(false);
function apply(on) {
document.documentElement.dataset.blur = on ? 'on' : 'off';
if (btn) {
btn.innerHTML = on ? EYE_OFF : EYE;
btn.classList.toggle('is-on', on);
}
document.dispatchEvent(new CustomEvent('blur-changed', { detail: { on } }));
}
function armIdle() {
clearTimeout(idleTimer);
const min = appSetting('auto_blur_min');
if (min >= CONFIG.AUTO_BLUR.NEVER_MIN) return;
idleTimer = setTimeout(() => { setOn(true); }, min * 60 * 1000);
}
async function setOn(on) {
apply(on);
try { await setAppSetting('blur', on ? 1 : 0); } catch { }
if (on) clearTimeout(idleTimer); else armIdle();
}
function onActivity() { if (!isOn()) armIdle(); }
2026-10-30 12:28:48 +01:00
function onSpace(e) {
if (e.key !== ' ' || e.repeat || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey) return;
if (e.target !== document.body && e.target !== document.documentElement) return;
if (document.querySelector('.nav-edit-toggle.is-on')) return;
e.preventDefault();
setOn(!isOn());
}
2026-10-29 11:57:29 +01:00
export function initPrivacyBlur(hostEl) {
btn = document.createElement('button');
btn.type = 'button';
btn.className = 'statusbar-eye';
btn.title = t('blur.toggle');
btn.setAttribute('aria-label', t('blur.toggle'));
btn.onclick = () => { setOn(!isOn()); };
hostEl.appendChild(btn);
apply(isOn());
armIdle();
for (const ev of ['pointerdown', 'keydown', 'wheel', 'touchstart']) {
document.addEventListener(ev, onActivity, { passive: true });
}
2026-10-30 12:28:48 +01:00
document.addEventListener('keydown', onSpace);
2026-10-29 11:57:29 +01:00
document.addEventListener('settings-changed', () => { if (!isOn()) armIdle(); });
}