diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index a694d8704..efcc9c861 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -48,8 +48,8 @@ const Editor = createClass({ }; }, - editorWrapper : React.createRef(null), - editor : React.createRef(null), + editor : React.createRef(null), + codeEditor : React.createRef(null), isText : function() {return this.state.view == 'text';}, isStyle : function() {return this.state.view == 'style';}, @@ -83,15 +83,15 @@ const Editor = createClass({ }, updateEditorSize : function() { - if(this.editor.current) { - let paneHeight = this.editorWrapper.current.parentNode.clientHeight; + if(this.codeEditor.current) { + let paneHeight = this.editor.current.parentNode.clientHeight; paneHeight -= SNIPPETBAR_HEIGHT; - this.editor.current.codeMirror.setSize(null, paneHeight); + this.codeEditor.current.codeMirror.setSize(null, paneHeight); } }, handleInject : function(injectText){ - this.editor.current?.injectText(injectText, false); + this.codeEditor.current?.injectText(injectText, false); }, handleViewChange : function(newView){ @@ -102,7 +102,7 @@ const Editor = createClass({ }, getCurrentPage : function(){ - const lines = this.props.brew.text.split('\n').slice(0, this.editor.current.getCursorPosition().line + 1); + const lines = this.props.brew.text.split('\n').slice(0, this.codeEditor.current.getCursorPosition().line + 1); return _.reduce(lines, (r, line)=>{ if( (this.props.renderer == 'legacy' && line.indexOf('\\page') !== -1) @@ -114,9 +114,9 @@ const Editor = createClass({ }, highlightCustomMarkdown : function(){ - if(!this.editor.current) return; + if(!this.codeEditor.current) return; if(this.state.view === 'text') { - const codeMirror = this.editor.current.codeMirror; + const codeMirror = this.codeEditor.current.codeMirror; codeMirror.operation(()=>{ // Batch CodeMirror styling //reset custom text styles @@ -305,23 +305,23 @@ const Editor = createClass({ targetLine = lineCount - 1; //Scroll to `\page`, which is one line back. - let currentY = this.editor.current.codeMirror.getScrollInfo().top; - let targetY = this.editor.current.codeMirror.heightAtLine(targetLine, 'local', true); + let currentY = this.codeEditor.current.codeMirror.getScrollInfo().top; + let targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true); //Scroll 1/10 of the way every 10ms until 1px off. const incrementalScroll = setInterval(()=>{ currentY += (targetY - currentY) / 10; - this.editor.current.codeMirror.scrollTo(null, currentY); + this.codeEditor.current.codeMirror.scrollTo(null, currentY); // Update target: target height is not accurate until within +-10 lines of the visible window if(Math.abs(targetY - currentY > 100)) - targetY = this.editor.current.codeMirror.heightAtLine(targetLine, 'local', true); + targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true); // End when close enough if(Math.abs(targetY - currentY) < 1) { - this.editor.current.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference - this.editor.current.setCursorPosition({ line: targetLine + 1, ch: 0 }); - this.editor.current.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash'); + this.codeEditor.current.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference + this.codeEditor.current.setCursorPosition({ line: targetLine + 1, ch: 0 }); + this.codeEditor.current.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash'); clearInterval(incrementalScroll); } }, 10); @@ -331,7 +331,7 @@ const Editor = createClass({ //Called when there are changes to the editor's dimensions update : function(){ - this.editor.current?.updateSize(); + this.codeEditor.current?.updateSize(); }, updateEditorTheme : function(newTheme){ @@ -350,7 +350,7 @@ const Editor = createClass({ if(this.isText()){ return <> +
+ cursorPos={this.codeEditor.current?.getCursorPosition() || {}} /> {this.renderEditor()}