redo undo시 부모가 있는 object인 경우 부모까지 pop, add
This commit is contained in:
parent
2e48112873
commit
b02ad92fca
@ -138,12 +138,24 @@ export function useCanvas(id) {
|
|||||||
if (canvas) {
|
if (canvas) {
|
||||||
if (canvas?._objects.length > 0) {
|
if (canvas?._objects.length > 0) {
|
||||||
const poppedObject = canvas?._objects.pop()
|
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) => {
|
setHistory((prev) => {
|
||||||
if (prev === undefined) {
|
if (prev === undefined) {
|
||||||
return poppedObject ? [poppedObject] : []
|
return poppedObject ? [group] : []
|
||||||
}
|
}
|
||||||
return poppedObject ? [...prev, poppedObject] : prev
|
return poppedObject ? [...prev, group] : prev
|
||||||
})
|
})
|
||||||
canvas?.renderAll()
|
canvas?.renderAll()
|
||||||
}
|
}
|
||||||
@ -154,7 +166,13 @@ export function useCanvas(id) {
|
|||||||
if (canvas && history) {
|
if (canvas && history) {
|
||||||
if (history.length > 0) {
|
if (history.length > 0) {
|
||||||
setIsLocked(true)
|
setIsLocked(true)
|
||||||
|
if (Array.isArray(history[history.length - 1])) {
|
||||||
|
history[history.length - 1].forEach((obj) => {
|
||||||
|
canvas?.add(obj)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
canvas?.add(history[history.length - 1])
|
canvas?.add(history[history.length - 1])
|
||||||
|
}
|
||||||
const newHistory = history.slice(0, -1)
|
const newHistory = history.slice(0, -1)
|
||||||
setHistory(newHistory)
|
setHistory(newHistory)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user