/** * Bundles Monaco with the application instead of the default CDN loader, so * ori keeps working without internet access. Imported only by MonacoViewer, * which is itself lazy-loaded: none of this weight reaches the initial * bundle. */ import { loader } from "@monaco-editor/react"; import * as monaco from "monaco-editor"; import editorWorker from "monaco-editor/editor/editor.worker.js?worker"; import cssWorker from "monaco-editor/language/css/css.worker.js?worker"; import htmlWorker from "monaco-editor/language/html/html.worker.js?worker"; import jsonWorker from "monaco-editor/language/json/json.worker.js?worker"; import tsWorker from "monaco-editor/language/typescript/ts.worker.js?worker"; self.MonacoEnvironment = { getWorker(_workerId: string, label: string) { switch (label) { case "json": return new jsonWorker(); case "css": case "scss": case "less": return new cssWorker(); case "html": case "handlebars": case "razor": return new htmlWorker(); case "typescript": case "javascript": return new tsWorker(); default: return new editorWorker(); } }, }; loader.config({ monaco });