chore: updated monaco and tools to update monaco

This commit is contained in:
2026-07-02 12:50:03 +02:00
parent e7d5cba01b
commit ef6c970654
139 changed files with 246442 additions and 71612 deletions

View File

@@ -0,0 +1,35 @@
// 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

@@ -1,4 +1,3 @@
import { loadScript } from "../utils/script_loader.js";
import { ensureMonacoTheme } from "./theme.js";
import { registerLiquidLanguage, registerMarkdownWithMacrosLanguage } from "./languages.js";
@@ -17,20 +16,17 @@ export const loadMonaco = () => {
return monacoLoaderPromise;
}
monacoLoaderPromise = loadScript("/monaco/vs/loader.js")
.then(
() =>
new Promise((resolve, reject) => {
window.require.config({ paths: { vs: "/monaco/vs" } });
window.require(["vs/editor/editor.main"], () => {
ensureMonacoTheme(window.monaco);
registerLiquidLanguage(window.monaco);
registerMarkdownWithMacrosLanguage(window.monaco);
resolve(window.monaco);
}, reject);
})
)
monacoLoaderPromise = import("/assets/monaco.js")
.then((monaco) => {
window.monaco = monaco;
if (!monaco.editor) throw new Error("Monaco loaded but monaco.editor is missing");
ensureMonacoTheme(monaco);
registerLiquidLanguage(monaco);
registerMarkdownWithMacrosLanguage(monaco);
return monaco;
})
.catch((error) => {
console.error("Monaco load failed:", error);
monacoLoaderPromise = null;
throw error;
});

View File

@@ -0,0 +1,3 @@
// ESM entry point for Monaco. Bundled by esbuild into priv/static/assets/monaco.js
// editor.main.js loads the API AND registers all bundled languages (api.js only exposes the API)
export * from "monaco-editor/esm/vs/editor/editor.main.js";

View File

@@ -1,33 +0,0 @@
export const loadScript = (src) =>
new Promise((resolve, reject) => {
const existing = document.querySelector(`script[src="${src}"]`);
if (existing) {
if (existing.dataset.loaded === "true") {
resolve();
return;
}
existing.addEventListener("load", () => resolve(), { once: true });
existing.addEventListener("error", () => reject(new Error(`Failed to load ${src}`)), {
once: true
});
return;
}
const script = document.createElement("script");
script.src = src;
script.async = true;
script.addEventListener(
"load",
() => {
script.dataset.loaded = "true";
resolve();
},
{ once: true }
);
script.addEventListener("error", () => reject(new Error(`Failed to load ${src}`)), {
once: true
});
document.head.appendChild(script);
});