Events
Listen to public events with GraphEventMap and graph.on, graph.off, and graph.once
Known events are inferred from the public GraphEventMap:
graph.on('node:click', ({ nodeId, data, nativeEvent }) => {
console.log(nodeId, data, nativeEvent.clientX, nativeEvent.clientY);
});
graph.on('canvas:wheel', ({ nativeEvent }) => {
console.log(nativeEvent.deltaY); // WheelEvent
});
graph.once('destroy', () => {
console.log('destroyed'); // zero arguments
});Element payloads expose the original MouseEvent or WheelEvent as nativeEvent. The compatibility field event still exists but is deprecated.
Element events
The interaction dispatcher performs shared picking and emits these events without requiring a separate click Behavior:
- Node:
node:pointerover,node:pointerenter,node:pointermove,node:pointerleave,node:pointerdown,node:click,node:dblclick,node:contextmenu,node:wheel. - Edge:
edge:pointerover,edge:pointerenter,edge:pointermove,edge:pointerleave,edge:pointerdown,edge:click,edge:dblclick,edge:contextmenu,edge:wheel. - Combo:
combo:pointerdown,combo:click,combo:dblclick,combo:contextmenu. - Canvas:
canvas:pointermove,canvas:pointerdown,canvas:pointerup,canvas:click,canvas:dblclick,canvas:contextmenu,canvas:wheel.
The precise payload types are NodeGraphEvent, EdgeGraphEvent, ComboGraphEvent, and CanvasGraphEvent. Their target-specific IDs and edge metadata are required in the matching handlers.
Selection and drag events
Built-in Behaviors emit:
- Selection:
node:selectchange,edge:selectchange,selection:clear. - Node drag:
node:dragstart,node:drag,node:dragend. - Combo drag:
combo:dragstart,combo:drag,combo:dragend. - Edge endpoint drag:
edge:dragstart,edge:drag,edge:dragend. - Brush:
brush:select,brush:end. - Lasso:
lasso:select,lasso:end.
Derived events are emitted only when the corresponding Behavior is active.
Lifecycle and data events
- Layout:
beforelayout,layout:start,layout:end,afterlayout. - Render:
beforerender,afterrender. - Container and teardown:
resize,destroy. - Data:
datachange,afteradditem,afterremoveitem,afterupdateitem. - Combo:
combo:collapse,combo:expand.
GraphEventMap values are argument tuples rather than single payload types, so both ordinary events and zero-argument events are represented exactly:
import type { GraphEventMap } from '@antv/g6-lite';
type NodeClickPayload = GraphEventMap['node:click'][0];
type DestroyArguments = GraphEventMap['destroy']; // []Removing listeners
Use the same handler reference when removing a listener:
const handler = ({ nodeId }: GraphEventMap['node:click'][0]) => console.log(nodeId);
graph.on('node:click', handler);
graph.off('node:click', handler);Use once() for a one-time listener:
graph.once('afterrender', ({ nodeCount, edgeCount }) => {
console.log(nodeCount, edgeCount);
});Custom event typing
graph.on/off/once retain a generic fallback for unknown event strings:
graph.on('business:custom', (payload: { id: string }) => {
console.log(payload.id);
});A custom Behavior can also extend its event-map generic. This release provides consumer-side typing only and does not expose a public emit API; do not depend on internal graph.eventEmitter. See Custom Behavior.