ReadonlyndcHorizontal normalized device coordinate, [-1, 1], +X right (§7a).
ReadonlyndcVertical normalized device coordinate, [-1, 1], +Y up (§7a).
ReadonlypointerOptional ReadonlypointerThe device behind this pointer — "mouse", "pen", or "touch" (§72).
Absent means "the source did not say", which covers both a pointer source that reports no device (a synthetic gesture, an XR cursor, a unit test) and a platform value outside PointerDeviceType. Absence is therefore never a claim that the device is a mouse: code that widens a hit area for touch, or keeps a hover for a mouse, must decide what to do when it does not know, and the field makes that decision explicit rather than hiding it behind a default.
The engine reads it in exactly one place — a mouse keeps its hover across
its own release, where a finger does not, because a finger has ceased to
exist and a mouse has not (see PointerInput).
ReadonlytargetThe node the event resolved to — the deepest hit for a pointer, the
focused node for a key — and the node the propagation path ends at.
null when the source resolved nothing; such an event has nowhere to
propagate and is not dispatched.
It stays the target for the whole walk: a listener on an ancestor
reading event.target sees what was actually resolved, not the node it is
listening on (which it already knows, having registered there).
ReadonlytypeWhich event this is.
Optional ReadonlyworldWorld-space point on ScenePointerEvent.target under the pointer, when the source knew one — the picking hit point (§71).
Absent, rather than stale, whenever no hit was computed: while a pointer is
captured, the target is the capturing node regardless of what the ray
touches, so there is no honest point to report. The vector is a copy taken
out of the pooled PickHit.point and never written again, so it is safe to
keep (the pooled original is not).
Whether SceneInputEvent.stopPropagation has been called.
Stops the event before the next node on the path — the DOM's
stopPropagation, not stopImmediatePropagation.
The remaining listeners on the node currently dispatching still run: §6b
rule 2 makes registration order the contract within one emitter, and
letting one listener cancel its siblings would make that order decide who
gets to see an event. (There is deliberately no
stopImmediatePropagation: no §72 requirement asks for one.)
Called during the capture phase, it stops the descent as well, so the target never sees the event at all.
One pointer event travelling the scene graph (§72).
A class, not a bare interface, because
stopPropagation()andpropagationStoppedare a single piece of state that must agree: an object literal could set the flag without the method, or the method without the flag, and dispatch would silently do the wrong thing. Construct one directly when driving dispatchPointerEvent by hand (tests, synthetic input, a non-DOM pointer source);PointerInputconstructs them for real pointers.SceneInputEvent supplies
target,propagationStopped, andstopPropagation— the three members every propagating input event shares. For a pointer,targetis the deepest node the ray hit (or the capturing node), andnullwhen the pointer hit nothing.