OptionalannotationOptionalannotationFile id used as the annotation relay topic. Required when
enableAnnotations is true — different PDFs use different
topics so annotation streams don't cross-contaminate.
OptionalannotationTrue when the caller is the lock controller (teacher). Only the controller's toolbar shows the lock toggle.
OptionalannotationAnnotation lock state (read-only for everyone except the lock controller). When true, followers see the existing strokes but can't draw or erase. Defaults to true in the lesson use-case so a class doesn't accidentally scribble before the teacher opens the floor.
OptionalcontrolsHide the toolbar and ignore keyboard navigation. Used to "lock" the viewer for followers in a synced session so they can't desync from the teacher by clicking next/prev.
OptionalcurrentControlled current page (1-based). When the value changes, the viewer scrolls to that page. Used by lesson sync to follow the teacher's page. When undefined the viewer is uncontrolled — the user navigates freely.
OptionalenableEnable per-page drawing annotations synced via the relay. When
false (default) no overlay is rendered and the viewer behaves
as a plain PDF viewer. Consumers should only enable this inside
a synced lesson — the sync hook requires <SemanticRelayProvider>
in scope and a fileId keyed topic.
Display name (used in error messages, ARIA labels).
URL or blob URL to the PDF file.
OptionalonFires when the lock controller toggles the lock state.
OptionalonFires when the user changes pages — either by scrolling (the "most visible page" changes) or via the toolbar. The teacher's lesson-sync wiring listens here and rebroadcasts.
Local user id; stamped on every locally-authored stroke.