Event Flow
1
User clicks node
Click detected in Three.js canvas
2
GraphEventHandler
Detects click and determines what was clicked
3
CustomEvent dispatched
window.dispatchEvent(new CustomEvent('graphNodeClick', {...}))4
App.jsx listener
window.addEventListener('graphNodeClick', handler)5
Handler processes
Processes click based on selectionMode
Custom Events Reference
| Event Name | Payload | Fired When |
|---|---|---|
graphNodeClick | { node, isMultiSelect, modifierKey } | User clicks a node |
graphBackgroundClick | none | User clicks empty space |
graphDataLoaded | none | New graph data loaded |
layoutComputed | none | GPU layout computation complete |
graphNodeHover | { node } | Mouse hovers over node |
Event Payload Details
graphNodeClick
graphNodeHover
Listening to Events
In React components:Firing Events
In service layer:Why Custom Events?
- Loose coupling: Three.js code doesn’t need React imports
- Testability: Easy to mock events in tests
- Flexibility: Multiple listeners can respond to same event
- Separation: Keeps rendering logic separate from UI logic