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.
This commit is contained in:
Dan Brown 2022-11-26 21:33:39 +00:00
parent 63d6272282
commit 8e4bb32b77
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
3 changed files with 8 additions and 8 deletions

View file

@ -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);
}
}
}

View file

@ -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

View file

@ -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'});