From 82b597ab8b7dc2ba871a66f00616284cb4e0dfd0 Mon Sep 17 00:00:00 2001 From: "Daniel J. Geiger" <1852529+DanielJGeiger@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:19:06 -0600 Subject: [PATCH] fix: Catch MathML errors and render the "ERR" block instead. --- .../extensions/ts/mathjax/implementation.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/packages/extensions/ts/mathjax/implementation.tsx b/src/packages/extensions/ts/mathjax/implementation.tsx index 99c177594..b64dea3c6 100644 --- a/src/packages/extensions/ts/mathjax/implementation.tsx +++ b/src/packages/extensions/ts/mathjax/implementation.tsx @@ -443,13 +443,25 @@ const math2Svg = ( : mathJax.amHtml.convert(text, userOptions), ) : text; + let mmlError = false; + if (isMathJaxLoaded) { + const errDiv = document.createElement("div"); + errDiv.innerHTML = mmlString; + mmlError = + errDiv.children[0].children.length > 0 && + errDiv.children[0].children[0].nodeName === "merror"; + } // For rendering const htmlString = isMathJaxLoaded - ? mathJax.adaptor.outerHTML(mathJax.mmlSvg.convert(mmlString)) + ? mmlError + ? errorSvg + : mathJax.adaptor.outerHTML(mathJax.mmlSvg.convert(mmlString)) : text; // For accessibility const ariaString = isMathJaxLoaded - ? useSRE + ? mmlError + ? errorAria + : useSRE ? mathJax.mmlSre.toSpeech(mmlString) : text : mmlString;