/** * Laufende Uhr für Live-Anzeigen. Wird im Komponenten-Setup aufgerufen; das * Intervall hängt am Effekt-Kontext der Komponente und endet mit ihr. * * Der Wert wird bewusst als Zahl herausgereicht statt als fertiger Text: * Ableitungen, die `now` lesen, rechnen dadurch bei jedem Tick neu — ohne * `{#key}`-Blöcke, die sonst ganze Listen neu aufbauen würden. */ export function ticker(intervalMs = 100) { let now = $state(Date.now()) $effect(() => { const id = setInterval(() => (now = Date.now()), intervalMs) return () => clearInterval(id) }) return { get now() { return now }, } }