(function () { 'use strict'; var configElement = document.getElementById('cameraRemoteConfig'); if (!configElement) return; var config = JSON.parse(configElement.textContent); var presets = Array.from(document.querySelectorAll('.camera-presets [data-camera-action]')); var power = document.querySelector('[data-camera-action="power"]'); var status = document.getElementById('cameraRemoteStatus'); var busy = false; presets.forEach(function (preset) { preset.setAttribute('aria-pressed', 'false'); }); function showError(message) { status.textContent = message; status.hidden = false; } function clearError() { status.textContent = ''; status.hidden = true; } function setBusy(active) { busy = active; presets.forEach(function (preset) { preset.disabled = active || !config.configured; }); power.disabled = active || !config.configured; } function selectPreset(selected) { presets.forEach(function (preset) { var active = preset === selected; preset.classList.toggle('camera-preset-active', active); preset.setAttribute('aria-pressed', String(active)); }); } async function request(action) { var form = new FormData(); form.append('csrf_token', config.csrfToken); form.append('action', action); var response = await fetch('/intranet_repo/projects/camera_remote/api.php', { method: 'POST', body: form, headers: {'Accept': 'application/json'}, }); var result; try { result = await response.json(); } catch (parseError) { throw new Error('Der Server hat unerwartet geantwortet. Bitte laden Sie die Seite neu.'); } if (!response.ok || !result.ok) throw new Error(result.error || 'Der Kamerabefehl ist fehlgeschlagen.'); } async function runAction(control) { if (busy || !config.configured) return; clearError(); if (control === power) selectPreset(null); setBusy(true); try { await request(control.dataset.cameraAction); if (control !== power) { selectPreset(control); } } catch (error) { showError(error.message || 'Der Kamerabefehl konnte nicht ausgeführt werden.'); } finally { setBusy(false); } } presets.forEach(function (preset) { preset.addEventListener('click', function () { runAction(preset); }); }); power.addEventListener('click', function () { runAction(power); }); }());