Spaces:
Paused
Paused
| import 'monaco-editor/esm/vs/editor/editor.all' | |
| import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' | |
| import { initialize as initializeMonacoService } from 'vscode/services' | |
| import { | |
| registerExtension, | |
| initialize as initializeVscodeExtensions, | |
| } from 'vscode/extensions' | |
| import getDialogsServiceOverride from 'vscode/service-override/dialogs' | |
| import getConfigurationServiceOverride from 'vscode/service-override/configuration' | |
| import getTextmateServiceOverride from 'vscode/service-override/textmate' | |
| import getThemeServiceOverride from 'vscode/service-override/theme' | |
| import getLanguagesServiceOverride from 'vscode/service-override/languages' | |
| window.MonacoEnvironment = { | |
| getWorker: async function (moduleId, label) { | |
| switch (label) { | |
| case 'editorWorkerService': | |
| return new Worker( | |
| new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url) | |
| ) | |
| case 'css': | |
| case 'less': | |
| case 'scss': | |
| return new Worker( | |
| new URL( | |
| 'monaco-editor/esm/vs/language/css/css.worker', | |
| import.meta.url | |
| ) | |
| ) | |
| case 'handlebars': | |
| case 'html': | |
| case 'razor': | |
| return new Worker( | |
| new URL( | |
| 'monaco-editor/esm/vs/language/html/html.worker', | |
| import.meta.url | |
| ) | |
| ) | |
| case 'json': | |
| return new Worker( | |
| new URL( | |
| 'monaco-editor/esm/vs/language/json/json.worker', | |
| import.meta.url | |
| ) | |
| ) | |
| case 'javascript': | |
| case 'typescript': | |
| return new Worker( | |
| new URL( | |
| 'monaco-editor/esm/vs/language/typescript/ts.worker', | |
| import.meta.url | |
| ) | |
| ) | |
| default: | |
| throw new Error(`Unimplemented worker ${label} (${moduleId})`) | |
| } | |
| }, | |
| } | |
| initializeMonacoService({ | |
| ...getDialogsServiceOverride(), | |
| ...getConfigurationServiceOverride(monaco.Uri.file('/')), | |
| ...getTextmateServiceOverride(), | |
| ...getThemeServiceOverride(), | |
| ...getLanguagesServiceOverride(), | |
| }).then(async () => { | |
| await initializeVscodeExtensions() | |
| const defaultThemesExtensions = { | |
| name: 'themes', | |
| publisher: 'next-monaco', | |
| version: '0.0.0', | |
| engines: { | |
| vscode: '*', | |
| }, | |
| contributes: { | |
| themes: [ | |
| { | |
| id: 'Next Monaco', | |
| label: 'Next Monaco', | |
| uiTheme: 'vs-dark', | |
| path: './next-monaco.json', | |
| }, | |
| ], | |
| }, | |
| } | |
| const { registerFile: registerDefaultThemeExtensionFile } = registerExtension( | |
| defaultThemesExtensions | |
| ) | |
| registerDefaultThemeExtensionFile( | |
| './next-monaco.json', | |
| async () => process.env.MONACO_THEME | |
| ) | |
| monaco.editor.setTheme('Next Monaco') | |
| const extension = { | |
| name: 'grammars', | |
| publisher: 'next-monaco', | |
| version: '0.0.0', | |
| engines: { | |
| vscode: '*', | |
| }, | |
| contributes: { | |
| languages: [ | |
| { | |
| id: 'typescript', | |
| extensions: ['.ts', '.tsx'], | |
| aliases: ['TypeScript', 'ts', 'typescript'], | |
| }, | |
| ], | |
| grammars: [ | |
| { | |
| language: 'typescript', | |
| scopeName: 'source.ts', | |
| path: './TypeScript.tmLanguage.json', | |
| }, | |
| ], | |
| }, | |
| } | |
| const { registerFile: registerExtensionFile } = registerExtension(extension) | |
| registerExtensionFile('./TypeScript.tmLanguage.json', async () => | |
| JSON.stringify( | |
| (await import('./TypeScript.tmLanguage.json')).default as any | |
| ) | |
| ) | |
| }) | |