screen-saver.ts (1163B)
1 export function screenSaver(): void { 2 let screenSaverTimeout: ReturnType<typeof setTimeout> | undefined; 3 const screenSaverElement = document.getElementById('screenSaver') as HTMLElement | null; 4 5 // No-operation standby time 6 const INACTIVITY_TIME = 60000; // ms 7 8 // Show screensaver 9 function showScreenSaver(): void { 10 if (screenSaverElement) { 11 screenSaverElement.style.display = 'flex'; 12 } 13 } 14 15 // Hide screensaver 16 function hideScreenSaver(): void { 17 if (screenSaverElement) { 18 screenSaverElement.style.display = 'none'; 19 } 20 } 21 22 // Detects user operation and resets timer 23 function resetInactivityTimer(): void { 24 hideScreenSaver(); 25 if (screenSaverTimeout) { 26 clearTimeout(screenSaverTimeout); 27 } 28 screenSaverTimeout = setTimeout(showScreenSaver, INACTIVITY_TIME); 29 } 30 31 // Monitoring user operation events 32 window.addEventListener('mousemove', resetInactivityTimer); 33 window.addEventListener('keydown', resetInactivityTimer); 34 window.addEventListener('click', resetInactivityTimer); 35 window.addEventListener('scroll', resetInactivityTimer); 36 37 // Initial timer setting 38 resetInactivityTimer(); 39 }