0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-05-07 18:48:39 +00:00

fix movebrew

This commit is contained in:
Víctor Losada Hernández
2026-04-05 12:14:40 +02:00
parent a4e3f2006d
commit 1f1dbfbb89
2 changed files with 31 additions and 7 deletions
+2 -1
View File
@@ -16,6 +16,7 @@ const CodeEditor = createReactClass({
value : '', value : '',
wrap : true, wrap : true,
onChange : ()=>{}, onChange : ()=>{},
onReady : ()=>{},
enableFolding : true, enableFolding : true,
editorTheme : 'default' editorTheme : 'default'
}; };
@@ -177,7 +178,7 @@ const CodeEditor = createReactClass({
// return el; // return el;
// } // }
}); });
this.props.onReady?.(this.codeMirror);
// Add custom behaviors (auto-close curlies and auto-complete emojis) // Add custom behaviors (auto-close curlies and auto-complete emojis)
closeTag.autoCloseCurlyBraces(CodeMirror, this.codeMirror); closeTag.autoCloseCurlyBraces(CodeMirror, this.codeMirror);
autoCompleteEmoji.showAutocompleteEmoji(CodeMirror, this.codeMirror); autoCompleteEmoji.showAutocompleteEmoji(CodeMirror, this.codeMirror);
+29 -6
View File
@@ -76,9 +76,6 @@ const Editor = createReactClass({
document.getElementById('BrewRenderer').addEventListener('keydown', this.handleControlKeys); document.getElementById('BrewRenderer').addEventListener('keydown', this.handleControlKeys);
document.addEventListener('keydown', this.handleControlKeys); document.addEventListener('keydown', this.handleControlKeys);
this.codeEditor.current.codeMirror?.on('cursorActivity', (cm)=>{this.updateCurrentCursorPage(cm.getCursor());});
this.codeEditor.current.codeMirror?.on('scroll', _.throttle(()=>{this.updateCurrentViewPage(this.codeEditor.current.getTopVisibleLine());}, 200));
const editorTheme = window.localStorage.getItem(EDITOR_THEME_KEY); const editorTheme = window.localStorage.getItem(EDITOR_THEME_KEY);
if(editorTheme) { if(editorTheme) {
this.setState({ this.setState({
@@ -436,6 +433,29 @@ const Editor = createReactClass({
this.forceUpdate(); this.forceUpdate();
}, },
//temporary fix until cm6 comes next update
attachCodeMirrorListeners : function(cm) {
if(!cm) return;
// detach previous (important on remount / view switch)
if(this._cm) {
this._cm.off('cursorActivity', this._onCursor);
this._cm.off('scroll', this._onScroll);
}
this._cm = cm;
this._onCursor = ()=>{
this.updateCurrentCursorPage(cm.getCursor());
};
this._onScroll = _.throttle(()=>{
const topLine = cm.lineAtHeight(cm.getScrollInfo().top, 'local');
this.updateCurrentViewPage(topLine);
}, 200);
cm.on('cursorActivity', this._onCursor);
cm.on('scroll', this._onScroll);
},
renderEditor : function(){ renderEditor : function(){
if(this.isText()){ if(this.isText()){
return <> return <>
@@ -448,7 +468,8 @@ const Editor = createReactClass({
onChange={this.props.onBrewChange('text')} onChange={this.props.onBrewChange('text')}
editorTheme={this.state.editorTheme} editorTheme={this.state.editorTheme}
rerenderParent={this.rerenderParent} rerenderParent={this.rerenderParent}
style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} /> style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }}
onReady={this.attachCodeMirrorListeners}/>
</>; </>;
} }
if(this.isStyle()){ if(this.isStyle()){
@@ -463,7 +484,8 @@ const Editor = createReactClass({
enableFolding={true} enableFolding={true}
editorTheme={this.state.editorTheme} editorTheme={this.state.editorTheme}
rerenderParent={this.rerenderParent} rerenderParent={this.rerenderParent}
style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} /> style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }}
onReady={this.attachCodeMirrorListeners}/>
</>; </>;
} }
if(this.isMeta()){ if(this.isMeta()){
@@ -493,7 +515,8 @@ const Editor = createReactClass({
enableFolding={true} enableFolding={true}
editorTheme={this.state.editorTheme} editorTheme={this.state.editorTheme}
rerenderParent={this.rerenderParent} rerenderParent={this.rerenderParent}
style={{ height: `calc(100% -${this.state.snippetBarHeight}px)` }} /> style={{ height: `calc(100% -${this.state.snippetBarHeight}px)` }}
onReady={this.attachCodeMirrorListeners}/>
</>; </>;
} }
}, },