wechen-agent-editor-v1 1.2.3 → 1.3.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 +54 -21
- package/dist/WechenAgentEditor.d.ts +8 -0
- package/dist/WechenAgentEditor.d.ts.map +1 -1
- package/dist/WechenAgentEditorContext.d.ts +7 -0
- package/dist/WechenAgentEditorContext.d.ts.map +1 -1
- package/dist/flow/PathEditContext.d.ts +16 -0
- package/dist/flow/PathEditContext.d.ts.map +1 -0
- package/dist/flow/edgeLayoutSnapshot.d.ts +2 -2
- package/dist/flow/edgeLayoutSnapshot.d.ts.map +1 -1
- package/dist/flow/edgeOrthogonalPath.d.ts +3 -2
- package/dist/flow/edgeOrthogonalPath.d.ts.map +1 -1
- package/dist/flow/edgePolylinePath.d.ts +81 -0
- package/dist/flow/edgePolylinePath.d.ts.map +1 -0
- package/dist/flow/flowGraphMutations.d.ts +10 -0
- package/dist/flow/flowGraphMutations.d.ts.map +1 -1
- package/dist/flow/flowJsonUtils.d.ts.map +1 -1
- package/dist/flow/nodes/CardNode.d.ts.map +1 -1
- package/dist/flow/nodes/MainAgentNode.d.ts.map +1 -1
- package/dist/flow/nodes/PillNode.d.ts.map +1 -1
- package/dist/flow/selectionToolbar/EdgeSelectionToolbar.d.ts +13 -0
- package/dist/flow/selectionToolbar/EdgeSelectionToolbar.d.ts.map +1 -0
- package/dist/flow/selectionToolbar/SelectionToolbar.d.ts +30 -0
- package/dist/flow/selectionToolbar/SelectionToolbar.d.ts.map +1 -0
- package/dist/flow/selectionToolbar/WechenNodeSelectionToolbar.d.ts +7 -0
- package/dist/flow/selectionToolbar/WechenNodeSelectionToolbar.d.ts.map +1 -0
- package/dist/flow/selectionToolbar/edgeSelectionToolbarLogic.d.ts +15 -0
- package/dist/flow/selectionToolbar/edgeSelectionToolbarLogic.d.ts.map +1 -0
- package/dist/flow/selectionToolbar/polylineMidpoint.d.ts +7 -0
- package/dist/flow/selectionToolbar/polylineMidpoint.d.ts.map +1 -0
- package/dist/flow/selectionToolbar/selectionToolbarVisibility.d.ts +24 -0
- package/dist/flow/selectionToolbar/selectionToolbarVisibility.d.ts.map +1 -0
- package/dist/flow/wechenAgentEdgeTypes.d.ts +2 -15
- package/dist/flow/wechenAgentEdgeTypes.d.ts.map +1 -1
- package/dist/flowTypes.d.ts +15 -0
- package/dist/flowTypes.d.ts.map +1 -1
- package/dist/i18n/localeKeys.d.ts +5 -0
- package/dist/i18n/localeKeys.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9544 -8941
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,12 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
**包名**:以 `package.json` 的 `name` 为准(`wechen-agent-editor-v1`)。安装与 `import` 均使用该名称。
|
|
6
6
|
|
|
7
|
+
> **宿主集成必读**:本包 **`dependencies` 为空**,运行时能力全部来自 **peerDependencies**。除 `npm install wechen-agent-editor-v1` 外,须在**业务工程根目录**一并安装 **`react` / `react-dom` / `antd` / `@xyflow/react` / `dagre` / `monaco-editor` / `@monaco-editor/react`**(见下文 [安装](#安装))。缺任一项会导致画布空白、连线失效、自动排版失败或 Monaco 无法加载。
|
|
8
|
+
|
|
7
9
|
## 快速开始
|
|
8
10
|
|
|
9
11
|
### 60 秒最小集成(L0)
|
|
10
12
|
|
|
11
13
|
只需 **`onSave`** 与 antd **`ConfigProvider`**,并保证父容器有高度(例如 `height: 100%` 链或 `100vh`)。未传 **`initialFlow`** 时为**空画布**(与编辑器默认一致)。
|
|
12
14
|
|
|
15
|
+
**安装**(在宿主项目根目录执行,勿只装本包):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install wechen-agent-editor-v1 react react-dom antd @xyflow/react dagre monaco-editor @monaco-editor/react
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Monaco 还需在应用入口配置 **worker**(见 [Monaco Worker](#monaco-worker))。
|
|
22
|
+
|
|
13
23
|
```tsx
|
|
14
24
|
import { ConfigProvider } from "antd";
|
|
15
25
|
import {
|
|
@@ -150,7 +160,9 @@ WechenAgentEditor(编排) → onSave / exportBackendWorkflowJson → 宿主
|
|
|
150
160
|
|
|
151
161
|
- **`onTestRun` / `ref.testRun()`**:仅触发宿主回调,具体执行由宿主实现。
|
|
152
162
|
- **`validateWechenAgentFlow(flow)`**:纯函数图校验(默认不阻断保存);可在 `onBeforeSave` 内返回 `false` 拦截。
|
|
153
|
-
- **ref 增删改查**:`getSnapshot` / **`getFlow` / `getInitialFlow`**(与 **`initialFlow` 同形**)/ **`replaceFlow` / `setInitialFlow`** / `patchNodeData` / `removeNode` / **`removeEdge` / `deleteEdge`** / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect`(见 `WechenAgentEditorRef`)。
|
|
163
|
+
- **ref 增删改查**:`getSnapshot` / **`getFlow` / `getInitialFlow`**(与 **`initialFlow` 同形**)/ **`replaceFlow` / `setInitialFlow`** / `patchNodeData` / `removeNode` / **`duplicateNode`** / **`removeEdge` / `deleteEdge`** / **`resetEdgePath`** / **`insertEdgePathVertex` / `removeEdgePathVertex` / `selectEdgePathVertex`** / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect`(见 `WechenAgentEditorRef`)。
|
|
164
|
+
- **连线路径(自由折线)**:选中边后浮动条「添加拐点」;仅 **中间拐点** 可拖拽(任意角度线段),首尾随节点桩固定;**水平/垂直线段** 可整条平移(鼠标移到线段上,光标变为 ↔ 或 ↕);`Delete` 在顶点选中时删点。`normalizeWechenAgentFlowJson` 会清除无效 `path` 并回到 `auto`。
|
|
165
|
+
- **选中浮动操作条**:单选节点时显示 **删除 / 复制**;单选边时显示 **删除**、**添加/删除拐点**、手动边 **恢复自动路径**。与边上 **路径顶点手柄**(几何编辑)分工;浮动条锚点在路径外侧,避免压住连线与节点。`readOnly` / `readingMode` / 多选时不显示。可选 **`renderSelectionToolbar`** 扩展。
|
|
154
166
|
- **布局相关 ref**(`readOnly` / `readingMode` 下均为 no-op):
|
|
155
167
|
|
|
156
168
|
| 方法 | 作用 |
|
|
@@ -188,25 +200,42 @@ import { validateWechenAgentFlow } from "wechen-agent-editor-v1";
|
|
|
188
200
|
|
|
189
201
|
## 安装
|
|
190
202
|
|
|
203
|
+
本包为 **纯组件库**:`package.json` 中 **`dependencies` 为空**,**不会**把 React Flow、Dagre、Monaco 等打进你的 `node_modules` 树里作为本包的私有副本。宿主必须在**应用根**声明下列 **peer**,并与本包解析到**同一份**运行时(尤其 `@xyflow/react`)。
|
|
204
|
+
|
|
205
|
+
### 推荐:一条命令装齐
|
|
206
|
+
|
|
191
207
|
```bash
|
|
192
|
-
npm install wechen-agent-editor-v1
|
|
208
|
+
npm install wechen-agent-editor-v1 react react-dom antd @xyflow/react dagre monaco-editor @monaco-editor/react
|
|
193
209
|
```
|
|
194
210
|
|
|
195
|
-
|
|
211
|
+
使用 **pnpm** / **yarn** 时同样在业务包中声明上述依赖,勿仅在 monorepo 子包里安装而根目录缺失 peer。
|
|
212
|
+
|
|
213
|
+
### 仅安装本包时常见现象
|
|
214
|
+
|
|
215
|
+
| 缺失 peer | 现象 |
|
|
216
|
+
|-----------|------|
|
|
217
|
+
| `react` / `react-dom` | 无法渲染 |
|
|
218
|
+
| `antd` | 壳层/配置区样式或组件报错 |
|
|
219
|
+
| `@xyflow/react` | 画布不显示、连线/拖线无响应、Handle 失效 |
|
|
220
|
+
| `dagre` | `autoLayout` / `autoLayoutNodes` 报错或无效 |
|
|
221
|
+
| `monaco-editor` + `@monaco-editor/react` | 代码编辑区空白(另需 [Monaco Worker](#monaco-worker)) |
|
|
222
|
+
|
|
223
|
+
### Peer 依赖清单(须在宿主 `package.json` 中声明)
|
|
196
224
|
|
|
197
|
-
|
|
225
|
+
版本须 **≥** 本包 `peerDependencies` 下限,并与业务栈锁定策略一致(下表为开发本仓库时使用的参考版本):
|
|
198
226
|
|
|
199
|
-
|
|
227
|
+
| 包 | 下限(peer) | 用途 |
|
|
228
|
+
|----|-------------|------|
|
|
229
|
+
| `react`、`react-dom` | ≥18 | UI 运行时 |
|
|
230
|
+
| `antd` | ≥5 | 编辑器壳层、配置区、顶栏 |
|
|
231
|
+
| `@xyflow/react` | ≥12 | 画布(节点/边/连线) |
|
|
232
|
+
| `dagre` | ≥0.8.5 | 节点自动排版(`autoLayoutNodes`) |
|
|
233
|
+
| `monaco-editor` | ≥0.45 | 代码编辑内核 |
|
|
234
|
+
| `@monaco-editor/react` | ≥4.6 | React 封装 |
|
|
200
235
|
|
|
201
|
-
|
|
202
|
-
|----|------|
|
|
203
|
-
| `react`、`react-dom` | React 18+ |
|
|
204
|
-
| `antd` | 编辑器壳层与配置区(建议 5+) |
|
|
205
|
-
| `@xyflow/react` | 画布(React Flow 12+) |
|
|
206
|
-
| `dagre` | 节点自动排版(`autoLayoutNodes`) |
|
|
207
|
-
| `monaco-editor`、`@monaco-editor/react` | 代码编辑区 |
|
|
236
|
+
自 **1.2.3** 起 **`@xyflow/react`**、**`dagre`** 由 **peer** 提供(不再随本包内嵌)。自 **1.0.x** 起 **`react` / `antd` / `monaco-*`** 即为 peer。升级自内嵌 Flow 的旧版时,请务必在宿主根目录 **新增** `@xyflow/react` 与 `dagre` 依赖。
|
|
208
237
|
|
|
209
|
-
|
|
238
|
+
**不要**再依赖本包 tarball 内自带的 `@xyflow/react`(历史 `bundledDependencies` 已移除)。宿主与编辑器 **必须** `npm ls @xyflow/react` 仅一棵有效树。
|
|
210
239
|
|
|
211
240
|
安装后建议自检:
|
|
212
241
|
|
|
@@ -237,7 +266,7 @@ npm 7+ 会校验整棵依赖树的 peer。冲突常来自宿主已有包,未
|
|
|
237
266
|
"monaco-editor": "^0.45.0",
|
|
238
267
|
"react": "^18.3.0",
|
|
239
268
|
"react-dom": "^18.3.0",
|
|
240
|
-
"wechen-agent-editor-v1": "^1.
|
|
269
|
+
"wechen-agent-editor-v1": "^1.3.0"
|
|
241
270
|
}
|
|
242
271
|
}
|
|
243
272
|
```
|
|
@@ -248,7 +277,8 @@ npm 7+ 会校验整棵依赖树的 peer。冲突常来自宿主已有包,未
|
|
|
248
277
|
|------|----------|------|
|
|
249
278
|
| 代码编辑区空白 / 控制台 Monaco worker 报错 | 未配置 **Monaco worker** | 按 README「Monaco Worker」在应用入口引导 worker |
|
|
250
279
|
| 画布不可见或高度为 0 | 父级无 **定高** 或 flex 链缺 `minHeight: 0` | 使用「嵌入 flex 布局」示例;或传编辑器 **`minHeight`** |
|
|
251
|
-
| 连线异常、Handle 无响应、样式错乱 |
|
|
280
|
+
| 连线异常、Handle 无响应、样式错乱 | **未装 peer 或 `@xyflow/react` 双实例** | 按上文 **一条命令** 装齐 peer;`npm ls @xyflow/react` 仅一棵;打包器 **alias/dedupe** |
|
|
281
|
+
| `autoLayout` 报错 | **未安装 `dagre`** | 在宿主 `dependencies` 添加 `dagre` |
|
|
252
282
|
| `ref.deleteEdge(id)` 无效 | 持久化载体无稳定 **`edges[].id`** | 优先存 **`snapshot.flow` / `flowJson`**;仅存 DTO 时导出须含 **`edges[].id`**,回灌后用 **新** id |
|
|
253
283
|
| 存库后连线形状与编辑时不一致 | 仅存拓扑 DTO、缺 **layout** | 使用 **`flowJson`** 或 DTO **`edges[].layout`**(见「连线布局」) |
|
|
254
284
|
|
|
@@ -658,7 +688,7 @@ Playground **`renderConfigPanel`** Tab 中 `card` / 边配置演示了该流程
|
|
|
658
688
|
| 构建 | **`npm run build`**(或 Umi `max build`)通过 |
|
|
659
689
|
| Monaco | 已在首屏前完成 **worker 引导**(见上文「Monaco Worker」) |
|
|
660
690
|
| 空画布 | **未传 `initialFlow`** 时中间画布无预置节点;业务示例需 **`cloneWechenAgentFlow(defaultInitialFlow)`** 或 `ref.replaceFlow(...)` 显式注入 |
|
|
661
|
-
| 烟测 |
|
|
691
|
+
| 烟测 | 拖入节点、连线、`readOnly` / `readingMode`、保存或 `getSnapshot`;边路径添加拐点/拖顶点 |
|
|
662
692
|
| ref 增图 | `ref.addNodeFromLibrary` / `ref.connect` 与拖放、连线行为一致 |
|
|
663
693
|
| DTO 往返 | `exportBackendWorkflowJson` → `importBackendWorkflowToFlow` → `replaceFlow`;`condition`/`api`/`script` 经 `data.backendNodeType` |
|
|
664
694
|
| 图校验 | `validateWechenAgentFlow`;可选 `onBeforeSave` 拦截 |
|
|
@@ -681,16 +711,19 @@ npm run baseline # 工程基线:测试数、最大 LOC、dist 体积
|
|
|
681
711
|
|
|
682
712
|
## 维护者:发版
|
|
683
713
|
|
|
684
|
-
###
|
|
714
|
+
### 版本摘要
|
|
685
715
|
|
|
686
|
-
|
|
716
|
+
| 版本 | 宿主需注意 |
|
|
717
|
+
|------|------------|
|
|
718
|
+
| **1.3.0** | 自由折线路径编辑、选中浮动条、路径 ref;**peer 要求同 1.2.3** |
|
|
719
|
+
| **1.2.3** | **Breaking(集成)**:`@xyflow/react`、`dagre` 改为 peer,须宿主显式安装 |
|
|
720
|
+
| **1.1.x** | `buildWechenAgentEditorProps`、后端 DTO、删除守卫等 |
|
|
687
721
|
|
|
688
|
-
|
|
689
|
-
- **`buildWechenAgentEditorProps`**(L1 宿主聚合配置)及 **`exportBackendWorkflowJson` / `importBackendWorkflowToFlow`**(后端 DTO 转换)等已在仓库合入、文档化的能力
|
|
722
|
+
完整变更见 **`CHANGELOG.md`**。
|
|
690
723
|
|
|
691
724
|
### 发版清单
|
|
692
725
|
|
|
693
|
-
1. 确认 `package.json` **`version`** 已 bump(**以 `package.json` 为准**,当前 **1.
|
|
726
|
+
1. 确认 `package.json` **`version`** 已 bump(**以 `package.json` 为准**,当前 **1.3.0**)。
|
|
694
727
|
2. 执行 **`npm install`**(同步 lock)→ **`npm run release:prep`**(`test` + `build` + `pack:check` + playground build + **基线摘要**),或分步执行;可单独运行 **`npm run baseline`** 查看 LOC/体积指标。
|
|
695
728
|
3. **`npm whoami`** 确认已登录 **registry.npmjs.org**;scoped 包首次发布需 **`--access public`**(`publishConfig` 已配置)。
|
|
696
729
|
4. 执行 **`npm run release`**(或 `npm publish`),发后验证:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CSSProperties, ReactNode } from 'react';
|
|
2
2
|
import { ComponentLibraryGroup, WechenAgentComponentLibraryList } from './config/componentLibraryConfig';
|
|
3
|
+
import { WechenAgentRenderSelectionToolbarFn, WechenSelectionToolbarSlot } from './flow/selectionToolbar/SelectionToolbar';
|
|
3
4
|
import { WechenAgentEditorRef, WechenAgentFlowJson, WechenAgentHeaderActionsRenderContext, WechenAgentHeaderLeadingRenderContext, WechenAgentSnapshot, WechenBeforeRemoveEdgeFn, WechenBeforeRemoveNodeFn, WechenBeforeSaveFn } from './flowTypes';
|
|
4
5
|
import { WechenAgentRenderFlowNodeFn } from './WechenAgentEditorContext';
|
|
5
6
|
import { WechenAgentRenderNodeConfigFn } from './panels/NodeConfigPanel';
|
|
@@ -32,6 +33,13 @@ export interface WechenAgentEditorProps {
|
|
|
32
33
|
* 内置四边感应与接线桩始终保留;有本回调时外壳 **不** 自动加 `--selected`;**勿** 在返回值内放置 `Handle`。
|
|
33
34
|
*/
|
|
34
35
|
renderFlowNode?: WechenAgentRenderFlowNodeFn;
|
|
36
|
+
/**
|
|
37
|
+
* 选中节点/边时浮动操作条扩展(内置删除、复制、恢复自动路径仍显示)。
|
|
38
|
+
* 返回片段与内置按钮同一行;位置由 `selectionToolbarSlot` 控制。
|
|
39
|
+
*/
|
|
40
|
+
renderSelectionToolbar?: WechenAgentRenderSelectionToolbarFn;
|
|
41
|
+
/** 宿主 `renderSelectionToolbar` 相对内置按钮,默认 `trailing` */
|
|
42
|
+
selectionToolbarSlot?: WechenSelectionToolbarSlot;
|
|
35
43
|
/**
|
|
36
44
|
* 自定义右侧节点配置区;渲染在 **antd Form 内部**,第二个参数为 `form` 实例,
|
|
37
45
|
* 子组件可调用 `Form.useFormInstance()` 与传入的 `form` 一致。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WechenAgentEditor.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditor.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAcjE,OAAO,KAAK,EACV,qBAAqB,EACrB,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"WechenAgentEditor.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NodeProps } from '@xyflow/react';
|
|
2
2
|
import { ReactNode, RefObject } from 'react';
|
|
3
3
|
import { WechenAgentEditorRef } from './flowTypes';
|
|
4
|
+
import { WechenAgentRenderSelectionToolbarFn, WechenSelectionToolbarSlot } from './flow/selectionToolbar/SelectionToolbar';
|
|
4
5
|
export type WechenAgentRenderFlowNodeContext = {
|
|
5
6
|
/** 当前节点是否被画布选中(与 NodeProps.selected 一致) */
|
|
6
7
|
selected: boolean;
|
|
@@ -23,6 +24,12 @@ export type WechenAgentRenderFlowNodeFn = (props: NodeProps, context: WechenAgen
|
|
|
23
24
|
export interface WechenAgentEditorRenderContextValue {
|
|
24
25
|
/** 自定义节点内容区;未设置时使用内置默认字段块 */
|
|
25
26
|
renderFlowNode?: WechenAgentRenderFlowNodeFn;
|
|
27
|
+
/** 选中节点/边浮动条扩展;内置删除/复制/恢复路径按钮始终保留 */
|
|
28
|
+
renderSelectionToolbar?: WechenAgentRenderSelectionToolbarFn;
|
|
29
|
+
/** 宿主扩展片段相对内置按钮的位置,默认 `trailing` */
|
|
30
|
+
selectionToolbarSlot?: WechenSelectionToolbarSlot;
|
|
31
|
+
/** 为 false 时不渲染选中浮动条(只读/阅读模式) */
|
|
32
|
+
canvasEditable: boolean;
|
|
26
33
|
/** 编辑器命令式 ref,供默认节点调用宿主 `renderFlowNode` 时传入 context */
|
|
27
34
|
editorRef: RefObject<WechenAgentEditorRef | null>;
|
|
28
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WechenAgentEditorContext.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditorContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"WechenAgentEditorContext.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditorContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EACV,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,0CAA0C,CAAC;AAElD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD,CAAC;AAEF;;;;GAIG;AACH,+DAA+D;AAC/D,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,gCAAgC,KACtC,SAAS,CAAC;AAEf,MAAM,WAAW,mCAAmC;IAClD,6BAA6B;IAC7B,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C,qCAAqC;IACrC,sBAAsB,CAAC,EAAE,mCAAmC,CAAC;IAC7D,oCAAoC;IACpC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD,iCAAiC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,8BAA8B,qEACsB,CAAC;AASlE,wBAAgB,0BAA0B,IAAI,mCAAmC,CAEhF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type PathVertexSelection = {
|
|
3
|
+
edgeId: string;
|
|
4
|
+
vertexIndex: number;
|
|
5
|
+
} | null;
|
|
6
|
+
export interface PathEditContextValue {
|
|
7
|
+
selectedPathVertex: PathVertexSelection;
|
|
8
|
+
selectPathVertex: (edgeId: string, vertexIndex: number) => void;
|
|
9
|
+
clearPathVertexSelection: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function PathEditProvider({ children, value: controlled, }: {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
value?: PathEditContextValue;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function usePathEdit(): PathEditContextValue;
|
|
16
|
+
//# sourceMappingURL=PathEditContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathEditContext.d.ts","sourceRoot":"","sources":["../../src/flow/PathEditContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAAC;AAET,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,wBAAwB,EAAE,MAAM,IAAI,CAAC;CACtC;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,EAAE,UAAU,GAClB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B,2CA0BA;AAQD,wBAAgB,WAAW,IAAI,oBAAoB,CAElD"}
|
|
@@ -3,8 +3,8 @@ import { WechenAgentEdgeData, WechenAttachSideIn, WechenAttachSideOut, WechenEdg
|
|
|
3
3
|
import { SmoothStepPathOptions } from './edgePathLayout';
|
|
4
4
|
import { WechenEdgePathPoint } from './edgeOrthogonalPath';
|
|
5
5
|
import { EdgeRouteContext } from './edgeRouteGeometry';
|
|
6
|
-
/** 布局快照算法版本;
|
|
7
|
-
export declare const WECHEN_EDGE_LAYOUT_VERSION =
|
|
6
|
+
/** 布局快照算法版本;v3 起支持任意角度折线(`wechenPathGeometry`) */
|
|
7
|
+
export declare const WECHEN_EDGE_LAYOUT_VERSION = 3;
|
|
8
8
|
export declare function isValidWechenPathOptions(v: unknown): v is WechenEdgePathOptions;
|
|
9
9
|
export declare function isValidAttachSideOut(v: unknown): v is WechenAttachSideOut;
|
|
10
10
|
export declare function isValidAttachSideIn(v: unknown): v is WechenAttachSideIn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgeLayoutSnapshot.d.ts","sourceRoot":"","sources":["../../src/flow/edgeLayoutSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"edgeLayoutSnapshot.d.ts","sourceRoot":"","sources":["../../src/flow/edgeLayoutSnapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,14 +42,15 @@ export declare function dragPathHandle(path: WechenEdgePathPoint[], handleIndex:
|
|
|
42
42
|
export declare function realignPathEndpoints(path: WechenEdgePathPoint[], source: WechenEdgePathPoint, target: WechenEdgePathPoint): WechenEdgePathPoint[];
|
|
43
43
|
export declare function isManualEdgePathMode(mode: unknown): boolean;
|
|
44
44
|
export declare function readPathMode(data: unknown): WechenEdgePathMode;
|
|
45
|
-
/** 从边对象读取 path(边根 `path`
|
|
45
|
+
/** 从边对象读取 path(边根 `path` 为权威字段;正交或自由折线) */
|
|
46
46
|
export declare function readEdgePath(edge: {
|
|
47
47
|
path?: WechenEdgePathPoint[];
|
|
48
48
|
}): WechenEdgePathPoint[] | undefined;
|
|
49
|
+
export type WechenPathGeometry = "orthogonal" | "polyline";
|
|
49
50
|
export declare function mergeEdgeWithPath(edge: {
|
|
50
51
|
path?: WechenEdgePathPoint[];
|
|
51
52
|
data?: Record<string, unknown>;
|
|
52
|
-
}, path: WechenEdgePathPoint[], mode: WechenEdgePathMode): typeof edge;
|
|
53
|
+
}, path: WechenEdgePathPoint[], mode: WechenEdgePathMode, geometry?: WechenPathGeometry): typeof edge;
|
|
53
54
|
/** 底→顶是否以竖向为主(用于拖拽轴约束提示) */
|
|
54
55
|
export declare function isVerticalPrimaryEdge(endpoints: EdgeHandleEndpoints): boolean;
|
|
55
56
|
//# sourceMappingURL=edgeOrthogonalPath.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgeOrthogonalPath.d.ts","sourceRoot":"","sources":["../../src/flow/edgeOrthogonalPath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,mBAAmB;AACnB,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAQnD,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,mBAAmB,EAAE,CAqB5E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAYjF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,MAAM,GACb,mBAAmB,EAAE,CAWvB;AAED,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAUpE;AAED,4BAA4B;AAC5B,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,mBAAmB,EAAE,GAC1B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBzB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,EAAE,GAC1B,yBAAyB,GAAG,IAAI,CAelC;AAED,oBAAoB;AACpB,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,EAAE,EAC3B,IAAI,EAAE,MAAM,GACX,mBAAmB,EAAE,CAYvB;AAED,+DAA+D;AAC/D,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,mBAAmB,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,mBAAmB,EAAE,CAUvB;AAED,6BAA6B;AAC7B,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,mBAAmB,EAAE,CA8BvB;AAED,+BAA+B;AAC/B,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACjC,IAAI,EAAE,GAAG,GAAG,GAAG,GACd,mBAAmB,EAAE,CAKvB;AAED,6BAA6B;AAC7B,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EAAE,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,EAAE,CAMvB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAG9D;
|
|
1
|
+
{"version":3,"file":"edgeOrthogonalPath.d.ts","sourceRoot":"","sources":["../../src/flow/edgeOrthogonalPath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Edge, Node } from '@xyflow/react';
|
|
2
|
+
import { WechenEdgePathPoint } from './edgeOrthogonalPath';
|
|
3
|
+
export declare const MAX_EDGE_INTERIOR_VERTICES = 24;
|
|
4
|
+
export declare const MIN_SEGMENT_PX = 4;
|
|
5
|
+
/** 拖拽拐点时,距水平/垂直对齐小于该像素则吸附 */
|
|
6
|
+
export declare const AXIS_SNAP_THRESHOLD_PX = 12;
|
|
7
|
+
/** 轴对齐线段命中区垂直于线段方向的宽度(px) */
|
|
8
|
+
export declare const AXIS_SEGMENT_HIT_PX = 14;
|
|
9
|
+
export type AxisSegmentOrientation = "horizontal" | "vertical";
|
|
10
|
+
export type AxisAlignedPathSegment = {
|
|
11
|
+
/** 线段起点在 path 中的下标 */
|
|
12
|
+
index: number;
|
|
13
|
+
orientation: AxisSegmentOrientation;
|
|
14
|
+
};
|
|
15
|
+
/** 任意角度折线:≥2 点、坐标有限 */
|
|
16
|
+
export declare function isValidFreePolylinePath(path: unknown): path is WechenEdgePathPoint[];
|
|
17
|
+
export declare function isPersistedEdgePath(path: unknown): boolean;
|
|
18
|
+
/** 规范化折线;失败返回 null(退化或过短段)。保留共线中间点,供用户在直线上加拐点。 */
|
|
19
|
+
export declare function normalizePolylinePath(path: WechenEdgePathPoint[]): WechenEdgePathPoint[] | null;
|
|
20
|
+
export declare function readPathGeometry(data: unknown): WechenPathGeometry;
|
|
21
|
+
export declare function inferPathGeometryFromPath(path: unknown): WechenPathGeometry;
|
|
22
|
+
export declare function projectPointOnPolyline(path: WechenEdgePathPoint[], point: {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
}): {
|
|
26
|
+
segmentIndex: number;
|
|
27
|
+
projected: WechenEdgePathPoint;
|
|
28
|
+
} | null;
|
|
29
|
+
/** 在最近线段上插入顶点(插入在 segmentIndex+1 位置) */
|
|
30
|
+
export declare function insertVertexOnPolyline(path: WechenEdgePathPoint[], point: {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
}): WechenEdgePathPoint[] | null;
|
|
34
|
+
/** 折线弧长中点及所在线段下标 */
|
|
35
|
+
export declare function polylineMidpointWithSegment(path: WechenEdgePathPoint[]): {
|
|
36
|
+
point: WechenEdgePathPoint;
|
|
37
|
+
segmentIndex: number;
|
|
38
|
+
};
|
|
39
|
+
/** 折线几何中点(按弧长) */
|
|
40
|
+
export declare function polylineMidpointByLength(path: WechenEdgePathPoint[]): WechenEdgePathPoint;
|
|
41
|
+
export declare function insertVertexAtPolylineMidpoint(path: WechenEdgePathPoint[]): WechenEdgePathPoint[] | null;
|
|
42
|
+
export declare function removeVertexAt(path: WechenEdgePathPoint[], index: number): WechenEdgePathPoint[] | null;
|
|
43
|
+
/**
|
|
44
|
+
* 相对相邻顶点吸附:接近水平则对齐 Y,接近垂直则对齐 X。
|
|
45
|
+
* 超出阈值则保持用户坐标(任意角度)。
|
|
46
|
+
*/
|
|
47
|
+
/** 列出可整体平移的轴对齐线段(水平/垂直且长度足够) */
|
|
48
|
+
export declare function listAxisAlignedSegments(path: WechenEdgePathPoint[]): AxisAlignedPathSegment[];
|
|
49
|
+
/**
|
|
50
|
+
* 平移一条水平/垂直线段:仅移动可编辑的中间拐点(首尾桩不拖)。
|
|
51
|
+
* 垂直段 → 沿 X 平移;水平段 → 沿 Y 平移。
|
|
52
|
+
*/
|
|
53
|
+
export declare function translateAxisAlignedSegment(path: WechenEdgePathPoint[], segmentIndex: number, orientation: AxisSegmentOrientation, delta: {
|
|
54
|
+
dx: number;
|
|
55
|
+
dy: number;
|
|
56
|
+
}): WechenEdgePathPoint[] | null;
|
|
57
|
+
export declare function axisSegmentHitRect(a: WechenEdgePathPoint, b: WechenEdgePathPoint, orientation: AxisSegmentOrientation, hitPx?: number): {
|
|
58
|
+
left: number;
|
|
59
|
+
top: number;
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
};
|
|
63
|
+
export declare function snapVertexDragPosition(path: WechenEdgePathPoint[], index: number, pos: {
|
|
64
|
+
x: number;
|
|
65
|
+
y: number;
|
|
66
|
+
}, thresholdPx?: number): {
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
};
|
|
70
|
+
export declare function dragVertex(path: WechenEdgePathPoint[], index: number, pos: {
|
|
71
|
+
x: number;
|
|
72
|
+
y: number;
|
|
73
|
+
}, options?: {
|
|
74
|
+
axisSnapThresholdPx?: number;
|
|
75
|
+
}): WechenEdgePathPoint[] | null;
|
|
76
|
+
export declare function realignPolylineEndpoints(path: WechenEdgePathPoint[], source: WechenEdgePathPoint, target: WechenEdgePathPoint): WechenEdgePathPoint[] | null;
|
|
77
|
+
/** 当前可编辑 path:持久化 path 或按布局现算,首尾对齐节点桩 */
|
|
78
|
+
export declare function resolveEditableEdgePath(edge: Edge, edges: Edge[], nodes: Node[], getNode: (id: string) => Node | undefined): WechenEdgePathPoint[] | undefined;
|
|
79
|
+
/** 是否允许添加/删除拐点与拖拽中间顶点(首尾桩随节点,不可拖) */
|
|
80
|
+
export declare function canEditEdgePathInterior(_edgeId: string, _edges: Edge[], _nodes: Node[], _getNode: (id: string) => Node | undefined): boolean;
|
|
81
|
+
//# sourceMappingURL=edgePolylinePath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edgePolylinePath.d.ts","sourceRoot":"","sources":["../../src/flow/edgePolylinePath.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,15 @@ export declare function getCreateNodeFromLibraryItemFailureReason(libraryGroups:
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function createNodeFromLibraryItem(libraryGroups: ComponentLibraryGroup[], options: CreateNodeFromLibraryItemOptions): Node | null;
|
|
19
19
|
export type NodeLookupFn = (id: string) => Node | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* 复制节点(新 id、位置偏移);不复制关联边。源节点不存在时返回 `null`。
|
|
22
|
+
*/
|
|
23
|
+
export declare function duplicateNodeInGraph(nodes: Node[], nodeId: string, offset?: {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
}): {
|
|
27
|
+
nodes: Node[];
|
|
28
|
+
newNodeId: string;
|
|
29
|
+
} | null;
|
|
20
30
|
export declare function createEdgeFromConnection(connection: Connection, getNode: NodeLookupFn, edgeId?: string): Edge | null;
|
|
21
31
|
//# sourceMappingURL=flowGraphMutations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphMutations.d.ts","sourceRoot":"","sources":["../../src/flow/flowGraphMutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"flowGraphMutations.d.ts","sourceRoot":"","sources":["../../src/flow/flowGraphMutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAiB1C,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAgBD,MAAM,MAAM,sCAAsC,GAC9C,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,wBAAgB,yCAAyC,CACvD,aAAa,EAAE,qBAAqB,EAAE,EACtC,OAAO,EAAE,gCAAgC,GACxC,sCAAsC,GAAG,IAAI,CAc/C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,qBAAqB,EAAE,EACtC,OAAO,EAAE,gCAAgC,GACxC,IAAI,GAAG,IAAI,CAyBb;AA6BD,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;AAS5D;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,MAAM,EACd,MAAM;;;CAAmB,GACxB;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwB7C;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,GAAG,IAAI,CAoBb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowJsonUtils.d.ts","sourceRoot":"","sources":["../../src/flow/flowJsonUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"flowJsonUtils.d.ts","sourceRoot":"","sources":["../../src/flow/flowJsonUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA4ExD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAU3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAGnF;AAED,8DAA8D;AAC9D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAG1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/CardNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"CardNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/CardNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAW/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,2CAyCxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainAgentNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/MainAgentNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"MainAgentNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/MainAgentNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAW/C,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,2CAyC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PillNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/PillNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"PillNode.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/PillNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAU/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,2CAyBxC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WechenEdgePathPoint } from '../edgeOrthogonalPath';
|
|
2
|
+
interface EdgeSelectionToolbarProps {
|
|
3
|
+
edgeId: string;
|
|
4
|
+
selected: boolean;
|
|
5
|
+
path: WechenEdgePathPoint[];
|
|
6
|
+
pathEditable?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** 边选中浮动条(无 EdgeLabelRenderer 包裹,由父级 label 层渲染) */
|
|
9
|
+
export declare function EdgeSelectionToolbarContent({ edgeId, selected, path, pathEditable, }: EdgeSelectionToolbarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
/** 独立 EdgeLabelRenderer 包裹(旧用法);边组件内请用 `EdgeSelectionToolbarContent` */
|
|
11
|
+
export declare function EdgeSelectionToolbar(props: EdgeSelectionToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=EdgeSelectionToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeSelectionToolbar.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/EdgeSelectionToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAWjE,UAAU,yBAAyB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAmB,GACpB,EAAE,yBAAyB,kDA2B3B;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAEpE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Edge, Node } from '@xyflow/react';
|
|
2
|
+
import { ReactNode, RefObject } from 'react';
|
|
3
|
+
import { WechenAgentEditorRef } from '../../flowTypes';
|
|
4
|
+
export type WechenSelectionToolbarKind = "node" | "edge";
|
|
5
|
+
export type WechenSelectionToolbarContext = {
|
|
6
|
+
kind: "node";
|
|
7
|
+
node: Node;
|
|
8
|
+
editorRef: RefObject<WechenAgentEditorRef | null>;
|
|
9
|
+
locale: {
|
|
10
|
+
t: (key: string) => string;
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
13
|
+
kind: "edge";
|
|
14
|
+
edge: Edge;
|
|
15
|
+
editorRef: RefObject<WechenAgentEditorRef | null>;
|
|
16
|
+
locale: {
|
|
17
|
+
t: (key: string) => string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type WechenAgentRenderSelectionToolbarFn = (ctx: WechenSelectionToolbarContext) => ReactNode;
|
|
21
|
+
export type WechenSelectionToolbarSlot = "leading" | "trailing";
|
|
22
|
+
interface SelectionToolbarProps {
|
|
23
|
+
kind: WechenSelectionToolbarKind;
|
|
24
|
+
node?: Node;
|
|
25
|
+
edge?: Edge;
|
|
26
|
+
pathEditable?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function SelectionToolbar({ kind, node, edge, pathEditable, }: SelectionToolbarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=SelectionToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectionToolbar.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/SelectionToolbar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,OAAO,wBAAwB,CAAC;AAEhC,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,6BAA6B,GACrC;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE;QAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;CACxC,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE;QAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;CACxC,CAAC;AAEN,MAAM,MAAM,mCAAmC,GAAG,CAChD,GAAG,EAAE,6BAA6B,KAC/B,SAAS,CAAC;AAEf,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhE,UAAU,qBAAqB;IAC7B,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAmGD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,YAAmB,GACpB,EAAE,qBAAqB,kDAsCvB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface WechenNodeSelectionToolbarProps {
|
|
2
|
+
nodeId: string;
|
|
3
|
+
selected: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function WechenNodeSelectionToolbar({ nodeId, selected, }: WechenNodeSelectionToolbarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=WechenNodeSelectionToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WechenNodeSelectionToolbar.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/WechenNodeSelectionToolbar.tsx"],"names":[],"mappings":"AAQA,UAAU,+BAA+B;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,QAAQ,GACT,EAAE,+BAA+B,kDAqBjC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WechenEdgePathPoint } from '../edgeOrthogonalPath';
|
|
2
|
+
/** 工具条锚点与路径的间距(画布 px) */
|
|
3
|
+
export declare const EDGE_TOOLBAR_PATH_CLEAR_PX = 32;
|
|
4
|
+
/** 锚点上方额外留白(与 transform 叠加) */
|
|
5
|
+
export declare const EDGE_TOOLBAR_LIFT_PX = 12;
|
|
6
|
+
/** 边浮动条是否显示「恢复自动路径」 */
|
|
7
|
+
export declare function edgeSelectionToolbarShowsReset(data: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* 边浮动条锚点:在路径中点外侧,避免压在折线与拐点上。
|
|
10
|
+
*/
|
|
11
|
+
export declare function computeEdgeToolbarAnchor(path: WechenEdgePathPoint[]): {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=edgeSelectionToolbarLogic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edgeSelectionToolbarLogic.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/edgeSelectionToolbarLogic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,yBAAyB;AACzB,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,uBAAuB;AACvB,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG;IACrE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAmCA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polylineMidpoint.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/polylineMidpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAmCtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function countSelectedNodesAndEdges(state: {
|
|
2
|
+
nodes: {
|
|
3
|
+
selected?: boolean;
|
|
4
|
+
}[];
|
|
5
|
+
edges: {
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
}[];
|
|
8
|
+
}): {
|
|
9
|
+
nodes: number;
|
|
10
|
+
edges: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function shouldShowNodeSelectionToolbar(selfSelected: boolean, canvasEditable: boolean, counts: {
|
|
13
|
+
nodes: number;
|
|
14
|
+
edges: number;
|
|
15
|
+
}): boolean;
|
|
16
|
+
export declare function shouldShowEdgeSelectionToolbar(selfSelected: boolean, canvasEditable: boolean, counts: {
|
|
17
|
+
nodes: number;
|
|
18
|
+
edges: number;
|
|
19
|
+
}): boolean;
|
|
20
|
+
export declare function useSelectionToolbarCounts(): {
|
|
21
|
+
nodes: number;
|
|
22
|
+
edges: number;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=selectionToolbarVisibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionToolbarVisibility.d.ts","sourceRoot":"","sources":["../../../src/flow/selectionToolbar/selectionToolbarVisibility.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAChC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACjC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAcnC;AAED,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAET;AAED,wBAAgB,yBAAyB;WAhC5B,MAAM;WAAS,MAAM;EAkCjC"}
|
|
@@ -1,44 +1,31 @@
|
|
|
1
1
|
import { Edge, EdgeProps } from '@xyflow/react';
|
|
2
|
-
import { WechenEdgePathPoint } from './edgeOrthogonalPath';
|
|
2
|
+
import { WechenEdgePathPoint, WechenPathGeometry } from './edgeOrthogonalPath';
|
|
3
3
|
/**
|
|
4
4
|
* 历史字段:曾用于「仅反转 dash 动画」。新语义下 **不应再持久化为 `reverse`**;
|
|
5
5
|
* `normalizeWechenAgentFlowJson` 会将遗留 `reverse` 归一为交换端点并清除该键。
|
|
6
6
|
*/
|
|
7
7
|
export type WechenAgentEdgeFlowDirection = "forward" | "reverse";
|
|
8
|
-
/** 四边感应:目标端落在输入池的哪一侧(左 / 上) */
|
|
9
8
|
export type WechenAttachSideIn = "left" | "top";
|
|
10
|
-
/** 四边感应:源端落在输出池的哪一侧(右 / 下) */
|
|
11
9
|
export type WechenAttachSideOut = "right" | "bottom";
|
|
12
|
-
/** 与 SmoothStep 一致的运行时路径参数(自动布局元数据;渲染以 `edge.path` 为准) */
|
|
13
10
|
export interface WechenEdgePathOptions {
|
|
14
11
|
offset: number;
|
|
15
12
|
borderRadius: number;
|
|
16
13
|
}
|
|
17
14
|
export type WechenEdgePathMode = "auto" | "manual";
|
|
18
|
-
/** 阶梯折线顶点(持久化在边根 `path` 字段) */
|
|
19
15
|
export type { WechenEdgePathPoint } from './edgeOrthogonalPath';
|
|
20
|
-
/** 连线在边对象上的可选字段 */
|
|
21
16
|
export interface WechenAgentEdgeData {
|
|
22
|
-
/** @deprecated 新图请通过交换 `source`/`target` 表达执行反向;遗留值由 normalize 迁移 */
|
|
23
17
|
wechenFlowDirection?: WechenAgentEdgeFlowDirection;
|
|
24
18
|
wechenTargetAttachSide?: WechenAttachSideIn;
|
|
25
19
|
wechenSourceAttachSide?: WechenAttachSideOut;
|
|
26
|
-
/** 自动布局元数据;回显时与 `edge.path` 一并保留 */
|
|
27
20
|
wechenPathOptions?: WechenEdgePathOptions;
|
|
28
|
-
/** `auto`:随 relayout 重算 path;`manual`:保留用户拐点,仅对齐端点 */
|
|
29
21
|
wechenPathMode?: WechenEdgePathMode;
|
|
30
|
-
/** 生成快照时的布局算法版本 */
|
|
31
22
|
wechenLayoutVersion?: number;
|
|
23
|
+
wechenPathGeometry?: WechenPathGeometry;
|
|
32
24
|
}
|
|
33
|
-
/** 带持久化 path 的边类型 */
|
|
34
25
|
export interface WechenAgentEdge extends Edge {
|
|
35
26
|
path?: WechenEdgePathPoint[];
|
|
36
27
|
data?: WechenAgentEdgeData;
|
|
37
28
|
}
|
|
38
|
-
/**
|
|
39
|
-
* 默认边:优先按 `edge.path` 绘制直角阶梯折线;选中时显示水平段两端控制点。
|
|
40
|
-
* 描边/选中色由 `.wechen-agent-edge` CSS 控制;宿主 `style.stroke` 仍优先。
|
|
41
|
-
*/
|
|
42
29
|
export declare function WechenAgentDefaultEdge(props: EdgeProps): import("react/jsx-runtime").JSX.Element | null;
|
|
43
30
|
export declare const wechenAgentEdgeTypes: {
|
|
44
31
|
default: typeof WechenAgentDefaultEdge;
|