X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c519f707e82693cfe6d392c04dd8e2efaeca24ca..refs/pull/3698/head:/resources/js/wysiwyg/plugin-drawio.js diff --git a/resources/js/wysiwyg/plugin-drawio.js b/resources/js/wysiwyg/plugin-drawio.js index 9265d4395..64ef1fffb 100644 --- a/resources/js/wysiwyg/plugin-drawio.js +++ b/resources/js/wysiwyg/plugin-drawio.js @@ -18,11 +18,13 @@ function showDrawingManager(mceEditor, selectedNode = null) { // 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 = `
`; + const imgHTML = `
`; pageEditor.insertContent(imgHTML); } }, 'drawio'); @@ -53,8 +55,10 @@ async function updateContent(pngData) { 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); } @@ -66,8 +70,10 @@ async function updateContent(pngData) { 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); @@ -106,6 +112,8 @@ export function getPlugin(providedOptions) { 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([ @@ -135,9 +143,9 @@ export function getPlugin(providedOptions) { 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'); + } }); });