// Global event wiring — toggle switches, settings buttons, and per-page setup calls. // Depends on: all page modules function setupEvents() { // Guard against duplicate listener registration if setupEvents() is called // more than once (e.g. after a hot-reload). Without this, anonymous listeners // accumulate and each toggle fires N times per click after N calls. if (document._holesailEventsSetup) return; document._holesailEventsSetup = true; // Toggle switches document.querySelectorAll('.toggle').forEach(toggle => { toggle.addEventListener('click', () => toggle.classList.toggle('active')); }); // Save settings $('btnSaveSettings')?.addEventListener('click', saveSettings); // Reset settings to defaults $('btnResetSettings')?.addEventListener('click', () => { settings = { ...SETTINGS_DEFAULTS }; chrome.runtime.sendMessage( { target: 'holesail-native', action: 'send', payload: { type: 'updateSettings', payload: { ...settings } } }, (response) => { if (response && response.settings) settings = { ...SETTINGS_DEFAULTS, ...response.settings }; updateSettingsUI(); showToast('Settings reset to defaults', 'success'); } ); }); setupVirtualHostEvents(); setupServerEvents(); setupServiceTunnelEvents(); setupLogsEvents(); }