Skip to content

Commit

Permalink
fix(editor): Fix code node’s content property to be reactive (#6931)
Browse files Browse the repository at this point in the history
Signed-off-by: Oleg Ivaniv <[email protected]>
  • Loading branch information
OlegIvaniv authored and netroy committed Aug 17, 2023
1 parent 0db5af3 commit c78df70
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions packages/editor-ui/src/components/CodeNodeEditor/CodeNodeEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,16 @@ export default defineComponent({
mode(newMode, previousMode: CodeExecutionMode) {
this.reloadLinter();
if (this.content.trim() === CODE_PLACEHOLDERS[this.language]?.[previousMode]) {
if (
this.getCurrentEditorContent().trim() === CODE_PLACEHOLDERS[this.language]?.[previousMode]
) {
this.refreshPlaceholder();
}
},
language(newLanguage, previousLanguage: CodeNodeEditorLanguage) {
if (this.content.trim() === CODE_PLACEHOLDERS[previousLanguage]?.[this.mode]) {
if (
this.getCurrentEditorContent().trim() === CODE_PLACEHOLDERS[previousLanguage]?.[this.mode]
) {
this.refreshPlaceholder();
}
Expand All @@ -100,11 +104,6 @@ export default defineComponent({
},
computed: {
...mapStores(useRootStore),
content(): string {
if (!this.editor) return '';
return this.editor.state.doc.toString();
},
placeholder(): string {
return CODE_PLACEHOLDERS[this.language]?.[this.mode] ?? '';
},
Expand All @@ -120,6 +119,9 @@ export default defineComponent({
},
},
methods: {
getCurrentEditorContent() {
return this.editor?.state.doc.toString() ?? '';
},
onMouseOver(event: MouseEvent) {
const fromElement = event.relatedTarget as HTMLElement;
const ref = this.$refs.codeNodeEditorContainer as HTMLDivElement | undefined;
Expand Down Expand Up @@ -151,15 +153,15 @@ export default defineComponent({
if (!this.editor) return;
this.editor.dispatch({
changes: { from: 0, to: this.content.length, insert: this.placeholder },
changes: { from: 0, to: this.getCurrentEditorContent().length, insert: this.placeholder },
});
},
highlightLine(line: number | 'final') {
if (!this.editor) return;
if (line === 'final') {
this.editor.dispatch({
selection: { anchor: this.content.length },
selection: { anchor: (this.modelValue ?? this.getCurrentEditorContent()).length },
});
return;
}
Expand All @@ -176,7 +178,7 @@ export default defineComponent({
try {
// @ts-ignore - undocumented fields
const { fromA, toB } = viewUpdate?.changedRanges[0];
const full = this.content.slice(fromA, toB);
const full = this.getCurrentEditorContent().slice(fromA, toB);
const lastDotIndex = full.lastIndexOf('.');
let context = null;
Expand Down

0 comments on commit c78df70

Please sign in to comment.