From b4f80c3be20ac4efa897eb233c9f9c65e78b7a18 Mon Sep 17 00:00:00 2001 From: Timothy Carambat <rambat1010@gmail.com> Date: Wed, 7 Aug 2024 10:27:21 -0700 Subject: [PATCH] Add support for markdown/math equations (#2062) --- frontend/package.json | 1 + frontend/src/index.css | 9 +++++++++ frontend/src/utils/chat/markdown.js | 3 ++- frontend/yarn.lock | 19 +++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index fa40e7b33..3640e9ee5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -24,6 +24,7 @@ "js-levenshtein": "^1.1.6", "lodash.debounce": "^4.0.8", "markdown-it": "^13.0.1", + "markdown-it-katex": "^2.0.3", "moment": "^2.30.1", "pluralize": "^8.0.0", "react": "^18.2.0", diff --git a/frontend/src/index.css b/frontend/src/index.css index 94b30bdf7..25504d0d0 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -794,3 +794,12 @@ does not extend the close button beyond the viewport. */ top: -3.5rem; } } + +/* Math/Katex formatting to prevent duplication of content on screen */ +.katex-html[aria-hidden="true"] { + display: none; +} + +.katex-mathml { + font-size: 20px; +} diff --git a/frontend/src/utils/chat/markdown.js b/frontend/src/utils/chat/markdown.js index ae1db23cb..77004491d 100644 --- a/frontend/src/utils/chat/markdown.js +++ b/frontend/src/utils/chat/markdown.js @@ -1,5 +1,6 @@ import { encode as HTMLEncode } from "he"; import markdownIt from "markdown-it"; +import markdownItKatex from "markdown-it-katex"; import hljs from "highlight.js"; import "highlight.js/styles/github-dark-dimmed.min.css"; import { v4 } from "uuid"; @@ -43,7 +44,7 @@ const markdown = markdownIt({ "</pre></div>" ); }, -}); +}).use(markdownItKatex); export default function renderMarkdown(text = "") { return markdown.render(text); diff --git a/frontend/yarn.lock b/frontend/yarn.lock index c17e1585d..0f62957b1 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2347,6 +2347,13 @@ json5@^2.2.3: object.assign "^4.1.4" object.values "^1.1.6" +katex@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.6.0.tgz#12418e09121c05c92041b6b3b9fb6bab213cb6f3" + integrity sha512-rS4mY3SvHYg5LtQV6RBcK0if7ur6plyEukAOV+jGGPqFImuzu8fHL6M752iBmRGoUyF0bhZbAPoezehn7xYksA== + dependencies: + match-at "^0.1.0" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -2425,6 +2432,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +markdown-it-katex@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/markdown-it-katex/-/markdown-it-katex-2.0.3.tgz#d7b86a1aea0b9d6496fab4e7919a18fdef589c39" + integrity sha512-nUkkMtRWeg7OpdflamflE/Ho/pWl64Lk9wNBKOmaj33XkQdumhXAIYhI0WO03GeiycPCsxbmX536V5NEXpC3Ng== + dependencies: + katex "^0.6.0" + markdown-it@^13.0.1: version "13.0.2" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" @@ -2436,6 +2450,11 @@ markdown-it@^13.0.1: mdurl "^1.0.1" uc.micro "^1.0.5" +match-at@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" + integrity sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q== + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" -- GitLab