Browser Events
Dispatch, capture, target, bubble. Delegation, default actions, pointer and keyboard input, and why cancelling the wrong thing breaks scrolling or accessibility.
Hit-test to a target, build the propagation path, then walk it: capture down, at target, bubble up — with the path frozen before any listener runs.
One listener on a container instead of one per row: fewer registrations, no rebinding after a re-render, and a matching step you now own.
Two operations that share nothing: one cancels what the browser was about to do, the other stops the event travelling. Reaching for the wrong one breaks somebody else's feature, silently.
One event model for mouse, touch and pen — plus pointer capture, gesture cancellation, and the unrelated CSS property that shares the name.
Why Enter and Space activate a native button on different events, why a clickable div gets neither, and why `key` and `code` answer different questions.
A `touchstart` or `wheel` listener can hold a scroll hostage until it has run. `{ passive: true }` is a promise not to cancel — and browsers now assume it in places, which changes what your code does.