@flowgram.ai/free-layout-core 0.1.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/dist/esm/chunk-CGOMTQ3G.js +1 -0
- package/dist/esm/chunk-CGOMTQ3G.js.map +1 -0
- package/dist/esm/chunk-DDJTYHXN.js +1 -0
- package/dist/esm/chunk-DDJTYHXN.js.map +1 -0
- package/dist/esm/chunk-DE4324TR.js +7 -0
- package/dist/esm/chunk-DE4324TR.js.map +1 -0
- package/dist/esm/chunk-EUXUH3YW.js +15 -0
- package/dist/esm/chunk-EUXUH3YW.js.map +1 -0
- package/dist/esm/chunk-J5FVRRUV.js +16 -0
- package/dist/esm/chunk-J5FVRRUV.js.map +1 -0
- package/dist/esm/chunk-KAL7YCC2.js +20 -0
- package/dist/esm/chunk-KAL7YCC2.js.map +1 -0
- package/dist/esm/chunk-KNYZRMIO.js +1 -0
- package/dist/esm/chunk-KNYZRMIO.js.map +1 -0
- package/dist/esm/chunk-NU6G5HF4.js +1 -0
- package/dist/esm/chunk-NU6G5HF4.js.map +1 -0
- package/dist/esm/index.js +3432 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/typings/index.js +22 -0
- package/dist/esm/typings/index.js.map +1 -0
- package/dist/esm/typings/workflow-edge.js +2 -0
- package/dist/esm/typings/workflow-edge.js.map +1 -0
- package/dist/esm/typings/workflow-json.js +8 -0
- package/dist/esm/typings/workflow-json.js.map +1 -0
- package/dist/esm/typings/workflow-line.js +10 -0
- package/dist/esm/typings/workflow-line.js.map +1 -0
- package/dist/esm/typings/workflow-node.js +2 -0
- package/dist/esm/typings/workflow-node.js.map +1 -0
- package/dist/esm/typings/workflow-registry.js +2 -0
- package/dist/esm/typings/workflow-registry.js.map +1 -0
- package/dist/esm/typings/workflow-sub-canvas.js +2 -0
- package/dist/esm/typings/workflow-sub-canvas.js.map +1 -0
- package/dist/index.d.mts +463 -0
- package/dist/index.d.ts +463 -0
- package/dist/index.js +3483 -0
- package/dist/index.js.map +1 -0
- package/dist/typings/index.d.mts +18 -0
- package/dist/typings/index.d.ts +18 -0
- package/dist/typings/index.js +66 -0
- package/dist/typings/index.js.map +1 -0
- package/dist/typings/workflow-edge.d.mts +11 -0
- package/dist/typings/workflow-edge.d.ts +11 -0
- package/dist/typings/workflow-edge.js +19 -0
- package/dist/typings/workflow-edge.js.map +1 -0
- package/dist/typings/workflow-json.d.mts +9 -0
- package/dist/typings/workflow-json.d.ts +9 -0
- package/dist/typings/workflow-json.js +40 -0
- package/dist/typings/workflow-json.js.map +1 -0
- package/dist/typings/workflow-line.d.mts +27 -0
- package/dist/typings/workflow-line.d.ts +27 -0
- package/dist/typings/workflow-line.js +45 -0
- package/dist/typings/workflow-line.js.map +1 -0
- package/dist/typings/workflow-node.d.mts +9 -0
- package/dist/typings/workflow-node.d.ts +9 -0
- package/dist/typings/workflow-node.js +19 -0
- package/dist/typings/workflow-node.js.map +1 -0
- package/dist/typings/workflow-registry.d.mts +26 -0
- package/dist/typings/workflow-registry.d.ts +26 -0
- package/dist/typings/workflow-registry.js +19 -0
- package/dist/typings/workflow-registry.js.map +1 -0
- package/dist/typings/workflow-sub-canvas.d.mts +2 -0
- package/dist/typings/workflow-sub-canvas.d.ts +2 -0
- package/dist/typings/workflow-sub-canvas.js +19 -0
- package/dist/typings/workflow-sub-canvas.js.map +1 -0
- package/dist/workflow-line-entity-1qT4aXVU.d.mts +619 -0
- package/dist/workflow-line-entity-CG_8mknJ.d.ts +619 -0
- package/dist/workflow-sub-canvas-DOVla1mw.d.mts +15 -0
- package/dist/workflow-sub-canvas-DOVla1mw.d.ts +15 -0
- package/package.json +72 -0
|
@@ -0,0 +1,619 @@
|
|
|
1
|
+
import { Bezier } from 'bezier-js';
|
|
2
|
+
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
3
|
+
import { IPoint, Emitter, Event, DisposableCollection, Rectangle } from '@flowgram.ai/utils';
|
|
4
|
+
import { EntityManager, SelectionService, Playground, Entity, PlaygroundConfigEntity, PlaygroundContext, EntityOpts } from '@flowgram.ai/core';
|
|
5
|
+
import { FlowNodeMeta, FlowNodeJSON, FlowDocumentOptions, FlowDocument } from '@flowgram.ai/document';
|
|
6
|
+
import { W as WorkflowNodeEntity, a as WorkflowSubCanvas } from './workflow-sub-canvas-DOVla1mw.mjs';
|
|
7
|
+
import { NodeEngineContext } from '@flowgram.ai/form-core';
|
|
8
|
+
import { WorkflowEdgeJSON } from './typings/workflow-edge.mjs';
|
|
9
|
+
import { LineColor, LineType, LinePosition } from './typings/workflow-line.mjs';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 节点 meta 信息
|
|
13
|
+
*/
|
|
14
|
+
interface WorkflowNodeMeta extends FlowNodeMeta {
|
|
15
|
+
position?: IPoint;
|
|
16
|
+
canvasPosition?: IPoint;
|
|
17
|
+
deleteDisable?: boolean;
|
|
18
|
+
copyDisable?: boolean;
|
|
19
|
+
inputDisable?: boolean;
|
|
20
|
+
outputDisable?: boolean;
|
|
21
|
+
defaultPorts?: WorkflowPorts;
|
|
22
|
+
useDynamicPort?: boolean;
|
|
23
|
+
subCanvas?: (node: WorkflowNodeEntity) => WorkflowSubCanvas | undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 节点数据
|
|
27
|
+
*/
|
|
28
|
+
interface WorkflowNodeJSON extends FlowNodeJSON {
|
|
29
|
+
id: string;
|
|
30
|
+
type: string | number;
|
|
31
|
+
/**
|
|
32
|
+
* ui 数据
|
|
33
|
+
*/
|
|
34
|
+
meta?: WorkflowNodeMeta;
|
|
35
|
+
/**
|
|
36
|
+
* 表单数据
|
|
37
|
+
*/
|
|
38
|
+
data?: any;
|
|
39
|
+
/**
|
|
40
|
+
* 子节点
|
|
41
|
+
*/
|
|
42
|
+
blocks?: WorkflowNodeJSON[];
|
|
43
|
+
/**
|
|
44
|
+
* 子节点间连线
|
|
45
|
+
*/
|
|
46
|
+
edges?: WorkflowEdgeJSON[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface WorkflowJSON {
|
|
50
|
+
nodes: WorkflowNodeJSON[];
|
|
51
|
+
edges: WorkflowEdgeJSON[];
|
|
52
|
+
}
|
|
53
|
+
declare enum WorkflowContentChangeType {
|
|
54
|
+
/**
|
|
55
|
+
* 添加节点
|
|
56
|
+
*/
|
|
57
|
+
ADD_NODE = "ADD_NODE",
|
|
58
|
+
/**
|
|
59
|
+
* 删除节点
|
|
60
|
+
*/
|
|
61
|
+
DELETE_NODE = "DELETE_NODE",
|
|
62
|
+
/**
|
|
63
|
+
* 移动节点
|
|
64
|
+
*/
|
|
65
|
+
MOVE_NODE = "MOVE_NODE",
|
|
66
|
+
/**
|
|
67
|
+
* 节点数据更新 (表单引擎数据 或者 extInfo 数据)
|
|
68
|
+
*/
|
|
69
|
+
NODE_DATA_CHANGE = "NODE_DATA_CHANGE",
|
|
70
|
+
/**
|
|
71
|
+
* 添加线条
|
|
72
|
+
*/
|
|
73
|
+
ADD_LINE = "ADD_LINE",
|
|
74
|
+
/**
|
|
75
|
+
* 删除线条
|
|
76
|
+
*/
|
|
77
|
+
DELETE_LINE = "DELETE_LINE",
|
|
78
|
+
/**
|
|
79
|
+
* 节点Meta信息变更
|
|
80
|
+
*/
|
|
81
|
+
META_CHANGE = "META_CHANGE"
|
|
82
|
+
}
|
|
83
|
+
interface WorkflowContentChangeEvent {
|
|
84
|
+
type: WorkflowContentChangeType;
|
|
85
|
+
/**
|
|
86
|
+
* 当前触发的元素的json数据,toJSON 需要主动触发
|
|
87
|
+
*/
|
|
88
|
+
toJSON: () => any;
|
|
89
|
+
entity: WorkflowNodeEntity | WorkflowLineEntity;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
declare const WorkflowDocumentOptions: unique symbol;
|
|
93
|
+
/**
|
|
94
|
+
* 线条配置
|
|
95
|
+
*/
|
|
96
|
+
interface WorkflowDocumentOptions extends FlowDocumentOptions {
|
|
97
|
+
cursors?: {
|
|
98
|
+
grab?: string;
|
|
99
|
+
grabbing?: string;
|
|
100
|
+
};
|
|
101
|
+
/** 线条颜色 */
|
|
102
|
+
lineColor?: Partial<LineColor>;
|
|
103
|
+
/** 是否显示错误线条 */
|
|
104
|
+
isErrorLine?: (fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity | undefined, lines: WorkflowLinesManager) => boolean;
|
|
105
|
+
/** 是否错误端口 */
|
|
106
|
+
isErrorPort?: (port: WorkflowPortEntity) => boolean;
|
|
107
|
+
/** 是否禁用端口 */
|
|
108
|
+
isDisabledPort?: (port: WorkflowPortEntity) => boolean;
|
|
109
|
+
/** 是否反转线条箭头 */
|
|
110
|
+
isReverseLine?: (line: WorkflowLineEntity) => boolean;
|
|
111
|
+
/** 是否隐藏线条箭头 */
|
|
112
|
+
isHideArrowLine?: (line: WorkflowLineEntity) => boolean;
|
|
113
|
+
/** 是否流动线条 */
|
|
114
|
+
isFlowingLine?: (line: WorkflowLineEntity) => boolean;
|
|
115
|
+
/** 是否禁用线条 */
|
|
116
|
+
isDisabledLine?: (line: WorkflowLineEntity) => boolean;
|
|
117
|
+
/** 是否竖向线条 */
|
|
118
|
+
isVerticalLine?: (line: WorkflowLineEntity) => boolean;
|
|
119
|
+
/** 能否添加线条 */
|
|
120
|
+
canAddLine?: (fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity, lines: WorkflowLinesManager, silent?: boolean) => boolean;
|
|
121
|
+
/** 能否删除节点 */
|
|
122
|
+
canDeleteNode?: (node: WorkflowNodeEntity, silent?: boolean) => boolean;
|
|
123
|
+
/** 能否删除线条 */
|
|
124
|
+
canDeleteLine?: (line: WorkflowLineEntity, newLineInfo?: Required<WorkflowLinePortInfo>, silent?: boolean) => boolean;
|
|
125
|
+
/**
|
|
126
|
+
* @param fromPort - 开始点
|
|
127
|
+
* @param oldToPort - 旧的连接点
|
|
128
|
+
* @param newToPort - 新的连接点
|
|
129
|
+
* @param lines - 线条管理器
|
|
130
|
+
*/
|
|
131
|
+
canResetLine?: (fromPort: WorkflowPortEntity, oldToPort: WorkflowPortEntity, newToPort: WorkflowPortEntity, lines: WorkflowLinesManager) => boolean;
|
|
132
|
+
}
|
|
133
|
+
declare const WorkflowDocumentOptionsDefault: WorkflowDocumentOptions;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 可 Hover 的节点 类型
|
|
137
|
+
*/
|
|
138
|
+
type WorkfloEntityHoverable = WorkflowNodeEntity | WorkflowLineEntity | WorkflowPortEntity;
|
|
139
|
+
/**
|
|
140
|
+
* hover 状态管理
|
|
141
|
+
*/
|
|
142
|
+
declare class WorkflowHoverService {
|
|
143
|
+
protected entityManager: EntityManager;
|
|
144
|
+
protected onHoveredChangeEmitter: Emitter<string>;
|
|
145
|
+
readonly onHoveredChange: _flowgram_ai_utils.Event<string>;
|
|
146
|
+
hoveredPos: IPoint;
|
|
147
|
+
/**
|
|
148
|
+
* 当前 hovered 的 节点或者线条或者点
|
|
149
|
+
* 1: nodeId / lineId (节点 / 线条)
|
|
150
|
+
* 2: nodeId:portKey (节点连接点)
|
|
151
|
+
*/
|
|
152
|
+
hoveredKey: string;
|
|
153
|
+
/**
|
|
154
|
+
* 更新 hover 的内容
|
|
155
|
+
* @param hoveredKey hovered key
|
|
156
|
+
*/
|
|
157
|
+
updateHoveredKey(hoveredKey: string): void;
|
|
158
|
+
/**
|
|
159
|
+
* 清空 hover 内容
|
|
160
|
+
*/
|
|
161
|
+
clearHovered(): void;
|
|
162
|
+
/**
|
|
163
|
+
* 判断是否 hover
|
|
164
|
+
* @param nodeId hoveredKey
|
|
165
|
+
* @returns 是否 hover
|
|
166
|
+
*/
|
|
167
|
+
isHovered(nodeId: string): boolean;
|
|
168
|
+
isSomeHovered(): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* 获取被 hover 的节点或线条
|
|
171
|
+
*/
|
|
172
|
+
get hoveredNode(): WorkfloEntityHoverable | undefined;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
declare class WorkflowSelectService {
|
|
176
|
+
protected selectionService: SelectionService;
|
|
177
|
+
protected playground: Playground;
|
|
178
|
+
get onSelectionChanged(): Event<void>;
|
|
179
|
+
get selection(): Entity[];
|
|
180
|
+
set selection(entities: Entity[]);
|
|
181
|
+
/**
|
|
182
|
+
* 当前激活的节点只能有一个
|
|
183
|
+
*/
|
|
184
|
+
get activatedNode(): WorkflowNodeEntity | undefined;
|
|
185
|
+
isSelected(id: string): boolean;
|
|
186
|
+
isActivated(id: string): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* 选中的节点
|
|
189
|
+
*/
|
|
190
|
+
get selectedNodes(): WorkflowNodeEntity[];
|
|
191
|
+
/**
|
|
192
|
+
* 选中
|
|
193
|
+
* @param node
|
|
194
|
+
*/
|
|
195
|
+
selectNode(node: WorkflowNodeEntity): void;
|
|
196
|
+
toggleSelect(node: WorkflowNodeEntity): void;
|
|
197
|
+
select(node: WorkfloEntityHoverable): void;
|
|
198
|
+
clear(): void;
|
|
199
|
+
/**
|
|
200
|
+
* 选中并滚动到节点
|
|
201
|
+
* @param node
|
|
202
|
+
*/
|
|
203
|
+
selectNodeAndScrollToView(node: WorkflowNodeEntity, fitView?: boolean): Promise<void>;
|
|
204
|
+
selectNodeAndFocus(node: WorkflowNodeEntity): void;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
declare const WorkflowDocumentProvider: unique symbol;
|
|
208
|
+
type WorkflowDocumentProvider = () => WorkflowDocument;
|
|
209
|
+
declare class WorkflowDocument extends FlowDocument {
|
|
210
|
+
private _onContentChangeEmitter;
|
|
211
|
+
protected readonly onLoadedEmitter: Emitter<void>;
|
|
212
|
+
readonly onContentChange: _flowgram_ai_utils.Event<WorkflowContentChangeEvent>;
|
|
213
|
+
private _onReloadEmitter;
|
|
214
|
+
readonly onReload: _flowgram_ai_utils.Event<WorkflowDocument>;
|
|
215
|
+
private disposed;
|
|
216
|
+
/**
|
|
217
|
+
* 数据加载完成
|
|
218
|
+
*/
|
|
219
|
+
readonly onLoaded: _flowgram_ai_utils.Event<void>;
|
|
220
|
+
protected _loading: boolean;
|
|
221
|
+
linesManager: WorkflowLinesManager;
|
|
222
|
+
playgroundConfig: PlaygroundConfigEntity;
|
|
223
|
+
playgroundContext: PlaygroundContext;
|
|
224
|
+
options: WorkflowDocumentOptions;
|
|
225
|
+
nodeEngineContext: NodeEngineContext;
|
|
226
|
+
selectServices: WorkflowSelectService;
|
|
227
|
+
get loading(): boolean;
|
|
228
|
+
fitView(easing?: boolean): Promise<void>;
|
|
229
|
+
init(): void;
|
|
230
|
+
load(): Promise<void>;
|
|
231
|
+
reload(json: WorkflowJSON, delayTime?: number): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* 从数据加载
|
|
234
|
+
* @param json
|
|
235
|
+
*/
|
|
236
|
+
fromJSON(json: Partial<WorkflowJSON>, fireRender?: boolean): void;
|
|
237
|
+
/**
|
|
238
|
+
* 清空画布
|
|
239
|
+
*/
|
|
240
|
+
clear(): void;
|
|
241
|
+
/**
|
|
242
|
+
* 创建流程节点
|
|
243
|
+
* @param json
|
|
244
|
+
*/
|
|
245
|
+
createWorkflowNode(json: WorkflowNodeJSON, isClone?: boolean, parentId?: string): WorkflowNodeEntity;
|
|
246
|
+
/**
|
|
247
|
+
* 获取默认的 x y 坐标, 默认为当前画布可视区域中心
|
|
248
|
+
* @param type
|
|
249
|
+
* @protected
|
|
250
|
+
*/
|
|
251
|
+
getNodeDefaultPosition(type: string | number): IPoint;
|
|
252
|
+
/**
|
|
253
|
+
* 通过类型创建节点, 如果没有提供position 则直接放在画布中间
|
|
254
|
+
* @param type
|
|
255
|
+
*/
|
|
256
|
+
createWorkflowNodeByType(type: string | number, position?: IPoint, json?: Partial<WorkflowNodeJSON>, parentID?: string): WorkflowNodeEntity;
|
|
257
|
+
getAllNodes(): WorkflowNodeEntity[];
|
|
258
|
+
getAllPorts(): WorkflowPortEntity[];
|
|
259
|
+
/**
|
|
260
|
+
* 获取画布中的非游离节点
|
|
261
|
+
* 1. 开始节点
|
|
262
|
+
* 2. 从开始节点出发能走到的节点
|
|
263
|
+
* 3. 结束节点
|
|
264
|
+
* 4. 默认所有子画布内节点为游离节点
|
|
265
|
+
*/
|
|
266
|
+
getAssociatedNodes(): WorkflowNodeEntity[];
|
|
267
|
+
/**
|
|
268
|
+
* 触发渲染
|
|
269
|
+
*/
|
|
270
|
+
fireRender(): void;
|
|
271
|
+
fireContentChange(event: WorkflowContentChangeEvent): void;
|
|
272
|
+
toNodeJSON(node: WorkflowNodeEntity): WorkflowNodeJSON;
|
|
273
|
+
/**
|
|
274
|
+
* 节点转换为JSON, 没有format的过程
|
|
275
|
+
* @param node
|
|
276
|
+
* @returns
|
|
277
|
+
*/
|
|
278
|
+
private toNodeJSONFromOptions;
|
|
279
|
+
copyNode(node: WorkflowNodeEntity, newNodeId?: string | undefined, format?: (json: WorkflowNodeJSON) => WorkflowNodeJSON, position?: IPoint): WorkflowNodeEntity;
|
|
280
|
+
copyNodeFromJSON(flowNodeType: string, nodeJSON: WorkflowNodeJSON, newNodeId?: string | undefined, position?: IPoint, parentId?: string): WorkflowNodeEntity;
|
|
281
|
+
canRemove(node: WorkflowNodeEntity, silent?: boolean): boolean;
|
|
282
|
+
/**
|
|
283
|
+
* 判断端口是否为错误态
|
|
284
|
+
*/
|
|
285
|
+
isErrorPort(port: WorkflowPortEntity): boolean;
|
|
286
|
+
/**
|
|
287
|
+
* 导出数据
|
|
288
|
+
*/
|
|
289
|
+
toJSON(): WorkflowJSON;
|
|
290
|
+
dispose(): void;
|
|
291
|
+
private getEdgeID;
|
|
292
|
+
/**
|
|
293
|
+
* 拍平树形json结构,将结构信息提取到map
|
|
294
|
+
*/
|
|
295
|
+
private flatJSON;
|
|
296
|
+
/**
|
|
297
|
+
* 对JSON进行分层
|
|
298
|
+
*/
|
|
299
|
+
private nestJSON;
|
|
300
|
+
/**
|
|
301
|
+
* 逐层创建节点和线条
|
|
302
|
+
*/
|
|
303
|
+
private renderJSON;
|
|
304
|
+
private getNodeSubCanvas;
|
|
305
|
+
private getNodeChildren;
|
|
306
|
+
private toLineJSON;
|
|
307
|
+
private createWorkflowLine;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* 线条管理
|
|
312
|
+
*/
|
|
313
|
+
declare class WorkflowLinesManager {
|
|
314
|
+
protected document: WorkflowDocument;
|
|
315
|
+
protected toDispose: DisposableCollection;
|
|
316
|
+
protected _lineType: LineType;
|
|
317
|
+
protected onAvailableLinesChangeEmitter: Emitter<WorkflowContentChangeEvent>;
|
|
318
|
+
protected onForceUpdateEmitter: Emitter<void>;
|
|
319
|
+
hoverService: WorkflowHoverService;
|
|
320
|
+
selectService: WorkflowSelectService;
|
|
321
|
+
protected readonly entityManager: EntityManager;
|
|
322
|
+
readonly options: WorkflowDocumentOptions;
|
|
323
|
+
/**
|
|
324
|
+
* 有效的线条被添加或者删除时候触发,未连上的线条不算
|
|
325
|
+
*/
|
|
326
|
+
readonly onAvailableLinesChange: _flowgram_ai_utils.Event<WorkflowContentChangeEvent>;
|
|
327
|
+
/**
|
|
328
|
+
* 强制渲染 lines
|
|
329
|
+
*/
|
|
330
|
+
readonly onForceUpdate: _flowgram_ai_utils.Event<void>;
|
|
331
|
+
init(doc: WorkflowDocument): void;
|
|
332
|
+
forceUpdate(): void;
|
|
333
|
+
get lineType(): LineType;
|
|
334
|
+
get lineColor(): LineColor;
|
|
335
|
+
switchLineType(newType?: LineType): LineType;
|
|
336
|
+
getAllLines(): WorkflowLineEntity[];
|
|
337
|
+
hasLine(portInfo: WorkflowLinePortInfo): boolean;
|
|
338
|
+
getLine(portInfo: WorkflowLinePortInfo): WorkflowLineEntity | undefined;
|
|
339
|
+
replaceLine(oldPortInfo: WorkflowLinePortInfo, newPortInfo: WorkflowLinePortInfo): WorkflowLineEntity;
|
|
340
|
+
createLine(options: {
|
|
341
|
+
drawingTo?: IPoint;
|
|
342
|
+
key?: string;
|
|
343
|
+
} & WorkflowLinePortInfo): WorkflowLineEntity | undefined;
|
|
344
|
+
/**
|
|
345
|
+
* 获取线条中距离鼠标位置最近的线条和距离
|
|
346
|
+
* @param mousePos 鼠标位置
|
|
347
|
+
* @param minDistance 最小检测距离
|
|
348
|
+
* @returns 距离鼠标位置最近的线条 以及距离
|
|
349
|
+
*/
|
|
350
|
+
getCloseInLineFromMousePos(mousePos: IPoint, minDistance?: number): WorkflowLineEntity | undefined;
|
|
351
|
+
/**
|
|
352
|
+
* 是否在调整线条
|
|
353
|
+
*/
|
|
354
|
+
isDrawing: boolean;
|
|
355
|
+
dispose(): void;
|
|
356
|
+
get disposed(): boolean;
|
|
357
|
+
isErrorLine(fromPort: WorkflowPortEntity, toPort?: WorkflowPortEntity): boolean;
|
|
358
|
+
isReverseLine(line: WorkflowLineEntity): boolean;
|
|
359
|
+
isHideArrowLine(line: WorkflowLineEntity): boolean;
|
|
360
|
+
isFlowingLine(line: WorkflowLineEntity): boolean;
|
|
361
|
+
isDisabledLine(line: WorkflowLineEntity): boolean;
|
|
362
|
+
isVerticalLine(line: WorkflowLineEntity): boolean;
|
|
363
|
+
getLineColor(line: WorkflowLineEntity): string | undefined;
|
|
364
|
+
canAddLine(fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity, silent?: boolean): boolean;
|
|
365
|
+
toJSON(): WorkflowEdgeJSON[];
|
|
366
|
+
getPortById(portId: string): WorkflowPortEntity | undefined;
|
|
367
|
+
canRemove(line: WorkflowLineEntity, newLineInfo?: Required<WorkflowLinePortInfo>, silent?: boolean): boolean;
|
|
368
|
+
canReset(fromPort: WorkflowPortEntity, oldToPort: WorkflowPortEntity, newToPort: WorkflowPortEntity): boolean;
|
|
369
|
+
/**
|
|
370
|
+
* 根据鼠标位置找到 port
|
|
371
|
+
* @param pos
|
|
372
|
+
*/
|
|
373
|
+
getPortFromMousePos(pos: IPoint): WorkflowPortEntity | undefined;
|
|
374
|
+
/**
|
|
375
|
+
* 根据鼠标位置找到 node
|
|
376
|
+
* @param pos - 鼠标位置
|
|
377
|
+
*/
|
|
378
|
+
getNodeFromMousePos(pos: IPoint): WorkflowNodeEntity | undefined;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
type WorkflowPortType = 'input' | 'output';
|
|
382
|
+
declare const getPortEntityId: (node: WorkflowNodeEntity, portType: WorkflowPortType, portID?: string | number) => string;
|
|
383
|
+
declare const WORKFLOW_LINE_ENTITY = "WorkflowLineEntity";
|
|
384
|
+
declare function domReactToBounds(react: DOMRect): Rectangle;
|
|
385
|
+
|
|
386
|
+
declare const PORT_SIZE = 24;
|
|
387
|
+
interface WorkflowPort {
|
|
388
|
+
/**
|
|
389
|
+
* 没有代表 默认连接点,默认 input 类型 为最左边中心,output 类型为最右边中心
|
|
390
|
+
*/
|
|
391
|
+
portID?: string | number;
|
|
392
|
+
/**
|
|
393
|
+
* 禁用端口
|
|
394
|
+
*/
|
|
395
|
+
disabled?: boolean;
|
|
396
|
+
/**
|
|
397
|
+
* 将点位渲染到该父节点上
|
|
398
|
+
*/
|
|
399
|
+
targetElement?: HTMLElement;
|
|
400
|
+
/**
|
|
401
|
+
* 输入或者输出点
|
|
402
|
+
*/
|
|
403
|
+
type: WorkflowPortType;
|
|
404
|
+
}
|
|
405
|
+
type WorkflowPorts = WorkflowPort[];
|
|
406
|
+
interface WorkflowPortEntityOpts extends EntityOpts, WorkflowPort {
|
|
407
|
+
/**
|
|
408
|
+
* port 属于哪个节点
|
|
409
|
+
*/
|
|
410
|
+
node: WorkflowNodeEntity;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Port 抽象的 Entity
|
|
414
|
+
*/
|
|
415
|
+
declare class WorkflowPortEntity extends Entity<WorkflowPortEntityOpts> {
|
|
416
|
+
static type: string;
|
|
417
|
+
readonly node: WorkflowNodeEntity;
|
|
418
|
+
targetElement?: HTMLElement;
|
|
419
|
+
readonly portID: string | number;
|
|
420
|
+
readonly _disabled: boolean;
|
|
421
|
+
private _hasError;
|
|
422
|
+
protected readonly _onErrorChangedEmitter: Emitter<void>;
|
|
423
|
+
onErrorChanged: _flowgram_ai_utils.Event<void>;
|
|
424
|
+
/**
|
|
425
|
+
* port 类型
|
|
426
|
+
*/
|
|
427
|
+
portType: WorkflowPortType;
|
|
428
|
+
static getPortEntityId(node: WorkflowNodeEntity, portType: WorkflowPortType, portID?: string | number): string;
|
|
429
|
+
constructor(opts: WorkflowPortEntityOpts);
|
|
430
|
+
get hasError(): boolean;
|
|
431
|
+
set hasError(hasError: boolean);
|
|
432
|
+
validate(): void;
|
|
433
|
+
isErrorPort(): boolean;
|
|
434
|
+
get point(): IPoint;
|
|
435
|
+
/**
|
|
436
|
+
* 点的区域
|
|
437
|
+
*/
|
|
438
|
+
get bounds(): Rectangle;
|
|
439
|
+
isHovered(x: number, y: number): boolean;
|
|
440
|
+
/**
|
|
441
|
+
* 相对节点左上角的位置
|
|
442
|
+
*/
|
|
443
|
+
get relativePosition(): IPoint;
|
|
444
|
+
updateTargetElement(el?: HTMLElement): void;
|
|
445
|
+
/**
|
|
446
|
+
* 是否被禁用
|
|
447
|
+
*/
|
|
448
|
+
get disabled(): boolean;
|
|
449
|
+
/**
|
|
450
|
+
* 当前点位上连接的线条
|
|
451
|
+
*/
|
|
452
|
+
get lines(): WorkflowLineEntity[];
|
|
453
|
+
/**
|
|
454
|
+
* 当前点位上连接的线条(包含 isDrawing === true 的线条)
|
|
455
|
+
*/
|
|
456
|
+
get allLines(): WorkflowLineEntity[];
|
|
457
|
+
dispose(): void;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
declare const LINE_HOVER_DISTANCE = 8;
|
|
461
|
+
declare const POINT_RADIUS = 10;
|
|
462
|
+
interface WorkflowLinePortInfo {
|
|
463
|
+
from: string;
|
|
464
|
+
to?: string;
|
|
465
|
+
fromPort?: string | number;
|
|
466
|
+
toPort?: string | number;
|
|
467
|
+
}
|
|
468
|
+
interface WorkflowLineEntityOpts extends EntityOpts, WorkflowLinePortInfo {
|
|
469
|
+
document: WorkflowDocument;
|
|
470
|
+
linesManager: WorkflowLinesManager;
|
|
471
|
+
drawingTo?: IPoint;
|
|
472
|
+
}
|
|
473
|
+
interface BezierLine {
|
|
474
|
+
fromPos: IPoint;
|
|
475
|
+
toPos: IPoint;
|
|
476
|
+
bbox: Rectangle;
|
|
477
|
+
controls: IPoint[];
|
|
478
|
+
bezier: Bezier;
|
|
479
|
+
foldPoints: IPoint[];
|
|
480
|
+
foldBounds: Rectangle;
|
|
481
|
+
foldPath: string;
|
|
482
|
+
}
|
|
483
|
+
interface WorkflowLineInfo extends WorkflowLinePortInfo {
|
|
484
|
+
drawingTo?: IPoint;
|
|
485
|
+
isDefaultLine?: boolean;
|
|
486
|
+
highlightColor?: string;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* 线条
|
|
490
|
+
*/
|
|
491
|
+
declare class WorkflowLineEntity extends Entity<WorkflowLineEntityOpts> {
|
|
492
|
+
static type: string;
|
|
493
|
+
/**
|
|
494
|
+
* 转成线条 id
|
|
495
|
+
* @param info
|
|
496
|
+
*/
|
|
497
|
+
static portInfoToLineId(info: WorkflowLinePortInfo): string;
|
|
498
|
+
readonly document: WorkflowDocument;
|
|
499
|
+
readonly linesManager: WorkflowLinesManager;
|
|
500
|
+
private _from;
|
|
501
|
+
private _to?;
|
|
502
|
+
private _processing;
|
|
503
|
+
private _hasError;
|
|
504
|
+
/**
|
|
505
|
+
* 线条数据
|
|
506
|
+
*/
|
|
507
|
+
info: WorkflowLineInfo;
|
|
508
|
+
readonly isDrawing: boolean;
|
|
509
|
+
/**
|
|
510
|
+
* 贝塞尔线条版本
|
|
511
|
+
*/
|
|
512
|
+
private _bezierVersion;
|
|
513
|
+
/**
|
|
514
|
+
* 贝塞尔线条数据
|
|
515
|
+
*/
|
|
516
|
+
private _bezier?;
|
|
517
|
+
/**
|
|
518
|
+
* 线条 Portal 挂载的 div
|
|
519
|
+
*/
|
|
520
|
+
private _node?;
|
|
521
|
+
constructor(opts: WorkflowLineEntityOpts);
|
|
522
|
+
/**
|
|
523
|
+
* 获取线条的前置节点
|
|
524
|
+
*/
|
|
525
|
+
get from(): WorkflowNodeEntity;
|
|
526
|
+
/**
|
|
527
|
+
* 获取线条的后置节点
|
|
528
|
+
*/
|
|
529
|
+
get to(): WorkflowNodeEntity | undefined;
|
|
530
|
+
get isHidden(): boolean;
|
|
531
|
+
get inContainer(): boolean;
|
|
532
|
+
/**
|
|
533
|
+
* 获取是否 testrun processing
|
|
534
|
+
*/
|
|
535
|
+
get processing(): boolean;
|
|
536
|
+
/**
|
|
537
|
+
* 设置 testrun processing 状态
|
|
538
|
+
*/
|
|
539
|
+
set processing(status: boolean);
|
|
540
|
+
get hasError(): boolean;
|
|
541
|
+
set hasError(hasError: boolean);
|
|
542
|
+
/**
|
|
543
|
+
* 设置线条的后置节点
|
|
544
|
+
*/
|
|
545
|
+
setToPort(toPort?: WorkflowPortEntity): void;
|
|
546
|
+
/**
|
|
547
|
+
* 设置线条画线时的目标位置
|
|
548
|
+
*/
|
|
549
|
+
set drawingTo(pos: IPoint | undefined);
|
|
550
|
+
/**
|
|
551
|
+
* 获取线条正在画线的位置
|
|
552
|
+
*/
|
|
553
|
+
get drawingTo(): IPoint | undefined;
|
|
554
|
+
get highlightColor(): string;
|
|
555
|
+
set highlightColor(color: string);
|
|
556
|
+
/**
|
|
557
|
+
* 创建贝塞尔线条
|
|
558
|
+
* @param fromPos 前置节点位置
|
|
559
|
+
* @param toPos 后置节点位置
|
|
560
|
+
* @returns 贝塞尔线条数据
|
|
561
|
+
*/
|
|
562
|
+
private createBezier;
|
|
563
|
+
/**
|
|
564
|
+
* 获取线条的边框位置大小
|
|
565
|
+
*/
|
|
566
|
+
get bounds(): Rectangle;
|
|
567
|
+
/**
|
|
568
|
+
* 获取点和线最接近的距离
|
|
569
|
+
*/
|
|
570
|
+
getHoverDist(pos: IPoint, lineType?: LineType): number;
|
|
571
|
+
get fromPort(): WorkflowPortEntity;
|
|
572
|
+
get toPort(): WorkflowPortEntity | undefined;
|
|
573
|
+
/**
|
|
574
|
+
* 获取线条真实的输入输出节点坐标
|
|
575
|
+
*/
|
|
576
|
+
get position(): LinePosition;
|
|
577
|
+
/**
|
|
578
|
+
* 获取贝塞尔数据
|
|
579
|
+
* 根据两边节点的位置信息创建贝塞尔曲线
|
|
580
|
+
*/
|
|
581
|
+
get bezier(): BezierLine;
|
|
582
|
+
refreshBezier(): void;
|
|
583
|
+
/**
|
|
584
|
+
* 可以用于判断线条点位信息是否变化
|
|
585
|
+
*/
|
|
586
|
+
get bezierDataVersion(): string;
|
|
587
|
+
/** 是否反转箭头 */
|
|
588
|
+
get reverse(): boolean;
|
|
589
|
+
/** 是否隐藏箭头 */
|
|
590
|
+
get hideArrow(): boolean;
|
|
591
|
+
/** 是否流动 */
|
|
592
|
+
get flowing(): boolean;
|
|
593
|
+
/** 是否禁用 */
|
|
594
|
+
get disabled(): boolean;
|
|
595
|
+
/** 是否竖向 */
|
|
596
|
+
get vertical(): boolean;
|
|
597
|
+
get color(): string | undefined;
|
|
598
|
+
/**
|
|
599
|
+
* 初始化线条
|
|
600
|
+
* @param info 线条信息
|
|
601
|
+
*/
|
|
602
|
+
protected initInfo(info: WorkflowLineInfo): void;
|
|
603
|
+
validate(): void;
|
|
604
|
+
validateSelf(): void;
|
|
605
|
+
is(line: WorkflowLineEntity | WorkflowLinePortInfo): boolean;
|
|
606
|
+
/**
|
|
607
|
+
* 框选 贝塞尔曲线
|
|
608
|
+
* TODO 这个方法可能有性能问题,后续看看有没有更好的方式
|
|
609
|
+
* @param rect
|
|
610
|
+
*/
|
|
611
|
+
intersectsRectangle(rect: Rectangle): boolean;
|
|
612
|
+
canRemove(newLineInfo?: Required<WorkflowLinePortInfo>): boolean;
|
|
613
|
+
get node(): HTMLDivElement;
|
|
614
|
+
toJSON(): WorkflowEdgeJSON;
|
|
615
|
+
/** 触发线条渲染 */
|
|
616
|
+
fireRender(): void;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
export { type BezierLine as B, LINE_HOVER_DISTANCE as L, POINT_RADIUS as P, WorkflowHoverService as W, WorkflowDocument as a, WorkflowLinesManager as b, WorkflowSelectService as c, type WorkflowNodeJSON as d, WorkflowPortEntity as e, WorkflowLineEntity as f, type WorkflowPorts as g, type WorkflowPortType as h, type WorkflowPort as i, getPortEntityId as j, WORKFLOW_LINE_ENTITY as k, domReactToBounds as l, type WorkflowJSON as m, WorkflowContentChangeType as n, type WorkflowContentChangeEvent as o, type WorkflowNodeMeta as p, type WorkflowLinePortInfo as q, type WorkflowLineEntityOpts as r, type WorkflowLineInfo as s, PORT_SIZE as t, type WorkflowPortEntityOpts as u, type WorkfloEntityHoverable as v, WorkflowDocumentProvider as w, WorkflowDocumentOptions as x, WorkflowDocumentOptionsDefault as y };
|