react-ai-renderer 0.1.4 → 0.1.5
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 +65 -203
- package/dist/index.cjs +39422 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +39392 -15
- package/dist/index.js.map +1 -0
- package/package.json +12 -7
- package/dist/MermaidRenderer-62cbf217.js +0 -171
- package/dist/MermaidRenderer-680adac3.js +0 -169
- package/dist/index-543584d8.js +0 -1398
- package/dist/index-58ab9759.js +0 -1424
- package/dist/index.es.js +0 -9
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
- **代码高亮**:支持多种编程语言的代码高亮显示
|
|
17
17
|
- **数学公式**:使用 KaTeX 渲染数学公式
|
|
18
18
|
- **Mermaid 图表**:支持 Mermaid 流程图、时序图等(可选功能)
|
|
19
|
+
- **GitHub样式**:使用GitHub风格的Markdown渲染样式
|
|
19
20
|
- **自定义组件**:支持用户注册自定义组件和生命周期钩子
|
|
20
21
|
- **兼容性**:兼容现代 React 版本,提供 TypeScript 类型定义
|
|
21
22
|
|
|
@@ -41,6 +42,48 @@ npm install mermaid
|
|
|
41
42
|
|
|
42
43
|
如果不安装 mermaid,图表将不会渲染,但不会影响其他功能。
|
|
43
44
|
|
|
45
|
+
## 🎨 GitHub风格样式
|
|
46
|
+
|
|
47
|
+
React AI Renderer 现在支持 GitHub 风格的 Markdown 渲染样式,使渲染的 Markdown 内容具有与 GitHub 上相同的外观和感觉。
|
|
48
|
+
|
|
49
|
+
### 特性
|
|
50
|
+
|
|
51
|
+
- GitHub风格的排版和间距
|
|
52
|
+
- 代码块的语法高亮
|
|
53
|
+
- 表格样式优化
|
|
54
|
+
- 链接样式
|
|
55
|
+
- 标题样式(包括下划线效果)
|
|
56
|
+
- 引用块样式
|
|
57
|
+
- 列表样式优化
|
|
58
|
+
|
|
59
|
+
### 使用方法
|
|
60
|
+
|
|
61
|
+
组件会自动应用GitHub样式,无需额外配置:
|
|
62
|
+
|
|
63
|
+
```jsx
|
|
64
|
+
import ReactAIRenderer from 'react-ai-renderer';
|
|
65
|
+
|
|
66
|
+
function MyComponent() {
|
|
67
|
+
const markdownContent = `
|
|
68
|
+
# 标题
|
|
69
|
+
|
|
70
|
+
这是一个 **粗体** 文本和 *斜体* 文本。
|
|
71
|
+
|
|
72
|
+
\`\`\`javascript
|
|
73
|
+
console.log('Hello, World!');
|
|
74
|
+
\`\`\`
|
|
75
|
+
|
|
76
|
+
| 列1 | 列2 |
|
|
77
|
+
|-----|-----|
|
|
78
|
+
| 数据1 | 数据2 |
|
|
79
|
+
`;
|
|
80
|
+
|
|
81
|
+
return <ReactAIRenderer content={markdownContent} />;
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
查看 [GITHUB_STYLE_USAGE.md](./GITHUB_STYLE_USAGE.md) 获取更多使用详情。
|
|
86
|
+
|
|
44
87
|
## 🚀 快速开始
|
|
45
88
|
|
|
46
89
|
查看 [examples/example.tsx](./examples/example.tsx) 文件了解完整的使用示例。
|
|
@@ -70,14 +113,12 @@ function App() {
|
|
|
70
113
|
import ReactAIRenderer from 'react-ai-renderer';
|
|
71
114
|
|
|
72
115
|
const content = `
|
|
73
|
-
<Think>
|
|
74
116
|
正在分析用户需求...
|
|
75
117
|
|
|
76
118
|
根据分析结果,我建议您使用以下方案:
|
|
77
119
|
|
|
78
120
|
1. 方案A
|
|
79
121
|
2. 方案B
|
|
80
|
-
</Think>
|
|
81
122
|
`;
|
|
82
123
|
|
|
83
124
|
function App() {
|
|
@@ -121,231 +162,52 @@ function App() {
|
|
|
121
162
|
}
|
|
122
163
|
```
|
|
123
164
|
|
|
124
|
-
## 🎨 UI 组件示例
|
|
125
|
-
|
|
126
|
-
React AI Renderer 支持丰富的 UI 组件渲染,包括表单、表格、卡片等常见组件。
|
|
127
|
-
|
|
128
|
-
### 表单组件
|
|
129
|
-
|
|
130
|
-
```mdx
|
|
131
|
-
<form>
|
|
132
|
-
<Input label="姓名" placeholder="请输入姓名" />
|
|
133
|
-
<Input label="邮箱" type="email" placeholder="请输入邮箱" />
|
|
134
|
-
<Select label="性别">
|
|
135
|
-
<option value="">请选择</option>
|
|
136
|
-
<option value="male">男</option>
|
|
137
|
-
<option value="female">女</option>
|
|
138
|
-
</Select>
|
|
139
|
-
<Textarea label="个人简介" placeholder="请简单介绍一下自己" />
|
|
140
|
-
<Checkbox label="同意用户协议" />
|
|
141
|
-
<Button type="submit">提交</Button>
|
|
142
|
-
<Button type="button" style="backgroundColor: #6c757d">取消</Button>
|
|
143
|
-
</form>
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### 表格组件
|
|
147
|
-
|
|
148
|
-
```mdx
|
|
149
|
-
<Table>
|
|
150
|
-
<TableHeader>
|
|
151
|
-
<TableCell header>产品名称</TableCell>
|
|
152
|
-
<TableCell header>价格</TableCell>
|
|
153
|
-
<TableCell header>库存</TableCell>
|
|
154
|
-
<TableCell header>状态</TableCell>
|
|
155
|
-
</TableHeader>
|
|
156
|
-
<TableRow>
|
|
157
|
-
<TableCell>iPhone 15</TableCell>
|
|
158
|
-
<TableCell>¥5999</TableCell>
|
|
159
|
-
<TableCell>50</TableCell>
|
|
160
|
-
<TableCell>在售</TableCell>
|
|
161
|
-
</TableRow>
|
|
162
|
-
<TableRow>
|
|
163
|
-
<TableCell>MacBook Pro</TableCell>
|
|
164
|
-
<TableCell>¥12999</TableCell>
|
|
165
|
-
<TableCell>20</TableCell>
|
|
166
|
-
<TableCell>在售</TableCell>
|
|
167
|
-
</TableRow>
|
|
168
|
-
<TableRow>
|
|
169
|
-
<TableCell>iPad Air</TableCell>
|
|
170
|
-
<TableCell>¥4399</TableCell>
|
|
171
|
-
<TableCell>0</TableCell>
|
|
172
|
-
<TableCell>缺货</TableCell>
|
|
173
|
-
</TableRow>
|
|
174
|
-
</Table>
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### 卡片组件
|
|
178
|
-
|
|
179
|
-
```mdx
|
|
180
|
-
<Card>
|
|
181
|
-
<CardTitle>MacBook Pro</CardTitle>
|
|
182
|
-
<CardContent>
|
|
183
|
-
<p>强大的性能,适用于专业工作负载</p>
|
|
184
|
-
<p><strong>价格:</strong> ¥12999</p>
|
|
185
|
-
<p><strong>库存:</strong> 20台</p>
|
|
186
|
-
</CardContent>
|
|
187
|
-
<CardActions>
|
|
188
|
-
<Button>加入购物车</Button>
|
|
189
|
-
<Button>查看详情</Button>
|
|
190
|
-
<Button style="backgroundColor: #28a745">立即购买</Button>
|
|
191
|
-
</CardActions>
|
|
192
|
-
</Card>
|
|
193
|
-
```
|
|
194
|
-
|
|
195
165
|
## 🛠️ API
|
|
196
166
|
|
|
197
167
|
### ReactAIRenderer 组件
|
|
198
168
|
|
|
199
169
|
主渲染组件,兼容 ReactMarkdown API。
|
|
200
170
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
rehypePlugins?: any[];
|
|
208
|
-
scope?: any;
|
|
209
|
-
[key: string]: any;
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### ComponentHandler 接口
|
|
214
|
-
|
|
215
|
-
用于注册自定义组件和生命周期钩子。
|
|
216
|
-
|
|
217
|
-
```tsx
|
|
218
|
-
interface ComponentHandler {
|
|
219
|
-
component: React.ComponentType<any>;
|
|
220
|
-
name: string;
|
|
221
|
-
selfClosing: boolean;
|
|
222
|
-
onRender?: (item: ComponentData, scope: any) => void;
|
|
223
|
-
}
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
## 🧩 内置组件
|
|
171
|
+
Props:
|
|
172
|
+
- `content`: Markdown/MDX 内容字符串
|
|
173
|
+
- `scope`: 传递给 MDX 的作用域对象
|
|
174
|
+
- `components`: 自定义组件映射
|
|
175
|
+
- `componentHandlers`: 组件处理器数组
|
|
176
|
+
- `children`: 作为内容的子元素(替代 content)
|
|
227
177
|
|
|
228
178
|
### Think 组件
|
|
229
179
|
|
|
230
|
-
用于展示 AI
|
|
231
|
-
|
|
232
|
-
```tsx
|
|
233
|
-
<Think>
|
|
234
|
-
正在分析用户需求...
|
|
235
|
-
</Think>
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
Think 组件会自动识别 `<Think>` 标签并将其内容渲染为可折叠的推理过程展示。
|
|
239
|
-
|
|
240
|
-
### CodeHighlight 组件
|
|
241
|
-
|
|
242
|
-
支持多种编程语言的代码高亮显示。
|
|
243
|
-
|
|
244
|
-
### MermaidRenderer 组件
|
|
245
|
-
|
|
246
|
-
动态加载和渲染 Mermaid 图表。
|
|
247
|
-
|
|
248
|
-
> 注意:Mermaid 是一个 peer dependency,需要在项目中单独安装。如果未安装 mermaid,图表将显示为代码块并提示安装信息。
|
|
249
|
-
|
|
250
|
-
## 🏗️ 构建配置
|
|
251
|
-
|
|
252
|
-
使用 Rollup 进行构建,输出 UMD 和 ESM 两种格式。
|
|
253
|
-
|
|
254
|
-
### 构建命令
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
npm run build
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### 开发模式
|
|
180
|
+
用于展示 AI 思考过程的组件。
|
|
261
181
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
182
|
+
Props:
|
|
183
|
+
- `title`: 思考步骤标题
|
|
184
|
+
- `children`: 思考内容
|
|
265
185
|
|
|
266
|
-
###
|
|
186
|
+
### ToolCall 组件
|
|
267
187
|
|
|
268
|
-
|
|
188
|
+
用于展示工具调用过程的组件。
|
|
269
189
|
|
|
270
|
-
|
|
190
|
+
Props:
|
|
191
|
+
- `name`: 工具名称
|
|
192
|
+
- `parameters`: 工具参数
|
|
193
|
+
- `result`: 工具调用结果
|
|
271
194
|
|
|
272
|
-
|
|
273
|
-
npm run build
|
|
274
|
-
npm run build:examples
|
|
275
|
-
```
|
|
195
|
+
## 📖 示例
|
|
276
196
|
|
|
277
|
-
|
|
197
|
+
运行示例:
|
|
278
198
|
|
|
279
199
|
```bash
|
|
280
200
|
npm run example
|
|
281
201
|
```
|
|
282
202
|
|
|
283
|
-
|
|
203
|
+
然后在浏览器中访问 http://localhost:3000/examples/example.html
|
|
284
204
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
示例页面现在使用本地构建的 React 依赖,不再依赖外部 CDN 链接,确保在任何环境下都能正常运行。
|
|
288
|
-
|
|
289
|
-
#### Node.js 示例
|
|
290
|
-
|
|
291
|
-
如果您想快速查看 API 使用方式,可以运行 Node.js 示例:
|
|
205
|
+
## 🧪 测试
|
|
292
206
|
|
|
293
207
|
```bash
|
|
294
|
-
npm
|
|
208
|
+
npm test
|
|
295
209
|
```
|
|
296
210
|
|
|
297
|
-
这将展示如何在 Node.js 环境中使用该库,并演示服务端渲染的基本用法。注意:由于 ReactAIRenderer 是一个 React 组件,它需要浏览器环境才能完全渲染,在 Node.js 环境中只能查看 API 使用方式和基本的服务端渲染输出。
|
|
298
|
-
|
|
299
|
-
## 📁 项目结构
|
|
300
|
-
|
|
301
|
-
```
|
|
302
|
-
react-ai-renderer/
|
|
303
|
-
├── src/
|
|
304
|
-
│ ├── index.ts # 入口文件
|
|
305
|
-
│ ├── ReactAIRenderer.tsx # 主渲染组件
|
|
306
|
-
│ ├── types.ts # 类型定义
|
|
307
|
-
│ ├── components/ # 内置组件
|
|
308
|
-
│ │ ├── BuiltInComponents.tsx # 内置组件集合
|
|
309
|
-
│ │ ├── CodeHighlight.tsx # 代码高亮组件
|
|
310
|
-
│ │ ├── ErrorBoundary.tsx # 错误边界组件
|
|
311
|
-
│ │ ├── ErrorUI.tsx # 错误展示组件
|
|
312
|
-
│ │ ├── MdxLayout.tsx # MDX 布局组件
|
|
313
|
-
│ │ ├── MermaidRenderer.tsx # Mermaid 图表渲染组件
|
|
314
|
-
│ │ ├── Think.tsx # AI 推理展示组件
|
|
315
|
-
│ │ └── ToolCall.tsx # 工具调用展示组件
|
|
316
|
-
│ └── utils/ # 工具函数
|
|
317
|
-
│ ├── contentProcessor.ts # 内容处理工具
|
|
318
|
-
│ ├── mdxRenderer.ts # MDX 渲染工具
|
|
319
|
-
│ └── mdxStreamParse.ts # MDX 流式解析工具
|
|
320
|
-
├── dist/ # 构建输出目录
|
|
321
|
-
├── examples/ # 示例文件
|
|
322
|
-
│ ├── components/ # UI 组件示例
|
|
323
|
-
│ │ ├── FormComponents.tsx # 表单组件
|
|
324
|
-
│ │ ├── TableComponents.tsx # 表格组件
|
|
325
|
-
│ │ ├── CardComponents.tsx # 卡片组件
|
|
326
|
-
│ │ └── index.ts # 组件导出
|
|
327
|
-
│ ├── example.tsx # React 示例
|
|
328
|
-
│ ├── example.html # HTML 示例
|
|
329
|
-
│ ├── run-example.js # Node.js 示例
|
|
330
|
-
│ ├── tsconfig.json # 示例编译配置
|
|
331
|
-
│ └── dist/ # 编译后的示例文件
|
|
332
|
-
├── package.json # 包配置文件
|
|
333
|
-
├── tsconfig.json # TypeScript 配置
|
|
334
|
-
├── rollup.config.js # Rollup 构建配置
|
|
335
|
-
└── README.md # 项目说明文档
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
## 🤝 贡献
|
|
339
|
-
|
|
340
|
-
欢迎提交 Issue 和 Pull Request 来改进这个项目。
|
|
341
|
-
|
|
342
211
|
## 📄 许可证
|
|
343
212
|
|
|
344
|
-
MIT
|
|
345
|
-
|
|
346
|
-
## 🙏 致谢
|
|
347
|
-
|
|
348
|
-
- [MDX](https://mdxjs.com/) - Markdown for the component era
|
|
349
|
-
- [Remark](https://remark.js.org/) - Markdown processor powered by plugins
|
|
350
|
-
- [Rehype](https://github.com/rehypejs/rehype) - HTML processor powered by plugins
|
|
351
|
-
- [Mermaid](https://mermaid-js.github.io/) - Generation of diagram and flowchart from text in a similar manner as markdown
|
|
213
|
+
MIT
|