/* Apply before paint; preference is local to this browser and site. */ (function () { 'use strict'; var key = 'convoa-night-shift'; var root = document.documentElement; var enabled = false; try { enabled = window.localStorage.getItem(key) === 'night'; } catch (error) {} function apply(value) { enabled = value; root.classList.toggle('convoa-night', enabled); var button = document.getElementById('convoa-night-toggle'); if (!button) { return; } var label = enabled ? 'Switch to day view' : 'Enable night shift view'; button.setAttribute('aria-pressed', String(enabled)); button.setAttribute('aria-label', label); button.title = label; button.querySelector('i').className = 'icon ' + (enabled ? 'fa-sun-o' : 'fa-moon-o'); } apply(enabled); function initialise() { var button = document.getElementById('convoa-night-toggle'); if (!button) { return; } if (button.getAttribute('data-night-ready') === 'true') { return; } button.setAttribute('data-night-ready', 'true'); apply(enabled); button.addEventListener('click', function () { apply(!enabled); try { window.localStorage.setItem(key, enabled ? 'night' : 'day'); } catch (error) {} }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initialise); } else { initialise(); } window.addEventListener('storage', function (event) { if (event.key === key || event.key === null) { apply(event.newValue === 'night'); } }); }()); /* SVG filtering leaves smiley interiors and animated source GIFs intact. */ (function () { function installEdgeFilter() { if (document.getElementById('convoa-edge')) { return; } var holder = document.createElement('div'); holder.setAttribute('aria-hidden', 'true'); holder.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden;pointer-events:none'; holder.innerHTML = ""; document.body.appendChild(holder); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', installEdgeFilter); } else { installEdgeFilter(); } }());