diff --git a/example/src/Interaction/index.js b/example/src/Interaction/index.js index 81129be6..af7aafd9 100644 --- a/example/src/Interaction/index.js +++ b/example/src/Interaction/index.js @@ -15,6 +15,7 @@ const onNodeDragStart = (event, node) => console.log('drag start', node); const onNodeDragStop = (event, node) => console.log('drag stop', node); const onElementClick = (event, element) => console.log('click', element); const onPaneClick = (event) => console.log('onPaneClick', event); +const onPaneScroll = (event) => console.log('onPaneScroll', event); const onPaneContextMenu = (event) => console.log('onPaneContextMenu', event); const InteractionFlow = () => { @@ -28,6 +29,7 @@ const InteractionFlow = () => { const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false); const [paneMoveable, setPaneMoveable] = useState(true); const [captureZoomClick, setCaptureZoomClick] = useState(false); + const [captureZoomScroll, setCaptureZoomScroll] = useState(false); const [captureElementClick, setCaptureElementClick] = useState(false); return ( @@ -44,6 +46,7 @@ const InteractionFlow = () => { onNodeDragStop={onNodeDragStop} paneMoveable={paneMoveable} onPaneClick={captureZoomClick ? onPaneClick : undefined} + onPaneScroll={captureZoomScroll ? onPaneScroll : undefined} onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined} > @@ -134,6 +137,18 @@ const InteractionFlow = () => { /> +
+ +
diff --git a/src/container/ReactFlow/index.tsx b/src/container/ReactFlow/index.tsx index ff72ddf8..b7365b91 100644 --- a/src/container/ReactFlow/index.tsx +++ b/src/container/ReactFlow/index.tsx @@ -1,4 +1,4 @@ -import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent } from 'react'; +import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent, WheelEvent } from 'react'; import cc from 'classcat'; const nodeEnv: string = process.env.NODE_ENV as string; @@ -56,6 +56,7 @@ export interface ReactFlowProps extends Omit, 'on onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void; + onPaneScroll?: (event?: WheelEvent) => void; onPaneClick?: (event: MouseEvent) => void; onPaneContextMenu?: (event: MouseEvent) => void; nodeTypes: NodeTypesType; @@ -130,6 +131,7 @@ const ReactFlow = ({ zoomOnDoubleClick, paneMoveable, onPaneClick, + onPaneScroll, onPaneContextMenu, }: ReactFlowProps) => { const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []); @@ -180,6 +182,7 @@ const ReactFlow = ({ zoomOnDoubleClick={zoomOnDoubleClick} paneMoveable={paneMoveable} onPaneClick={onPaneClick} + onPaneScroll={onPaneScroll} onPaneContextMenu={onPaneContextMenu} onSelectionDragStart={onSelectionDragStart} onSelectionDrag={onSelectionDrag}