内置 Widget 类型
VizChat 画布内置十余种 widget 类型,覆盖图表、表格、富文本、网页嵌入、PDF、代码高亮、用户 Widget 等场景,每种 widget 都有独立的 schema / config / renderer。
VizChat 把画布内容拆成 widget 类型,每种类型都有自己的数据 schema、配置面板和渲染器。下表列出当前仓库内已注册的内置 widget 类型,按"原生 React widget"和"iframe 打包 widget"两类组织(前者直接在 Next.js 里跑,后者由编译后的 bundle.js 注入 iframe)。
原生 React widget(react-native-widgets/)
| 类型 ID | 用途 |
|---|---|
bar-chart | D3 柱状图,支持主题联动、数据绑定 |
line-chart | D3 折线图,适合时间序列 |
pie-chart | D3 饼图 / 环形图 |
math-coordinate | 数学坐标系,用于函数图像、几何作图 |
rich-text | 富文本 widget(Lexical 编辑器),支持 LaTeX、代码、section marker |
code-viewer | 代码高亮查看器(Shiki 驱动) |
widget | 用户 / Agent 发布的 HTML+JS Widget,sandbox iframe 渲染 |
slide-title | Storyboard 场景下的标题 widget |
iframe 打包 widget(custom-widgets/)
| 类型 ID | 用途 |
|---|---|
infographic | 信息图 widget:用 HTML/CSS 自由布局的可视化 |
pdf-viewer | PDF 预览 + 注释 |
web-viewer | 嵌入任意网页(受 CSP 限制) |
三层架构
每个 widget 类型都由三层组成,职责严格分离:
widget-schema.ts —— Zod schema:snapshot.content / snapshot.config
widget-config.ts —— 元信息:displayName、icon、默认尺寸、能力声明
<Type>Widget.tsx —— Renderer:React 组件 + D3 / Lexical / iframe
这样 AI Agent 可以通过读 schema 理解 widget 能接收什么数据,通过调用 operations 改写 widget,而不需要知道渲染细节。
Next step
- Widget 总览 — widget 功能段索引
- User Widget — 运行时生成的 HTML Widget
- 连线与数据流 — widget 之间如何连