From 92249a15f9f023fcd68257e943cf10be556a9442 Mon Sep 17 00:00:00 2001 From: moshibar <25570708+MoshiBar@users.noreply.github.com> Date: Mon, 27 Nov 2023 13:07:28 -0600 Subject: [PATCH] KaTeX support --- packages/frontend/package.json | 1 + .../frontend/src/components/MkFormula.vue | 25 +++++++++++++ .../frontend/src/components/MkFormulaCore.vue | 36 +++++++++++++++++++ .../global/MkMisskeyFlavoredMarkdown.ts | 21 ++++++++--- pnpm-lock.yaml | 3 ++ 5 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 packages/frontend/src/components/MkFormula.vue create mode 100644 packages/frontend/src/components/MkFormulaCore.vue diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 071a8cfa8..8f9eb5545 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -51,6 +51,7 @@ "insert-text-at-cursor": "0.3.0", "is-file-animated": "1.0.2", "json5": "2.2.3", + "katex": "^0.16.9", "matter-js": "0.19.0", "mfm-js": "0.23.3", "misskey-js": "workspace:*", diff --git a/packages/frontend/src/components/MkFormula.vue b/packages/frontend/src/components/MkFormula.vue new file mode 100644 index 000000000..f39a8db01 --- /dev/null +++ b/packages/frontend/src/components/MkFormula.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/frontend/src/components/MkFormulaCore.vue b/packages/frontend/src/components/MkFormulaCore.vue new file mode 100644 index 000000000..2db4c7d00 --- /dev/null +++ b/packages/frontend/src/components/MkFormulaCore.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts index 7d55353d9..a7c5e1a9f 100644 --- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts +++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts @@ -12,6 +12,7 @@ import MkLink from '@/components/MkLink.vue'; import MkMention from '@/components/MkMention.vue'; import MkEmoji from '@/components/global/MkEmoji.vue'; import MkCustomEmoji from '@/components/global/MkCustomEmoji.vue'; +import MkFormula from "@/components/MkFormula.vue"; import MkCode from '@/components/MkCode.vue'; import MkGoogle from '@/components/MkGoogle.vue'; import MkSparkle from '@/components/MkSparkle.vue'; @@ -389,12 +390,24 @@ export default function(props: MfmProps) { })]; } - case 'mathInline': { - return [h('code', token.props.formula)]; + case "mathInline": { + return [ + h(MkFormula, { + key: Math.random(), + formula: token.props.formula, + block: false, + }), + ]; } - case 'mathBlock': { - return [h('code', token.props.formula)]; + case "mathBlock": { + return [ + h(MkFormula, { + key: Math.random(), + formula: token.props.formula, + block: true, + }), + ]; } case 'search': { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e750d515..7c11ca2d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -753,6 +753,9 @@ importers: json5: specifier: 2.2.3 version: 2.2.3 + katex: + specifier: ^0.16.9 + version: 0.16.9 matter-js: specifier: 0.19.0 version: 0.19.0