X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/b936e1f403e0565adc9a619d8b9426dfd6b9492c..be4f3d62cd37c7b83eb86bbf5fffa00d20acf2ec:/resources/assets/js/components/markdown-editor.js diff --git a/resources/assets/js/components/markdown-editor.js b/resources/assets/js/components/markdown-editor.js index 4e0ba83ba..a555376e8 100644 --- a/resources/assets/js/components/markdown-editor.js +++ b/resources/assets/js/components/markdown-editor.js @@ -8,6 +8,7 @@ class MarkdownEditor { constructor(elem) { this.elem = elem; + this.textDirection = document.getElementById('page-editor').getAttribute('text-direction'); this.markdown = new MarkdownIt({html: true}); this.markdown.use(mdTasksLists, {label: true}); @@ -98,6 +99,9 @@ class MarkdownEditor { codeMirrorSetup() { let cm = this.cm; + // Text direction + // cm.setOption('direction', this.textDirection); + cm.setOption('direction', 'ltr'); // Will force to remain as ltr for now due to issues when HTML is in editor. // Custom key commands let metaKey = code.getMetaKey(); const extraKeys = {}; @@ -395,31 +399,30 @@ class MarkdownEditor { } // Scroll to a specified text - scrollToText(searchText) {; + scrollToText(searchText) { if (!searchText) { return; } + const content = this.cm.getValue(); const lines = content.split(/\r?\n/); - let lineNumber = -1; - for (let i = 0; i !== lines.length; ++i) { - const line = lines[i]; - if (!line) { - continue; - } - if (line.indexOf(searchText) !== -1) { - lineNumber = i; - break; - } - } + let lineNumber = lines.findIndex(line => { + return line && line.indexOf(searchText) !== -1; + }); - if (lineNumber !== -1) { - this.cm.scrollIntoView({ - line: lineNumber, - char: lines[lineNumber].length - }, 200); - this.cm.focus(); + if (lineNumber === -1) { + return; } + + this.cm.scrollIntoView({ + line: lineNumber, + }, 200); + this.cm.focus(); + // set the cursor location. + this.cm.setCursor({ + line: lineNumber, + char: lines[lineNumber].length + }) } }