Closed yashvi2026 closed 8 months ago
The problem here is not Undomanager.remove
but what is tracked.
When you're resizing the image, you're not editing the Component
itself but its CssRule
object so that's why it's not working as expected.
I'd probably suggest to simply skip the undo manager with operations you don't want to track
editor.UndoManager.skip(() => {
// ....
});
GrapesJS version
What browser are you using?
Chrome v91
Reproducible demo link
https://codepen.io/Harshsne/pen/WNgZzPE
Describe the bug
How to reproduce the bug?
editor.on('asset:close', () => { console.log("close") const selected = editor.getSelected(); if (selected && selected.is('image')) { editor.UndoManager.remove(selected); } })
What is the expected behavior? ...Removed component from the undomanager should not be tracked and when i press crtl+z its changes should not be displayed.
What is the current behavior? Removed component from undomanager is still tracked by undomanager.
My actual need is: when i close the image modal without adding any image to it ,I have removed the image block as in my code ,so when i press undo without any src the appended image block is displayed i dont want that to happen so i would like to remove that component from the undomanager stack .
editor.on('asset:close', () => { const selected = editor.getSelected(); if (selected && selected.is('image')) { if (selected.get('attributes').src == "empty") { editor.getSelected().remove(); editor.select(); editor.UndoManager.remove(selected); } } })
Any other alternative way i can achieve this? @artfCode of Conduct