modern-monaco 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -4
- package/dist/{cache.js → cache.mjs} +1 -1
- package/dist/{core.js → core.mjs} +23 -46
- package/dist/{editor-core.js → editor-core.mjs} +108795 -88348
- package/dist/editor-worker-main.mjs +5 -0
- package/dist/{editor-worker.js → editor-worker.mjs} +5854 -4779
- package/dist/{index.js → index.mjs} +17 -15
- package/dist/lsp/css/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/css/{worker.js → worker.mjs} +18 -23
- package/dist/lsp/html/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/html/{worker.js → worker.mjs} +18 -23
- package/dist/lsp/json/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/json/{worker.js → worker.mjs} +19 -24
- package/dist/lsp/{language-service.js → language-service.mjs} +7 -7
- package/dist/lsp/typescript/{setup.js → setup.mjs} +22 -15
- package/dist/lsp/typescript/{worker.js → worker.mjs} +22 -26
- package/dist/{shiki-wasm.js → shiki-wasm.mjs} +1 -1
- package/dist/{shiki.js → shiki.mjs} +13 -10
- package/dist/ssr/{index.js → index.mjs} +4 -4
- package/dist/ssr/{workerd.js → workerd.mjs} +3 -3
- package/dist/{workspace.js → workspace.mjs} +16 -12
- package/package.json +19 -19
- package/types/core.d.ts +1 -1
- package/types/index.d.ts +1 -1
- package/types/lsp.d.ts +2 -5
- package/types/monaco.d.ts +652 -278
- package/types/workspace.d.ts +5 -1
- /package/dist/lsp/typescript/{libs.js → libs.mjs} +0 -0
- /package/dist/{util.js → util.mjs} +0 -0
package/README.md
CHANGED
|
@@ -93,7 +93,7 @@ export default {
|
|
|
93
93
|
},
|
|
94
94
|
);
|
|
95
95
|
return new Response(
|
|
96
|
-
/* html
|
|
96
|
+
/* html */ `
|
|
97
97
|
${editorHTML}
|
|
98
98
|
<script type="module">
|
|
99
99
|
import { hydrate } from "https://esm.sh/modern-monaco";
|
|
@@ -337,8 +337,6 @@ export interface LSPLanguageConfig {
|
|
|
337
337
|
compilerOptions?: ts.CompilerOptions;
|
|
338
338
|
/** The global import map. */
|
|
339
339
|
importMap?: ImportMap;
|
|
340
|
-
/** The version of TypeScript from the CDN. Default: ">= 5.0.0" */
|
|
341
|
-
tsVersion?: string;
|
|
342
340
|
};
|
|
343
341
|
}
|
|
344
342
|
```
|
|
@@ -348,7 +346,7 @@ export interface LSPLanguageConfig {
|
|
|
348
346
|
modern-monaco uses [import maps](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap) to resolve **bare specifier** imports in JavaScript/TypeScript. By default, modern-monaco detects the `importmap` from the root `index.html` in the workspace.
|
|
349
347
|
|
|
350
348
|
```js
|
|
351
|
-
const indexHtml = /* html
|
|
349
|
+
const indexHtml = /* html */ `<!DOCTYPE html>
|
|
352
350
|
<html>
|
|
353
351
|
<head>
|
|
354
352
|
<script type="importmap">
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
// src/lsp/index.ts
|
|
2
|
-
function createWebWorker(url, name) {
|
|
3
|
-
let workerUrl = url;
|
|
4
|
-
if (url.origin !== location.origin) {
|
|
5
|
-
workerUrl = URL.createObjectURL(new Blob([`import "${url.href}"`], { type: "application/javascript" }));
|
|
6
|
-
}
|
|
7
|
-
return new Worker(workerUrl, {
|
|
8
|
-
type: "module",
|
|
9
|
-
name: name ?? url.pathname.slice(1).split("/").slice(-2).join("/")
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
1
|
// src/core.ts
|
|
14
|
-
import { getExtnameFromLanguageId, getLanguageIdFromPath, grammars, initShiki, setDefaultWasmLoader, themes } from "./shiki.
|
|
15
|
-
import { initShikiMonacoTokenizer, registerShikiMonacoTokenizer } from "./shiki.
|
|
16
|
-
import { render } from "./shiki.
|
|
17
|
-
import { getWasmInstance } from "./shiki-wasm.
|
|
18
|
-
import { ErrorNotFound, Workspace } from "./workspace.
|
|
2
|
+
import { getExtnameFromLanguageId, getLanguageIdFromPath, grammars, initShiki, setDefaultWasmLoader, themes } from "./shiki.mjs";
|
|
3
|
+
import { initShikiMonacoTokenizer, registerShikiMonacoTokenizer } from "./shiki.mjs";
|
|
4
|
+
import { render } from "./shiki.mjs";
|
|
5
|
+
import { getWasmInstance } from "./shiki-wasm.mjs";
|
|
6
|
+
import { ErrorNotFound, Workspace } from "./workspace.mjs";
|
|
19
7
|
|
|
20
8
|
// src/util.ts
|
|
21
9
|
var dec = /* @__PURE__ */ new TextDecoder();
|
|
@@ -48,7 +36,7 @@ function promiseWithResolvers() {
|
|
|
48
36
|
}
|
|
49
37
|
|
|
50
38
|
// src/core.ts
|
|
51
|
-
import { init as initLS } from "./lsp/language-service.
|
|
39
|
+
import { init as initLS } from "./lsp/language-service.mjs";
|
|
52
40
|
var editorProps = [
|
|
53
41
|
"autoDetectHighContrast",
|
|
54
42
|
"automaticLayout",
|
|
@@ -84,7 +72,7 @@ var errors = {
|
|
|
84
72
|
NotFound: ErrorNotFound
|
|
85
73
|
};
|
|
86
74
|
var syntaxes = [];
|
|
87
|
-
var
|
|
75
|
+
var lspProviders = {};
|
|
88
76
|
var { promise: editorWorkerPromise, resolve: onDidEditorWorkerResolve } = promiseWithResolvers();
|
|
89
77
|
var attr = (el, name) => el.getAttribute(name);
|
|
90
78
|
var style = (el, style2) => Object.assign(el.style, style2);
|
|
@@ -256,7 +244,7 @@ async function lazy(options) {
|
|
|
256
244
|
}
|
|
257
245
|
}
|
|
258
246
|
async function createEditor() {
|
|
259
|
-
const monaco = await (monacoPromise ?? (monacoPromise = loadMonaco(highlighter, workspace, options?.lsp
|
|
247
|
+
const monaco = await (monacoPromise ?? (monacoPromise = loadMonaco(highlighter, workspace, options?.lsp)));
|
|
260
248
|
const editor = monaco.editor.create(containerEl, renderOptions);
|
|
261
249
|
if (workspace) {
|
|
262
250
|
const storeViewState = () => {
|
|
@@ -334,42 +322,31 @@ async function lazy(options) {
|
|
|
334
322
|
function hydrate(options) {
|
|
335
323
|
return lazy(options);
|
|
336
324
|
}
|
|
337
|
-
async function loadMonaco(highlighter, workspace, lsp
|
|
338
|
-
const monaco = await import("./editor-core.
|
|
339
|
-
const
|
|
325
|
+
async function loadMonaco(highlighter, workspace, lsp) {
|
|
326
|
+
const monaco = await import("./editor-core.mjs");
|
|
327
|
+
const lspProviderMap = { ...lspProviders, ...lsp?.providers };
|
|
340
328
|
workspace?.setupMonaco(monaco);
|
|
341
|
-
if (Object.keys(
|
|
329
|
+
if (Object.keys(lspProviderMap).length > 0) {
|
|
342
330
|
initLS(monaco);
|
|
343
331
|
}
|
|
344
332
|
if (!document.getElementById("monaco-editor-core-css")) {
|
|
345
333
|
const styleEl = document.createElement("style");
|
|
346
334
|
styleEl.id = "monaco-editor-core-css";
|
|
347
335
|
styleEl.media = "screen";
|
|
348
|
-
styleEl.textContent = monaco.
|
|
336
|
+
styleEl.textContent = monaco.cssBundle;
|
|
349
337
|
document.head.appendChild(styleEl);
|
|
350
338
|
}
|
|
351
339
|
Reflect.set(globalThis, "MonacoEnvironment", {
|
|
352
340
|
getWorker: async (_workerId, label) => {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
provider = Object.values(lspProviders).find((p) => p.aliases?.includes(label));
|
|
356
|
-
}
|
|
357
|
-
const url = provider ? (await provider.import()).getWorkerUrl() : monaco.getWorkerUrl();
|
|
358
|
-
if (label === "typescript") {
|
|
359
|
-
const tsVersion = lsp?.typescript?.tsVersion;
|
|
360
|
-
if (tsVersion && (url.hostname === "esm.sh" || url.hostname.endsWith(".esm.sh"))) {
|
|
361
|
-
url.searchParams.set("deps", `typescript@${tsVersion}`);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
const worker = createWebWorker(url, void 0);
|
|
365
|
-
if (!provider) {
|
|
341
|
+
if (label === "editorWorkerService") {
|
|
342
|
+
const worker = monaco.createEditorWorkerMain();
|
|
366
343
|
const onMessage = (e) => {
|
|
367
|
-
onDidEditorWorkerResolve2?.();
|
|
368
344
|
worker.removeEventListener("message", onMessage);
|
|
345
|
+
onDidEditorWorkerResolve();
|
|
369
346
|
};
|
|
370
347
|
worker.addEventListener("message", onMessage);
|
|
348
|
+
return worker;
|
|
371
349
|
}
|
|
372
|
-
return worker;
|
|
373
350
|
},
|
|
374
351
|
getLanguageIdFromUri: (uri) => getLanguageIdFromPath(uri.path),
|
|
375
352
|
getExtnameFromLanguageId
|
|
@@ -444,23 +421,23 @@ async function loadMonaco(highlighter, workspace, lsp, onDidEditorWorkerResolve2
|
|
|
444
421
|
}
|
|
445
422
|
registerShikiMonacoTokenizer(monaco, highlighter, id);
|
|
446
423
|
let lspLabel = id;
|
|
447
|
-
let lspProvider =
|
|
424
|
+
let lspProvider = lspProviderMap[lspLabel];
|
|
448
425
|
if (!lspProvider) {
|
|
449
|
-
const alias = Object.entries(
|
|
426
|
+
const alias = Object.entries(lspProviderMap).find(([, lsp2]) => lsp2.aliases?.includes(id));
|
|
450
427
|
if (alias) {
|
|
451
428
|
[lspLabel, lspProvider] = alias;
|
|
452
429
|
}
|
|
453
430
|
}
|
|
454
431
|
if (lspProvider) {
|
|
455
|
-
lspProvider.import().then(({ setup }) => setup(monaco, id,
|
|
432
|
+
lspProvider.import().then(({ setup }) => setup(monaco, id, lsp?.[lspLabel], lsp?.formatting, workspace));
|
|
456
433
|
}
|
|
457
434
|
});
|
|
458
435
|
});
|
|
459
436
|
initShikiMonacoTokenizer(monaco, highlighter);
|
|
460
437
|
return monaco;
|
|
461
438
|
}
|
|
462
|
-
function registerSyntax(
|
|
463
|
-
|
|
439
|
+
function registerSyntax(syntax) {
|
|
440
|
+
syntaxes.push(syntax);
|
|
464
441
|
}
|
|
465
442
|
function registerTheme(theme) {
|
|
466
443
|
if (theme.name) {
|
|
@@ -468,7 +445,7 @@ function registerTheme(theme) {
|
|
|
468
445
|
}
|
|
469
446
|
}
|
|
470
447
|
function registerLSPProvider(lang, provider) {
|
|
471
|
-
|
|
448
|
+
lspProviders[lang] = provider;
|
|
472
449
|
}
|
|
473
450
|
setDefaultWasmLoader(getWasmInstance);
|
|
474
451
|
export {
|