This commit is contained in:
Felix Klement committed 2026-10-07 22:39:28 +02:00
1 parent 3cb5952e6d
commit ab6495ad10
9 files changed
+63 -72

No files matched your search

+2 -4
View File
@@ -223,7 +223,7 @@ const quoted = (text: string) => (lang === 'de' ? `„${text}“` : `“${text}
<script>
/**
* Rotates the founders' statements. Plays on its own only without reduced motion; holds while
* the pointer or focus is inside or the section is off screen; picking a statement stops it.
* keyboard focus is inside or the section is off screen; picking a statement stops it.
*/
const root = document.querySelector<HTMLElement>('[data-quotes]');
if (root) {
@@ -259,10 +259,8 @@ const quoted = (text: string) => (lang === 'de' ? `„${text}“` : `“${text}
picks.forEach((pick, i) => pick.addEventListener('click', () => { setPlaying(false); show(i); }));
const hold = (on: boolean) => root.toggleAttribute('data-held', on);
root.addEventListener('pointerenter', () => hold(true));
root.addEventListener('pointerleave', () => hold(root.contains(document.activeElement)));
root.addEventListener('focusin', () => hold(true));
root.addEventListener('focusout', (e) => { if (!root.contains(e.relatedTarget as Node)) hold(root.matches(':hover')); });
root.addEventListener('focusout', (e) => { if (!root.contains(e.relatedTarget as Node)) hold(false); });
// Off screen, the clock stops, so a reader arriving from above starts on a fresh statement.
new IntersectionObserver(([entry]) => root.toggleAttribute('data-away', !entry.isIntersecting), { threshold: 0.4 }).observe(root);