This commit is contained in:
Andrew Pimenov 2026-10-07 06:56:14 +03:00 • committed by GitHub
commit 4bb2cfbd00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -224,26 +224,7 @@ export class SumEditor {
borderLeft: "2px solid var(--caret)", borderLeft: "2px solid var(--caret)",
}, },
}), }),
EditorView.updateListener.of((u: ViewUpdate) => { EditorView.updateListener.of((u: ViewUpdate) => this.handleUpdate(u)),
if (u.docChanged) {
const text = u.state.doc.toString();
this.evaluate(text);
this.cb.onChange(text);
}
if (u.geometryChanged || u.viewportChanged || u.docChanged) {
this.renderResults();
}
if (u.selectionSet || u.docChanged) {
const sel = u.state.selection.main;
if (sel.empty) {
this.cb.onSelection(null);
} else {
const from = u.state.doc.lineAt(sel.from).number - 1;
const to = u.state.doc.lineAt(sel.to).number - 1;
this.cb.onSelection([from, to]);
}
}
}),
], ],
}), }),
}); });
@ -322,6 +303,27 @@ export class SumEditor {
this.view.focus(); this.view.focus();
} }
private handleUpdate(u: ViewUpdate): void {
if (u.docChanged) {
const text = u.state.doc.toString();
this.evaluate(text);
this.cb.onChange(text);
}
if (u.geometryChanged || u.viewportChanged || u.docChanged) {
this.renderResults();
}
if (u.selectionSet || u.docChanged) {
const sel = u.state.selection.main;
if (sel.empty) {
this.cb.onSelection(null);
return;
}
const from = u.state.doc.lineAt(sel.from).number - 1;
const to = u.state.doc.lineAt(sel.to).number - 1;
this.cb.onSelection([from, to]);
}
}
private evaluate(text: string): void { private evaluate(text: string): void {
this.results = this.evaluateDoc(text); this.results = this.evaluateDoc(text);
this.view.dispatch({ effects: setResults.of(this.results) }); this.view.dispatch({ effects: setResults.of(this.results) });