/** * Episteme Presentation Renderer * * Data-driven slide rendering with multi-deck support. * * Modes: * flat - single deck, slides left/right (default Reveal.js) * combined - menu column (↓ browse, → enter), decks are vertical (↓↑ navigate, ← back) * * Slide types are registered in RENDERERS. To add a new type, add one function. */ (async function () { const dataUrl = window.PRESENTATION_DATA_URL || '/generated/stemedb.json'; let data; try { const resp = await fetch(dataUrl); data = await resp.json(); } catch (err) { document.getElementById('slides').innerHTML = ` `; Reveal.initialize(); return; } const root = document.getElementById('slides'); const isCombined = !!data.combined; // ── Utilities ────────────────────────────────────────────── function esc(text) { const el = document.createElement('div'); el.textContent = text; return el.innerHTML; } function actorInitials(actor) { if (!actor?.label) return '??'; return actor.label.split(' ').map(w => w[0]).join('').toUpperCase().slice(0, 2); } function fragmentList(items, cls) { return `