From 8e4bb32b779747c3d62673e21588632cd265677f Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 26 Nov 2022 21:33:39 +0000 Subject: [PATCH] Fixed md editor refactoring issues after manual test Testing was a full manual feature test of each piece of supported logic defined in the code. --- resources/js/markdown/actions.js | 8 ++++---- resources/js/markdown/codemirror.js | 2 +- resources/js/markdown/display.js | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/js/markdown/actions.js b/resources/js/markdown/actions.js index 96093d833..96f9b263c 100644 --- a/resources/js/markdown/actions.js +++ b/resources/js/markdown/actions.js @@ -78,7 +78,7 @@ export class Actions { const data = { image: pngData, - uploaded_to: Number(this.pageId), + uploaded_to: Number(this.editor.config.pageId), }; window.$http.post("/images/drawio", data).then(resp => { @@ -368,7 +368,7 @@ export class Actions { const scroll = this.editor.cm.getScrollInfo(); const atEnd = scroll.top + scroll.clientHeight === scroll.height; if (atEnd) { - editor.display.scrollToIndex(-1); + this.editor.display.scrollToIndex(-1); return; } @@ -377,7 +377,7 @@ export class Actions { const parser = new DOMParser(); const doc = parser.parseFromString(this.editor.markdown.render(range), 'text/html'); const totalLines = doc.documentElement.querySelectorAll('body > *'); - editor.display.scrollToIndex(totalLines.length); + this.editor.display.scrollToIndex(totalLines.length); } /** @@ -404,7 +404,7 @@ export class Actions { const cursorPos = this.editor.cm.coordsChar({left: event.pageX, top: event.pageY}); this.editor.cm.setCursor(cursorPos); for (const image of images) { - editor.actions.uploadImage(image); + this.editor.actions.uploadImage(image); } } } \ No newline at end of file diff --git a/resources/js/markdown/codemirror.js b/resources/js/markdown/codemirror.js index 27491902a..06860b929 100644 --- a/resources/js/markdown/codemirror.js +++ b/resources/js/markdown/codemirror.js @@ -23,7 +23,7 @@ export async function init(editor) { cm.on('change', (instance, changeObj) => editor.actions.updateAndRender()); // Handle scroll to sync display view - const onScrollDebounced = debounce(editor.actions.syncDisplayPosition, 100, false); + const onScrollDebounced = debounce(editor.actions.syncDisplayPosition.bind(editor.actions), 100, false); cm.on('scroll', instance => onScrollDebounced(instance)); // Handle image paste diff --git a/resources/js/markdown/display.js b/resources/js/markdown/display.js index 742198b46..7e1925431 100644 --- a/resources/js/markdown/display.js +++ b/resources/js/markdown/display.js @@ -26,7 +26,7 @@ export class Display { this.doc.body.className = 'page-content'; // Prevent markdown display link click redirect - this.doc.addEventListener('click', this.onDisplayClick) + this.doc.addEventListener('click', this.onDisplayClick.bind(this)); } /** @@ -91,8 +91,8 @@ export class Display { * @param {Number} index */ scrollToIndex(index) { - const elems = this.doc.body.children; - if (elems.length <= index) return; + const elems = this.doc.body?.children[0]?.children; + if (elems && elems.length <= index) return; const topElem = (index === -1) ? elems[elems.length-1] : elems[index]; topElem.scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth'});