11import editorWorker from 'monaco-editor-core/esm/vs/editor/editor.worker?worker' ;
2- import vueWorker from 'monaco-volar /vue.worker?worker' ;
2+ import vueWorker from '. /vue.worker?worker' ;
33import * as onigasm from "onigasm" ;
44import onigasmWasm from "onigasm/lib/onigasm.wasm?url" ;
5- import { editor , languages } from 'monaco-editor-core' ;
5+ import { editor , languages , Uri } from 'monaco-editor-core' ;
66import * as volar from '@volar/monaco' ;
7+ import { Store } from '../store' ;
8+ import * as VolarWorker from '@volar/monaco/worker' ;
9+ import { getOrCreateModel } from './utils' ;
710
811export function loadWasm ( ) {
912 return onigasm . loadWASM ( onigasmWasm ) ;
1013}
1114
12- export function loadMonacoEnv ( ) {
15+ export function loadMonacoEnv ( store : Store ) {
1316 ( self as any ) . MonacoEnvironment = {
1417 async getWorker ( _ : any , label : string ) {
1518 if ( label === 'vue' ) {
@@ -23,12 +26,24 @@ export function loadMonacoEnv() {
2326 const worker = editor . createWebWorker < any > ( {
2427 moduleId : 'vs/language/vue/vueWorker' ,
2528 label : 'vue' ,
26- createData : { } ,
27- } )
28- const languageId = [ 'vue' ]
29- const getSyncUris = ( ) => editor . getModels ( ) . map ( m => m . uri ) ;
30- volar . editor . activateMarkers ( worker , languageId , 'vue' , getSyncUris , editor )
31- volar . editor . activateAutoInsertion ( worker , languageId , getSyncUris , editor )
32- volar . languages . registerProvides ( worker , languageId , getSyncUris , languages )
29+ host : VolarWorker . createDtsHost ( 'https://unpkg.com/' , ! store . vueVersion ? { } : {
30+ 'vue' : store . vueVersion ,
31+ '@vue/compiler-core' : store . vueVersion ,
32+ '@vue/compiler-dom' : store . vueVersion ,
33+ '@vue/compiler-sfc' : store . vueVersion ,
34+ '@vue/compiler-ssr' : store . vueVersion ,
35+ '@vue/reactivity' : store . vueVersion ,
36+ '@vue/runtime-core' : store . vueVersion ,
37+ '@vue/runtime-dom' : store . vueVersion ,
38+ '@vue/shared' : store . vueVersion ,
39+ } , ( filename , text ) => {
40+ getOrCreateModel ( Uri . file ( filename ) , undefined , text ) ;
41+ } ) ,
42+ } ) ;
43+ const languageId = [ 'vue' ] ;
44+ const getSyncUris = ( ) => Object . keys ( store . state . files ) . map ( filename => Uri . parse ( `file:///${ filename } ` ) ) ;
45+ volar . editor . activateMarkers ( worker , languageId , 'vue' , getSyncUris , editor ) ;
46+ volar . editor . activateAutoInsertion ( worker , languageId , getSyncUris , editor ) ;
47+ volar . languages . registerProvides ( worker , languageId , getSyncUris , languages ) ;
3348 } )
34- }
49+ }
0 commit comments