From 9e72fad9e4deda5b06b4f376d7753a61a97b74f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Mon, 13 Apr 2026 23:29:40 +0200 Subject: [PATCH] small changes --- .github/dependabot.yml | 4 -- client/components/codeEditor/close-tag.js | 48 ------------------- client/components/codeEditor/codeEditor.jsx | 46 +++--------------- client/homebrew/editor/editor.jsx | 9 +--- .../homebrew/editor/snippetbar/snippetbar.jsx | 1 - 5 files changed, 9 insertions(+), 99 deletions(-) delete mode 100644 client/components/codeEditor/close-tag.js diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2204679a6..8915c39dd 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -66,10 +66,6 @@ updates: - dependency-name: "@babel/preset-react" versions: - 7.13.13 - - dependency-name: codemirror - versions: - - 5.59.3 - - 5.60.0 - dependency-name: classnames versions: - 2.3.0 diff --git a/client/components/codeEditor/close-tag.js b/client/components/codeEditor/close-tag.js deleted file mode 100644 index 84cf62169..000000000 --- a/client/components/codeEditor/close-tag.js +++ /dev/null @@ -1,48 +0,0 @@ -const autoCloseCurlyBraces = function(CodeMirror, cm, typingClosingBrace) { - const ranges = cm.listSelections(), replacements = []; - for (let i = 0; i < ranges.length; i++) { - if(!ranges[i].empty()) return CodeMirror.Pass; - const pos = ranges[i].head, line = cm.getLine(pos.line), tok = cm.getTokenAt(pos); - if(!typingClosingBrace && (tok.type == 'string' || tok.string.charAt(0) != '{' || tok.start != pos.ch - 1)) - return CodeMirror.Pass; - else if(typingClosingBrace) { - let hasUnclosedBraces = false, index = -1; - do { - index = line.indexOf('{{', index + 1); - if(index !== -1 && line.indexOf('}}', index + 1) === -1) { - hasUnclosedBraces = true; - break; - } - } while (index !== -1); - if(!hasUnclosedBraces) return CodeMirror.Pass; - } - - replacements[i] = typingClosingBrace ? { - text : '}}', - newPos : CodeMirror.Pos(pos.line, pos.ch + 2) - } : { - text : '{}}', - newPos : CodeMirror.Pos(pos.line, pos.ch + 1) - }; - } - - for (let i = ranges.length - 1; i >= 0; i--) { - const info = replacements[i]; - cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, '+insert'); - const sel = cm.listSelections().slice(0); - sel[i] = { - head : info.newPos, - anchor : info.newPos - }; - cm.setSelections(sel); - } -}; - -export default { - autoCloseCurlyBraces : function(CodeMirror, codeMirror) { - const map = { name: 'autoCloseCurlyBraces' }; - map[`'{'`] = function(cm) { return autoCloseCurlyBraces(CodeMirror, cm); }; - map[`'}'`] = function(cm) { return autoCloseCurlyBraces(CodeMirror, cm, true); }; - codeMirror?.addKeyMap(map); - } -}; \ No newline at end of file diff --git a/client/components/codeEditor/codeEditor.jsx b/client/components/codeEditor/codeEditor.jsx index 256ae7b40..84204f5a8 100644 --- a/client/components/codeEditor/codeEditor.jsx +++ b/client/components/codeEditor/codeEditor.jsx @@ -18,7 +18,7 @@ import { EditorState, Compartment, StateEffect, StateField } from '@codemirror/s import { foldAll as foldAllCmd, unfoldAll as unfoldAllCmd, foldGutter, foldKeymap, syntaxHighlighting } from '@codemirror/language'; import { defaultKeymap, history, undo, redo, undoDepth, redoDepth } from '@codemirror/commands'; import { languages } from '@codemirror/language-data'; -import { css, cssLanguage } from '@codemirror/lang-css'; +import { css } from '@codemirror/lang-css'; import { markdown, markdownLanguage } from '@codemirror/lang-markdown'; import { html } from '@codemirror/lang-html'; import { autocompleteEmoji } from './autocompleteEmoji.js'; @@ -83,7 +83,7 @@ const createHighlightPlugin = (renderer, tab)=>{ } if(tok.type === 'snippetLine' && tab === 'brewSnippets') { snippetCount++; - decos.push(Decoration.line({ attributes: { 'data-page-number': pageCount } }).range(line.from)); + decos.push(Decoration.line({ attributes: { 'data-page-number': snippetCount } }).range(line.from)); } } }); @@ -126,16 +126,16 @@ const programmaticCursorLineField = StateField.define({ }); const CodeEditor = forwardRef( - ( + ( { + language = '', + tab = 'brewText', + view, value = '', onChange = ()=>{}, onCursorChange = ()=>{}, onViewChange = ()=>{}, - language = '', - tab = 'brewText', editorTheme = 'default', - view, style, renderer, ...props @@ -344,14 +344,6 @@ const CodeEditor = forwardRef( }, [renderer, tab]); useImperativeHandle(ref, ()=>({ - getValue : ()=>viewRef.current.state.doc.toString(), - - setValue : (text)=>{ - const view = viewRef.current; - view.dispatch({ - changes : { from: 0, to: view.state.doc.length, insert: text }, - }); - }, injectText : (text)=>{ const view = viewRef.current; @@ -364,39 +356,15 @@ const CodeEditor = forwardRef( }, getCursorPosition : ()=>viewRef.current.state.selection.main.head, - getScrollTop : ()=>viewRef.current.scrollDOM.scrollTop, - - scrollToY : (y)=>{ - viewRef.current.scrollDOM.scrollTo({ top: y }); - }, - scrollToPage : (pageNumber, smooth = true)=>{ const view = viewRef.current; if(!view) return; const pos = pageBreaksRef.current[pageNumber - 1] ?? 0; - view.dispatch({ - effects : EditorView.scrollIntoView(pos, { y: 'start' }) - }); - - }, - getPagePos : (pageNumber)=>{ - const view = viewRef.current; - if(!view) return 0; - - const pos = pageBreaksRef.current[pageNumber - 1] ?? 0; - return pos; - }, - setCursorToPage : (pageNumber)=>{ - const view = viewRef.current; - if(!view) return; - - const pos = pageBreaksRef.current[pageNumber - 1] ?? 0; - view.dispatch({ selection : { anchor: pos }, - effects : setProgrammaticCursorLine.of(pos) + effects : [setProgrammaticCursorLine.of(pos), EditorView.scrollIntoView(pos, { y: 'start' })], }); view.focus(); diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index b34bdd94a..88c06077b 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -25,7 +25,7 @@ const EditorThemes = Object.entries(themes) .map(([name])=>name); -const PAGEBREAK_REGEX_V3 = /^(?=\\page(?:break)?(?: *{[^\n{}]*})?$)/m; +//const PAGEBREAK_REGEX_V3 = /^(?=\\page(?:break)?(?: *{[^\n{}]*})?$)/m; //const SNIPPETBREAK_REGEX_V3 = /^\\snippet\ .*$/; const DEFAULT_STYLE_TEXT = dedent` /*=======--- Example CSS styling ---=======*/ @@ -215,7 +215,6 @@ const Editor = createReactClass({ jumpSource = 'source'; editor.scrollToPage(targetPage); - editor.setCursorToPage(targetPage); setTimeout(()=>{ jumpSource = null; }, 200); @@ -250,7 +249,6 @@ const Editor = createReactClass({ onViewChange={(page)=>this.updateCurrentViewPage(page)} editorTheme={this.state.editorTheme} renderer={this.props.brew.renderer} - rerenderParent={this.rerenderParent} style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} onReady={this.attachCodeMirrorListeners}/> ; @@ -264,10 +262,8 @@ const Editor = createReactClass({ view={this.state.view} value={this.props.brew.style ?? DEFAULT_STYLE_TEXT} onChange={this.props.onBrewChange('style')} - enableFolding={true} editorTheme={this.state.editorTheme} renderer={this.props.brew.renderer} - rerenderParent={this.rerenderParent} style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} onReady={this.attachCodeMirrorListeners}/> ; @@ -276,8 +272,7 @@ const Editor = createReactClass({ return <> + style={{ display: 'none' }}/>