diff --git a/frontend/src/components/tree-editor/code-mode/CodeModeEditor.tsx b/frontend/src/components/tree-editor/code-mode/CodeModeEditor.tsx index fb5bafe9..96d98a0b 100644 --- a/frontend/src/components/tree-editor/code-mode/CodeModeEditor.tsx +++ b/frontend/src/components/tree-editor/code-mode/CodeModeEditor.tsx @@ -8,10 +8,7 @@ import { resolutionFlowTheme, THEME_ID } from './resolutionFlowTheme' import { createCompletionProvider } from './resolutionFlowCompletions' import { CodeModeToolbar } from './CodeModeToolbar' import { SyntaxHelpPanel } from './SyntaxHelpPanel' - -// Module-level ref so TreeEditorPage can trigger Monaco undo/redo from toolbar buttons -let _monacoEditor: MonacoEditor.IStandaloneCodeEditor | null = null -export function getMonacoEditor() { return _monacoEditor } +import { setMonacoEditor } from './monacoEditorRef' export function CodeModeEditor() { const editorRef = useRef(null) @@ -58,7 +55,7 @@ export function CodeModeEditor() { // Editor mounted const handleEditorDidMount: OnMount = useCallback((editor) => { editorRef.current = editor - _monacoEditor = editor + setMonacoEditor(editor) editor.focus() }, []) @@ -139,7 +136,7 @@ export function CodeModeEditor() { // Cleanup on unmount useEffect(() => { return () => { - _monacoEditor = null + setMonacoEditor(null) if (validationTimeoutRef.current) { clearTimeout(validationTimeoutRef.current) } diff --git a/frontend/src/components/tree-editor/code-mode/index.ts b/frontend/src/components/tree-editor/code-mode/index.ts index 2da4924e..ad2b95f1 100644 --- a/frontend/src/components/tree-editor/code-mode/index.ts +++ b/frontend/src/components/tree-editor/code-mode/index.ts @@ -1,3 +1,4 @@ -export { CodeModeEditor, getMonacoEditor } from './CodeModeEditor' +export { CodeModeEditor } from './CodeModeEditor' export { CodeModeToolbar } from './CodeModeToolbar' export { SyntaxHelpPanel } from './SyntaxHelpPanel' +export { getMonacoEditor } from './monacoEditorRef' diff --git a/frontend/src/components/tree-editor/code-mode/monacoEditorRef.ts b/frontend/src/components/tree-editor/code-mode/monacoEditorRef.ts new file mode 100644 index 00000000..3db32f7a --- /dev/null +++ b/frontend/src/components/tree-editor/code-mode/monacoEditorRef.ts @@ -0,0 +1,7 @@ +import type { editor as MonacoEditor } from 'monaco-editor' + +// Module-level ref so TreeEditorPage can trigger Monaco undo/redo from toolbar buttons +let _monacoEditor: MonacoEditor.IStandaloneCodeEditor | null = null + +export function getMonacoEditor() { return _monacoEditor } +export function setMonacoEditor(editor: MonacoEditor.IStandaloneCodeEditor | null) { _monacoEditor = editor }