engine/machine library

Classes

AbortEffect
Abort the tour with a reason (timeout, skip, target vanished, unknown-target). detail carries reason context (timeout duration, targetId) — the controller enriches it with entity data before diagnostics.
ArmTimeoutEffect
Arm the wait-for-target timer; emitted exactly when entering waiting.
ClearTimeoutEffect
Clear the timer; emitted when leaving waiting (into active or idle).
EnterStepEffect
Show the step: the controller updates the overlay content (scrim + tooltip).
FinishedEffect
Normal tour completion (last step passed or UserFinish).
HintActive
Step shown: target mounted, scrim with a hole and tooltip are active.
HintEffect
Outward commands: the machine executes nothing itself — the controller applies effects (timers, overlay, diagnostics). The machine's purity is what makes it headlessly testable and independent of render mechanics.
HintEvent
External machine inputs: user commands and registry facts.
HintIdle
No tour: zero engine widgets in the tree.
HintMachine
Pure tour state machine — all transition policy in one place, zero widget imports and zero knowledge of the registry/overlay.
HintStart
HintState
Observable tour state.
HintTransition
The result of a single HintMachine.dispatch: new state + effects.
HintWaiting
Waiting for the current step's target to appear (wait-for-target; the timeout is driven by the controller via ArmTimeoutEffect).
TargetAppeared
A target registered (or re-registered) in the registry.
TargetVanished
A target unregistered (disposed).
UserFinish
UserGoTo
Jump to a specific step (0-based). Out-of-range: assert in debug, no-op in release. Same index: a no-op (no timer reset, no re-enter).
UserNext
UserPrevious
Go one step back. On the first step — a no-op (there is nothing to go back to; the waiting timer is NOT re-armed, so spamming back does not extend the wait).
UserSkip
WaitTimeout
The wait-for-target timeout elapsed (the controller generates this event from the timer armed via ArmTimeoutEffect).