wechen-agent-editor-v1 1.1.6 → 1.1.8
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 +2 -1
- package/dist/WechenAgentEditor.d.ts.map +1 -1
- package/dist/flow/edgePathLayout.d.ts +71 -0
- package/dist/flow/edgePathLayout.d.ts.map +1 -0
- package/dist/flow/flowNodeBBox.d.ts +29 -0
- package/dist/flow/flowNodeBBox.d.ts.map +1 -0
- package/dist/flow/nodes/ZoneHandles.d.ts.map +1 -1
- package/dist/flow/syncEdgeLayout.d.ts +11 -0
- package/dist/flow/syncEdgeLayout.d.ts.map +1 -0
- package/dist/flow/wechenAgentEdgeTypes.d.ts.map +1 -1
- package/dist/flow/zoneConnectionAttach.d.ts +4 -2
- package/dist/flow/zoneConnectionAttach.d.ts.map +1 -1
- package/dist/flow/zoneHandleLayout.d.ts +8 -5
- package/dist/flow/zoneHandleLayout.d.ts.map +1 -1
- package/dist/flowTypes.d.ts +5 -0
- package/dist/flowTypes.d.ts.map +1 -1
- package/dist/index.js +7196 -6743
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -139,7 +139,8 @@ WechenAgentEditor(编排) → onSave / exportBackendWorkflowJson → 宿主
|
|
|
139
139
|
|
|
140
140
|
- **`onTestRun` / `ref.testRun()`**:仅触发宿主回调,具体执行由宿主实现。
|
|
141
141
|
- **`validateWechenAgentFlow(flow)`**:纯函数图校验(默认不阻断保存);可在 `onBeforeSave` 内返回 `false` 拦截。
|
|
142
|
-
- **ref 增删改查**:`getSnapshot` / `patchNodeData` / `removeNode` / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect` / `replaceFlow`(见 `WechenAgentEditorRef`)。
|
|
142
|
+
- **ref 增删改查**:`getSnapshot` / `patchNodeData` / `removeNode` / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect` / `replaceFlow` / `relayoutEdges`(见 `WechenAgentEditorRef`)。
|
|
143
|
+
- **回显后连线布局**:`initialFlow` 与 `replaceFlow` 会 **自动** 按当前节点几何重算感应锚边(`wechenSourceAttachSide` / `wechenTargetAttachSide`)并刷新 Handle;**不** 持久化路径折角/偏移。存盘锚边若与几何不一致会被覆盖。高级场景可调用 `ref.relayoutEdges()`(`readOnly` / `readingMode` 下 no-op)。
|
|
143
144
|
|
|
144
145
|
```tsx
|
|
145
146
|
import { validateWechenAgentFlow } from "wechen-agent-editor-v1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WechenAgentEditor.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditor.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAa,MAAM,OAAO,CAAC;AAc5E,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":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAa,MAAM,OAAO,CAAC;AAc5E,OAAO,KAAK,EACV,qBAAqB,EACrB,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;AA6BzC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qCAAqC,EACrC,qCAAqC,EACrC,mBAAmB,EAEnB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAK/E,OAAO,KAAK,EACV,+BAA+B,EAC/B,kCAAkC,EACnC,MAAM,8BAA8B,CAAC;AAMtC,iEAAiE;AAEjE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,6BAA6B,KAAK,MAAM,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,6EAA6E;IAC7E,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CACxB,IAAI,EAAE,+BAA+B,KAClC,+BAA+B,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;IACnD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF,iEAAiE;IACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,+BAA+B,CAAC;IACjD,kEAAkE;IAClE,eAAe,CAAC,EAAE,kCAAkC,CAAC;IACrD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAC;CACtD;AAED,YAAY,EACV,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AA8zBtC,eAAO,MAAM,iBAAiB,yHA2F7B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Position, EdgeProps, Node } from '@xyflow/react';
|
|
2
|
+
import { WechenAttachSideIn, WechenAttachSideOut } from './wechenAgentEdgeTypes';
|
|
3
|
+
import { FlowNodeRect } from './flowNodeBBox';
|
|
4
|
+
/** 路径与节点包围盒的最小间隙(与四边感应带宽度协调) */
|
|
5
|
+
export declare const EDGE_PATH_CLEARANCE_PX = 10;
|
|
6
|
+
export interface SmoothStepPathOptions {
|
|
7
|
+
borderRadius: number;
|
|
8
|
+
offset: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AxisSegment {
|
|
11
|
+
x1: number;
|
|
12
|
+
y1: number;
|
|
13
|
+
x2: number;
|
|
14
|
+
y2: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function attachSideToPosition(side: WechenAttachSideOut | WechenAttachSideIn): Position;
|
|
17
|
+
export declare function segmentIntersectsRect(seg: AxisSegment, rect: FlowNodeRect): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* SmoothStep 轴对齐主干折线(忽略圆角,用于保守相交检测)。
|
|
20
|
+
*/
|
|
21
|
+
export declare function computeSmoothStepAxisSegments(params: {
|
|
22
|
+
sourceX: number;
|
|
23
|
+
sourceY: number;
|
|
24
|
+
targetX: number;
|
|
25
|
+
targetY: number;
|
|
26
|
+
sourcePosition: Position;
|
|
27
|
+
targetPosition: Position;
|
|
28
|
+
offset: number;
|
|
29
|
+
}): AxisSegment[];
|
|
30
|
+
export declare function countSegmentObstacleIntersections(segments: AxisSegment[], obstacles: FlowNodeRect[]): number;
|
|
31
|
+
/**
|
|
32
|
+
* 对向锚边(右→左、下→上等)允许的最大 offset,避免 SmoothStep 中间折点倒置自重叠。
|
|
33
|
+
* 非对向组合返回 `null`(由混合侧折线处理,无 mid1/mid2 约束)。
|
|
34
|
+
*/
|
|
35
|
+
export declare function maxOffsetForOpposingGap(params: {
|
|
36
|
+
sourceX: number;
|
|
37
|
+
sourceY: number;
|
|
38
|
+
targetX: number;
|
|
39
|
+
targetY: number;
|
|
40
|
+
sourcePosition: Position;
|
|
41
|
+
targetPosition: Position;
|
|
42
|
+
}): number | null;
|
|
43
|
+
/** 折点倒置程度(0 = 合法);用于候选路径评分。 */
|
|
44
|
+
export declare function smoothStepMidpointInversionScore(params: {
|
|
45
|
+
sourceX: number;
|
|
46
|
+
sourceY: number;
|
|
47
|
+
targetX: number;
|
|
48
|
+
targetY: number;
|
|
49
|
+
sourcePosition: Position;
|
|
50
|
+
targetPosition: Position;
|
|
51
|
+
offset: number;
|
|
52
|
+
}): number;
|
|
53
|
+
/** 不穿源/目标扩展盒的最小 offset(保守估计)。 */
|
|
54
|
+
export declare function minOffsetForNodeClearance(params: {
|
|
55
|
+
sourceRect: FlowNodeRect | null;
|
|
56
|
+
targetRect: FlowNodeRect | null;
|
|
57
|
+
sourcePosition: Position;
|
|
58
|
+
targetPosition: Position;
|
|
59
|
+
clearance?: number;
|
|
60
|
+
}): number;
|
|
61
|
+
export declare function resolveSmoothStepPathOptions(params: {
|
|
62
|
+
sourceX: number;
|
|
63
|
+
sourceY: number;
|
|
64
|
+
targetX: number;
|
|
65
|
+
targetY: number;
|
|
66
|
+
sourcePosition: Position;
|
|
67
|
+
targetPosition: Position;
|
|
68
|
+
minOffset?: number;
|
|
69
|
+
}): SmoothStepPathOptions;
|
|
70
|
+
export declare function resolveEdgePathOptions(props: Pick<EdgeProps, "sourceX" | "sourceY" | "targetX" | "targetY" | "sourcePosition" | "targetPosition" | "source" | "target" | "data">, nodes: Node[]): SmoothStepPathOptions;
|
|
71
|
+
//# sourceMappingURL=edgePathLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edgePathLayout.d.ts","sourceRoot":"","sources":["../../src/flow/edgePathLayout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Node } from '@xyflow/react';
|
|
2
|
+
export interface FlowNodeRect {
|
|
3
|
+
left: number;
|
|
4
|
+
top: number;
|
|
5
|
+
right: number;
|
|
6
|
+
bottom: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function getEstimatedNodeSize(nodeType: string | undefined): {
|
|
9
|
+
w: number;
|
|
10
|
+
h: number;
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function getFlowNodeWidthHeight(n: Node): {
|
|
13
|
+
w: number;
|
|
14
|
+
h: number;
|
|
15
|
+
} | null;
|
|
16
|
+
/** 轴对齐包围盒(流程坐标) */
|
|
17
|
+
export declare function getFlowNodeBBox(n: Node): FlowNodeRect | null;
|
|
18
|
+
export declare function getFlowNodeCenterFromBBox(n: Node): {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
} | null;
|
|
22
|
+
export declare function expandFlowNodeRect(r: FlowNodeRect, margin: number): FlowNodeRect;
|
|
23
|
+
/** 水平投影是否有交集 */
|
|
24
|
+
export declare function horizontalProjOverlapNodes(a: Node, b: Node): boolean;
|
|
25
|
+
/** 两盒水平间隙(重叠时为 0) */
|
|
26
|
+
export declare function horizontalGapBetweenRects(a: FlowNodeRect, b: FlowNodeRect): number;
|
|
27
|
+
/** 两盒竖直间隙(重叠时为 0) */
|
|
28
|
+
export declare function verticalGapBetweenRects(a: FlowNodeRect, b: FlowNodeRect): number;
|
|
29
|
+
//# sourceMappingURL=flowNodeBBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowNodeBBox.d.ts","sourceRoot":"","sources":["../../src/flow/flowNodeBBox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAS1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG;IAClE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,IAAI,CAKP;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmB/E;AAED,mBAAmB;AACnB,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,YAAY,GAAG,IAAI,CAa5D;AAED,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,IAAI,GACN;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASjC;AAED,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,YAAY,EACf,MAAM,EAAE,MAAM,GACb,YAAY,CAOd;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOpE;AAED,qBAAqB;AACrB,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,GACd,MAAM,CAQR;AAED,qBAAqB;AACrB,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,GACd,MAAM,CAQR"}
|
|
@@ -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":"AAyBA,iCAAiC;AACjC,eAAO,MAAM,aAAa,KAAK,CAAC;AAchC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CAoPzD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Edge, Node } from '@xyflow/react';
|
|
2
|
+
export declare function collectIncidentNodeIds(edges: Edge[]): string[];
|
|
3
|
+
export declare function syncEdgeLayoutFromGraph(edges: Edge[], getNode: (id: string) => Node | undefined): {
|
|
4
|
+
edges: Edge[];
|
|
5
|
+
nodeIds: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare function scheduleUpdateNodeInternals(nodeIds: Iterable<string>, updateNodeInternals: (id: string) => void): void;
|
|
8
|
+
/** 用给定节点表构造 getNode(`replaceFlow` 在 state 提交前重算锚边) */
|
|
9
|
+
export declare function nodeLookupFromList(nodes: Node[]): (id: string) => Node | undefined;
|
|
10
|
+
export declare function applyEdgeLayoutSync(edges: Edge[], getNode: (id: string) => Node | undefined, updateNodeInternals: (id: string) => void): Edge[];
|
|
11
|
+
//# sourceMappingURL=syncEdgeLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncEdgeLayout.d.ts","sourceRoot":"","sources":["../../src/flow/syncEdgeLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAW9D;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GACxC;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAGtC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,CAUN;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAGlF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,EAAE,CAIR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wechenAgentEdgeTypes.d.ts","sourceRoot":"","sources":["../../src/flow/wechenAgentEdgeTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"wechenAgentEdgeTypes.d.ts","sourceRoot":"","sources":["../../src/flow/wechenAgentEdgeTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAkB,MAAM,eAAe,CAAC;AAK7F;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,+BAA+B;AAC/B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,8BAA8B;AAC9B,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;IACnD,sBAAsB,CAAC,EAAE,kBAAkB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,mBAAmB,CAAC;CAC9C;AAoCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,2CAgCtD;AAED,eAAO,MAAM,oBAAoB;;CAEZ,CAAC"}
|
|
@@ -11,8 +11,10 @@ export declare function getFlowNodeCenter(n: Node | undefined): {
|
|
|
11
11
|
export declare function patchEdgesAttachSidesFromGeometry(edges: Edge[], getNode: (id: string) => Node | undefined): Edge[];
|
|
12
12
|
/**
|
|
13
13
|
* 根据源→目标几何判定感应池锚边(输出池右/下,输入池左/上):
|
|
14
|
-
* - 上下叠放(水平投影重叠且源在上)→
|
|
15
|
-
* -
|
|
14
|
+
* - 上下叠放(水平投影重叠且源在上)→ 源走下、目标走上
|
|
15
|
+
* - 父上子下扇出 → 底→顶
|
|
16
|
+
* - 目标在上且投影重叠 → 右/左
|
|
17
|
+
* - 否则比较水平/竖直间隙与中心位移,对角平局用象限
|
|
16
18
|
*/
|
|
17
19
|
export declare function attachDataFromNodeGeometry(sourceNode: Node | undefined, targetNode: Node | undefined): Pick<WechenAgentEdgeData, "wechenSourceAttachSide" | "wechenTargetAttachSide"> | null;
|
|
18
20
|
/** 无法测量节点盒时:根据拖拽所用的 stub 回退锚边偏好。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoneConnectionAttach.d.ts","sourceRoot":"","sources":["../../src/flow/zoneConnectionAttach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"zoneConnectionAttach.d.ts","sourceRoot":"","sources":["../../src/flow/zoneConnectionAttach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAelE,mCAAmC;AACnC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKtF;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GACxC,IAAI,EAAE,CAuBR;AAmED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,IAAI,GAAG,SAAS,EAC5B,UAAU,EAAE,IAAI,GAAG,SAAS,GAC3B,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,GAAG,wBAAwB,CAAC,GAAG,IAAI,CAwEvF;AAED,oCAAoC;AACpC,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,UAAU,GACZ,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,GAAG,wBAAwB,CAAC,CAiBhF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,UAAU,EACb,UAAU,CAAC,EAAE,IAAI,EACjB,UAAU,CAAC,EAAE,IAAI,GAChB,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,GAAG,wBAAwB,CAAC,CAMhF;AAED,yDAAyD;AACzD,wBAAgB,wBAAwB,IAAI,IAAI,CAC9C,mBAAmB,EACnB,wBAAwB,GAAG,wBAAwB,CACpD,CAKA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,EACb,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,IAAI,EACb,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCzB"}
|
|
@@ -5,14 +5,14 @@ export type NodeLookup = (id: string) => Node | undefined;
|
|
|
5
5
|
export interface EdgeLike {
|
|
6
6
|
id: string;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
8
|
+
/** @deprecated 仅无邻居坐标时的兜底 */
|
|
9
9
|
export declare function partitionEdgesBetweenStripPair<E extends EdgeLike>(edges: E[]): {
|
|
10
10
|
primary: E[];
|
|
11
11
|
secondary: E[];
|
|
12
12
|
};
|
|
13
|
-
/** 槽位百分比:共 slotCount 个槽,index ∈ [0, slotCount-1] */
|
|
13
|
+
/** 槽位百分比:共 slotCount 个槽,index ∈ [0, slotCount-1];首尾略内缩避免贴角 */
|
|
14
14
|
export declare function slotPercent(index: number, slotCount: number): string;
|
|
15
|
-
/** 入边:`data.wechenTargetAttachSide` 为 left/top
|
|
15
|
+
/** 入边:`data.wechenTargetAttachSide` 为 left/top 时强制落入对应带。 */
|
|
16
16
|
export declare function partitionIncomingForZones<E extends EdgeLike & {
|
|
17
17
|
data?: {
|
|
18
18
|
wechenTargetAttachSide?: WechenAttachSideIn;
|
|
@@ -31,8 +31,7 @@ export declare function partitionOutgoingForZones<E extends EdgeLike & {
|
|
|
31
31
|
bottom: E[];
|
|
32
32
|
};
|
|
33
33
|
/**
|
|
34
|
-
* 入边按「源→本节点」几何落入左/上感应带;沿左带按源节点中心 **y**、沿上带按 **x**
|
|
35
|
-
* 使多条入线在周界上大致按来源方位展开。
|
|
34
|
+
* 入边按「源→本节点」几何落入左/上感应带;沿左带按源节点中心 **y**、沿上带按 **x** 排序。
|
|
36
35
|
*/
|
|
37
36
|
export declare function partitionIncomingByGeometry(edges: Edge[], targetId: string, getNode: NodeLookup): {
|
|
38
37
|
left: Edge[];
|
|
@@ -45,4 +44,8 @@ export declare function partitionOutgoingByGeometry(edges: Edge[], sourceId: str
|
|
|
45
44
|
right: Edge[];
|
|
46
45
|
bottom: Edge[];
|
|
47
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* `ZoneHandles` 分区缓存 epoch:关联边锚边 data + 邻居节点尺寸,避免仅 `getNode` 引用不变时不重算。
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildZoneHandleLayoutEpoch(nodeId: string, edges: Edge[], getNode: NodeLookup): string;
|
|
48
51
|
//# sourceMappingURL=zoneHandleLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoneHandleLayout.d.ts","sourceRoot":"","sources":["../../src/flow/zoneHandleLayout.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zoneHandleLayout.d.ts","sourceRoot":"","sources":["../../src/flow/zoneHandleLayout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAQhC,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;CACZ;AA6BD,6BAA6B;AAC7B,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,QAAQ,EAC/D,KAAK,EAAE,CAAC,EAAE,GACT;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,CAAC,EAAE,CAAA;CAAE,CAElC;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOpE;AAgCD,4DAA4D;AAC5D,wBAAgB,yBAAyB,CACvC,CAAC,SAAS,QAAQ,GAAG;IACnB,IAAI,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,kBAAkB,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/D,EACD,KAAK,EAAE,CAAC,EAAE,GAAG;IAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAAC,GAAG,EAAE,CAAC,EAAE,CAAA;CAAE,CAoBrC;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,CAAC,SAAS,QAAQ,GAAG;IACnB,IAAI,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,IAAI,CAAC;CAChE,EACD,KAAK,EAAE,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,CAAA;CAAE,CAoBzC;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,GAClB;IAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAAC,GAAG,EAAE,IAAI,EAAE,CAAA;CAAE,CA0C/B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,GAClB;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CA0CnC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,UAAU,GAClB,MAAM,CA4BR"}
|
package/dist/flowTypes.d.ts
CHANGED
|
@@ -145,6 +145,11 @@ export interface WechenAgentEditorRef {
|
|
|
145
145
|
patchEdge(edgeId: string, patch: Partial<Edge>): void;
|
|
146
146
|
/** 用完整 flow 替换画布(深拷贝 + 规范化);会记录 `flow.title` 供后续 `getSnapshot` 使用 */
|
|
147
147
|
replaceFlow(flow: WechenAgentFlowJson): void;
|
|
148
|
+
/**
|
|
149
|
+
* 按当前节点几何重算全部边的锚边偏好并刷新感应区 Handle(与 `replaceFlow` / 回显后自动逻辑相同)。
|
|
150
|
+
* `readOnly` / `readingMode` 下为 no-op。
|
|
151
|
+
*/
|
|
152
|
+
relayoutEdges(): void;
|
|
148
153
|
/** 与右侧面板一致的选中节点 id;未选中节点时为 `null` */
|
|
149
154
|
getSelectedNodeId(): string | null;
|
|
150
155
|
/** 与右侧面板一致的选中边 id;未选中边时为 `null` */
|
package/dist/flowTypes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowTypes.d.ts","sourceRoot":"","sources":["../src/flowTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AAEvB,6DAA6D;AAC7D,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,IAAI,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,uBAAuB,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,uBAAuB,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,mBAAmB,KAAK,uBAAuB,CAAC;AAE5F,kCAAkC;AAClC,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,uBAAuB;AACvB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAkB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,8DAA8D;IAC9D,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;OAGG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qCAAqC;IACpD,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,qCAAqC;IACpD,gDAAgD;IAChD,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,IAAI,MAAM,CAAC;IACnB,WAAW,IAAI,mBAAmB,CAAC;IACnC,oCAAoC;IACpC,OAAO,IAAI,mBAAmB,CAAC;IAC/B,QAAQ,IAAI,IAAI,EAAE,CAAC;IACnB,QAAQ,IAAI,IAAI,EAAE,CAAC;IACnB,iCAAiC;IACjC,IAAI,IAAI,IAAI,CAAC;IACb,oCAAoC;IACpC,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;;OAOG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACpE;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,qEAAqE;IACrE,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"flowTypes.d.ts","sourceRoot":"","sources":["../src/flowTypes.ts"],"names":[],"mappings":"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"}
|