/** Trace panel: HUD event display. */ import { esc, scroll } from './util.js'; let traceEl; export function initTrace() { traceEl = document.getElementById('trace'); } export function addTrace(node, event, text, cls, detail) { if (!traceEl) return; const line = document.createElement('div'); line.className = 'trace-line' + (detail ? ' expandable' : ''); const ts = new Date().toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit', fractionalSecondDigits: 1, }); line.innerHTML = '' + ts + '' + '' + esc(node) + '' + '' + esc(event) + '' + '' + esc(text) + ''; traceEl.appendChild(line); if (detail) { const detailEl = document.createElement('div'); detailEl.className = 'trace-detail'; detailEl.textContent = detail; traceEl.appendChild(detailEl); line.addEventListener('click', () => detailEl.classList.toggle('open')); } scroll(traceEl); } export function clearTrace() { if (traceEl) traceEl.innerHTML = ''; }