/* Lecture MJPEG activée manuellement : libère la caméra si désactivée. */ (() => { 'use strict'; const button = document.getElementById('cameraToggle'); const image = document.getElementById('cameraFeed'); const placeholder = document.getElementById('cameraPlaceholder'); const message = document.getElementById('cameraMessage'); const panel = document.querySelector('.camera-panel'); let active = false; function stop() { active = false; image.removeAttribute('src'); image.hidden = true; placeholder.hidden = false; message.textContent = 'Caméra désactivée'; button.textContent = 'Activer'; button.setAttribute('aria-pressed', 'false'); panel.dataset.active = 'false'; } function start() { active = true; placeholder.hidden = false; message.textContent = 'Connexion à la caméra…'; image.hidden = false; image.src = `/api/camera/stream?t=${Date.now()}`; button.textContent = 'Arrêter'; button.setAttribute('aria-pressed', 'true'); } button.addEventListener('click', () => active ? stop() : start()); image.addEventListener('load', () => { if (active) { placeholder.hidden = true; panel.dataset.active = 'true'; } }); image.addEventListener('error', () => { if (!active) return; stop(); message.textContent = 'Caméra indisponible ou déjà utilisée'; }); // Si l'onglet n'est pas visible, relâcher le périphérique USB. document.addEventListener('visibilitychange', () => { if (document.hidden && active) stop(); }); window.addEventListener('pagehide', stop); stop(); })();