diff --git a/packages/react-canvas-core/src/core-state/AbstractDisplacementState.ts b/packages/react-canvas-core/src/core-state/AbstractDisplacementState.ts index 4925a73..0ca1204 100644 --- a/packages/react-canvas-core/src/core-state/AbstractDisplacementState.ts +++ b/packages/react-canvas-core/src/core-state/AbstractDisplacementState.ts @@ -35,6 +35,15 @@ export abstract class AbstractDisplacementState) => { const { event } = actionEvent; + + if (event.buttons === 0) { + // If buttons is 0, it means the mouse is not down, the user may have released it + // outside of the canvas, then we eject the state + this.eject(); + + return; + } + this.fireMouseMoved({ displacementX: event.clientX - this.initialX, displacementY: event.clientY - this.initialY,