/** 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 = '';
}