From bfc4b61b83ab63c81ecd3288a5eaac40ab5317e9 Mon Sep 17 00:00:00 2001 From: Kar l5 Date: Tue, 8 Jul 2025 13:43:38 +0530 Subject: [PATCH] 7 --- src/components/DrawingCanvas.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/DrawingCanvas.js b/src/components/DrawingCanvas.js index 3efce3d..7d93403 100644 --- a/src/components/DrawingCanvas.js +++ b/src/components/DrawingCanvas.js @@ -143,29 +143,31 @@ const DrawingCanvas = () => { } }; + const deepCopyShapes = (shapesArr) => JSON.parse(JSON.stringify(shapesArr)); + const handlePointerUp = () => { setIsDrawing(false); setLastPosition(null); - // Save a snapshot of shapes for undo/redo - setHistory(prev => [...prev, shapes]); + // Save a deep copy of shapes for undo/redo + setHistory(prev => [...prev, deepCopyShapes(shapes)]); setUndoHistory([]); }; // Undo: restore the previous snapshot const handleUndo = () => { if (history.length === 0) return; - setUndoHistory(prev => [...prev, shapes]); + setUndoHistory(prev => [...prev, deepCopyShapes(shapes)]); const prevShapes = history[history.length - 1]; - setShapes(prevShapes); + setShapes(deepCopyShapes(prevShapes)); setHistory(prev => prev.slice(0, -1)); }; // Redo: restore the next snapshot const handleRedo = () => { if (undoHistory.length === 0) return; - setHistory(prev => [...prev, shapes]); + setHistory(prev => [...prev, deepCopyShapes(shapes)]); const nextShapes = undoHistory[undoHistory.length - 1]; - setShapes(nextShapes); + setShapes(deepCopyShapes(nextShapes)); setUndoHistory(prev => prev.slice(0, -1)); };