refactor(monaco): wip: update to load with vite worker support
This commit is contained in:
@@ -4,7 +4,7 @@ import { Registry, RegistryItem } from '../utils/Registry';
|
||||
* @alpha
|
||||
*/
|
||||
export interface MonacoLanguageRegistryItem extends RegistryItem {
|
||||
init: () => Worker;
|
||||
init: () => string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,32 +1,41 @@
|
||||
import { monacoLanguageRegistry } from '@grafana/data';
|
||||
import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
|
||||
// TODO: vite - handle CORs with webworkers
|
||||
// import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
|
||||
|
||||
export function setMonacoEnv() {
|
||||
self.MonacoEnvironment = {
|
||||
getWorker(_moduleId, label) {
|
||||
const getWorkerModule = (moduleUrl, label) => {
|
||||
return new Worker(self.MonacoEnvironment.getWorkerUrl(moduleUrl), {
|
||||
name: label,
|
||||
type: 'module',
|
||||
});
|
||||
};
|
||||
|
||||
const language = monacoLanguageRegistry.getIfExists(label);
|
||||
|
||||
if (language) {
|
||||
return language.init();
|
||||
const moduleUrl = language.init();
|
||||
return getWorkerModule(moduleUrl, label);
|
||||
}
|
||||
|
||||
if (label === 'json') {
|
||||
return new Worker(new URL('monaco-editor/esm/vs/language/json/json.worker', import.meta.url));
|
||||
return getWorkerModule('/monaco-editor/esm/vs/language/json/json.worker?worker', label);
|
||||
}
|
||||
|
||||
if (label === 'css' || label === 'scss' || label === 'less') {
|
||||
return new Worker(new URL('monaco-editor/esm/vs/language/css/css.worker', import.meta.url));
|
||||
return getWorkerModule('/monaco-editor/esm/vs/language/css/css.worker?worker', label);
|
||||
}
|
||||
|
||||
if (label === 'html' || label === 'handlebars' || label === 'razor') {
|
||||
return new Worker(new URL('monaco-editor/esm/vs/language/html/html.worker', import.meta.url));
|
||||
return getWorkerModule('/monaco-editor/esm/vs/language/html/html.worker?worker', label);
|
||||
}
|
||||
|
||||
if (label === 'typescript' || label === 'javascript') {
|
||||
return new Worker(new URL('monaco-editor/esm/vs/language/typescript/ts.worker', import.meta.url));
|
||||
return getWorkerModule('/monaco-editor/esm/vs/language/typescript/ts.worker?worker', label);
|
||||
}
|
||||
|
||||
return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url));
|
||||
return getWorkerModule('/monaco-editor/esm/vs/editor/editor.worker?worker', label);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
|
||||
|
||||
export default function loadKusto() {
|
||||
return new Worker(new URL('@kusto/monaco-kusto/release/esm/kusto.worker', import.meta.url));
|
||||
return '@kusto/monaco-kusto/release/esm/kusto.worker?worker';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user