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' }}/>