mirror of
https://github.com/basketikun/infinite-canvas.git
synced 2026-08-06 01:14:36 +08:00
fix(canvas): stabilize node resizing by hiding toolbar during resize to prevent rendering issues
This commit is contained in:
@@ -44,7 +44,9 @@ type CanvasNodeProps = {
|
||||
onHoverStart: (nodeId: string) => void;
|
||||
onHoverEnd: (nodeId: string) => void;
|
||||
onConnectStart: (event: React.MouseEvent, nodeId: string, handleType: "source" | "target") => void;
|
||||
onResizeStart: (nodeId: string) => void;
|
||||
onResize: (nodeId: string, width: number, height: number, position?: Position) => void;
|
||||
onResizeEnd: (nodeId: string) => void;
|
||||
onContentChange: (nodeId: string, content: string) => void;
|
||||
onTitleChange: (nodeId: string, title: string) => void;
|
||||
onToggleBatch?: (nodeId: string) => void;
|
||||
@@ -105,7 +107,9 @@ export const CanvasNode = React.memo(function CanvasNode({
|
||||
onHoverStart,
|
||||
onHoverEnd,
|
||||
onConnectStart,
|
||||
onResizeStart,
|
||||
onResize,
|
||||
onResizeEnd,
|
||||
onContentChange,
|
||||
onTitleChange,
|
||||
onToggleBatch,
|
||||
@@ -261,11 +265,13 @@ export const CanvasNode = React.memo(function CanvasNode({
|
||||
resizeRef.current.isResizing = false;
|
||||
window.removeEventListener("mousemove", handleResizeMove);
|
||||
window.removeEventListener("mouseup", handleResizeUp);
|
||||
}, [handleResizeMove]);
|
||||
onResizeEnd(data.id);
|
||||
}, [data.id, handleResizeMove, onResizeEnd]);
|
||||
|
||||
const handleResizeMouseDown = (event: React.MouseEvent, corner: ResizeCorner) => {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
onResizeStart(data.id);
|
||||
resizeRef.current = {
|
||||
isResizing: true,
|
||||
corner,
|
||||
@@ -286,8 +292,9 @@ export const CanvasNode = React.memo(function CanvasNode({
|
||||
return () => {
|
||||
window.removeEventListener("mousemove", handleResizeMove);
|
||||
window.removeEventListener("mouseup", handleResizeUp);
|
||||
if (resizeRef.current.isResizing) onResizeEnd(data.id);
|
||||
};
|
||||
}, [handleResizeMove, handleResizeUp]);
|
||||
}, [data.id, handleResizeMove, handleResizeUp, onResizeEnd]);
|
||||
|
||||
return (
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user