UNPKG

markstream-vue

Version:

Vue 3 Markdown renderer optimized for large docs: progressive Mermaid, streaming diff code blocks, and fast real-time preview.

93 lines (92 loc) 2.63 kB
var p = (n, e) => () => (e || n((e = { exports: {} }).exports, e), e.exports); var d = (n, e, a) => new Promise((t, i) => { var r = (o) => { try { s(a.next(o)); } catch (l) { i(l); } }, c = (o) => { try { s(a.throw(o)); } catch (l) { i(l); } }, s = (o) => o.done ? t(o.value) : Promise.resolve(o.value).then(r, c); s((a = a.apply(n, e)).next()); }); import h from "mermaid"; var b = p((m) => { h.initialize({ startOnLoad: !1, securityLevel: "loose" }); function w(n, e) { const t = `%%{init: {"theme": "${e === "dark" ? "dark" : "default"}"}}%% `; return n.trimStart().startsWith("%%{") ? n : t + n; } function y(n) { const e = /^(?:graph|flowchart|flowchart\s+tb|flowchart\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\b/; for (let a = 0; a < n.length; a++) { const t = n[a].trim(); if (t && !t.startsWith("%%") && e.test(t)) return a; } return -1; } function u(n, e) { return d(this, null, function* () { var i; const a = w(n, e), t = h; if (typeof t.parse == "function") return yield (i = t.parse) == null ? void 0 : i.call(t, a), !0; throw new Error("mermaid.parse not available in worker"); }); } function k(n, e) { return d(this, null, function* () { const a = n.split(` `), t = y(a); if (t === -1) return null; const i = a.slice(0, t + 1); yield u(i.join(` `), e); let r = t + 1, c = a.length, s = t + 1, o = 0; const l = 12; for (; r <= c && o < l; ) { const f = Math.floor((r + c) / 2), g = [...i, ...a.slice(t + 1, f)].join(` `); o++; try { yield u(g, e), s = f, r = f + 1; } catch (j) { c = f - 1; } } return [...i, ...a.slice(t + 1, s)].join(` `); }); } self.onmessage = (n) => d(null, null, function* () { var i; const e = n.data, a = (r) => self.postMessage(r), t = e.id; try { if (e.action === "canParse") { const r = yield u(e.payload.code, e.payload.theme); a({ id: t, ok: !0, result: r }); return; } if (e.action === "findPrefix") { const r = yield k( e.payload.code, e.payload.theme ); a({ id: t, ok: !0, result: r }); return; } a({ id: t, ok: !1, error: "Unknown action" }); } catch (r) { a({ id: t, ok: !1, error: (i = r == null ? void 0 : r.message) != null ? i : String(r) }); } }); }); export default b();