diff --git a/packages/wc/components/presentation/wc.ts b/packages/wc/components/presentation/wc.ts index f3e6047..604f931 100644 --- a/packages/wc/components/presentation/wc.ts +++ b/packages/wc/components/presentation/wc.ts @@ -385,6 +385,12 @@ export class PresentationWC extends LitElement { } fireUpdates(entries: IntersectionObserverEntry[]) { + // IO drives audience-mode scroll navigation. In presenter mode the + // host stops scrolling and slides redistribute into named slots; the + // resulting flurry of intersection changes would otherwise feed + // bogus `navigate.scroll` events into xstate and march currentIndex + // through every slide before settling at the last one to fire. + if (this.role !== "audience") return; for (const entry of entries) { if (entry.isIntersecting) { this.presentation.send({