wechen-agent-editor-v1 1.2.3 → 1.3.1
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 +68 -22
- 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/canvasEditGuards.d.ts +8 -0
- package/dist/flow/canvasEditGuards.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/nodes/ZoneHandles.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 +9564 -8919
- package/dist/index.js.map +1 -1
- package/dist/panels/ComponentLibraryPanel.d.ts +3 -1
- package/dist/panels/ComponentLibraryPanel.d.ts.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
|
```
|
|
@@ -247,9 +276,13 @@ npm 7+ 会校验整棵依赖树的 peer。冲突常来自宿主已有包,未
|
|
|
247
276
|
| 现象 | 可能原因 | 处理 |
|
|
248
277
|
|------|----------|------|
|
|
249
278
|
| 代码编辑区空白 / 控制台 Monaco worker 报错 | 未配置 **Monaco worker** | 按 README「Monaco Worker」在应用入口引导 worker |
|
|
279
|
+
| `worker-javascript.js` MIME **`text/html`** / `importScripts` 失败 | 开发服务器对 worker 返回 **HTML 404** | 配置 `MonacoEnvironment`;**Umi** 见 [docs/UMI-MONACO-WORKER.md](docs/UMI-MONACO-WORKER.md) |
|
|
280
|
+
| 选中边后白屏、`Rendered more hooks than during the previous render` | 旧版边组件在 `return null` 后调用 hook | 升级含边组件 Hooks 修复的版本(见 CHANGELOG) |
|
|
250
281
|
| 画布不可见或高度为 0 | 父级无 **定高** 或 flex 链缺 `minHeight: 0` | 使用「嵌入 flex 布局」示例;或传编辑器 **`minHeight`** |
|
|
251
|
-
| 连线异常、Handle 无响应、样式错乱 |
|
|
282
|
+
| 连线异常、Handle 无响应、样式错乱 | **未装 peer 或 `@xyflow/react` 双实例** | 按上文 **一条命令** 装齐 peer;`npm ls @xyflow/react` 仅一棵;打包器 **alias/dedupe** |
|
|
283
|
+
| `autoLayout` 报错 | **未安装 `dagre`** | 在宿主 `dependencies` 添加 `dagre` |
|
|
252
284
|
| `ref.deleteEdge(id)` 无效 | 持久化载体无稳定 **`edges[].id`** | 优先存 **`snapshot.flow` / `flowJson`**;仅存 DTO 时导出须含 **`edges[].id`**,回灌后用 **新** id |
|
|
285
|
+
| 只读仍出现浮动条或可删节点 | **`readOnly` 未传给编辑器根组件** | `<WechenAgentEditor readOnly />`;勿仅 `Form disabled` |
|
|
253
286
|
| 存库后连线形状与编辑时不一致 | 仅存拓扑 DTO、缺 **layout** | 使用 **`flowJson`** 或 DTO **`edges[].layout`**(见「连线布局」) |
|
|
254
287
|
|
|
255
288
|
Playground **`?tab=overview`** 提供术语表与持久化对比;工程清单见 **`docs/ENGINEERING-BASELINE.md`**。
|
|
@@ -402,7 +435,15 @@ validateLocaleMessagesCompleteness(enPack);
|
|
|
402
435
|
|
|
403
436
|
根组件默认 **`height` / `width` 为 `100%`**,**`flex: 1`**、**`minHeight: 0`**(便于 flex 父级);可通过 **`className` / `style`** 透传;可选 **`minHeight`**。请保证父级链路上有**明确高度**(见上文 flex 示例),否则中间画布可能无法撑满。
|
|
404
437
|
|
|
405
|
-
|
|
438
|
+
**`readOnly` 须挂在 `<WechenAgentEditor readOnly />` 根组件上**;仅对右侧 `Form` 设 `disabled` **不会** 禁止画布改图、浮动条或组件库拖入。
|
|
439
|
+
|
|
440
|
+
| | 三栏 UI | 画布选中 | 右侧配置 | 浮动条 / 改图 |
|
|
441
|
+
|---|:---:|:---:|:---:|:---:|
|
|
442
|
+
| 默认 | ✓ | ✓ | 可编辑 | ✓ |
|
|
443
|
+
| **`readOnly`** | ✓ | ✓(查看) | `disabled` | ✗(无浮动条;ref 改图 no-op) |
|
|
444
|
+
| **`readingMode`** | 仅画布 | ✗ | 无右栏 | ✗ |
|
|
445
|
+
|
|
446
|
+
- **`readOnly`**:禁止对图的增删改(组件库拖入、连线、删除键、拖动节点、选中浮动条、`ref.removeNode` / `patchNodeData` 等),仍可使用平移/缩放查看,**可点选节点/边** 在右侧只读查看配置。**`readOnly`** 与 **`readingMode`** 会出现在 **`renderConfigPanel` / `renderNodeConfig`** 的入参中。
|
|
406
447
|
- **`readingMode`**:**仅展示中间流程画布**(隐藏顶栏与左右栏),并**禁用选中**与一切改图,适合文档内嵌、大屏预览等纯展示场景(隐含只读)。根节点会附加 **`wechen-agent-editor--reading`**。
|
|
407
448
|
|
|
408
449
|
### 删除守卫(`onBeforeRemoveNode` / `onBeforeRemoveEdge`)
|
|
@@ -473,6 +514,8 @@ const libraryGroups = [
|
|
|
473
514
|
|
|
474
515
|
必须在**首次渲染编辑器之前**完成 Monaco worker 引导,否则代码编辑区无法初始化。可参考本仓库 **`playground/src/monacoBootstrap.ts`** 与 **`playground/src/main.tsx`**,并按 [Monaco](https://github.com/microsoft/monaco-editor) / [@monaco-editor/react](https://github.com/suren-atoyan/monaco-react) 文档适配 Vite 或 Webpack。
|
|
475
516
|
|
|
517
|
+
**Umi 4 / Webpack 宿主**(常见 `worker-javascript.js` 返回 HTML):见 **[docs/UMI-MONACO-WORKER.md](docs/UMI-MONACO-WORKER.md)**(入口 bootstrap、MFSU `exclude`、`monaco-editor-webpack-plugin` 备选)。
|
|
518
|
+
|
|
476
519
|
### 与快速开始一致的最小页(可选 `title`)
|
|
477
520
|
|
|
478
521
|
与上文 **L0** 相同;若需要顶栏文案可传 **`title`**。未传 **`initialFlow`** 时为**空画布**。需要内置示例图时,从本包导入 **`defaultInitialFlow`**、**`cloneWechenAgentFlow`** 并传入 `initialFlow={cloneWechenAgentFlow(defaultInitialFlow)}`。
|
|
@@ -658,7 +701,7 @@ Playground **`renderConfigPanel`** Tab 中 `card` / 边配置演示了该流程
|
|
|
658
701
|
| 构建 | **`npm run build`**(或 Umi `max build`)通过 |
|
|
659
702
|
| Monaco | 已在首屏前完成 **worker 引导**(见上文「Monaco Worker」) |
|
|
660
703
|
| 空画布 | **未传 `initialFlow`** 时中间画布无预置节点;业务示例需 **`cloneWechenAgentFlow(defaultInitialFlow)`** 或 `ref.replaceFlow(...)` 显式注入 |
|
|
661
|
-
| 烟测 |
|
|
704
|
+
| 烟测 | 拖入节点、连线、`readOnly` / `readingMode`、保存或 `getSnapshot`;边路径添加拐点/拖顶点 |
|
|
662
705
|
| ref 增图 | `ref.addNodeFromLibrary` / `ref.connect` 与拖放、连线行为一致 |
|
|
663
706
|
| DTO 往返 | `exportBackendWorkflowJson` → `importBackendWorkflowToFlow` → `replaceFlow`;`condition`/`api`/`script` 经 `data.backendNodeType` |
|
|
664
707
|
| 图校验 | `validateWechenAgentFlow`;可选 `onBeforeSave` 拦截 |
|
|
@@ -681,16 +724,19 @@ npm run baseline # 工程基线:测试数、最大 LOC、dist 体积
|
|
|
681
724
|
|
|
682
725
|
## 维护者:发版
|
|
683
726
|
|
|
684
|
-
###
|
|
727
|
+
### 版本摘要
|
|
685
728
|
|
|
686
|
-
|
|
729
|
+
| 版本 | 宿主需注意 |
|
|
730
|
+
|------|------------|
|
|
731
|
+
| **1.3.0** | 自由折线路径编辑、选中浮动条、路径 ref;**peer 要求同 1.2.3** |
|
|
732
|
+
| **1.2.3** | **Breaking(集成)**:`@xyflow/react`、`dagre` 改为 peer,须宿主显式安装 |
|
|
733
|
+
| **1.1.x** | `buildWechenAgentEditorProps`、后端 DTO、删除守卫等 |
|
|
687
734
|
|
|
688
|
-
|
|
689
|
-
- **`buildWechenAgentEditorProps`**(L1 宿主聚合配置)及 **`exportBackendWorkflowJson` / `importBackendWorkflowToFlow`**(后端 DTO 转换)等已在仓库合入、文档化的能力
|
|
735
|
+
完整变更见 **`CHANGELOG.md`**。
|
|
690
736
|
|
|
691
737
|
### 发版清单
|
|
692
738
|
|
|
693
|
-
1. 确认 `package.json` **`version`** 已 bump(**以 `package.json` 为准**,当前 **1.
|
|
739
|
+
1. 确认 `package.json` **`version`** 已 bump(**以 `package.json` 为准**,当前 **1.3.0**)。
|
|
694
740
|
2. 执行 **`npm install`**(同步 lock)→ **`npm run release:prep`**(`test` + `build` + `pack:check` + playground build + **基线摘要**),或分步执行;可单独运行 **`npm run baseline`** 查看 LOC/体积指标。
|
|
695
741
|
3. **`npm whoami`** 确认已登录 **registry.npmjs.org**;scoped 包首次发布需 **`--access public`**(`publishConfig` 已配置)。
|
|
696
742
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EdgeChange, NodeChange } from '@xyflow/react';
|
|
2
|
+
/** `readOnly || readingMode` */
|
|
3
|
+
export declare function isEffectiveReadOnly(readOnly?: boolean, readingMode?: boolean): boolean;
|
|
4
|
+
export declare function isCanvasEditable(readOnly?: boolean, readingMode?: boolean): boolean;
|
|
5
|
+
/** 只读下仅放行选中与尺寸测量,丢弃改位/增删等。 */
|
|
6
|
+
export declare function filterNodeChangesForReadOnly(changes: NodeChange[]): NodeChange[];
|
|
7
|
+
export declare function filterEdgeChangesForReadOnly(changes: EdgeChange[]): EdgeChange[];
|
|
8
|
+
//# sourceMappingURL=canvasEditGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasEditGuards.d.ts","sourceRoot":"","sources":["../../src/flow/canvasEditGuards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D,gCAAgC;AAChC,wBAAgB,mBAAmB,CACjC,QAAQ,CAAC,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAET;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,CAAC,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAET;AASD,8BAA8B;AAC9B,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEhF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEhF"}
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneHandles.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/ZoneHandles.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ZoneHandles.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/ZoneHandles.tsx"],"names":[],"mappings":"AAwBA,OAAO,EACL,aAAa,EAKd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,CAAC;AAkBzB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CA4KzD"}
|
|
@@ -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,kDA8CvB"}
|
|
@@ -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
|