# YysEditorEmbed 使用文档
## 简介
YysEditorEmbed 是 yys-editor 的可嵌入式组件版本,可以作为 Vue 组件集成到其他项目中。
## 安装
### 方式 1:本地引用(开发阶段)
在 `package.json` 中添加:
```json
{
"dependencies": {
"yys-editor": "file:../yys-editor"
}
}
```
然后运行:
```bash
npm install
```
### 方式 2:npm 包(发布后)
```bash
npm install yys-editor
```
## 基础使用
### 1. 引入组件
```vue
```
### 2. 预览模式
```vue
```
### 3. 编辑模式
```vue
```
## API 文档
### Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `data` | `GraphData` | `undefined` | 初始数据(LogicFlow GraphData 格式) |
| `mode` | `'preview' \| 'edit'` | `'edit'` | 模式:预览或编辑 |
| `width` | `string \| number` | `'100%'` | 宽度 |
| `height` | `string \| number` | `'600px'` | 高度 |
| `showToolbar` | `boolean` | `true` | 是否显示工具栏(仅编辑模式) |
| `showPropertyPanel` | `boolean` | `true` | 是否显示属性面板(仅编辑模式) |
| `showComponentPanel` | `boolean` | `true` | 是否显示组件库(仅编辑模式) |
| `config` | `EditorConfig` | `{}` | 编辑器配置 |
### Events
| 事件 | 参数 | 说明 |
|------|------|------|
| `update:data` | `(data: GraphData)` | 数据变更(实时) |
| `save` | `(data: GraphData)` | 保存(用户点击保存按钮) |
| `cancel` | `()` | 取消(用户点击取消按钮) |
| `error` | `(error: Error)` | 错误 |
### 方法(通过 ref 调用)
| 方法 | 参数 | 返回值 | 说明 |
|------|------|--------|------|
| `getGraphData()` | - | `GraphData \| null` | 获取当前画布数据 |
| `setGraphData(data)` | `GraphData` | `void` | 设置画布数据 |
### 类型定义
```typescript
interface GraphData {
nodes: NodeData[]
edges: EdgeData[]
}
interface NodeData {
id: string
type: string
x: number
y: number
properties?: Record
text?: { value: string }
}
interface EdgeData {
id: string
type: string
sourceNodeId: string
targetNodeId: string
properties?: Record
}
interface EditorConfig {
grid?: boolean
snapline?: boolean
keyboard?: boolean
theme?: 'light' | 'dark'
locale?: 'zh' | 'ja' | 'en'
}
```
## 使用场景
### 场景 1:在 Wiki 中作为块插件
```vue
```
### 场景 2:在管理后台中使用
```vue
```
### 场景 3:只读展示
```vue
流程图展示
```
## 高级用法
### 自定义配置
```vue
```
### 监听数据变化
```vue
```
### 错误处理
```vue
```
## 样式定制
### 覆盖默认样式
```vue
```
### 响应式布局
```vue
```
## 常见问题
### Q: 如何在 Nuxt 3 中使用?
A: 在 Nuxt 3 中,需要将组件设置为客户端渲染:
```vue
```
### Q: 如何保存和加载数据?
A: 使用 `getGraphData()` 和 `setGraphData()` 方法:
```vue
```
### Q: 如何禁用某些 UI 元素?
A: 使用 Props 控制:
```vue
```
### Q: 如何集成到现有项目?
A: 参考上面的"场景 1:在 Wiki 中作为块插件"示例。
## 浏览器兼容性
- Chrome >= 90
- Firefox >= 88
- Safari >= 14
- Edge >= 90
## 许可证
MIT
## 支持
如有问题,请提交 Issue 或联系开发团队。