|
1 | 1 | import React, { ForwardedRef, forwardRef, ReactElement, useEffect, useMemo, useRef, useState } from 'react'
|
2 | 2 | import debounce from 'lodash.debounce'
|
3 | 3 | import * as monaco from 'monaco-editor'
|
4 |
| -import { createEditor, getMonacoLanguage, updateEditorKeybindingsMode, registerEditorOpenHandler, createModelReference } from '@codingame/monaco-editor-wrapper' |
| 4 | +import { createEditor, getMonacoLanguage, updateEditorKeybindingsMode, registerEditorOpenHandler, createModelReference, registerFile } from '@codingame/monaco-editor-wrapper' |
5 | 5 | import { IEditorOptions, IResolvedTextEditorModel } from '@codingame/monaco-vscode-editor-service-override'
|
6 | 6 | import { DisposableStore, IReference, ITextFileEditorModel } from 'vscode/monaco'
|
7 | 7 | import type { ITextFileEditorModelSaveEvent } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles'
|
| 8 | +import { RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override' |
8 | 9 | import { useDeepMemo, useLastValueRef, useLastVersion, useThemeColor } from './hooks.js'
|
9 | 10 | import './style.js'
|
10 | 11 |
|
@@ -212,9 +213,14 @@ function MonacoEditor ({
|
212 | 213 | let model: monaco.editor.ITextModel
|
213 | 214 | const disposableStore = new DisposableStore()
|
214 | 215 | if (fileUri != null) {
|
215 |
| - const modelIRefPromise = createModelReference(monaco.Uri.parse(fileUri), value!) |
| 216 | + const uri = monaco.Uri.parse(fileUri) |
| 217 | + |
| 218 | + const fileDisposable = registerFile(new RegisteredMemoryFile(uri, value!)) |
| 219 | + |
| 220 | + const modelIRefPromise = createModelReference(uri) |
216 | 221 | disposableStore.add({
|
217 | 222 | dispose () {
|
| 223 | + fileDisposable.dispose() |
218 | 224 | void modelIRefPromise.then(modelIRef => modelIRef.dispose(), console.error)
|
219 | 225 | }
|
220 | 226 | })
|
|
0 commit comments