refactor(editor): extract update listener to reduce deep nesting

Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com>
This commit is contained in:
google-labs-jules[bot] 2026-10-07 03:56:10 +00:00
parent bede889ced
commit 94ca952abb

View file

@ -224,26 +224,7 @@ export class SumEditor {
borderLeft: "2px solid var(--caret)",
},
}),
EditorView.updateListener.of((u: ViewUpdate) => {
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]);
}
}
}),
EditorView.updateListener.of((u: ViewUpdate) => this.handleUpdate(u)),
],
}),
});
@ -322,6 +303,27 @@ export class SumEditor {
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 {
this.results = this.evaluateDoc(text);
this.view.dispatch({ effects: setResults.of(this.results) });