update
This commit is contained in:
@@ -20,6 +20,7 @@ type BaseEditorOpts = {
|
||||
open?: boolean;
|
||||
overrideList?: Completion[];
|
||||
};
|
||||
onChange?: (value: string) => void;
|
||||
};
|
||||
export class BaseEditor {
|
||||
editor?: EditorView;
|
||||
@@ -32,7 +33,7 @@ export class BaseEditor {
|
||||
open?: boolean;
|
||||
overrideList?: Completion[];
|
||||
};
|
||||
|
||||
onChange?: (value: string) => void;
|
||||
constructor(opts?: BaseEditorOpts) {
|
||||
this.filename = opts?.filename || '';
|
||||
this.language = opts?.language || 'typescript';
|
||||
@@ -43,6 +44,7 @@ export class BaseEditor {
|
||||
}
|
||||
this.autoComplete = opts?.autoComplete || { open: true, overrideList: [] };
|
||||
this.onChangeCompartment = new Compartment(); // 创建一个用于 onChange 的独立扩展
|
||||
this.onChange = opts?.onChange;
|
||||
}
|
||||
onEditorChange(view: EditorView) {
|
||||
console.log('onChange', view);
|
||||
@@ -54,6 +56,7 @@ export class BaseEditor {
|
||||
this.el = el;
|
||||
const onChangeCompartment = this.onChangeCompartment!;
|
||||
const language = this.language;
|
||||
const onChange = this.onChange;
|
||||
const extensions: Extension[] = [
|
||||
vscodeLight,
|
||||
formatKeymap,
|
||||
@@ -91,7 +94,15 @@ export class BaseEditor {
|
||||
parent: el,
|
||||
extensions: [
|
||||
...extensions, //
|
||||
onChangeCompartment.of([]),
|
||||
onChangeCompartment.of([
|
||||
[
|
||||
EditorView.updateListener.of((update) => {
|
||||
if (update.changes.length > 0) {
|
||||
onChange?.(update.state.doc.toString());
|
||||
}
|
||||
}),
|
||||
],
|
||||
]),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user