MCPcopy Create free account
hub / github.com/Alphanimble/htmlstream / renderMath

Function renderMath

demo/render-math.ts:20–53  ·  view source on GitHub ↗
(root: HTMLElement, streaming = false)

Source from the content-addressed store, hash-verified

18
19/** Typeset [data-latex] elements; incomplete formulas keep a stable placeholder. */
20export function renderMath(root: HTMLElement, streaming = false): void {
21 root.querySelectorAll("[data-latex]").forEach((el) => {
22 if (!(el instanceof HTMLElement)) return;
23
24 const latex = el.getAttribute("data-latex");
25 if (!latex?.trim()) return;
26
27 const display =
28 el.classList.contains("math-block") ||
29 el.getAttribute("data-display") === "true";
30
31 if (streaming && !isLatexReady(latex)) {
32 if (!el.dataset.katexPlaceholder) {
33 el.innerHTML = "";
34 el.dataset.katexPlaceholder = "1";
35 }
36 return;
37 }
38
39 if (el.dataset.katexSrc === latex) return;
40
41 try {
42 katex.render(latex, el, {
43 displayMode: display,
44 throwOnError: false,
45 strict: "ignore",
46 });
47 el.dataset.katexSrc = latex;
48 delete el.dataset.katexPlaceholder;
49 } catch {
50 // retry next chunk
51 }
52 });
53}

Callers 1

AppFunction · 0.90

Calls 1

isLatexReadyFunction · 0.85

Tested by

no test coverage detected