diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx
index dce455f47..87642d981 100644
--- a/components/canvas/nodes/ImageNode.tsx
+++ b/components/canvas/nodes/ImageNode.tsx
@@ -350,6 +350,11 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) {
setCompareSplitPercent(clampedPercent);
}, []);
+ const startCompareDrag = useCallback((clientX: number) => {
+ setIsCompareDragging(true);
+ updateCompareSplitByClientX(clientX);
+ }, [updateCompareSplitByClientX]);
+
useEffect(() => {
if (!isCompareDragging) return;
@@ -1562,64 +1567,69 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) {
isCompareDragging ? "cursor-col-resize" : "cursor-default"
)}
style={{ touchAction: "none" }}
+ data-canvas-no-drag="true"
+ onPointerDown={(event) => {
+ if (event.button !== 0) return;
+ event.preventDefault();
+ event.stopPropagation();
+ event.currentTarget.setPointerCapture(event.pointerId);
+ startCompareDrag(event.clientX);
+ }}
+ onPointerMove={(event) => {
+ if (!isCompareDragging) return;
+ event.preventDefault();
+ event.stopPropagation();
+ updateCompareSplitByClientX(event.clientX);
+ }}
+ onPointerUp={(event) => {
+ if (!isCompareDragging) return;
+ event.preventDefault();
+ event.stopPropagation();
+ setIsCompareDragging(false);
+ }}
+ onPointerCancel={() => {
+ setIsCompareDragging(false);
+ }}
>