HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: /home/mmickelson/view-once.com/assets/app.js
(function(){
  function setTheme(theme){
    if (theme === 'light' || theme === 'dark') {
      document.documentElement.setAttribute('data-theme', theme);
      localStorage.setItem('theme', theme);
    } else {
      document.documentElement.removeAttribute('data-theme');
      localStorage.removeItem('theme');
    }
    updateToggleLabel();
  }

  function getStoredTheme(){
    return localStorage.getItem('theme');
  }

  function systemPrefersLight(){
    return window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches;
  }

  function currentTheme(){
    var t = getStoredTheme();
    if (t) return t;
    return systemPrefersLight() ? 'light' : 'dark';
  }

  function ensureToggle(){
    var btn = document.getElementById('theme-toggle');
    if (!btn){
      btn = document.createElement('button');
      btn.id = 'theme-toggle';
      btn.className = 'theme-toggle';
      btn.type = 'button';
      btn.title = 'Toggle theme';
      btn.setAttribute('aria-label', 'Toggle theme');
      document.body.appendChild(btn);
    }
    btn.addEventListener('click', function(){
      var next = (currentTheme() === 'dark') ? 'light' : 'dark';
      setTheme(next);
    });
    updateToggleLabel();
  }

  function updateToggleLabel(){
    var btn = document.getElementById('theme-toggle');
    if (!btn) return;
    var t = currentTheme();
    btn.textContent = (t === 'dark') ? '☀️' : '🌙';
  }

  function initTheme(){
    var t = getStoredTheme();
    if (t === 'light' || t === 'dark') {
      document.documentElement.setAttribute('data-theme', t);
    } else {
      document.documentElement.removeAttribute('data-theme');
    }
  }

  function initCopyHandlers(){
    document.querySelectorAll('[data-copy-target]').forEach(function(el){
      el.addEventListener('click', function(){
        var sel = el.getAttribute('data-copy-target');
        var target = document.querySelector(sel);
        if (!target) return;
        var text = target.innerText || target.textContent || '';
        navigator.clipboard.writeText(text).then(function(){
          var old = el.textContent;
          el.textContent = 'Copied!';
          setTimeout(function(){ el.textContent = old; }, 1500);
        }).catch(function(){
          alert('Copy failed.');
        });
      });
    });
  }

  document.addEventListener('DOMContentLoaded', function(){
    initTheme();
    ensureToggle();
    initCopyHandlers();
  });
})();