Skip to content

Commit 28544a3

Browse files
authored
Merge pull request #116 from PengyiZhang/claude/mermaid-enhancement-all
feat: add Mermaid diagram rendering to all markdown views
2 parents dcc035c + ecd891e commit 28544a3

3 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/components/editor/file-preview.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { resolveMarkdownImageSrc } from "@/lib/markdown-image-resolver"
2020
import { parseFrontmatter } from "@/lib/frontmatter"
2121
import { FrontmatterPanel } from "@/components/editor/frontmatter-panel"
2222
import { useWikiStore } from "@/stores/wiki-store"
23+
import { MermaidDiagram } from "@/components/mermaid-diagram"
2324

2425
interface FilePreviewProps {
2526
filePath: string
@@ -223,6 +224,12 @@ function TextPreview({ filePath, content, label }: { filePath: string; content:
223224
td: ({ children, ...props }) => (
224225
<td className="border border-border/60 px-3 py-1.5" {...props}>{children}</td>
225226
),
227+
code: ({ className, children, ...props }) => {
228+
const lang = className?.replace("language-", "")
229+
const codeText = String(children).replace(/\n$/, "")
230+
if (lang === "mermaid") return <MermaidDiagram code={codeText} />
231+
return <code className={className} {...props}>{children}</code>
232+
},
226233
}}
227234
>
228235
{body}

src/components/editor/wiki-reader.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { resolveRelatedSlug } from "@/lib/wiki-page-resolver"
99
import { resolveMarkdownImageSrc } from "@/lib/markdown-image-resolver"
1010
import { normalizePath } from "@/lib/path-utils"
1111
import { useWikiStore } from "@/stores/wiki-store"
12+
import { MermaidDiagram } from "@/components/mermaid-diagram"
1213

1314
interface WikiReaderProps {
1415
body: string
@@ -113,6 +114,12 @@ export function WikiReader({ body }: WikiReaderProps) {
113114
{children}
114115
</td>
115116
),
117+
code: ({ className, children, ...props }) => {
118+
const lang = className?.replace("language-", "")
119+
const codeText = String(children).replace(/\n$/, "")
120+
if (lang === "mermaid") return <MermaidDiagram code={codeText} />
121+
return <code className={className} {...props}>{children}</code>
122+
},
116123
}}
117124
>
118125
{transformed}

src/components/layout/research-panel.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { readFile } from "@/commands/fs"
1515
import { queueResearch } from "@/lib/deep-research"
1616
import { normalizePath } from "@/lib/path-utils"
1717
import { isImeComposing } from "@/lib/keyboard-utils"
18+
import { MermaidDiagram } from "@/components/mermaid-diagram"
1819

1920
export function ResearchPanel() {
2021
const tasks = useResearchStore((s) => s.tasks)
@@ -183,6 +184,12 @@ function SynthesisBlock({ synthesis, isStreaming }: { synthesis: string; isStrea
183184
td: ({ children, ...props }) => (
184185
<td className="border border-border/60 px-3 py-1.5" {...props}>{children}</td>
185186
),
187+
code: ({ className, children, ...props }) => {
188+
const lang = className?.replace("language-", "")
189+
const codeText = String(children).replace(/\n$/, "")
190+
if (lang === "mermaid") return <MermaidDiagram code={codeText} />
191+
return <code className={className} {...props}>{children}</code>
192+
},
186193
}}
187194
>
188195
{answer}

0 commit comments

Comments
 (0)