diff --git a/ui/src/routes/+layout.svelte b/ui/src/routes/+layout.svelte index a00e933..c47b2e4 100644 --- a/ui/src/routes/+layout.svelte +++ b/ui/src/routes/+layout.svelte @@ -33,6 +33,21 @@ // Chapter list drawer state for the mini-player let chapterDrawerOpen = $state(false); + let activeChapterEl = $state(null); + + function setIfActive(node: HTMLElement, isActive: boolean) { + if (isActive) activeChapterEl = node; + return { + update(nowActive: boolean) { if (nowActive) activeChapterEl = node; }, + destroy() { if (activeChapterEl === node) activeChapterEl = null; } + }; + } + + $effect(() => { + if (chapterDrawerOpen && activeChapterEl) { + activeChapterEl.scrollIntoView({ block: 'center' }); + } + }); // The single