vue-renderer-markdown
Version:
Vue 3 Markdown renderer optimized for large docs: progressive Mermaid, streaming diff code blocks, and fast real-time preview.
55 lines (54 loc) • 1.71 kB
JavaScript
import katex from "katex";
let DEBUG = false;
globalThis.addEventListener("message", (ev) => {
var _a, _b, _c, _d;
const data = ev.data || {};
if (data.type === "init") {
DEBUG = !!data.debug;
try {
if (DEBUG)
console.debug("[katexRenderer.worker] debug enabled");
} catch (e) {
}
return;
}
const id = (_a = data.id) != null ? _a : "";
const content = (_b = data.content) != null ? _b : "";
const displayMode = (_c = data.displayMode) != null ? _c : true;
try {
if (DEBUG)
console.debug("[katexRenderer.worker] render start", { id, displayMode, content });
const html = katex.renderToString(content, {
throwOnError: true,
displayMode,
output: "html",
strict: "ignore"
});
const out = { id, html, content, displayMode };
try {
;
globalThis.postMessage(out);
if (DEBUG)
console.debug("[katexRenderer.worker] render success", { id });
} catch (postErr) {
console.error("[katexRenderer.worker] failed to postMessage result", postErr);
}
} catch (err) {
const out = { id, error: String((_d = err == null ? void 0 : err.message) != null ? _d : err), content, displayMode };
try {
;
globalThis.postMessage(out);
} catch (postErr) {
console.error("[katexRenderer.worker] failed to postMessage error", postErr);
}
}
});
globalThis.addEventListener("error", (ev) => {
var _a;
console.error("[katexRenderer.worker] uncaught error", ev.message, ev.error);
try {
;
globalThis.postMessage({ id: "__worker_uncaught__", error: String((_a = ev.message) != null ? _a : ev.error), content: "", displayMode: true });
} catch (e) {
}
});