Mermaid

把 Mermaid 文本渲染成 SVG 图示(流程图 / 时序图 / 类图 / 甘特图 / 状态图 等),常用于承载 AI 模型生成的结构化图。渲染由框架内置 known.mermaid 脚本完成、首次使用惰性加载 mermaid(宿主注入 window.mermaid 则复用,否则按 Source 动态 import,默认 jsDelivr ESM、可自托管离线);主题默认跟随框架明暗(可用 Theme 覆盖),Code 或主题变化自动重绘,含加载 / 失败 / 空态。

最后更新

说明

面向“AI 生成图示 / 文档可视化 / 流程与架构讲解”的图表组件。与 CodeHighlighter 展示 mermaid 源码互补,本组件把 Code 里的 Mermaid 文本真正渲染成矢量图:内部经框架 wwwroot/js/web.js 暴露的 known.mermaid.render 完成——Code 交给 mermaid 解析并注入容器为一段 svg 矢量标记。库惰性加载:组件优先复用宿主已注入的全局 window.mermaid,缺失时按 Source 动态 import() 一次并缓存(Source 留空取内置 jsDelivr ESM;mermaid 官方 ESM 会把每种图表拆成动态分块,只下载主文件并不能离线,内网要用 wwwroot/js/libs/mermaid/README.md 里的 esbuild 姿势自托管一份,或宿主预先注入 window.mermaid);加载失败会落入错误态而非抛异常,预渲染阶段自动跳过。参数:Code 为 Mermaid 源码(业务数据、不本地化);Theme 取 default / neutral / dark / forest,留空则跟随框架明暗(暗→dark、亮→default),且框架切换主题时组件会重绘成对应配色;SecurityLevel 默认 strict(净化标签,防注入),需标签内 HTML 时改 loose;UseMaxWidth(默认 true)让流程图等按容器宽度自适应;Height 给容器设定最小高度。回调 OnRendered(回传当前源码)与 OnError(回传错误信息)。渲染前显示加载态(LoadingText,默认“渲染中...”)、失败显示错误态(ErrorText,默认“图表渲染失败”,并把 mermaid 报错细节渲染进 pre 代码块)、空源码显示空态(EmptyText,默认“暂无图表”)——三条状态文案为组件内置中文、走词条,而 Id / 图表代码 / 主题标识 / 源地址视为业务或内部数据不本地化。作为 AI 家族里少数需要 JS 互操作的组件,它把模型输出的结构化意图变成可读的图。Visible / Class / Style / UserAttributes 沿用 BaseComponent。

常见能力:

  • 把 Mermaid 文本渲染成 SVG:流程图 / 时序图 / 类图 / 甘特图 / 状态图 等
  • mermaid 库惰性加载并缓存:优先宿主 window.mermaid,否则按 Source 动态 import(默认 jsDelivr ESM,可自托管离线)
  • Theme 默认跟随框架明暗、切主题自动重绘;可显式 default / neutral / dark / forest
  • Code 或 Theme 变化自动重绘;预渲染阶段安全跳过、不抛异常
  • SecurityLevel 默认 strict(净化防注入),UseMaxWidth 让图形按容器自适应,Height 设定最小高度
  • 内置加载 / 失败(含 mermaid 报错细节)/ 空态,状态文案走词条;OnRendered / OnError 回调
  • AI 家族中少数需 JS 互操作的组件:承载模型生成的结构化图,与 CodeHighlighter 展示源码互补

用法

<Mermaid Code="@diagram" Height="300px" OnError="@OnError" />

@code {
    string diagram = "graph TD; A[开始]-->B{校验}; B-->|是|C[通过]; B-->|否|D[驳回];";
    void OnError(string err) => UI.Warn("图表渲染失败", err);
}

API 参数

参数 类型 默认值 说明
Code string null Mermaid 图表源码(业务数据,不本地化)。留空显示空态。
EmptyText string "暂无图表" 空态文案(翻译键)。默认“暂无图表”。
ErrorText string "图表渲染失败" 失败态文案(翻译键)。默认“图表渲染失败”。
Height string null 容器最小高度(如 “240px”)。留空则随内容自适应。
Id string null 渲染容器 DOM id。留空则自动生成(内部经 getElementById 注入 SVG)。
LoadingText string "渲染中..." 加载态文案(翻译键)。默认“渲染中...”。
OnError EventCallback<string> — 事件 渲染失败回调(回传错误信息)。
OnRendered EventCallback<string> — 事件 渲染成功回调(回传当前图表源码)。
SecurityLevel string "strict" 安全级别:strict(默认,净化标签)/ loose(允许标签内 HTML)。
Source string null 自定义 mermaid ESM 地址(离线 / 内网时指向自托管文件)。留空则用内置默认的 jsDelivr ESM。
Theme string null mermaid 主题:default / neutral / dark / forest。留空则跟随框架明暗(暗→dark,亮→default)。
UseMaxWidth bool true 是否让流程图等按容器宽度自适应(mermaid flowchart.useMaxWidth)。默认 true。
Visible bool true 取得或设置组件是否可见,默认为false。
VisibleChanged EventCallback<bool> — 事件 取得或设置组件可见性变化时的回调事件。
Class string null 取得或设置组件的CSS类名,用于自定义样式。
Disabled bool false 取得或设置组件是否禁用,默认为false。
Style string null 取得或设置组件的内联样式,用于自定义样式。

所有组件均继承 BaseComponent,除上表参数外还支持 Class、Style、Disabled、Visible。

微信公众号二维码 扫码关注公众号
QQ 交流群二维码 扫码加入 QQ 群