The end-to-end path from a browser event to an application handler.
Raw DOM events are too low-level for most application code. Distinguishing a tap from a long-press from a pan requires tracking timing, movement thresholds, and finger counts — and when multiple gestures compete on the same element, the browser offers no arbitration. STRVCT's event pipeline absorbs this complexity: raw events feed into gesture recognizer state machines, a central SvGestureManager resolves conflicts (so a tap and a long-press on the same view don't both fire), and the application only sees clean, high-level callbacks like onTapComplete or onPanMove. Views that don't need gestures can still handle raw events directly — the gesture layer is additive, not mandatory.
Browser DOM Event
→ SvEventListener receives it
→ calls named method on delegate (the view)
→ if a SvGestureRecognizer is listening, updates its state machine
→ when conditions are met, requests activation from SvGestureManager
→ if accepted, sends delegate messages to the view
→ view handler executes application logicFor raw event listeners (without gestures), the handler is called directly on the view at step 2, skipping the gesture layer.
SvEventListener receives it. The listener was registered on the view's element via addEventListener(). It calls the corresponding method on its delegate — typically the view itself. For example, a mousedown event calls onMouseDown(event) on the view.false stops propagation. If the handler returns false, event.stopPropagation() is called, preventing the event from bubbling to ancestor elements.SvTapGestureRecognizer tracks mousedown/mouseup timing and position.SvGestureManager.requestActiveGesture().onGestureBegin, onGestureMove, onGestureComplete, or onGestureCancelled.SvKeyboard, which generates modifier-aware method names (e.g., onShiftAKeyDown).SvDropListener/SvDragListener and the MIME dispatch chain in SvDomView_browserDragAndDrop.SvResponderDomView.