Skip to content

Svelte

markstream-svelte 提供 Svelte 5 渲染器,组件名、worker helpers 和 playground fixtures 与 Vue / React / Angular 包保持一致。

svelte
<script lang="ts">
  import MarkdownRender from 'markstream-svelte'
  import 'markstream-svelte/index.css'

  export let content = '# markstream-svelte'
</script>

<MarkdownRender
  {content}
  codeBlockDarkTheme="vitesse-dark"
  codeBlockLightTheme="vitesse-light"
/>

默认导出和命名导出 MarkdownRender / NodeRenderer 指向同一个 Svelte 组件。

KaTeX 和 Mermaid worker 入口与其它框架一致:

svelte
<script lang="ts">
  import { setKaTeXWorker, setMermaidWorker } from 'markstream-svelte'
  import KatexWorker from 'markstream-svelte/workers/katexRenderer.worker?worker&inline'
  import MermaidWorker from 'markstream-svelte/workers/mermaidParser.worker?worker&inline'

  setKaTeXWorker(new KatexWorker())
  setMermaidWorker(new MermaidWorker())
</script>

自定义 HTML 标签使用同一套带作用域的组件注册:

svelte
<script lang="ts">
  import MarkdownRender, { setCustomComponents } from 'markstream-svelte'
  import ThinkingNode from './ThinkingNode.svelte'

  const customId = 'demo'

  setCustomComponents(customId, {
    thinking: ThinkingNode,
  })
</script>

<MarkdownRender
  content="<thinking>nested **markdown**</thinking>"
  {customId}
  customHtmlTags={['thinking']}
/>

本地 playground:

bash
pnpm play:svelte