feat(props): add onDrag handler
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import React, { useEffect, useRef, memo, ComponentType, CSSProperties, useMemo, MouseEvent, useCallback } from 'react';
|
||||
import { DraggableCore } from 'react-draggable';
|
||||
import { DraggableCore, DraggableData, DraggableEvent } from 'react-draggable';
|
||||
import cc from 'classcat';
|
||||
|
||||
import { useStoreActions } from '../../store/hooks';
|
||||
@@ -21,6 +21,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
onMouseLeave,
|
||||
onContextMenu,
|
||||
onNodeDragStart,
|
||||
onNodeDrag,
|
||||
onNodeDragStop,
|
||||
style,
|
||||
className,
|
||||
@@ -107,7 +108,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
);
|
||||
|
||||
const onDragStart = useCallback(
|
||||
(event) => {
|
||||
(event: DraggableEvent) => {
|
||||
onNodeDragStart?.(event as MouseEvent, node);
|
||||
|
||||
if (selectNodesOnDrag && isSelectable) {
|
||||
@@ -125,12 +126,14 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
);
|
||||
|
||||
const onDrag = useCallback(
|
||||
(_, data) => {
|
||||
(event: DraggableEvent, draggbleData: DraggableData) => {
|
||||
onNodeDrag?.(event as MouseEvent, id, draggbleData);
|
||||
|
||||
updateNodePosDiff({
|
||||
id,
|
||||
diff: {
|
||||
x: data.deltaX,
|
||||
y: data.deltaY,
|
||||
x: draggbleData.deltaX,
|
||||
y: draggbleData.deltaY,
|
||||
},
|
||||
});
|
||||
},
|
||||
@@ -138,7 +141,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
);
|
||||
|
||||
const onDragStop = useCallback(
|
||||
(event) => {
|
||||
(event: DraggableEvent) => {
|
||||
// onDragStop also gets called when user just clicks on a node.
|
||||
// Because of that we set dragging to true inside the onDrag handler and handle the click here
|
||||
if (!isDragging) {
|
||||
|
||||
Reference in New Issue
Block a user