@blueking/chat-x 0.0.45-beta.5 → 0.0.45-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ag-ui/types/constants.d.ts +0 -16
- package/dist/ag-ui/types/contents.d.ts +0 -2
- package/dist/ag-ui/types/index.d.ts +0 -2
- package/dist/ag-ui/types/messages.d.ts +0 -2
- package/dist/components/chat-content/flow-agent-content/flow-agent-content.vue.d.ts +0 -3
- package/dist/components/chat-content/flow-agent-content/use-flow-agent.d.ts +0 -4
- package/dist/components/chat-input/chat-input.vue.d.ts +8 -14
- package/dist/components/chat-input/input-attachment/input-attachment.vue.d.ts +0 -1
- package/dist/components/chat-message/activity-message/activity-message.vue.d.ts +1 -4
- package/dist/components/chat-message/assistant-message/assistant-message.vue.d.ts +1 -1
- package/dist/components/chat-message/message-container/message-container.vue.d.ts +7 -14
- package/dist/components/chat-message/message-render/message-render.vue.d.ts +0 -4
- package/dist/components/index.d.ts +2 -3
- package/dist/composables/use-global-config.d.ts +0 -3
- package/dist/composables/use-message-group.d.ts +823 -2609
- package/dist/icons/index.d.ts +0 -1
- package/dist/index.css +1 -1
- package/dist/index.js +1935 -2552
- package/dist/index.js.map +1 -1
- package/dist/lang/lang.d.ts +2 -34
- package/dist/mcp/generated/docs/activity-message.md +7 -21
- package/dist/mcp/generated/docs/ai-image.md +4 -9
- package/dist/mcp/generated/docs/ai-loading.md +6 -11
- package/dist/mcp/generated/docs/ai-selection.md +5 -10
- package/dist/mcp/generated/docs/animation-text.md +4 -9
- package/dist/mcp/generated/docs/assistant-message.md +5 -10
- package/dist/mcp/generated/docs/chat-container.md +19 -173
- package/dist/mcp/generated/docs/chat-input.md +10 -78
- package/dist/mcp/generated/docs/cite-content.md +3 -8
- package/dist/mcp/generated/docs/code-content.md +4 -9
- package/dist/mcp/generated/docs/common-error-content.md +5 -10
- package/dist/mcp/generated/docs/constants.md +3 -68
- package/dist/mcp/generated/docs/content-render.md +5 -10
- package/dist/mcp/generated/docs/delete-tool.md +4 -9
- package/dist/mcp/generated/docs/desc-panel.md +4 -9
- package/dist/mcp/generated/docs/execution-summary.md +5 -10
- package/dist/mcp/generated/docs/file-content.md +4 -9
- package/dist/mcp/generated/docs/file-upload-btn.md +5 -10
- package/dist/mcp/generated/docs/highlight-keyword.md +5 -10
- package/dist/mcp/generated/docs/image-content.md +4 -9
- package/dist/mcp/generated/docs/image-preview-group.md +4 -9
- package/dist/mcp/generated/docs/image-preview.md +5 -10
- package/dist/mcp/generated/docs/info-message.md +2 -7
- package/dist/mcp/generated/docs/key-value-content.md +4 -9
- package/dist/mcp/generated/docs/latex-content.md +4 -9
- package/dist/mcp/generated/docs/loading-message.md +6 -11
- package/dist/mcp/generated/docs/markdown-container.md +1 -1
- package/dist/mcp/generated/docs/markdown-content.md +8 -13
- package/dist/mcp/generated/docs/markdown-latex.md +3 -3
- package/dist/mcp/generated/docs/markdown-mermaid.md +3 -3
- package/dist/mcp/generated/docs/mermaid-content.md +4 -9
- package/dist/mcp/generated/docs/message-container.md +11 -69
- package/dist/mcp/generated/docs/message-render.md +11 -23
- package/dist/mcp/generated/docs/message-tools.md +5 -10
- package/dist/mcp/generated/docs/messages.md +11 -75
- package/dist/mcp/generated/docs/overflow-tips.md +4 -4
- package/dist/mcp/generated/docs/reasoning-message.md +5 -10
- package/dist/mcp/generated/docs/reference-content.md +5 -10
- package/dist/mcp/generated/docs/scroll-btn.md +3 -8
- package/dist/mcp/generated/docs/selection-footer.md +4 -9
- package/dist/mcp/generated/docs/shortcut-btn.md +5 -10
- package/dist/mcp/generated/docs/shortcut-btns.md +5 -10
- package/dist/mcp/generated/docs/shortcut-render.md +5 -10
- package/dist/mcp/generated/docs/text-content.md +4 -9
- package/dist/mcp/generated/docs/theme.md +4 -50
- package/dist/mcp/generated/docs/tool-btn.md +4 -9
- package/dist/mcp/generated/docs/tool-message.md +5 -10
- package/dist/mcp/generated/docs/toolcall-render.md +5 -10
- package/dist/mcp/generated/docs/use-animation-text.md +4 -4
- package/dist/mcp/generated/docs/use-clipboard.md +3 -3
- package/dist/mcp/generated/docs/use-command-selection.md +1 -1
- package/dist/mcp/generated/docs/use-custom-tab.md +1 -1
- package/dist/mcp/generated/docs/use-full-screen.md +3 -3
- package/dist/mcp/generated/docs/use-global-config.md +5 -20
- package/dist/mcp/generated/docs/use-menu-keydown.md +1 -1
- package/dist/mcp/generated/docs/use-message-group.md +9 -40
- package/dist/mcp/generated/docs/use-observer-visible-list.md +1 -1
- package/dist/mcp/generated/docs/user-feedback.md +3 -8
- package/dist/mcp/generated/docs/user-message.md +5 -10
- package/dist/mcp/generated/index.json +560 -1103
- package/dist/mcp/index.js +0 -0
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/list-components.d.ts +6 -7
- package/dist/mcp/tools/list-components.js +29 -23
- package/dist/mcp/tools/list-components.js.map +1 -1
- package/dist/mcp/tools/search-docs.js +1 -1
- package/dist/mcp/tools/search-docs.js.map +1 -1
- package/dist/mcp/utils/doc-loader.d.ts +1 -1
- package/package.json +21 -23
- package/dist/ag-ui/types/interrupt.d.ts +0 -137
- package/dist/ag-ui/types/schema.d.ts +0 -42
- package/dist/components/ai-questions/questions-container.vue.d.ts +0 -3
- package/dist/components/ai-questions/selection-question.vue.d.ts +0 -3
- package/dist/components/chat-content/flow-agent-content/use-flow-node-actions.d.ts +0 -32
- package/dist/components/chat-content/index.d.ts +0 -2
- package/dist/components/chat-input/input-info-alert.vue.d.ts +0 -6
- package/dist/components/chat-message/interrupt-message/index.d.ts +0 -2
- package/dist/components/chat-message/interrupt-message/interrupt-message.vue.d.ts +0 -17
- package/dist/components/chat-message/interrupt-message/tool-approval-card.vue.d.ts +0 -8
- package/dist/components/chat-message/interrupt-message/user-question/index.d.ts +0 -5
- package/dist/components/chat-message/interrupt-message/user-question/use-user-question.d.ts +0 -35
- package/dist/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue.d.ts +0 -25
- package/dist/components/chat-message/interrupt-message/user-question/user-question-card.vue.d.ts +0 -25
- package/dist/components/chat-message/interrupt-message/user-question/user-question-choice.vue.d.ts +0 -13
- package/dist/components/chat-message/interrupt-message/user-question/user-question-option.vue.d.ts +0 -17
- package/dist/icons/interrupt.d.ts +0 -24
- package/dist/mcp/generated/docs/activity-layout.md +0 -138
- package/dist/mcp/generated/docs/ai-prompt-list.md +0 -42
- package/dist/mcp/generated/docs/ai-slash-editor.md +0 -43
- package/dist/mcp/generated/docs/ai-slash-input.md +0 -43
- package/dist/mcp/generated/docs/ai-slash-menu.md +0 -42
- package/dist/mcp/generated/docs/detail-section.md +0 -93
- package/dist/mcp/generated/docs/flow-agent-content.md +0 -252
- package/dist/mcp/generated/docs/flow-agent-node-detail.md +0 -240
- package/dist/mcp/generated/docs/input-attachment.md +0 -43
- package/dist/mcp/generated/docs/input-info-alert.md +0 -42
- package/dist/mcp/generated/docs/interrupt-message.md +0 -204
- package/dist/mcp/generated/docs/interrupt.md +0 -354
- package/dist/mcp/generated/docs/knowledge-rag-content.md +0 -126
- package/dist/mcp/generated/docs/message-loading.md +0 -120
- package/dist/mcp/generated/docs/preview-toolbar.md +0 -42
- package/dist/mcp/generated/docs/questions-container.md +0 -88
- package/dist/mcp/generated/docs/reference-doc-content.md +0 -112
- package/dist/mcp/generated/docs/schema.md +0 -93
- package/dist/mcp/generated/docs/selection-question.md +0 -91
- package/dist/mcp/generated/docs/simple-table.md +0 -103
- package/dist/mcp/generated/docs/tool-approval-card.md +0 -148
- package/dist/mcp/generated/docs/use-flow-node-actions.md +0 -124
- package/dist/mcp/generated/docs/user-question-answered-card.md +0 -106
- package/dist/mcp/generated/docs/user-question-card.md +0 -228
- package/dist/mcp/generated/docs/user-question-choice.md +0 -108
- package/dist/mcp/generated/docs/user-question-option.md +0 -42
- package/dist/mcp/generated/docs/vnode-renderer.md +0 -126
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
<!-- AI SUMMARY -->
|
|
2
|
-
## 快速了解
|
|
3
|
-
|
|
4
|
-
UserQuestionCard 默认的选择题渲染组件,封装单选/多选、Others 输入与答案组装。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-choice.vue。
|
|
5
|
-
|
|
6
|
-
### 关联组件
|
|
7
|
-
- **user-question-card** — 默认通过
|
|
8
|
-
- **user-question-option** — 内部逐条渲染选项行
|
|
9
|
-
- **interrupt** — 答案结构遵循 UserQuestionAnswerItem
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
<!-- FULL DOC -->
|
|
13
|
-
|
|
14
|
-
# UserQuestionChoice 用户问题选择题
|
|
15
|
-
|
|
16
|
-
> **能力域**:Agent 能力
|
|
17
|
-
|
|
18
|
-
## 源码事实
|
|
19
|
-
|
|
20
|
-
- **源码位置**:`src/components/chat-message/interrupt-message/user-question/user-question-choice.vue`
|
|
21
|
-
- **能力说明**:封装 UserQuestion 的选择题交互,负责选项归一化、单选/多选切换、Others 输入校验与 `UserQuestionAnswerItem` 组装。
|
|
22
|
-
|
|
23
|
-
`UserQuestionChoice` 是 [UserQuestionCard](/components/agent/user-question-card) 在 `#question` slot 未覆盖时的**默认渲染**。业务侧也可单独使用,配合 `useUserQuestion` 的 `setAnswer` 接入自定义面板。
|
|
24
|
-
|
|
25
|
-
## 交互能力
|
|
26
|
-
|
|
27
|
-
- **单选 / 多选**:由 `question.multiSelect` 控制;未传时不展示单选/多选标签,但仍按单选行为处理。
|
|
28
|
-
- **Others 自由输入**:前端自动在选项末尾追加 `label: 'others'` 输入项。
|
|
29
|
-
- **实时同步答案**:选择或输入变化时 emit `answer`;作答有效时回传已组装的 `UserQuestionAnswerItem`,无效时回传 `undefined`。
|
|
30
|
-
- **Enter 确认**:Others 输入框按 Enter 触发 `confirm`,等价于点击「完成」按钮(需上层已全部作答)。
|
|
31
|
-
|
|
32
|
-
## 基础用法(单选)
|
|
33
|
-
|
|
34
|
-
```vue
|
|
35
|
-
<template>
|
|
36
|
-
<UserQuestionChoice
|
|
37
|
-
:question="singleQuestion"
|
|
38
|
-
@answer="handleAnswer"
|
|
39
|
-
@confirm="handleConfirm"
|
|
40
|
-
/>
|
|
41
|
-
</template>
|
|
42
|
-
|
|
43
|
-
<script setup lang="ts">
|
|
44
|
-
import { UserQuestionChoice, type UserQuestionAnswerItem } from '@blueking/chat-x';
|
|
45
|
-
|
|
46
|
-
const singleQuestion = {
|
|
47
|
-
header: '请选择实现方案',
|
|
48
|
-
multiSelect: false,
|
|
49
|
-
question: '你希望采用哪种冒泡排序实现?',
|
|
50
|
-
options: [
|
|
51
|
-
{ label: 'basic', description: '基础冒泡排序' },
|
|
52
|
-
{ label: 'optimized', description: '优化版冒泡排序' },
|
|
53
|
-
],
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const handleAnswer = (answer: UserQuestionAnswerItem | undefined) => {
|
|
57
|
-
console.log(answer);
|
|
58
|
-
};
|
|
59
|
-
</script>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**渲染效果**
|
|
63
|
-
|
|
64
|
-
## 多选
|
|
65
|
-
|
|
66
|
-
```vue
|
|
67
|
-
<UserQuestionChoice
|
|
68
|
-
:question="multiQuestion"
|
|
69
|
-
@answer="handleAnswer"
|
|
70
|
-
/>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**渲染效果**
|
|
74
|
-
|
|
75
|
-
## 在 UserQuestionCard 中使用
|
|
76
|
-
|
|
77
|
-
通常无需直接使用本组件;`UserQuestionCard` 默认已在 `#question` slot 回退中挂载:
|
|
78
|
-
|
|
79
|
-
```vue
|
|
80
|
-
<UserQuestionCard :interrupt="interrupt" :on-resume="handleResume" />
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
如需替换某一题的渲染,覆盖 `#question` slot 即可;未覆盖时仍回退到 `UserQuestionChoice`。
|
|
84
|
-
|
|
85
|
-
## API
|
|
86
|
-
|
|
87
|
-
### Props
|
|
88
|
-
|
|
89
|
-
| 属性名 | 类型 | 默认值 | 说明 |
|
|
90
|
-
| -------- | ------------------ | ------ | ---------------------------- |
|
|
91
|
-
| question | `UserQuestionItem` | — | **必填**,含 `options` 等字段 |
|
|
92
|
-
|
|
93
|
-
### Events
|
|
94
|
-
|
|
95
|
-
| 事件名 | 参数 | 说明 |
|
|
96
|
-
| ------- | ----------------------------------------- | ------------------------------------------------------------ |
|
|
97
|
-
| answer | `(answer: UserQuestionAnswerItem \| undefined)` | 作答变化;有效时回传已组装答案,无效(未选/ Others 空)时 `undefined` |
|
|
98
|
-
| confirm | — | 用户在 Others 输入框按 Enter 时触发,上层可绑定「完成」逻辑 |
|
|
99
|
-
|
|
100
|
-
### Slots / Expose
|
|
101
|
-
|
|
102
|
-
无。
|
|
103
|
-
|
|
104
|
-
## 关联文档
|
|
105
|
-
|
|
106
|
-
- [UserQuestionCard 用户问题中断](/components/agent/user-question-card)
|
|
107
|
-
- [UserQuestionOption 用户问题选项](/components/agent/user-question-option)
|
|
108
|
-
- [中断类型 Interrupt](../../types/interrupt.md)
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<!-- AI SUMMARY -->
|
|
2
|
-
## 快速了解
|
|
3
|
-
|
|
4
|
-
UserQuestionChoice 内部选项行,处理单选/多选状态和 Others 输入。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-option.vue。
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
<!-- FULL DOC -->
|
|
8
|
-
|
|
9
|
-
# UserQuestionOption 用户问题选项
|
|
10
|
-
|
|
11
|
-
> **能力域**:Agent 能力
|
|
12
|
-
|
|
13
|
-
## 源码事实
|
|
14
|
-
|
|
15
|
-
- **源码位置**:`src/components/chat-message/interrupt-message/user-question/user-question-option.vue`
|
|
16
|
-
- **能力说明**:UserQuestionChoice 内部选项行,处理单选/多选状态和 Others 输入。
|
|
17
|
-
|
|
18
|
-
## API 摘要
|
|
19
|
-
|
|
20
|
-
### Props
|
|
21
|
-
|
|
22
|
-
- `{ option: NormalizedUserQuestionOption; othersText?: string; selected: boolean; }`
|
|
23
|
-
|
|
24
|
-
### Emits
|
|
25
|
-
|
|
26
|
-
- `{ (e: 'confirm'): void; (e: 'select'): void; (e: 'update:othersText', value: string): void; }`
|
|
27
|
-
|
|
28
|
-
### Slots
|
|
29
|
-
|
|
30
|
-
- 无。
|
|
31
|
-
|
|
32
|
-
### Expose
|
|
33
|
-
|
|
34
|
-
- 无。
|
|
35
|
-
|
|
36
|
-
## 组件依赖
|
|
37
|
-
|
|
38
|
-
- 无组件依赖或仅依赖基础库。
|
|
39
|
-
|
|
40
|
-
## 使用建议
|
|
41
|
-
|
|
42
|
-
- 优先通过 [UserQuestionChoice](/components/agent/user-question-choice) 或 [UserQuestionCard](/components/agent/user-question-card) 使用;直接使用前请确认 props 数据结构来自对应类型定义。
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
<!-- AI SUMMARY -->
|
|
2
|
-
## 快速了解
|
|
3
|
-
|
|
4
|
-
将 Markdown token 转成 VNode 的内部渲染桥。 源码位置:src/components/chat-content/vnode-renderer.ts。
|
|
5
|
-
|
|
6
|
-
### 关联组件
|
|
7
|
-
- **markdown-content** — MarkdownContent 对普通 token 分组使用本组件渲染
|
|
8
|
-
- **code-content** — fence/code_block 代码块通常会被 MarkdownContent 提前分流到 CodeContent
|
|
9
|
-
- **mermaid-content** — mermaid 代码块通常会被 MarkdownContent 提前分流到 MermaidContent
|
|
10
|
-
- **image-content** — 图片 token 由 tokensToVNodes 转为 ImageContent
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
<!-- FULL DOC -->
|
|
14
|
-
|
|
15
|
-
# VNodeRenderer VNode 渲染器
|
|
16
|
-
|
|
17
|
-
> **能力域**:辅助能力
|
|
18
|
-
|
|
19
|
-
`VNodeRenderer` 是 Markdown 渲染链路里的内部桥接组件。它接收 markdown-it 解析出的 `Token[]`,调用 `tokensToVNodes` 转成 Vue VNode,并返回渲染函数结果。
|
|
20
|
-
|
|
21
|
-
通常不需要业务侧直接使用。完整 Markdown 内容请优先使用 [MarkdownContent](../rendering/markdown-content.md),它会先识别 Mermaid、LaTeX、代码块等特殊 token,再把普通 token 分组交给 `VNodeRenderer`。
|
|
22
|
-
|
|
23
|
-
## 源码事实
|
|
24
|
-
|
|
25
|
-
- **源码位置**:`src/components/chat-content/vnode-renderer.ts`
|
|
26
|
-
- **能力说明**:将 Markdown token 转成 VNode 的内部渲染桥。
|
|
27
|
-
|
|
28
|
-
## 核心能力
|
|
29
|
-
|
|
30
|
-
- **Token 到 VNode**:将 markdown-it 的 block、inline、text、link、image、html 等 token 转为 Vue VNode
|
|
31
|
-
- **稳定 key**:`tokensToVNodes` 基于 token 类型、标签和内容 hash 生成 key,降低流式渲染时 DOM 误复用风险
|
|
32
|
-
- **HTML 安全入口**:`options.html` 开启时可渲染 HTML token,实际安全过滤依赖 `options.sanitize`
|
|
33
|
-
- **渲染规则复用**:支持传入 markdown-it `renderer` 与 `mditOptions`,复用自定义 renderer rule
|
|
34
|
-
- **特殊 token 兜底**:图片 token 转成 `ImageContent`,链接自动补充 `target="_blank"` 与 `rel="noopener noreferrer"`
|
|
35
|
-
|
|
36
|
-
## 基础用法
|
|
37
|
-
|
|
38
|
-
```vue
|
|
39
|
-
<template>
|
|
40
|
-
<VNodeRenderer :tokens="tokens" />
|
|
41
|
-
</template>
|
|
42
|
-
|
|
43
|
-
<script setup lang="ts">
|
|
44
|
-
import MarkdownIt from '@blueking/chat-x/src/markdown-it/index';
|
|
45
|
-
import VNodeRenderer from '@blueking/chat-x/src/components/chat-content/vnode-renderer';
|
|
46
|
-
|
|
47
|
-
const md = new MarkdownIt();
|
|
48
|
-
const tokens = md.parse('这是一段 **加粗文本**。', {});
|
|
49
|
-
</script>
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**渲染效果**
|
|
53
|
-
|
|
54
|
-
## 空 Tokens
|
|
55
|
-
|
|
56
|
-
`tokens` 为空数组时,`tokensToVNodes` 返回空数组,不渲染任何内容。
|
|
57
|
-
|
|
58
|
-
## 与 MarkdownContent 的关系
|
|
59
|
-
|
|
60
|
-
`MarkdownContent` 会先按 token 类型分流,再将普通 token 交给 `VNodeRenderer`:
|
|
61
|
-
|
|
62
|
-
```vue
|
|
63
|
-
<template v-else>
|
|
64
|
-
<VNodeRenderer
|
|
65
|
-
:options="vnodeOptions"
|
|
66
|
-
:tokens="groupedToken"
|
|
67
|
-
/>
|
|
68
|
-
</template>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
其中 `vnodeOptions` 会携带 HTML 净化函数、markdown-it renderer 和 parser options:
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
const vnodeOptions = {
|
|
75
|
-
html: true,
|
|
76
|
-
mditOptions: md.options,
|
|
77
|
-
renderer: md.renderer,
|
|
78
|
-
sanitize: (html: string) => dompurify.sanitize(html, domPurifyConfig),
|
|
79
|
-
};
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## API
|
|
83
|
-
|
|
84
|
-
### Props
|
|
85
|
-
|
|
86
|
-
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|
|
87
|
-
| ------- | --------------------- | ---- | ------ | ---------------------------- |
|
|
88
|
-
| tokens | `Token[]` | 是 | — | markdown-it token 数组 |
|
|
89
|
-
| options | `TokenToVNodeOptions` | 否 | `{}` | token 转 VNode 的渲染选项 |
|
|
90
|
-
|
|
91
|
-
### Emits
|
|
92
|
-
|
|
93
|
-
- 无。
|
|
94
|
-
|
|
95
|
-
### Slots
|
|
96
|
-
|
|
97
|
-
- 无。
|
|
98
|
-
|
|
99
|
-
### Expose
|
|
100
|
-
|
|
101
|
-
- 无。
|
|
102
|
-
|
|
103
|
-
## 类型定义
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
export interface TokenToVNodeOptions {
|
|
107
|
-
highlight?: ((str: string, lang: string, attrs?: unknown) => string) | null;
|
|
108
|
-
html?: boolean;
|
|
109
|
-
mditOptions?: Options;
|
|
110
|
-
renderer?: Renderer;
|
|
111
|
-
sanitize?: (html: string) => string;
|
|
112
|
-
}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## 使用建议
|
|
116
|
-
|
|
117
|
-
- 业务侧不要绕过 `MarkdownContent` 直接渲染完整 Markdown 字符串;`VNodeRenderer` 只接收已经解析好的 token。
|
|
118
|
-
- 如果启用 `options.html`,必须同步传入 `sanitize`,否则 HTML token 会直接进入 `innerHTML`。
|
|
119
|
-
- 特殊内容如代码块、Mermaid、LaTeX 推荐继续走 `MarkdownContent` 的分流逻辑。
|
|
120
|
-
|
|
121
|
-
## 关联组件
|
|
122
|
-
|
|
123
|
-
- [MarkdownContent](../rendering/markdown-content.md) — Markdown 主渲染器。
|
|
124
|
-
- [CodeContent](../rendering/code-content.md) — 代码块渲染。
|
|
125
|
-
- [MermaidContent](../rendering/mermaid-content.md) — Mermaid 图表渲染。
|
|
126
|
-
- [ImageContent](../medias/image-content.md) — 图片 token 渲染。
|