From 4f1efafe526cf24e1359a3f9059dd3672f6b32b1 Mon Sep 17 00:00:00 2001 From: Timi Date: Wed, 7 Jan 2026 13:09:36 +0800 Subject: [PATCH] support code view --- src/components/markdown-view/index.vue | 19 +++++++++++++++++-- src/utils/Toolkit.ts | 7 +++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/components/markdown-view/index.vue b/src/components/markdown-view/index.vue index c784740..f6b2e7e 100644 --- a/src/components/markdown-view/index.vue +++ b/src/components/markdown-view/index.vue @@ -14,6 +14,7 @@ defineOptions({ }); const props = withDefaults(defineProps<{ + code?: string; content?: string; showCodeBorder?: boolean; maxHeight?: string; @@ -25,13 +26,27 @@ const props = withDefaults(defineProps<{ const { content } = toRefs(props); const markdownHTML = ref(""); +const buildMarkdown = () => { + if (props.code) { + const codeRaw = props.code ?? ""; + const sepIndex = codeRaw.indexOf(":"); + const lang = sepIndex < 0 ? "" : codeRaw.slice(0, sepIndex).trim(); + const codeText = sepIndex < 0 ? codeRaw : codeRaw.slice(sepIndex + 1); + const langTag = lang ? lang : ""; + + return `\`\`\`${langTag}\n${codeText}\n\`\`\``; + } + return content.value; +}; + const doRender = async () => { - markdownHTML.value = await Markdown.getInstance().toHTML(content.value); + const markdownText = buildMarkdown(); + markdownHTML.value = await Markdown.getInstance().toHTML(markdownText); await nextTick(); Prism.highlightAll(); }; -watch(() => props.content, doRender); +watch(() => [props.code, props.content], doRender); onMounted(doRender);