@huanban/rulego-editor-react 1.0.0
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 +311 -0
- package/dist/components/ComponentSidebar.d.ts +77 -0
- package/dist/components/ComponentSidebar.d.ts.map +1 -0
- package/dist/components/ContextMenu.d.ts +102 -0
- package/dist/components/ContextMenu.d.ts.map +1 -0
- package/dist/components/DataViewDialog.d.ts +41 -0
- package/dist/components/DataViewDialog.d.ts.map +1 -0
- package/dist/components/DebugPanel.d.ts +92 -0
- package/dist/components/DebugPanel.d.ts.map +1 -0
- package/dist/components/EdgePropertyDrawer.d.ts +48 -0
- package/dist/components/EdgePropertyDrawer.d.ts.map +1 -0
- package/dist/components/EditorToolbar.d.ts +99 -0
- package/dist/components/EditorToolbar.d.ts.map +1 -0
- package/dist/components/ImportExportDialog.d.ts +45 -0
- package/dist/components/ImportExportDialog.d.ts.map +1 -0
- package/dist/components/MiniMap.d.ts +75 -0
- package/dist/components/MiniMap.d.ts.map +1 -0
- package/dist/components/NodePropertyDrawer.d.ts +83 -0
- package/dist/components/NodePropertyDrawer.d.ts.map +1 -0
- package/dist/components/RuleChainSettings.d.ts +74 -0
- package/dist/components/RuleChainSettings.d.ts.map +1 -0
- package/dist/components/RuleGoEditor.d.ts +168 -0
- package/dist/components/RuleGoEditor.d.ts.map +1 -0
- package/dist/components/SearchPanel.d.ts +52 -0
- package/dist/components/SearchPanel.d.ts.map +1 -0
- package/dist/components/ValidationPanel.d.ts +57 -0
- package/dist/components/ValidationPanel.d.ts.map +1 -0
- package/dist/components/WorkflowInfoPanel.d.ts +57 -0
- package/dist/components/WorkflowInfoPanel.d.ts.map +1 -0
- package/dist/components/WorkflowList.d.ts +91 -0
- package/dist/components/WorkflowList.d.ts.map +1 -0
- package/dist/hooks/useClipboard.d.ts +89 -0
- package/dist/hooks/useClipboard.d.ts.map +1 -0
- package/dist/hooks/useEditorCore.d.ts +102 -0
- package/dist/hooks/useEditorCore.d.ts.map +1 -0
- package/dist/hooks/useEditorI18n.d.ts +33 -0
- package/dist/hooks/useEditorI18n.d.ts.map +1 -0
- package/dist/hooks/useEditorTheme.d.ts +37 -0
- package/dist/hooks/useEditorTheme.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +73 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/index.cjs.js +2494 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +104 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +62356 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/style.css +1 -0
- package/package.json +69 -0
package/README.md
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# @huanban/editor-react
|
|
2
|
+
|
|
3
|
+
RuleGo 规则链编辑器 React 适配层。提供开箱即用的编辑器、工作流列表、信息面板等组件。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @huanban/editor-react
|
|
9
|
+
# 或
|
|
10
|
+
pnpm add @huanban/editor-react
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
> **自动安装的依赖:** `@logicflow/core@2.1.11`、`@logicflow/extension@2.1.11`、`@huanban/editor-core`
|
|
14
|
+
> **需要宿主项目提供:** `react >= 16.8`、`react-dom >= 16.8`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 样式引入
|
|
19
|
+
|
|
20
|
+
**一行搞定所有样式**(logicflow 基础样式 + 扩展样式 + 编辑器组件样式):
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
import '@huanban/editor-react/style.css'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 组件一览
|
|
29
|
+
|
|
30
|
+
| 组件 | 用途 | 说明 |
|
|
31
|
+
|------|------|------|
|
|
32
|
+
| `RuleGoEditor` | 规则链编辑器 | 完整的可视化编辑器 |
|
|
33
|
+
| `WorkflowList` | 工作流列表 | 展示所有规则链,支持搜索、创建、删除 |
|
|
34
|
+
| `WorkflowInfoPanel` | 工作流信息面板 | 展示单条链的详细信息和配置 |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 一、WorkflowList — 工作流列表
|
|
39
|
+
|
|
40
|
+
展示所有规则链,支持搜索、分页、创建、删除、编辑跳转。
|
|
41
|
+
|
|
42
|
+
### 基本用法
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import { WorkflowList } from '@huanban/editor-react'
|
|
46
|
+
import '@huanban/editor-react/style.css'
|
|
47
|
+
|
|
48
|
+
function WorkflowPage() {
|
|
49
|
+
return (
|
|
50
|
+
<WorkflowList
|
|
51
|
+
apiBase="http://localhost:9090/api/v1"
|
|
52
|
+
onEdit={(item) => {
|
|
53
|
+
// 跳转到编辑页
|
|
54
|
+
window.location.href = `/editor/${item.id}`
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Props
|
|
62
|
+
|
|
63
|
+
| 属性 | 类型 | 必填 | 说明 |
|
|
64
|
+
|------|------|------|------|
|
|
65
|
+
| `apiBase` | `string` | ✅ | 后端 API 地址,如 `http://localhost:9090/api/v1` |
|
|
66
|
+
| `onEdit` | `(item: WorkflowItem) => void` | ❌ | 点击"编辑"按钮的回调 |
|
|
67
|
+
| `customRoutes` | `RuleChainRoutes` | ❌ | 自定义 API 路由映射 |
|
|
68
|
+
| `customIcons` | `WorkflowListIcons` | ❌ | 自定义图标 |
|
|
69
|
+
| `theme` | `WorkflowTheme` | ❌ | 自定义主题色 |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 二、RuleGoEditor — 规则链编辑器
|
|
74
|
+
|
|
75
|
+
完整的可视化规则链编辑器,支持拖拽节点、连线、属性编辑、撤销/重做。
|
|
76
|
+
|
|
77
|
+
### 基本用法
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { RuleGoEditor } from '@huanban/editor-react'
|
|
81
|
+
import '@huanban/editor-react/style.css'
|
|
82
|
+
|
|
83
|
+
function EditorPage({ chainId }: { chainId: string }) {
|
|
84
|
+
const [chainData, setChainData] = useState(null)
|
|
85
|
+
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
fetch(`http://localhost:9090/api/v1/rule-chains/${chainId}`)
|
|
88
|
+
.then(res => res.json())
|
|
89
|
+
.then(data => setChainData(data))
|
|
90
|
+
}, [chainId])
|
|
91
|
+
|
|
92
|
+
const handleSave = (data) => {
|
|
93
|
+
fetch(`http://localhost:9090/api/v1/rule-chains/${chainId}`, {
|
|
94
|
+
method: 'PUT',
|
|
95
|
+
headers: { 'Content-Type': 'application/json' },
|
|
96
|
+
body: JSON.stringify(data),
|
|
97
|
+
})
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<RuleGoEditor
|
|
102
|
+
data={chainData}
|
|
103
|
+
onSave={handleSave}
|
|
104
|
+
height="100vh"
|
|
105
|
+
/>
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 链信息头部
|
|
111
|
+
|
|
112
|
+
编辑器顶部自动展示:
|
|
113
|
+
- **链名称** — 当前规则链的 name
|
|
114
|
+
- **主链/子链标签** — 根据 `ruleChain.root` 字段判断
|
|
115
|
+
- **已停用标签** — 当 `ruleChain.disabled` 为 true 时显示
|
|
116
|
+
- **Endpoint 列表** — 如果有 `metadata.endpoints` 则显示类型标签(如 HTTP、MQTT)
|
|
117
|
+
|
|
118
|
+
可通过 `showChainInfo={false}` 隐藏。
|
|
119
|
+
|
|
120
|
+
### Props
|
|
121
|
+
|
|
122
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
123
|
+
|------|------|--------|------|
|
|
124
|
+
| `data` | `RuleChainData \| null` | `null` | 规则链数据 |
|
|
125
|
+
| `options` | `Partial<EditorOptions>` | `{}` | 编辑器配置 |
|
|
126
|
+
| `onSave` | `(data) => void` | - | 保存回调 |
|
|
127
|
+
| `onReady` | `({ core, lf }) => void` | - | 编辑器就绪回调 |
|
|
128
|
+
| `showChainInfo` | `boolean` | `true` | 是否显示链信息头部 |
|
|
129
|
+
| `builtinUi` | `boolean` | `true` | 是否使用内置 UI |
|
|
130
|
+
| `height` | `string \| number` | `'100%'` | 编辑器高度 |
|
|
131
|
+
| `width` | `string \| number` | `'100%'` | 编辑器宽度 |
|
|
132
|
+
| `className` | `string` | `''` | 自定义 className |
|
|
133
|
+
| `style` | `CSSProperties` | `{}` | 自定义样式 |
|
|
134
|
+
| `onNodeClick` | `(node) => void` | - | 节点点击回调 |
|
|
135
|
+
| `onNodeDbClick` | `(node) => void` | - | 节点双击回调 |
|
|
136
|
+
| `onEdgeClick` | `(edge) => void` | - | 边点击回调 |
|
|
137
|
+
| `renderSidebar` | `({ groups, core }) => ReactNode` | - | 自定义侧边栏 |
|
|
138
|
+
| `renderToolbar` | `({ canUndo, canRedo, core }) => ReactNode` | - | 自定义工具栏 |
|
|
139
|
+
| `renderPanel` | `({ nodeView, nodeModel, core }) => ReactNode` | - | 自定义属性面板 |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 三、WorkflowInfoPanel — 工作流信息面板
|
|
144
|
+
|
|
145
|
+
展示单条规则链的详细信息、配置参数、集成地址等。
|
|
146
|
+
|
|
147
|
+
### 基本用法
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
import { WorkflowInfoPanel } from '@huanban/editor-react'
|
|
151
|
+
import '@huanban/editor-react/style.css'
|
|
152
|
+
|
|
153
|
+
function InfoPage({ workflowItem }) {
|
|
154
|
+
return (
|
|
155
|
+
<WorkflowInfoPanel
|
|
156
|
+
apiBase="http://localhost:9090/api/v1"
|
|
157
|
+
workflowItem={workflowItem}
|
|
158
|
+
onRefresh={() => { /* 重新加载数据 */ }}
|
|
159
|
+
/>
|
|
160
|
+
)
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Props
|
|
165
|
+
|
|
166
|
+
| 属性 | 类型 | 必填 | 说明 |
|
|
167
|
+
|------|------|------|------|
|
|
168
|
+
| `apiBase` | `string` | ✅ | 后端 API 地址 |
|
|
169
|
+
| `workflowItem` | `WorkflowItem` | ✅ | 工作流数据 |
|
|
170
|
+
| `onRefresh` | `() => void` | ❌ | 刷新回调 |
|
|
171
|
+
| `extraTabs` | `ExtraTab[]` | ❌ | 自定义扩展 Tab |
|
|
172
|
+
| `customRoutes` | `RuleChainRoutes` | ❌ | 自定义 API 路由 |
|
|
173
|
+
| `customIcons` | `WorkflowInfoIcons` | ❌ | 自定义图标 |
|
|
174
|
+
| `theme` | `WorkflowTheme` | ❌ | 自定义主题色 |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 四、完整项目示例
|
|
179
|
+
|
|
180
|
+
将三个组件组合使用的完整示例:
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
import { useState, useEffect } from 'react'
|
|
184
|
+
import { WorkflowList, RuleGoEditor, WorkflowInfoPanel } from '@huanban/editor-react'
|
|
185
|
+
import '@huanban/editor-react/style.css'
|
|
186
|
+
|
|
187
|
+
const API_BASE = 'http://localhost:9090/api/v1'
|
|
188
|
+
|
|
189
|
+
function App() {
|
|
190
|
+
const [view, setView] = useState<'list' | 'editor'>('list')
|
|
191
|
+
const [chainId, setChainId] = useState('')
|
|
192
|
+
const [chainData, setChainData] = useState(null)
|
|
193
|
+
|
|
194
|
+
// 加载链数据
|
|
195
|
+
useEffect(() => {
|
|
196
|
+
if (!chainId) return
|
|
197
|
+
fetch(`${API_BASE}/rule-chains/${chainId}`)
|
|
198
|
+
.then(res => res.json())
|
|
199
|
+
.then(data => setChainData(data))
|
|
200
|
+
}, [chainId])
|
|
201
|
+
|
|
202
|
+
// 保存
|
|
203
|
+
const handleSave = (data) => {
|
|
204
|
+
fetch(`${API_BASE}/rule-chains/${chainId}`, {
|
|
205
|
+
method: 'PUT',
|
|
206
|
+
headers: { 'Content-Type': 'application/json' },
|
|
207
|
+
body: JSON.stringify(data),
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (view === 'list') {
|
|
212
|
+
return (
|
|
213
|
+
<WorkflowList
|
|
214
|
+
apiBase={API_BASE}
|
|
215
|
+
onEdit={(item) => {
|
|
216
|
+
setChainId(item.id)
|
|
217
|
+
setView('editor')
|
|
218
|
+
}}
|
|
219
|
+
/>
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return (
|
|
224
|
+
<div style={{ display: 'flex', height: '100vh' }}>
|
|
225
|
+
<div style={{ flex: 1 }}>
|
|
226
|
+
<RuleGoEditor
|
|
227
|
+
data={chainData}
|
|
228
|
+
onSave={handleSave}
|
|
229
|
+
/>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 五、Hooks
|
|
239
|
+
|
|
240
|
+
适用于需要完全自定义 UI 的场景:
|
|
241
|
+
|
|
242
|
+
| Hook | 说明 |
|
|
243
|
+
|------|------|
|
|
244
|
+
| `useEditorCore` | 创建和管理 EditorCore 实例 |
|
|
245
|
+
| `useEditorTheme` | 主题切换 (亮色/暗色/蓝色) |
|
|
246
|
+
| `useEditorI18n` | 国际化切换 (中文/英文) |
|
|
247
|
+
| `useKeyboardShortcuts` | 键盘快捷键绑定 |
|
|
248
|
+
| `useClipboard` | 节点复制/粘贴 |
|
|
249
|
+
|
|
250
|
+
```tsx
|
|
251
|
+
import { useEditorCore, useEditorTheme } from '@huanban/editor-react'
|
|
252
|
+
|
|
253
|
+
function MyCustomEditor() {
|
|
254
|
+
const { core, isReady, componentGroups } = useEditorCore({
|
|
255
|
+
url: 'http://localhost:9090/api/v1',
|
|
256
|
+
})
|
|
257
|
+
const { setTheme } = useEditorTheme(core)
|
|
258
|
+
|
|
259
|
+
return (
|
|
260
|
+
<div>
|
|
261
|
+
<button onClick={() => setTheme('dark')}>暗色</button>
|
|
262
|
+
{/* 自定义的编辑器 UI */}
|
|
263
|
+
</div>
|
|
264
|
+
)
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 六、Next.js 集成
|
|
271
|
+
|
|
272
|
+
### Pages Router
|
|
273
|
+
|
|
274
|
+
```tsx
|
|
275
|
+
import dynamic from 'next/dynamic'
|
|
276
|
+
|
|
277
|
+
const RuleGoEditor = dynamic(
|
|
278
|
+
() => import('@huanban/editor-react').then(m => ({ default: m.RuleGoEditor })),
|
|
279
|
+
{ ssr: false }
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
export default function EditorPage() {
|
|
283
|
+
return <RuleGoEditor data={chainData} onSave={handleSave} />
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### App Router
|
|
288
|
+
|
|
289
|
+
```tsx
|
|
290
|
+
'use client'
|
|
291
|
+
import { RuleGoEditor } from '@huanban/editor-react'
|
|
292
|
+
import '@huanban/editor-react/style.css'
|
|
293
|
+
|
|
294
|
+
export default function EditorPage() {
|
|
295
|
+
return <RuleGoEditor data={chainData} onSave={handleSave} />
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## 版本说明
|
|
302
|
+
|
|
303
|
+
| 版本 | 变更 |
|
|
304
|
+
|------|------|
|
|
305
|
+
| 0.6.0 | 编辑器顶部新增链信息头部(名称 + 主链/子链 + endpoint);样式打包优化(一个 style.css 包含所有样式);依赖锁定 logicflow 2.1.11 |
|
|
306
|
+
| 0.5.0 | WorkflowList、WorkflowInfoPanel 组件 |
|
|
307
|
+
| 0.4.0 | 初始版本 |
|
|
308
|
+
|
|
309
|
+
## License
|
|
310
|
+
|
|
311
|
+
Apache-2.0
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file components/ComponentSidebar.tsx
|
|
3
|
+
* @description 组件侧边栏 — React 实现
|
|
4
|
+
*
|
|
5
|
+
* 功能:
|
|
6
|
+
* - 展示 RuleGo 组件列表,按 category 分组折叠
|
|
7
|
+
* - 支持关键词搜索过滤组件
|
|
8
|
+
* - 拖拽组件到画布触发 onDragStart 事件
|
|
9
|
+
* - 根据组件类型显示不同分类的颜色标签
|
|
10
|
+
* - 零 UI 框架依赖(纯 React + CSS)
|
|
11
|
+
*
|
|
12
|
+
* 数据入参:
|
|
13
|
+
* @param components — 后端返回的原始组件数组
|
|
14
|
+
* @param onDragStart — 拖拽开始的回调,传递组件数据
|
|
15
|
+
* @param collapsed — 是否收起侧边栏
|
|
16
|
+
*
|
|
17
|
+
* @see ComponentDefinition — 组件定义类型
|
|
18
|
+
*/
|
|
19
|
+
import React from 'react';
|
|
20
|
+
/** 组件字段定义(用于属性编辑面板) */
|
|
21
|
+
export interface ComponentField {
|
|
22
|
+
/** 字段名 */
|
|
23
|
+
name: string;
|
|
24
|
+
/** 字段类型:string | bool | int | float | map | array | code | json | select */
|
|
25
|
+
type: string;
|
|
26
|
+
/** 显示标签 */
|
|
27
|
+
label?: string;
|
|
28
|
+
/** 字段描述 */
|
|
29
|
+
desc?: string;
|
|
30
|
+
/** 默认值 */
|
|
31
|
+
defaultValue?: unknown;
|
|
32
|
+
/** 校验规则 */
|
|
33
|
+
rules?: unknown[];
|
|
34
|
+
}
|
|
35
|
+
/** 单个组件定义 */
|
|
36
|
+
export interface RuleGoComponent {
|
|
37
|
+
/** 组件类型标识,如 'action/log' */
|
|
38
|
+
type: string;
|
|
39
|
+
/** 分类,如 'action' | 'filter' | 'transform' */
|
|
40
|
+
category: string;
|
|
41
|
+
/** 显示标签 */
|
|
42
|
+
label?: string;
|
|
43
|
+
/** 描述 */
|
|
44
|
+
desc?: string;
|
|
45
|
+
/** 字段定义列表 */
|
|
46
|
+
fields?: ComponentField[];
|
|
47
|
+
/** 自定义图标 */
|
|
48
|
+
icon?: string;
|
|
49
|
+
/** 组件颜色 */
|
|
50
|
+
background?: string;
|
|
51
|
+
/** 是否无输入端口 */
|
|
52
|
+
notInput?: boolean;
|
|
53
|
+
/** 是否无输出端口 */
|
|
54
|
+
notOutput?: boolean;
|
|
55
|
+
/** 额外扩展属性 */
|
|
56
|
+
[key: string]: unknown;
|
|
57
|
+
}
|
|
58
|
+
/** 组件侧边栏 Props */
|
|
59
|
+
export interface ComponentSidebarProps {
|
|
60
|
+
/** 后端组件原始列表 */
|
|
61
|
+
components: RuleGoComponent[];
|
|
62
|
+
/** 拖拽开始回调 */
|
|
63
|
+
onDragStart?: (component: RuleGoComponent) => void;
|
|
64
|
+
/** 是否收起 */
|
|
65
|
+
collapsed?: boolean;
|
|
66
|
+
/** 搜索框占位符 */
|
|
67
|
+
searchPlaceholder?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ComponentSidebar 组件
|
|
71
|
+
*
|
|
72
|
+
* 纯 React + CSS 实现的组件侧边栏,无 antd 依赖。
|
|
73
|
+
* 提供分类分组、搜索过滤、拖拽功能。
|
|
74
|
+
*/
|
|
75
|
+
declare const ComponentSidebar: React.FC<ComponentSidebarProps>;
|
|
76
|
+
export default ComponentSidebar;
|
|
77
|
+
//# sourceMappingURL=ComponentSidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentSidebar.d.ts","sourceRoot":"","sources":["../../src/components/ComponentSidebar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,uBAAuB;AACvB,MAAM,WAAW,cAAc;IAC7B,UAAU;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU;IACV,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;CAClB;AAED,aAAa;AACb,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa;IACb,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;IACzB,YAAY;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAcD,kBAAkB;AAClB,MAAM,WAAW,qBAAqB;IACpC,eAAe;IACf,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,aAAa;IACb,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD,WAAW;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAgDD;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAgJrD,CAAA;AAID,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file components/ContextMenu.tsx
|
|
3
|
+
* @description 右键上下文菜单 — React 实现
|
|
4
|
+
*
|
|
5
|
+
* 功能:
|
|
6
|
+
* - 节点右键菜单(复制/粘贴/删除/编辑属性/查看连接)
|
|
7
|
+
* - 边右键菜单(编辑属性/删除)
|
|
8
|
+
* - 画布右键菜单(粘贴/适配画布/选中全部)
|
|
9
|
+
* - 子菜单支持
|
|
10
|
+
* - 点击外部自动关闭
|
|
11
|
+
* - 键盘导航支持
|
|
12
|
+
* - 零 UI 框架依赖(纯 React + CSS)
|
|
13
|
+
*
|
|
14
|
+
* @see ContextMenuProps — 菜单参数
|
|
15
|
+
*/
|
|
16
|
+
import React from 'react';
|
|
17
|
+
/** 菜单项定义 */
|
|
18
|
+
export interface ContextMenuItem {
|
|
19
|
+
/** 唯一标识 */
|
|
20
|
+
key: string;
|
|
21
|
+
/** 显示标签 */
|
|
22
|
+
label: string;
|
|
23
|
+
/** 图标(emoji 或文本) */
|
|
24
|
+
icon?: string;
|
|
25
|
+
/** 快捷键提示文本 */
|
|
26
|
+
shortcut?: string;
|
|
27
|
+
/** 是否禁用 */
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/** 是否隐藏 */
|
|
30
|
+
hidden?: boolean;
|
|
31
|
+
/** 是否为危险操作(红色样式) */
|
|
32
|
+
danger?: boolean;
|
|
33
|
+
/** 分隔线(在此项前添加分隔线) */
|
|
34
|
+
dividerBefore?: boolean;
|
|
35
|
+
/** 子菜单 */
|
|
36
|
+
children?: ContextMenuItem[];
|
|
37
|
+
/** 点击回调 */
|
|
38
|
+
onClick?: () => void;
|
|
39
|
+
}
|
|
40
|
+
/** 菜单目标类型 */
|
|
41
|
+
export type ContextMenuTarget = 'node' | 'edge' | 'canvas';
|
|
42
|
+
/** ContextMenu Props */
|
|
43
|
+
export interface ContextMenuProps {
|
|
44
|
+
/** 是否可见 */
|
|
45
|
+
visible: boolean;
|
|
46
|
+
/** 菜单显示坐标 X */
|
|
47
|
+
x: number;
|
|
48
|
+
/** 菜单显示坐标 Y */
|
|
49
|
+
y: number;
|
|
50
|
+
/** 右键目标类型 */
|
|
51
|
+
targetType?: ContextMenuTarget;
|
|
52
|
+
/** 右键目标 ID */
|
|
53
|
+
targetId?: string;
|
|
54
|
+
/** 菜单项列表 */
|
|
55
|
+
items: ContextMenuItem[];
|
|
56
|
+
/** 关闭菜单回调 */
|
|
57
|
+
onClose: () => void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* ContextMenu 组件
|
|
61
|
+
*
|
|
62
|
+
* 纯 React 实现的右键菜单,支持子菜单和键盘导航。
|
|
63
|
+
*/
|
|
64
|
+
declare const ContextMenu: React.FC<ContextMenuProps>;
|
|
65
|
+
/**
|
|
66
|
+
* 生成节点右键菜单项
|
|
67
|
+
*
|
|
68
|
+
* @param handlers - 菜单操作回调
|
|
69
|
+
* @returns 菜单项列表
|
|
70
|
+
*/
|
|
71
|
+
export declare function getNodeContextMenuItems(handlers: {
|
|
72
|
+
onCopy?: () => void;
|
|
73
|
+
onPaste?: () => void;
|
|
74
|
+
onDelete?: () => void;
|
|
75
|
+
onEditProperties?: () => void;
|
|
76
|
+
onViewConnections?: () => void;
|
|
77
|
+
onDuplicate?: () => void;
|
|
78
|
+
}): ContextMenuItem[];
|
|
79
|
+
/**
|
|
80
|
+
* 生成边右键菜单项
|
|
81
|
+
*
|
|
82
|
+
* @param handlers - 菜单操作回调
|
|
83
|
+
* @returns 菜单项列表
|
|
84
|
+
*/
|
|
85
|
+
export declare function getEdgeContextMenuItems(handlers: {
|
|
86
|
+
onEditProperties?: () => void;
|
|
87
|
+
onDelete?: () => void;
|
|
88
|
+
}): ContextMenuItem[];
|
|
89
|
+
/**
|
|
90
|
+
* 生成画布右键菜单项
|
|
91
|
+
*
|
|
92
|
+
* @param handlers - 菜单操作回调
|
|
93
|
+
* @returns 菜单项列表
|
|
94
|
+
*/
|
|
95
|
+
export declare function getCanvasContextMenuItems(handlers: {
|
|
96
|
+
onPaste?: () => void;
|
|
97
|
+
onSelectAll?: () => void;
|
|
98
|
+
onFitView?: () => void;
|
|
99
|
+
onResetZoom?: () => void;
|
|
100
|
+
}): ContextMenuItem[];
|
|
101
|
+
export default ContextMenu;
|
|
102
|
+
//# sourceMappingURL=ContextMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/components/ContextMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,YAAY;AACZ,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,GAAG,EAAE,MAAM,CAAA;IACX,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,oBAAoB;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qBAAqB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU;IACV,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;IAC5B,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE1D,wBAAwB;AACxB,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe;IACf,CAAC,EAAE,MAAM,CAAA;IACT,eAAe;IACf,CAAC,EAAE,MAAM,CAAA;IACT,aAAa;IACb,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY;IACZ,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,aAAa;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;GAIG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+G3C,CAAA;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,GAAG,eAAe,EAAE,CAQpB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,GAAG,eAAe,EAAE,CAKpB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,GAAG,eAAe,EAAE,CAOpB;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file components/DataViewDialog.tsx
|
|
3
|
+
* @description 规则链数据查看对话框 — React 实现
|
|
4
|
+
*
|
|
5
|
+
* 功能:
|
|
6
|
+
* - 以格式化 JSON 展示规则链完整数据
|
|
7
|
+
* - 支持复制到剪贴板
|
|
8
|
+
* - 支持下载为 JSON 文件
|
|
9
|
+
* - 零 UI 框架依赖(纯 React + CSS)
|
|
10
|
+
*
|
|
11
|
+
* @see DataViewDialogProps — 组件参数
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
/** DataViewDialog Props */
|
|
15
|
+
export interface DataViewDialogProps {
|
|
16
|
+
/** 是否显示 */
|
|
17
|
+
visible: boolean;
|
|
18
|
+
/** 规则链 JSON 数据(原始对象) */
|
|
19
|
+
data: unknown;
|
|
20
|
+
/** 对话框标题 */
|
|
21
|
+
title?: string;
|
|
22
|
+
/** 文件名前缀(下载用) */
|
|
23
|
+
fileNamePrefix?: string;
|
|
24
|
+
/** 关闭回调 */
|
|
25
|
+
onClose: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* 提示消息回调(替代 antd message)
|
|
28
|
+
* @param type 类型
|
|
29
|
+
* @param content 内容
|
|
30
|
+
*/
|
|
31
|
+
onNotify?: (type: 'success' | 'error' | 'info', content: string) => void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* DataViewDialog 组件
|
|
35
|
+
*
|
|
36
|
+
* 纯 React 实现的规则链数据查看对话框,无 antd 依赖。
|
|
37
|
+
* 提供格式化 JSON 展示、复制和下载功能。
|
|
38
|
+
*/
|
|
39
|
+
declare const DataViewDialog: React.FC<DataViewDialogProps>;
|
|
40
|
+
export default DataViewDialog;
|
|
41
|
+
//# sourceMappingURL=DataViewDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataViewDialog.d.ts","sourceRoot":"","sources":["../../src/components/DataViewDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,2BAA2B;AAC3B,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,wBAAwB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACzE;AAED;;;;;GAKG;AACH,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0EjD,CAAA;AAID,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file components/DebugPanel.tsx
|
|
3
|
+
* @description 调试面板 — React 实现
|
|
4
|
+
*
|
|
5
|
+
* 功能:
|
|
6
|
+
* - 发送测试消息到规则链
|
|
7
|
+
* - 查看节点调试日志
|
|
8
|
+
* - 查看运行日志列表
|
|
9
|
+
* - 零 UI 框架依赖(纯 React + CSS)
|
|
10
|
+
*
|
|
11
|
+
* 设计说明:
|
|
12
|
+
* 不直接调用 API,而是通过 Props 传入回调函数,
|
|
13
|
+
* 使此组件可在不同项目中复用。
|
|
14
|
+
*
|
|
15
|
+
* @see DebugPanelProps — 组件参数
|
|
16
|
+
*/
|
|
17
|
+
import React from 'react';
|
|
18
|
+
/** 调试日志条目 */
|
|
19
|
+
export interface DebugLogItem {
|
|
20
|
+
/** 时间戳 */
|
|
21
|
+
ts: number;
|
|
22
|
+
/** 流转类型 */
|
|
23
|
+
flowType: string;
|
|
24
|
+
/** 关系类型 */
|
|
25
|
+
relationType: string;
|
|
26
|
+
/** 错误信息 */
|
|
27
|
+
err?: string;
|
|
28
|
+
/** 消息数据 */
|
|
29
|
+
msg: {
|
|
30
|
+
id: string;
|
|
31
|
+
type: string;
|
|
32
|
+
data: string;
|
|
33
|
+
metadata: Record<string, unknown>;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** 发送测试消息返回结果 */
|
|
37
|
+
export interface SendMessageResult {
|
|
38
|
+
/** 是否成功 */
|
|
39
|
+
success: boolean;
|
|
40
|
+
/** 返回数据 */
|
|
41
|
+
data?: unknown;
|
|
42
|
+
/** 错误/提示消息 */
|
|
43
|
+
msg?: string;
|
|
44
|
+
}
|
|
45
|
+
/** DebugPanel Props */
|
|
46
|
+
export interface DebugPanelProps {
|
|
47
|
+
/** 是否显示 */
|
|
48
|
+
visible: boolean;
|
|
49
|
+
/** 当前规则链 ID */
|
|
50
|
+
chainId: string;
|
|
51
|
+
/** 选中的节点 ID(可选) */
|
|
52
|
+
selectedNodeId?: string;
|
|
53
|
+
/** 关闭回调 */
|
|
54
|
+
onClose: () => void;
|
|
55
|
+
/**
|
|
56
|
+
* 发送测试消息的回调
|
|
57
|
+
* @param chainId 规则链 ID
|
|
58
|
+
* @param msgType 消息类型
|
|
59
|
+
* @param body 消息体
|
|
60
|
+
* @returns 发送结果
|
|
61
|
+
*/
|
|
62
|
+
onSendMessage?: (chainId: string, msgType: string, body: unknown) => Promise<SendMessageResult>;
|
|
63
|
+
/**
|
|
64
|
+
* 获取调试日志的回调
|
|
65
|
+
* @param chainId 规则链 ID
|
|
66
|
+
* @param nodeId 可选节点 ID
|
|
67
|
+
* @returns 调试日志列表
|
|
68
|
+
*/
|
|
69
|
+
onFetchDebugLogs?: (chainId: string, nodeId?: string) => Promise<{
|
|
70
|
+
items: DebugLogItem[];
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* 获取运行日志的回调
|
|
74
|
+
* @returns 运行日志列表
|
|
75
|
+
*/
|
|
76
|
+
onFetchRunLogs?: () => Promise<unknown[]>;
|
|
77
|
+
/**
|
|
78
|
+
* 提示消息回调(替代 antd message)
|
|
79
|
+
* @param type 提示类型
|
|
80
|
+
* @param content 提示内容
|
|
81
|
+
*/
|
|
82
|
+
onNotify?: (type: 'success' | 'error' | 'warning' | 'info', content: string) => void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* DebugPanel 组件
|
|
86
|
+
*
|
|
87
|
+
* 纯 React 实现的调试面板,无 antd 依赖。
|
|
88
|
+
* 通过回调函数与外部 API 对接,实现测试消息发送和日志查看。
|
|
89
|
+
*/
|
|
90
|
+
declare const DebugPanel: React.FC<DebugPanelProps>;
|
|
91
|
+
export default DebugPanel;
|
|
92
|
+
//# sourceMappingURL=DebugPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DebugPanel.d.ts","sourceRoot":"","sources":["../../src/components/DebugPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAgC,MAAM,OAAO,CAAA;AAIpD,aAAa;AACb,MAAM,WAAW,YAAY;IAC3B,UAAU;IACV,EAAE,EAAE,MAAM,CAAA;IACV,WAAW;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,CAAA;CACF;AAED,iBAAiB;AACjB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,cAAc;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,uBAAuB;AACvB,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe;IACf,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/F;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAA;IAC3F;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACrF;AAcD;;;;;GAKG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgTzC,CAAA;AAID,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file components/EdgePropertyDrawer.tsx
|
|
3
|
+
* @description 边属性编辑抽屉 — React 实现
|
|
4
|
+
*
|
|
5
|
+
* 功能:
|
|
6
|
+
* - 双击连线弹出侧边抽屉,编辑连线的关系类型(relationType)
|
|
7
|
+
* - 支持常见预定义类型、自定义类型输入
|
|
8
|
+
* - 提交后通过 onSubmit 更新边的属性
|
|
9
|
+
* - 零 UI 框架依赖(纯 React + CSS)
|
|
10
|
+
*
|
|
11
|
+
* @see EdgeModel — 边模型类型
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
/** 边模型数据 */
|
|
15
|
+
export interface EdgeModel {
|
|
16
|
+
/** 边 ID */
|
|
17
|
+
id: string;
|
|
18
|
+
/** 来源节点 ID */
|
|
19
|
+
sourceNodeId: string;
|
|
20
|
+
/** 目标节点 ID */
|
|
21
|
+
targetNodeId: string;
|
|
22
|
+
/** 边类型 */
|
|
23
|
+
type: string;
|
|
24
|
+
/** 关系类型 */
|
|
25
|
+
relationType?: string;
|
|
26
|
+
/** 额外属性 */
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
/** EdgePropertyDrawer Props */
|
|
30
|
+
export interface EdgePropertyDrawerProps {
|
|
31
|
+
/** 是否显示 */
|
|
32
|
+
visible: boolean;
|
|
33
|
+
/** 边模型数据 */
|
|
34
|
+
edgeModel: EdgeModel | null;
|
|
35
|
+
/** 提交回调,传递更新后的边模型 */
|
|
36
|
+
onSubmit: (model: EdgeModel) => void;
|
|
37
|
+
/** 关闭回调 */
|
|
38
|
+
onClose: () => void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* EdgePropertyDrawer 组件
|
|
42
|
+
*
|
|
43
|
+
* 纯 React 实现的边属性编辑抽屉,无 antd 依赖。
|
|
44
|
+
* 提供预定义关系类型选择和自定义输入。
|
|
45
|
+
*/
|
|
46
|
+
declare const EdgePropertyDrawer: React.FC<EdgePropertyDrawerProps>;
|
|
47
|
+
export default EdgePropertyDrawer;
|
|
48
|
+
//# sourceMappingURL=EdgePropertyDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgePropertyDrawer.d.ts","sourceRoot":"","sources":["../../src/components/EdgePropertyDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,YAAY;AACZ,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,EAAE,EAAE,MAAM,CAAA;IACV,cAAc;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,+BAA+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY;IACZ,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACpC,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAWD;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsIzD,CAAA;AAID,eAAe,kBAAkB,CAAA"}
|