redo undo시 부모가 있는 object인 경우 부모까지 pop, add

This commit is contained in:
hyojun.choi 2024-09-09 17:19:28 +09:00
parent 2e48112873
commit b02ad92fca

View File

@ -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)
}