// Show image manager
window.ImageManager.show(function (image) {
if (selectedNode) {
- let imgElem = selectedNode.querySelector('img');
- pageEditor.dom.setAttrib(imgElem, 'src', image.url);
- pageEditor.dom.setAttrib(selectedNode, 'drawio-diagram', image.id);
+ const imgElem = selectedNode.querySelector('img');
+ pageEditor.undoManager.transact(function () {
+ pageEditor.dom.setAttrib(imgElem, 'src', image.url);
+ pageEditor.dom.setAttrib(selectedNode, 'drawio-diagram', image.id);
+ });
} else {
- let imgHTML = `<div drawio-diagram="${image.id}" contenteditable="false"><img src="${image.url}"></div>`;
+ const imgHTML = `<div drawio-diagram="${image.id}" contenteditable="false"><img src="${image.url}"></div>`;
pageEditor.insertContent(imgHTML);
}
}, 'drawio');
let imgElem = currentNode.querySelector('img');
try {
const img = await DrawIO.upload(pngData, options.pageId);
- pageEditor.dom.setAttrib(imgElem, 'src', img.url);
- pageEditor.dom.setAttrib(currentNode, 'drawio-diagram', img.id);
+ pageEditor.undoManager.transact(function () {
+ pageEditor.dom.setAttrib(imgElem, 'src', img.url);
+ pageEditor.dom.setAttrib(currentNode, 'drawio-diagram', img.id);
+ });
} catch (err) {
handleUploadError(err);
}
DrawIO.close();
try {
const img = await DrawIO.upload(pngData, options.pageId);
- pageEditor.dom.setAttrib(id, 'src', img.url);
- pageEditor.dom.get(id).parentNode.setAttribute('drawio-diagram', img.id);
+ pageEditor.undoManager.transact(function () {
+ pageEditor.dom.setAttrib(id, 'src', img.url);
+ pageEditor.dom.get(id).parentNode.setAttribute('drawio-diagram', img.id);
+ });
} catch (err) {
pageEditor.dom.remove(id);
handleUploadError(err);
icon: 'diagram',
onAction() {
editor.execCommand('drawio');
+ // Hack to de-focus the tinymce editor toolbar
+ window.document.body.dispatchEvent(new Event('mousedown', {bubbles: true}));
},
fetch(callback) {
callback([
});
editor.on('SetContent', function () {
- const drawings = editor.$('body > div[drawio-diagram]');
+ const drawings = editor.dom.select('body > div[drawio-diagram]');
if (!drawings.length) return;
editor.undoManager.transact(function () {
- drawings.each((index, elem) => {
- elem.setAttribute('contenteditable', 'false');
- });
+ for (const drawing of drawings) {
+ drawing.setAttribute('contenteditable', 'false');
+ }
});
});