diff --git a/src/hooks/useCanvas.js b/src/hooks/useCanvas.js index 2d99be3b..e6ae4dbf 100644 --- a/src/hooks/useCanvas.js +++ b/src/hooks/useCanvas.js @@ -138,12 +138,24 @@ export function useCanvas(id) { if (canvas) { if (canvas?._objects.length > 0) { const poppedObject = canvas?._objects.pop() + const group = [] + group.push(poppedObject) + + if (poppedObject.parent || poppedObject.parentId) { + canvas + ?.getObjects() + .filter((obj) => obj.parent === poppedObject.parent || obj.parentId === poppedObject.parentId || obj === poppedObject.parent) + .forEach((obj) => { + group.push(obj) + canvas?.remove(obj) + }) + } setHistory((prev) => { if (prev === undefined) { - return poppedObject ? [poppedObject] : [] + return poppedObject ? [group] : [] } - return poppedObject ? [...prev, poppedObject] : prev + return poppedObject ? [...prev, group] : prev }) canvas?.renderAll() } @@ -154,7 +166,13 @@ export function useCanvas(id) { if (canvas && history) { if (history.length > 0) { setIsLocked(true) - canvas?.add(history[history.length - 1]) + if (Array.isArray(history[history.length - 1])) { + history[history.length - 1].forEach((obj) => { + canvas?.add(obj) + }) + } else { + canvas?.add(history[history.length - 1]) + } const newHistory = history.slice(0, -1) setHistory(newHistory) }