// Na een nieuwe versie bestaan oude bestanden niet meer: eenmalig automatisch herladen.
window.addEventListener('vite:preloadError', (e) => {
  try { if (sessionStorage.getItem('am-reloaded')) return; sessionStorage.setItem('am-reloaded', '1'); } catch { /* geen opslag */ }
  e.preventDefault(); location.reload();
});
import { render } from 'preact';
import './styles.css';
import { App } from './app.jsx';
import { initBackend } from './state.js';
import { startVersionCheck } from './logic/update.js';

initBackend().then(() => render(<App />, document.getElementById('app')));
startVersionCheck();

// Op de gsm worden tabellen kaartjes: geef elke cel de naam van haar kolom mee (data-l), zodat je weet wat een getal betekent.
function labelTables() {
  for (const t of document.querySelectorAll('table.t')) {
    const ths = t.tHead ? [...t.tHead.rows[0].cells].map((c) => c.textContent.trim()) : null;
    if (!ths) continue;
    for (const tr of t.tBodies[0]?.rows || []) {
      [...tr.cells].forEach((td, i) => { const l = ths[i] || ''; if (td.getAttribute('data-l') !== l) { if (l) td.setAttribute('data-l', l); else td.removeAttribute('data-l'); } });
    }
  }
}
let queued = false;
new MutationObserver(() => { if (!queued) { queued = true; requestAnimationFrame(() => { queued = false; labelTables(); }); } })
  .observe(document.getElementById('app'), { childList: true, subtree: true });
