diff --git a/src/components/ReactPhotoEditor.tsx b/src/components/ReactPhotoEditor.tsx index 81ab418..c4d2b67 100644 --- a/src/components/ReactPhotoEditor.tsx +++ b/src/components/ReactPhotoEditor.tsx @@ -32,20 +32,26 @@ export const ReactPhotoEditor: React.FC = ({ const [offsetX, setOffsetX] = useState(0); const [offsetY, setOffsetY] = useState(0); - const handleMouseDown = (event: React.MouseEvent) => { + const handlePointerDown = (event: React.MouseEvent) => { setIsDragging(true); - setPanStart({ x: event.clientX - offsetX, y: event.clientY - offsetY }); + const initialX = event.clientX - (flipHorizontal ? -offsetX : offsetX); + const initialY = event.clientY - (flipVertical ? -offsetY : offsetY); + setPanStart({ x: initialX, y: initialY }); }; - const handleMouseMove = (event: React.MouseEvent) => { + const handlePointerMove = (event: React.MouseEvent) => { if (isDragging) { event.preventDefault(); - setOffsetX(event.clientX - panStart!.x); - setOffsetY(event.clientY - panStart!.y); + + const offsetXDelta = event.clientX - panStart!.x; + const offsetYDelta = event.clientY - panStart!.y; + + setOffsetX(flipHorizontal ? -offsetXDelta : offsetXDelta); + setOffsetY(flipVertical ? -offsetYDelta : offsetYDelta); } }; - const handleMouseUp = () => { + const handlePointerUp = () => { setIsDragging(false); }; @@ -243,8 +249,8 @@ export const ReactPhotoEditor: React.FC = ({ onClose(); } } + resetImage(); }); - resetImage(); } }; @@ -282,10 +288,10 @@ export const ReactPhotoEditor: React.FC = ({ data-testid='image-editor-canvas' id='canvas' ref={canvasRef} - onMouseDown={handleMouseDown} - onMouseMove={handleMouseMove} - onMouseUp={handleMouseUp} - onMouseLeave={handleMouseUp} + onPointerDown={handlePointerDown} + onPointerMove={handlePointerMove} + onPointerUp={handlePointerUp} + onPointerLeave={handlePointerUp} onWheel={handleWheel} />