From cd5f25469ef9705e5fdf459d063be526258eae57 Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Mon, 27 Oct 2025 11:21:03 +0000 Subject: [PATCH] MathJax Problems with font cors (I'm shocked that using the import with the .js worked without a hitch O_O) --- ts/reviewer/index.ts | 2 +- ts/routes/reviewer-inner/index.ts | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ts/reviewer/index.ts b/ts/reviewer/index.ts index d0370cbc9..63771f0b0 100644 --- a/ts/reviewer/index.ts +++ b/ts/reviewer/index.ts @@ -104,7 +104,7 @@ async function setInnerHTML(element: Element, html: string): Promise { } } -const renderError = (type: string) => (error: unknown): string => { +export const renderError = (type: string) => (error: unknown): string => { const errorMessage = String(error).substring(0, 2000); let errorStack: string; if (error instanceof Error) { diff --git a/ts/routes/reviewer-inner/index.ts b/ts/routes/reviewer-inner/index.ts index 5304cb344..091dcf696 100644 --- a/ts/routes/reviewer-inner/index.ts +++ b/ts/routes/reviewer-inner/index.ts @@ -2,15 +2,18 @@ // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import "../base.scss"; import "../../reviewer/reviewer.scss"; +import "mathjax/es5/tex-chtml-full.js"; +import { renderError } from "../../reviewer"; import { enableNightMode } from "../reviewer/reviewer"; import type { InnerReviewerRequest } from "./reviewerRequest"; +declare const MathJax: any; const urlParams = new URLSearchParams(location.search); const style = document.createElement("style"); document.head.appendChild(style); -addEventListener("message", (e: MessageEvent) => { +addEventListener("message", async (e: MessageEvent) => { switch (e.data.type) { case "html": { document.body.innerHTML = e.data.value; @@ -26,6 +29,17 @@ addEventListener("message", (e: MessageEvent) => { document.body.classList.add("nightMode"); } } + + // wait for mathjax to ready + await MathJax.startup.promise + .then(() => { + // clear MathJax buffers from previous typesets + MathJax.typesetClear(); + + return MathJax.typesetPromise([document.body]); + }) + .catch(renderError("MathJax")); + break; } default: {