fix: workover of the monaco update

This commit is contained in:
2026-07-02 14:14:31 +02:00
parent ef6c970654
commit c07ba9a4d8
27 changed files with 69078 additions and 245377 deletions

View File

@@ -1,35 +0,0 @@
// App-wide error reporter — catches JS errors and displays them as an overlay.
// Enables debugging in WKWebView where devtools are unavailable.
(function () {
const overlay = document.createElement("div");
overlay.id = "error-reporter";
overlay.style.cssText =
"position:fixed;bottom:0;left:0;right:0;max-height:200px;overflow:auto;background:#1a1a2e;color:#f0f0f0;font:12px monospace;padding:8px 12px;border-top:2px solid #e74c3c;z-index:99999;display:none;";
overlay.innerHTML = '<strong style="color:#e74c3c">⚠ JS Errors</strong><pre id="error-reporter-log"></pre>';
document.body.appendChild(overlay);
const log = document.getElementById("error-reporter-log");
const append = (msg) => {
overlay.style.display = "block";
log.textContent += msg + "\n";
overlay.scrollTop = overlay.scrollHeight;
};
window.addEventListener("error", (e) => {
const src = e.filename || "";
const loc = e.lineno !== undefined ? `:${e.lineno}` : "";
append(`[${new Date().toLocaleTimeString()}] ${e.message || e.error}\n at ${src}${loc}`);
});
window.addEventListener("unhandledrejection", (e) => {
append(`[${new Date().toLocaleTimeString()}] Unhandled rejection: ${e.reason}`);
});
// Also wrap console.error to catch Monaco errors
const origError = console.error;
console.error = (...args) => {
origError.apply(console, args);
append(`[${new Date().toLocaleTimeString()}] ${args.join(" ")}`);
};
})();

View File

@@ -4,7 +4,51 @@ import { registerLiquidLanguage, registerMarkdownWithMacrosLanguage } from "./la
let monacoLoaderPromise;
const monacoEditors = new Map();
const monacoWorkerUrls = {
editor: "/assets/monaco/editor.worker.js",
css: "/assets/monaco/css.worker.js",
html: "/assets/monaco/html.worker.js",
json: "/assets/monaco/json.worker.js",
ts: "/assets/monaco/ts.worker.js"
};
const workerNameForLanguage = (label) => {
switch (label) {
case "css":
case "scss":
case "less":
return "css";
case "html":
case "handlebars":
case "razor":
return "html";
case "json":
return "json";
case "typescript":
case "javascript":
return "ts";
default:
return "editor";
}
};
const ensureMonacoEnvironment = () => {
if (globalThis.MonacoEnvironment?.getWorker) {
return;
}
globalThis.MonacoEnvironment = {
...globalThis.MonacoEnvironment,
getWorker(_workerId, label) {
const workerName = workerNameForLanguage(label);
return new Worker(monacoWorkerUrls[workerName], { name: label, type: "module" });
}
};
};
export const loadMonaco = () => {
ensureMonacoEnvironment();
if (window.monaco?.editor) {
ensureMonacoTheme(window.monaco);
registerLiquidLanguage(window.monaco);

View File

@@ -0,0 +1 @@
import "monaco-editor/esm/vs/language/css/css.worker.js";

View File

@@ -0,0 +1 @@
import "monaco-editor/esm/vs/editor/editor.worker.js";

View File

@@ -0,0 +1 @@
import "monaco-editor/esm/vs/language/html/html.worker.js";

View File

@@ -0,0 +1 @@
import "monaco-editor/esm/vs/language/json/json.worker.js";

View File

@@ -0,0 +1 @@
import "monaco-editor/esm/vs/language/typescript/ts.worker.js";