Building blocks
Landing and settle
Where inside the section#
.landing({ mode: 'center' }) // the middle (default)
.landing({ mode: 'random', margin: 0.12 }) // anywhere, kept off the edges
wheel.setResult({ section: 'x5', offset: 0.9 }) // exact: 0 = clockwise start edge, 1 = end edge
wheel.setResult({ angle: 123.4 }) // exact: an absolute wheel-local angle
wheel.setResult({ position: 0.25 }) // a quarter of the way round from the layout start
The per-spin options in setResult(target, options) override the builder defaults.
Settle#
What happens once the pointer has reached the landing angle:
settle: 'none' // stay put (default)
settle: { mode: 'center', delayMs: 300, durationMs: 700, ease: 'sine.inOut' }
settle: { mode: 'bounce', bounceDeg: 5, durationMs: 500 }
spin:landing fires when the pointer reaches the landing angle, spin:settle:start / spin:settle:end bracket the move, spin:complete fires after everything. The result’s landingAngle is the pre-settle angle.
Skip#
.skip({ allowed: true, minimumSpinTime: 800, protectAnticipation: false })
wheel.skip() returns true when it did something. It throws before setResult(); wheel.requestSkip() queues the press for the moment the result lands. wheel.slamStop() snaps to the final position synchronously.
The profile’s skipDuration is the length of the fast-forward.