From b47a95f9dda2bb0415ddee29781413cbca1f30f2 Mon Sep 17 00:00:00 2001 From: wangcch Date: Fri, 12 Sep 2025 17:21:13 +0800 Subject: [PATCH] feat(repl): `getEditorInstance`, `getMonacoEditor` (expose) --- src/Repl.vue | 11 +++++++++-- src/codemirror/CodeMirror.vue | 4 ++++ src/editor/CodeMirrorEditor.vue | 12 ++++++++++-- src/editor/EditorContainer.vue | 18 +++++++++++++++--- src/editor/MonacoEditor.vue | 12 +++++++++++- src/monaco/Monaco.vue | 5 +++++ src/types.ts | 12 ++++++++++++ 7 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/Repl.vue b/src/Repl.vue index a290c968..d2fae53c 100644 --- a/src/Repl.vue +++ b/src/Repl.vue @@ -5,6 +5,7 @@ import { type Store, useStore } from './store' import { computed, provide, toRefs, useTemplateRef } from 'vue' import { type EditorComponentType, + type EditorMethods, injectKeyPreviewRef, injectKeyProps, } from './types' @@ -73,6 +74,7 @@ if (!props.editor) { } const outputRef = useTemplateRef('output') +const editorContainerRef = useTemplateRef('editorContainer') props.store.init() @@ -95,14 +97,19 @@ function reload() { outputRef.value?.reload() } -defineExpose({ reload }) +defineExpose({ + reload, + getEditorInstance: (() => + editorContainerRef.value?.getEditorIns()) as EditorMethods['getEditorIns'], + getMonacoEditor: () => editorContainerRef.value?.getMonacoEditor?.(), +})