@flowgram.ai/free-layout-core 0.1.0-alpha.2 → 0.1.0-alpha.21

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.
Files changed (66) hide show
  1. package/dist/esm/chunk-3UW6BHP2.js +7 -0
  2. package/dist/esm/chunk-3UW6BHP2.js.map +1 -0
  3. package/dist/esm/chunk-5BT3ZR4D.js +23 -0
  4. package/dist/esm/chunk-5BT3ZR4D.js.map +1 -0
  5. package/dist/esm/{chunk-DE4324TR.js → chunk-IKQUOAWQ.js} +1 -1
  6. package/dist/esm/chunk-IKQUOAWQ.js.map +1 -0
  7. package/dist/esm/chunk-TQLT57GW.js +1 -0
  8. package/dist/esm/chunk-TQLT57GW.js.map +1 -0
  9. package/dist/esm/{chunk-J5FVRRUV.js → chunk-U2XMPOSL.js} +2 -1
  10. package/dist/esm/chunk-U2XMPOSL.js.map +1 -0
  11. package/dist/esm/index.js +1392 -642
  12. package/dist/esm/index.js.map +1 -1
  13. package/dist/esm/typings/index.js +12 -7
  14. package/dist/esm/typings/workflow-drag.js +2 -0
  15. package/dist/esm/typings/workflow-drag.js.map +1 -0
  16. package/dist/esm/typings/workflow-json.js +1 -1
  17. package/dist/esm/typings/workflow-line.js +1 -1
  18. package/dist/esm/typings/workflow-operation.js +8 -0
  19. package/dist/esm/typings/workflow-operation.js.map +1 -0
  20. package/dist/index.d.mts +261 -189
  21. package/dist/index.d.ts +261 -189
  22. package/dist/index.js +1392 -644
  23. package/dist/index.js.map +1 -1
  24. package/dist/typings/index.d.mts +10 -5
  25. package/dist/typings/index.d.ts +10 -5
  26. package/dist/typings/index.js +16 -7
  27. package/dist/typings/index.js.map +1 -1
  28. package/dist/typings/workflow-drag.d.mts +7 -0
  29. package/dist/typings/workflow-drag.d.ts +7 -0
  30. package/dist/typings/workflow-drag.js +19 -0
  31. package/dist/typings/workflow-drag.js.map +1 -0
  32. package/dist/typings/workflow-edge.d.mts +5 -0
  33. package/dist/typings/workflow-edge.d.ts +5 -0
  34. package/dist/typings/workflow-edge.js.map +1 -1
  35. package/dist/typings/workflow-json.d.mts +3 -4
  36. package/dist/typings/workflow-json.d.ts +3 -4
  37. package/dist/typings/workflow-json.js +1 -0
  38. package/dist/typings/workflow-json.js.map +1 -1
  39. package/dist/typings/workflow-line.d.mts +3 -4
  40. package/dist/typings/workflow-line.d.ts +3 -4
  41. package/dist/typings/workflow-line.js +8 -5
  42. package/dist/typings/workflow-line.js.map +1 -1
  43. package/dist/typings/workflow-node.d.mts +2 -3
  44. package/dist/typings/workflow-node.d.ts +2 -3
  45. package/dist/typings/workflow-node.js.map +1 -1
  46. package/dist/typings/workflow-operation.d.mts +38 -0
  47. package/dist/typings/workflow-operation.d.ts +38 -0
  48. package/dist/typings/workflow-operation.js +31 -0
  49. package/dist/typings/workflow-operation.js.map +1 -0
  50. package/dist/typings/workflow-registry.d.mts +9 -4
  51. package/dist/typings/workflow-registry.d.ts +9 -4
  52. package/dist/typings/workflow-registry.js.map +1 -1
  53. package/dist/typings/workflow-sub-canvas.d.mts +6 -1
  54. package/dist/typings/workflow-sub-canvas.d.ts +6 -1
  55. package/dist/typings/workflow-sub-canvas.js.map +1 -1
  56. package/dist/workflow-node-entity-DH5qlw7I.d.mts +1147 -0
  57. package/dist/workflow-node-entity-DWVtlA2a.d.ts +1147 -0
  58. package/package.json +15 -15
  59. package/dist/esm/chunk-DE4324TR.js.map +0 -1
  60. package/dist/esm/chunk-J5FVRRUV.js.map +0 -1
  61. package/dist/esm/chunk-PT4ZVDZZ.js +0 -20
  62. package/dist/esm/chunk-PT4ZVDZZ.js.map +0 -1
  63. package/dist/workflow-line-entity-BJQBRDgJ.d.mts +0 -747
  64. package/dist/workflow-line-entity-CEitdjhk.d.ts +0 -747
  65. package/dist/workflow-sub-canvas-DOVla1mw.d.mts +0 -15
  66. package/dist/workflow-sub-canvas-DOVla1mw.d.ts +0 -15
@@ -0,0 +1,1147 @@
1
+ import { FlowNodeJSON, FlowNodeMeta, FlowDocumentOptions, FlowNodeType, FlowLayout, FlowDocumentProvider, FlowDocument, FlowNodeEntity, AddNodeData } from '@flowgram.ai/document';
2
+ import { EntityManager, SelectionService, Playground, Entity, PlaygroundConfigEntity, PlaygroundContext, PlaygroundDragEvent, PlaygroundDrag, EntityOpts, EntityData } from '@flowgram.ai/core';
3
+ import * as _flowgram_ai_utils from '@flowgram.ai/utils';
4
+ import { Rectangle, IPoint, Emitter, PositionSchema, Event, PaddingSchema, SizeSchema, ScrollSchema, DisposableCollection } from '@flowgram.ai/utils';
5
+ import React$1 from 'react';
6
+ import { NodeEngineContext } from '@flowgram.ai/form-core';
7
+ import { WorkflowEdgeJSON } from './typings/workflow-edge.mjs';
8
+
9
+ /**
10
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
11
+ * SPDX-License-Identifier: MIT
12
+ */
13
+
14
+ type WorkflowPortType = 'input' | 'output';
15
+ declare const getPortEntityId: (node: WorkflowNodeEntity, portType: WorkflowPortType, portID?: string | number) => string;
16
+ declare const WORKFLOW_LINE_ENTITY = "WorkflowLineEntity";
17
+ declare function domReactToBounds(react: DOMRect): Rectangle;
18
+
19
+ /**
20
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
21
+ * SPDX-License-Identifier: MIT
22
+ */
23
+
24
+ /**
25
+ * 子画布配置
26
+ */
27
+ type WorkflowSubCanvas = {
28
+ isCanvas: boolean;
29
+ parentNode: WorkflowNodeEntity;
30
+ canvasNode: WorkflowNodeEntity;
31
+ };
32
+
33
+ /**
34
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
35
+ * SPDX-License-Identifier: MIT
36
+ */
37
+
38
+ /**
39
+ * 节点 meta 信息
40
+ */
41
+ interface WorkflowNodeMeta extends FlowNodeMeta {
42
+ position?: IPoint;
43
+ canvasPosition?: IPoint;
44
+ deleteDisable?: boolean;
45
+ copyDisable?: boolean;
46
+ inputDisable?: boolean;
47
+ outputDisable?: boolean;
48
+ defaultPorts?: WorkflowPorts;
49
+ useDynamicPort?: boolean;
50
+ subCanvas?: (node: WorkflowNodeEntity) => WorkflowSubCanvas | undefined;
51
+ isContainer?: boolean;
52
+ }
53
+ /**
54
+ * 节点数据
55
+ */
56
+ interface WorkflowNodeJSON extends FlowNodeJSON {
57
+ id: string;
58
+ type: string | number;
59
+ /**
60
+ * ui 数据
61
+ */
62
+ meta?: WorkflowNodeMeta;
63
+ /**
64
+ * 表单数据
65
+ */
66
+ data?: any;
67
+ /**
68
+ * 子节点
69
+ */
70
+ blocks?: WorkflowNodeJSON[];
71
+ /**
72
+ * 子节点间连线
73
+ */
74
+ edges?: WorkflowEdgeJSON[];
75
+ }
76
+
77
+ /**
78
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
79
+ * SPDX-License-Identifier: MIT
80
+ */
81
+
82
+ interface WorkflowJSON {
83
+ nodes: WorkflowNodeJSON[];
84
+ edges: WorkflowEdgeJSON[];
85
+ }
86
+ declare enum WorkflowContentChangeType {
87
+ /**
88
+ * 添加节点
89
+ */
90
+ ADD_NODE = "ADD_NODE",
91
+ /**
92
+ * 删除节点
93
+ */
94
+ DELETE_NODE = "DELETE_NODE",
95
+ /**
96
+ * 移动节点
97
+ */
98
+ MOVE_NODE = "MOVE_NODE",
99
+ /**
100
+ * 节点数据更新 (表单引擎数据 或者 extInfo 数据)
101
+ */
102
+ NODE_DATA_CHANGE = "NODE_DATA_CHANGE",
103
+ /**
104
+ * 添加线条
105
+ */
106
+ ADD_LINE = "ADD_LINE",
107
+ /**
108
+ * 删除线条
109
+ */
110
+ DELETE_LINE = "DELETE_LINE",
111
+ /**
112
+ * 线条数据修改
113
+ */
114
+ LINE_DATA_CHANGE = "LINE_DATA_CHANGE",
115
+ /**
116
+ * 节点Meta信息变更
117
+ */
118
+ META_CHANGE = "META_CHANGE"
119
+ }
120
+ interface WorkflowContentChangeEvent {
121
+ type: WorkflowContentChangeType;
122
+ /**
123
+ * 当前触发的元素的json数据,toJSON 需要主动触发
124
+ */
125
+ toJSON: () => any;
126
+ /**
127
+ * oldValue
128
+ */
129
+ oldValue?: any;
130
+ entity: WorkflowNodeEntity | WorkflowLineEntity;
131
+ }
132
+
133
+ /**
134
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
135
+ * SPDX-License-Identifier: MIT
136
+ */
137
+
138
+ declare const WorkflowDocumentOptions: unique symbol;
139
+ /**
140
+ * 线条配置
141
+ */
142
+ interface WorkflowDocumentOptions extends FlowDocumentOptions {
143
+ cursors?: {
144
+ grab?: string;
145
+ grabbing?: string;
146
+ };
147
+ /** 双向连接 */
148
+ twoWayConnection?: boolean;
149
+ /** 线条颜色 */
150
+ lineColor?: Partial<LineColor>;
151
+ /** 是否显示错误线条 */
152
+ isErrorLine?: (fromPort: WorkflowPortEntity | undefined, toPort: WorkflowPortEntity | undefined, lines: WorkflowLinesManager) => boolean;
153
+ /** 是否错误端口 */
154
+ isErrorPort?: (port: WorkflowPortEntity) => boolean;
155
+ /** 是否禁用端口 */
156
+ isDisabledPort?: (port: WorkflowPortEntity) => boolean;
157
+ /** 是否反转线条箭头 */
158
+ isReverseLine?: (line: WorkflowLineEntity) => boolean;
159
+ /** 是否隐藏线条箭头 */
160
+ isHideArrowLine?: (line: WorkflowLineEntity) => boolean;
161
+ /** 是否流动线条 */
162
+ isFlowingLine?: (line: WorkflowLineEntity) => boolean;
163
+ /** 是否禁用线条 */
164
+ isDisabledLine?: (line: WorkflowLineEntity) => boolean;
165
+ /** 拖拽线条结束 */
166
+ onDragLineEnd?: (params: onDragLineEndParams) => Promise<void>;
167
+ /** 获取线条渲染器 */
168
+ setLineRenderType?: (line: WorkflowLineEntity) => LineRenderType | undefined;
169
+ /** 设置线条样式 */
170
+ setLineClassName?: (line: WorkflowLineEntity) => string | undefined;
171
+ /** 能否添加线条 */
172
+ canAddLine?: (fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity, lines: WorkflowLinesManager, silent?: boolean) => boolean;
173
+ /** 能否删除节点 */
174
+ canDeleteNode?: (node: WorkflowNodeEntity, silent?: boolean) => boolean;
175
+ /** 能否删除线条 */
176
+ canDeleteLine?: (line: WorkflowLineEntity, newLineInfo?: Required<Omit<WorkflowLinePortInfo, 'data'>>, silent?: boolean) => boolean;
177
+ /**
178
+ * @param fromPort - 开始点
179
+ * @param oldToPort - 旧的连接点
180
+ * @param newToPort - 新的连接点
181
+ * @param lines - 线条管理器
182
+ */
183
+ canResetLine?: (oldLine: WorkflowLineEntity, newLineInfo: Required<WorkflowLinePortInfo>, lines: WorkflowLinesManager) => boolean;
184
+ /**
185
+ * 是否允许拖入子画布 (loop or group)
186
+ * Whether to allow dragging into the sub-canvas (loop or group)
187
+ * @param params
188
+ */
189
+ canDropToNode?: (params: {
190
+ dragNodeType?: FlowNodeType;
191
+ dragNode?: WorkflowNodeEntity;
192
+ dropNode?: WorkflowNodeEntity;
193
+ dropNodeType?: FlowNodeType;
194
+ }) => boolean;
195
+ }
196
+ declare const WorkflowDocumentOptionsDefault: WorkflowDocumentOptions;
197
+
198
+ /**
199
+ * 可 Hover 的节点 类型
200
+ */
201
+ type WorkflowEntityHoverable = WorkflowNodeEntity | WorkflowLineEntity | WorkflowPortEntity;
202
+ interface HoverPosition {
203
+ position: PositionSchema;
204
+ target?: HTMLElement;
205
+ }
206
+ /** @deprecated */
207
+ type WorkfloEntityHoverable = WorkflowEntityHoverable;
208
+ /**
209
+ * hover 状态管理
210
+ */
211
+ declare class WorkflowHoverService {
212
+ protected entityManager: EntityManager;
213
+ protected onHoveredChangeEmitter: Emitter<string>;
214
+ protected onUpdateHoverPositionEmitter: Emitter<HoverPosition>;
215
+ readonly onHoveredChange: _flowgram_ai_utils.Event<string>;
216
+ readonly onUpdateHoverPosition: _flowgram_ai_utils.Event<HoverPosition>;
217
+ hoveredPos: PositionSchema;
218
+ /**
219
+ * 当前 hovered 的 节点或者线条或者点
220
+ * 1: nodeId / lineId (节点 / 线条)
221
+ * 2: nodeId:portKey (节点连接点)
222
+ */
223
+ hoveredKey: string;
224
+ /**
225
+ * 更新 hover 的内容
226
+ * @param hoveredKey hovered key
227
+ */
228
+ updateHoveredKey(hoveredKey: string): void;
229
+ updateHoverPosition(position: PositionSchema, target?: HTMLElement): void;
230
+ /**
231
+ * 清空 hover 内容
232
+ */
233
+ clearHovered(): void;
234
+ /**
235
+ * 判断是否 hover
236
+ * @param nodeId hoveredKey
237
+ * @returns 是否 hover
238
+ */
239
+ isHovered(nodeId: string): boolean;
240
+ isSomeHovered(): boolean;
241
+ /**
242
+ * 获取被 hover 的节点或线条
243
+ * @deprecated use 'someHovered' instead
244
+ */
245
+ get hoveredNode(): WorkflowEntityHoverable | undefined;
246
+ /**
247
+ * 获取被 hover 的节点或线条
248
+ */
249
+ get someHovered(): WorkflowEntityHoverable | undefined;
250
+ }
251
+
252
+ /**
253
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
254
+ * SPDX-License-Identifier: MIT
255
+ */
256
+
257
+ declare class WorkflowSelectService {
258
+ protected selectionService: SelectionService;
259
+ protected playground: Playground;
260
+ get onSelectionChanged(): Event<void>;
261
+ get selection(): Entity[];
262
+ set selection(entities: Entity[]);
263
+ /**
264
+ * 当前激活的节点只能有一个
265
+ */
266
+ get activatedNode(): WorkflowNodeEntity | undefined;
267
+ isSelected(id: string): boolean;
268
+ isActivated(id: string): boolean;
269
+ /**
270
+ * 选中的节点
271
+ */
272
+ get selectedNodes(): WorkflowNodeEntity[];
273
+ /**
274
+ * 选中
275
+ * @param node
276
+ */
277
+ selectNode(node: WorkflowNodeEntity): void;
278
+ toggleSelect(node: WorkflowNodeEntity): void;
279
+ select(node: WorkfloEntityHoverable): void;
280
+ clear(): void;
281
+ /**
282
+ * 选中并滚动到节点
283
+ * @param node
284
+ */
285
+ selectNodeAndScrollToView(node: WorkflowNodeEntity, fitView?: boolean): Promise<void>;
286
+ selectNodeAndFocus(node: WorkflowNodeEntity): void;
287
+ }
288
+
289
+ /**
290
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
291
+ * SPDX-License-Identifier: MIT
292
+ */
293
+
294
+ /**
295
+ * 自由画布布局
296
+ */
297
+ declare class FreeLayout implements FlowLayout {
298
+ name: string;
299
+ playgroundConfig: PlaygroundConfigEntity;
300
+ protected documentProvider: FlowDocumentProvider;
301
+ get document(): FlowDocument;
302
+ /**
303
+ * 更新布局
304
+ */
305
+ update(): void;
306
+ syncTransform(node: FlowNodeEntity): void;
307
+ /**
308
+ * 更新所有受影响的上下游节点
309
+ */
310
+ updateAffectedTransform(node: FlowNodeEntity): void;
311
+ /**
312
+ * 获取节点的 padding 数据
313
+ * @param node
314
+ */
315
+ getPadding(node: FlowNodeEntity): PaddingSchema;
316
+ /**
317
+ * 默认滚动到 fitview 区域
318
+ * @param contentSize
319
+ */
320
+ getInitScroll(contentSize: SizeSchema): ScrollSchema;
321
+ /**
322
+ * 获取默认输入点
323
+ */
324
+ getDefaultInputPoint(node: FlowNodeEntity): IPoint;
325
+ /**
326
+ * 获取默认输出点
327
+ */
328
+ getDefaultOutputPoint(node: FlowNodeEntity): IPoint;
329
+ /**
330
+ * 水平中心点
331
+ */
332
+ getDefaultNodeOrigin(): IPoint;
333
+ private getAllParents;
334
+ private getAllBlocks;
335
+ private fireChange;
336
+ }
337
+
338
+ declare const WorkflowDocumentProvider: unique symbol;
339
+ type WorkflowDocumentProvider = () => WorkflowDocument;
340
+ declare class WorkflowDocument extends FlowDocument {
341
+ private _onContentChangeEmitter;
342
+ protected readonly onLoadedEmitter: Emitter<void>;
343
+ readonly onContentChange: _flowgram_ai_utils.Event<WorkflowContentChangeEvent>;
344
+ private _onReloadEmitter;
345
+ readonly onReload: _flowgram_ai_utils.Event<WorkflowDocument>;
346
+ /**
347
+ * 数据加载完成
348
+ */
349
+ readonly onLoaded: _flowgram_ai_utils.Event<void>;
350
+ protected _loading: boolean;
351
+ linesManager: WorkflowLinesManager;
352
+ playgroundConfig: PlaygroundConfigEntity;
353
+ playgroundContext: PlaygroundContext;
354
+ options: WorkflowDocumentOptions;
355
+ nodeEngineContext: NodeEngineContext;
356
+ selectServices: WorkflowSelectService;
357
+ get loading(): boolean;
358
+ /**
359
+ * use `ctx.tools.fitView()` instead
360
+ * @deprecated
361
+ * @param easing
362
+ */
363
+ fitView(easing?: boolean): Promise<void>;
364
+ init(): void;
365
+ load(): Promise<void>;
366
+ /**
367
+ * @deprecated use `ctx.operation.fromJSON` instead
368
+ */
369
+ reload(json: WorkflowJSON, delayTime?: number): Promise<void>;
370
+ /**
371
+ * 从数据加载
372
+ * @param json
373
+ */
374
+ fromJSON(json: Partial<WorkflowJSON>, fireRender?: boolean): void;
375
+ /**
376
+ * 清空画布
377
+ */
378
+ clear(): void;
379
+ /**
380
+ * 创建流程节点
381
+ * @param json
382
+ */
383
+ createWorkflowNode(json: WorkflowNodeJSON,
384
+ /** @deprecated */
385
+ isClone?: boolean, parentID?: string): WorkflowNodeEntity;
386
+ /**
387
+ * 创建流程节点
388
+ * @param json
389
+ */
390
+ private _createWorkflowNode;
391
+ /**
392
+ * 添加节点,如果节点已经存在则不会重复创建
393
+ * @param data
394
+ * @param addedNodes
395
+ */
396
+ addNode(data: AddNodeData, addedNodes?: WorkflowNodeEntity[], ignoreCreateAndUpdateEvent?: boolean): WorkflowNodeEntity;
397
+ get layout(): FreeLayout;
398
+ /**
399
+ * 获取默认的 x y 坐标, 默认为当前画布可视区域中心
400
+ * @param type
401
+ * @protected
402
+ */
403
+ getNodeDefaultPosition(type: string | number): IPoint;
404
+ /**
405
+ * 通过类型创建节点, 如果没有提供position 则直接放在画布中间
406
+ * @param type
407
+ */
408
+ createWorkflowNodeByType(type: string | number, position?: IPoint, json?: Partial<WorkflowNodeJSON>, parentID?: string): WorkflowNodeEntity;
409
+ getAllNodes(): WorkflowNodeEntity[];
410
+ getAllEdges(): WorkflowLineEntity[];
411
+ getAllPorts(): WorkflowPortEntity[];
412
+ /**
413
+ * 获取画布中的非游离节点
414
+ * 1. 开始节点
415
+ * 2. 从开始节点出发能走到的节点
416
+ * 3. 结束节点
417
+ * 4. 默认所有子画布内节点为游离节点
418
+ */
419
+ getAssociatedNodes(): WorkflowNodeEntity[];
420
+ /**
421
+ * 触发渲染
422
+ */
423
+ fireRender(): void;
424
+ fireContentChange(event: WorkflowContentChangeEvent): void;
425
+ toNodeJSON(node: WorkflowNodeEntity): WorkflowNodeJSON;
426
+ /**
427
+ * 节点转换为JSON, 没有format的过程
428
+ * @param node
429
+ * @returns
430
+ */
431
+ private toNodeJSONFromOptions;
432
+ copyNode(node: WorkflowNodeEntity, newNodeId?: string | undefined, format?: (json: WorkflowNodeJSON) => WorkflowNodeJSON, position?: IPoint): WorkflowNodeEntity;
433
+ copyNodeFromJSON(flowNodeType: string, nodeJSON: WorkflowNodeJSON, newNodeId?: string | undefined, position?: IPoint, parentID?: string): WorkflowNodeEntity;
434
+ canRemove(node: WorkflowNodeEntity, silent?: boolean): boolean;
435
+ /**
436
+ * 判断端口是否为错误态
437
+ */
438
+ isErrorPort(port: WorkflowPortEntity, defaultValue?: boolean): boolean;
439
+ /**
440
+ * 导出数据
441
+ */
442
+ toJSON(): WorkflowJSON;
443
+ dispose(): void;
444
+ /**
445
+ * 批量添加节点
446
+ * @deprecated use 'batchAddFromJSON' instead
447
+ * @param json
448
+ * @param options
449
+ */
450
+ renderJSON(json: WorkflowJSON, options?: {
451
+ parent?: WorkflowNodeEntity;
452
+ /** @deprecated useless api */
453
+ isClone?: boolean;
454
+ }): {
455
+ nodes: WorkflowNodeEntity[];
456
+ edges: WorkflowLineEntity[];
457
+ };
458
+ /**
459
+ * 批量添加节点
460
+ */
461
+ batchAddFromJSON(json: WorkflowJSON, options?: {
462
+ parent?: WorkflowNodeEntity;
463
+ onNodeCreated?: (node: WorkflowNodeEntity) => void;
464
+ onEdgeCreated?: (edge: WorkflowLineEntity) => void;
465
+ }): {
466
+ nodes: WorkflowNodeEntity[];
467
+ edges: WorkflowLineEntity[];
468
+ };
469
+ private getNodeSubCanvas;
470
+ private getNodeChildren;
471
+ private toLineJSON;
472
+ private createWorkflowLine;
473
+ }
474
+
475
+ /**
476
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
477
+ * SPDX-License-Identifier: MIT
478
+ */
479
+
480
+ declare enum LineType {
481
+ BEZIER = 0,// 贝塞尔曲线
482
+ LINE_CHART = 1,// 折叠线
483
+ STRAIGHT = 2
484
+ }
485
+ type LineRenderType = LineType | string;
486
+ type LinePointLocation = 'left' | 'top' | 'right' | 'bottom';
487
+ interface LinePoint {
488
+ x: number;
489
+ y: number;
490
+ location: LinePointLocation;
491
+ }
492
+ interface LinePosition {
493
+ from: LinePoint;
494
+ to: LinePoint;
495
+ }
496
+ interface LineColor {
497
+ hidden: string;
498
+ default: string;
499
+ drawing: string;
500
+ hovered: string;
501
+ selected: string;
502
+ error: string;
503
+ flowing: string;
504
+ }
505
+ declare enum LineColors {
506
+ HIDDEN = "var(--g-workflow-line-color-hidden,transparent)",// 隐藏线条
507
+ DEFUALT = "var(--g-workflow-line-color-default,#4d53e8)",
508
+ DRAWING = "var(--g-workflow-line-color-drawing, #5DD6E3)",// '#b5bbf8', // '#9197F1',
509
+ HOVER = "var(--g-workflow-line-color-hover,#37d0ff)",
510
+ SELECTED = "var(--g-workflow-line-color-selected,#37d0ff)",
511
+ ERROR = "var(--g-workflow-line-color-error,red)",
512
+ FLOWING = "var(--g-workflow-line-color-flowing,#4d53e8)"
513
+ }
514
+ interface LineCenterPoint {
515
+ x: number;
516
+ y: number;
517
+ labelX: number;
518
+ labelY: number;
519
+ }
520
+ interface WorkflowLineRenderContribution {
521
+ entity: WorkflowLineEntity;
522
+ path: string;
523
+ center?: LineCenterPoint;
524
+ bounds: Rectangle;
525
+ update: (params: {
526
+ fromPos: LinePoint;
527
+ toPos: LinePoint;
528
+ }) => void;
529
+ calcDistance: (pos: IPoint) => number;
530
+ }
531
+ type WorkflowLineRenderContributionFactory = (new (entity: WorkflowLineEntity) => WorkflowLineRenderContribution) & {
532
+ type: LineRenderType;
533
+ };
534
+
535
+ /**
536
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
537
+ * SPDX-License-Identifier: MIT
538
+ */
539
+
540
+ interface LineEventProps {
541
+ type: 'onDrag' | 'onDragEnd';
542
+ onDragNodeId?: string;
543
+ event?: MouseEvent;
544
+ }
545
+ interface INodesDragEvent {
546
+ type: string;
547
+ nodes: FlowNodeEntity[];
548
+ startPositions: PositionSchema[];
549
+ dragEvent: PlaygroundDragEvent;
550
+ triggerEvent: MouseEvent | React$1.MouseEvent;
551
+ dragger: PlaygroundDrag;
552
+ }
553
+ interface NodesDragStartEvent extends INodesDragEvent {
554
+ type: 'onDragStart';
555
+ }
556
+ interface NodesDragEndEvent extends INodesDragEvent {
557
+ type: 'onDragEnd';
558
+ }
559
+ interface NodesDraggingEvent extends INodesDragEvent {
560
+ type: 'onDragging';
561
+ positions: PositionSchema[];
562
+ }
563
+ type NodesDragEvent = NodesDragStartEvent | NodesDraggingEvent | NodesDragEndEvent;
564
+ type onDragLineEndParams = {
565
+ fromPort?: WorkflowPortEntity;
566
+ toPort?: WorkflowPortEntity;
567
+ mousePos: PositionSchema;
568
+ line?: WorkflowLineEntity;
569
+ originLine?: WorkflowLineEntity;
570
+ event: PlaygroundDragEvent;
571
+ };
572
+ type OnDragLineEnd = (params: onDragLineEndParams) => Promise<void>;
573
+
574
+ /**
575
+ * 线条管理
576
+ */
577
+ declare class WorkflowLinesManager {
578
+ protected document: WorkflowDocument;
579
+ protected toDispose: DisposableCollection;
580
+ protected _lineType: LineRenderType;
581
+ protected onAvailableLinesChangeEmitter: Emitter<WorkflowContentChangeEvent>;
582
+ protected onForceUpdateEmitter: Emitter<void>;
583
+ hoverService: WorkflowHoverService;
584
+ selectService: WorkflowSelectService;
585
+ protected readonly entityManager: EntityManager;
586
+ readonly options: WorkflowDocumentOptions;
587
+ /**
588
+ * 有效的线条被添加或者删除时候触发,未连上的线条不算
589
+ */
590
+ readonly onAvailableLinesChange: _flowgram_ai_utils.Event<WorkflowContentChangeEvent>;
591
+ /**
592
+ * 强制渲染 lines
593
+ */
594
+ readonly onForceUpdate: _flowgram_ai_utils.Event<void>;
595
+ readonly contributionFactories: WorkflowLineRenderContributionFactory[];
596
+ init(doc: WorkflowDocument): void;
597
+ forceUpdate(): void;
598
+ get lineType(): LineRenderType;
599
+ get lineColor(): LineColor;
600
+ switchLineType(newType?: LineRenderType): LineRenderType;
601
+ getAllLines(): WorkflowLineEntity[];
602
+ getAllAvailableLines(): WorkflowLineEntity[];
603
+ hasLine(portInfo: Omit<WorkflowLinePortInfo, 'data'>): boolean;
604
+ getLine(portInfo: Omit<WorkflowLinePortInfo, 'data'>): WorkflowLineEntity | undefined;
605
+ getLineById(id: string): WorkflowLineEntity | undefined;
606
+ replaceLine(oldPortInfo: Omit<WorkflowLinePortInfo, 'data'>, newPortInfo: Omit<WorkflowLinePortInfo, 'data'>): WorkflowLineEntity;
607
+ createLine(options: {
608
+ drawingTo?: LinePoint;
609
+ drawingFrom?: LinePoint;
610
+ key?: string;
611
+ } & WorkflowLinePortInfo): WorkflowLineEntity | undefined;
612
+ /**
613
+ * 获取线条中距离鼠标位置最近的线条和距离
614
+ * @param mousePos 鼠标位置
615
+ * @param minDistance 最小检测距离
616
+ * @returns 距离鼠标位置最近的线条 以及距离
617
+ */
618
+ getCloseInLineFromMousePos(mousePos: IPoint, minDistance?: number): WorkflowLineEntity | undefined;
619
+ /**
620
+ * 是否在调整线条
621
+ */
622
+ isDrawing: boolean;
623
+ dispose(): void;
624
+ get disposed(): boolean;
625
+ isErrorLine(fromPort?: WorkflowPortEntity, toPort?: WorkflowPortEntity, defaultValue?: boolean): boolean;
626
+ isReverseLine(line: WorkflowLineEntity, defaultValue?: boolean): boolean;
627
+ isHideArrowLine(line: WorkflowLineEntity, defaultValue?: boolean): boolean;
628
+ isFlowingLine(line: WorkflowLineEntity, defaultValue?: boolean): boolean;
629
+ isDisabledLine(line: WorkflowLineEntity, defaultValue?: boolean): boolean;
630
+ setLineRenderType(line: WorkflowLineEntity): LineRenderType | undefined;
631
+ setLineClassName(line: WorkflowLineEntity): string | undefined;
632
+ getLineColor(line: WorkflowLineEntity): string | undefined;
633
+ canAddLine(fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity, silent?: boolean): boolean;
634
+ toJSON(): WorkflowEdgeJSON[];
635
+ getPortById(portId: string): WorkflowPortEntity | undefined;
636
+ canRemove(line: WorkflowLineEntity, newLineInfo?: Required<Omit<WorkflowLinePortInfo, 'data'>>, silent?: boolean): boolean;
637
+ canReset(oldLine: WorkflowLineEntity, newLineInfo: Required<WorkflowLinePortInfo>): boolean;
638
+ /**
639
+ * 根据鼠标位置找到 port
640
+ * @param pos
641
+ */
642
+ getPortFromMousePos(pos: IPoint, portType?: WorkflowPortType): WorkflowPortEntity | undefined;
643
+ /**
644
+ * 根据鼠标位置找到 node
645
+ * @param pos - 鼠标位置
646
+ */
647
+ getNodeFromMousePos(pos: IPoint): WorkflowNodeEntity | undefined;
648
+ registerContribution(factory: WorkflowLineRenderContributionFactory): this;
649
+ private registerData;
650
+ private getSortedNodes;
651
+ /** 获取鼠标坐标位置的所有节点(stackIndex 从小到大排序) */
652
+ private getContainNodesFromMousePos;
653
+ private getNodeIndex;
654
+ }
655
+
656
+ declare const LINE_HOVER_DISTANCE = 8;
657
+ declare const POINT_RADIUS = 10;
658
+ interface WorkflowLinePortInfo {
659
+ from?: string;
660
+ to?: string;
661
+ fromPort?: string | number;
662
+ toPort?: string | number;
663
+ data?: any;
664
+ }
665
+ interface WorkflowLineEntityOpts extends EntityOpts, WorkflowLinePortInfo {
666
+ document: WorkflowDocument;
667
+ linesManager: WorkflowLinesManager;
668
+ drawingTo?: LinePoint;
669
+ drawingFrom?: LinePoint;
670
+ }
671
+ interface WorkflowLineInfo extends WorkflowLinePortInfo {
672
+ drawingTo?: LinePoint;
673
+ drawingFrom?: LinePoint;
674
+ }
675
+ interface WorkflowLineUIState {
676
+ /**
677
+ * 是否出错
678
+ */
679
+ hasError: boolean;
680
+ /**
681
+ * 流动
682
+ */
683
+ flowing: boolean;
684
+ /**
685
+ * 禁用
686
+ */
687
+ disabled: boolean;
688
+ /**
689
+ * 箭头反转
690
+ */
691
+ reverse: boolean;
692
+ /**
693
+ * 隐藏箭头
694
+ */
695
+ hideArrow: boolean;
696
+ /**
697
+ * 线条宽度
698
+ * @default 2
699
+ */
700
+ strokeWidth?: number;
701
+ /**
702
+ * 选中后的线条宽度
703
+ * @default 3
704
+ */
705
+ strokeWidthSelected?: number;
706
+ /**
707
+ * 收缩
708
+ * @default 10
709
+ */
710
+ shrink: number;
711
+ /**
712
+ * @deprecated use `lockedColor` instead
713
+ */
714
+ highlightColor: string;
715
+ /**
716
+ * 曲率
717
+ * only for Bezier,
718
+ * @default 0.25
719
+ */
720
+ curvature: number;
721
+ /**
722
+ * Line locked color
723
+ */
724
+ lockedColor: string;
725
+ /**
726
+ * React className
727
+ */
728
+ className?: string;
729
+ /**
730
+ * React style
731
+ */
732
+ style?: React.CSSProperties;
733
+ }
734
+ /**
735
+ * 线条
736
+ */
737
+ declare class WorkflowLineEntity extends Entity<WorkflowLineEntityOpts> {
738
+ static type: string;
739
+ /**
740
+ * 转成线条 id
741
+ * @param info
742
+ */
743
+ static portInfoToLineId(info: WorkflowLinePortInfo): string;
744
+ private _onLineDataChangeEmitter;
745
+ readonly document: WorkflowDocument;
746
+ readonly linesManager: WorkflowLinesManager;
747
+ readonly onLineDataChange: _flowgram_ai_utils.Event<{
748
+ oldValue: any;
749
+ newValue: any;
750
+ }>;
751
+ private _from?;
752
+ private _to?;
753
+ private _lineData;
754
+ private _uiState;
755
+ /**
756
+ * 线条的 UI 状态
757
+ */
758
+ get uiState(): WorkflowLineUIState;
759
+ /**
760
+ * 更新线条的 ui 状态
761
+ * @param newState
762
+ */
763
+ updateUIState(newState: Partial<WorkflowLineUIState>): void;
764
+ /**
765
+ * 线条的扩展数据
766
+ */
767
+ get lineData(): any;
768
+ /**
769
+ * 更新线条扩展数据
770
+ * @param data
771
+ */
772
+ set lineData(newValue: any);
773
+ stackIndex: number;
774
+ /**
775
+ * 线条数据
776
+ */
777
+ info: WorkflowLineInfo;
778
+ readonly isDrawing: boolean;
779
+ /**
780
+ * 线条 Portal 挂载的 div
781
+ */
782
+ private _node?;
783
+ constructor(opts: WorkflowLineEntityOpts);
784
+ /**
785
+ * 获取线条的前置节点
786
+ */
787
+ get from(): WorkflowNodeEntity | undefined;
788
+ /**
789
+ * 获取线条的后置节点
790
+ */
791
+ get to(): WorkflowNodeEntity | undefined;
792
+ get isHidden(): boolean;
793
+ get inContainer(): boolean;
794
+ /**
795
+ * 获取是否 testrun processing
796
+ * @deprecated use `flowing` instead
797
+ */
798
+ get processing(): boolean;
799
+ /**
800
+ * 设置 testrun processing 状态
801
+ * @deprecated use `flowing` instead
802
+ */
803
+ set processing(status: boolean);
804
+ get hasError(): boolean;
805
+ set hasError(hasError: boolean);
806
+ /**
807
+ * 设置线条的后置节点
808
+ */
809
+ setToPort(toPort?: WorkflowPortEntity): void;
810
+ setFromPort(fromPort?: WorkflowPortEntity): void;
811
+ /**
812
+ * 设置线条画线时的目标位置
813
+ */
814
+ set drawingTo(pos: LinePoint | undefined);
815
+ set drawingFrom(pos: LinePoint | undefined);
816
+ get drawingFrom(): LinePoint | undefined;
817
+ /**
818
+ * 获取线条正在画线的位置
819
+ */
820
+ get drawingTo(): LinePoint | undefined;
821
+ get highlightColor(): string;
822
+ set highlightColor(highlightColor: string);
823
+ get lockedColor(): string;
824
+ set lockedColor(lockedColor: string);
825
+ /**
826
+ * 获取线条的边框位置大小
827
+ */
828
+ get bounds(): Rectangle;
829
+ get center(): LineCenterPoint;
830
+ /**
831
+ * 获取点和线最接近的距离
832
+ */
833
+ getHoverDist(pos: IPoint): number;
834
+ get fromPort(): WorkflowPortEntity | undefined;
835
+ get toPort(): WorkflowPortEntity | undefined;
836
+ /**
837
+ * 获取线条真实的输入输出节点坐标
838
+ */
839
+ get position(): LinePosition;
840
+ /** 是否反转箭头 */
841
+ get reverse(): boolean;
842
+ /** 是否隐藏箭头 */
843
+ get hideArrow(): boolean;
844
+ /** 是否流动 */
845
+ get flowing(): boolean;
846
+ set flowing(flowing: boolean);
847
+ /** 是否禁用 */
848
+ get disabled(): boolean;
849
+ /**
850
+ * @deprecated
851
+ */
852
+ get vertical(): boolean;
853
+ /** 获取线条渲染器类型 */
854
+ get renderType(): LineRenderType | undefined;
855
+ /** 获取线条样式 */
856
+ get className(): string;
857
+ get color(): string | undefined;
858
+ /**
859
+ * 初始化线条
860
+ * @param info 线条信息
861
+ */
862
+ protected initInfo(info: WorkflowLineInfo): void;
863
+ validate(): void;
864
+ /**
865
+ * use `validate` instead
866
+ * @deprecated
867
+ */
868
+ protected validateSelf(): void;
869
+ is(line: WorkflowLineEntity | WorkflowLinePortInfo): boolean;
870
+ canRemove(newLineInfo?: Required<WorkflowLinePortInfo>): boolean;
871
+ get node(): HTMLDivElement;
872
+ toJSON(): WorkflowEdgeJSON;
873
+ /** 触发线条渲染 */
874
+ fireRender(): void;
875
+ }
876
+
877
+ declare const PORT_SIZE = 24;
878
+ interface WorkflowPort {
879
+ /**
880
+ * 没有代表 默认连接点,默认 input 类型 为最左边中心,output 类型为最右边中心
881
+ */
882
+ portID?: string | number;
883
+ /**
884
+ * 输入或者输出点
885
+ */
886
+ type: WorkflowPortType;
887
+ /**
888
+ * 端口位置
889
+ */
890
+ location?: LinePointLocation;
891
+ /**
892
+ * 端口位置配置
893
+ * @example
894
+ * // bottom-center
895
+ * {
896
+ * left: '50%',
897
+ * bottom: 0
898
+ * }
899
+ * // right-center
900
+ * {
901
+ * right: 0,
902
+ * top: '50%'
903
+ * }
904
+ */
905
+ locationConfig?: {
906
+ left?: string | number;
907
+ top?: string | number;
908
+ right?: string | number;
909
+ bottom?: string | number;
910
+ };
911
+ /**
912
+ * 相对于 location 的偏移
913
+ */
914
+ offset?: IPoint;
915
+ /**
916
+ * 端口热区大小
917
+ */
918
+ size?: {
919
+ width: number;
920
+ height: number;
921
+ };
922
+ /**
923
+ * 禁用端口
924
+ */
925
+ disabled?: boolean;
926
+ /**
927
+ * 将点位渲染到该父节点上
928
+ */
929
+ targetElement?: HTMLElement;
930
+ }
931
+ type WorkflowPorts = WorkflowPort[];
932
+ interface WorkflowPortEntityOpts extends EntityOpts, WorkflowPort {
933
+ /**
934
+ * port 属于哪个节点
935
+ */
936
+ node: WorkflowNodeEntity;
937
+ }
938
+ /**
939
+ * Port 抽象的 Entity
940
+ */
941
+ declare class WorkflowPortEntity extends Entity<WorkflowPortEntityOpts> {
942
+ static type: string;
943
+ readonly node: WorkflowNodeEntity;
944
+ readonly portID: string | number;
945
+ readonly portType: WorkflowPortType;
946
+ private _disabled?;
947
+ private _hasError;
948
+ private _location?;
949
+ private _locationConfig?;
950
+ private _size?;
951
+ private _offset?;
952
+ protected readonly _onErrorChangedEmitter: Emitter<void>;
953
+ onErrorChanged: _flowgram_ai_utils.Event<void>;
954
+ targetElement?: HTMLElement;
955
+ static getPortEntityId(node: WorkflowNodeEntity, portType: WorkflowPortType, portID?: string | number): string;
956
+ get position(): LinePointLocation | undefined;
957
+ constructor(opts: WorkflowPortEntityOpts);
958
+ get hasError(): boolean;
959
+ set hasError(hasError: boolean);
960
+ validate(): void;
961
+ isErrorPort(): boolean;
962
+ get location(): LinePointLocation;
963
+ get point(): LinePoint;
964
+ /**
965
+ * 端口热区
966
+ */
967
+ get bounds(): Rectangle;
968
+ isHovered(x: number, y: number): boolean;
969
+ /**
970
+ * 相对节点左上角的位置
971
+ */
972
+ get relativePosition(): IPoint;
973
+ updateTargetElement(el?: HTMLElement): void;
974
+ /**
975
+ * 是否被禁用
976
+ */
977
+ get disabled(): boolean;
978
+ /**
979
+ * 当前点位上连接的线条
980
+ * @deprecated use `availableLines` instead
981
+ */
982
+ get lines(): WorkflowLineEntity[];
983
+ /**
984
+ * 当前有效的线条,不包含正在画的线条和隐藏的线条(这个出现在线条重连会先把原来的线条隐藏)
985
+ */
986
+ get availableLines(): WorkflowLineEntity[];
987
+ /**
988
+ * 当前点位上连接的线条(包含 isDrawing === true 的线条)
989
+ */
990
+ get allLines(): WorkflowLineEntity[];
991
+ update(data: Exclude<WorkflowPort, 'portID' | 'type'>): void;
992
+ dispose(): void;
993
+ }
994
+
995
+ /**
996
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
997
+ * SPDX-License-Identifier: MIT
998
+ */
999
+
1000
+ /**
1001
+ * 节点的点位信息
1002
+ * portsData 只监听点位的数目和类型,不监听点位的 position 变化
1003
+ */
1004
+ declare class WorkflowNodePortsData extends EntityData {
1005
+ static readonly type = "WorkflowNodePortsData";
1006
+ readonly entity: WorkflowNodeEntity;
1007
+ /** 静态的 ports 数据 */
1008
+ protected _staticPorts: WorkflowPorts;
1009
+ /** 存储 port 实体的 id,用于判断 port 是否存在 */
1010
+ protected _portIDSet: Set<string>;
1011
+ /** 上一次的 ports 数据,用于判断 ports 是否发生变化 */
1012
+ protected _prePorts: WorkflowPorts;
1013
+ constructor(entity: WorkflowNodeEntity);
1014
+ getDefaultData(): any;
1015
+ /**
1016
+ * Update all ports data, includes static ports and dynamic ports
1017
+ * @param ports
1018
+ */
1019
+ updateAllPorts(ports?: WorkflowPorts): void;
1020
+ /**
1021
+ * @deprecated use `updateAllPorts` instead
1022
+ */
1023
+ updateStaticPorts(ports: WorkflowPorts): void;
1024
+ /**
1025
+ * 动态计算点位,通过 dom 的 data-port-key
1026
+ */
1027
+ updateDynamicPorts(): void;
1028
+ /**
1029
+ * 根据 key 获取 port 实体
1030
+ */
1031
+ getPortEntityByKey(portType: WorkflowPortType, portKey?: string | number): WorkflowPortEntity;
1032
+ /**
1033
+ * 更新 ports 数据
1034
+ */
1035
+ protected updatePorts(ports: WorkflowPorts): void;
1036
+ /**
1037
+ * 获取所有 port entities
1038
+ */
1039
+ get allPorts(): WorkflowPortEntity[];
1040
+ /**
1041
+ * 获取输入点位
1042
+ */
1043
+ get inputPorts(): WorkflowPortEntity[];
1044
+ /**
1045
+ * 获取输出点位
1046
+ */
1047
+ get outputPorts(): WorkflowPortEntity[];
1048
+ /**
1049
+ * 获取输入点位置
1050
+ */
1051
+ get inputPoints(): LinePoint[];
1052
+ /**
1053
+ * 获取输出点位置
1054
+ */
1055
+ get outputPoints(): LinePoint[];
1056
+ /**
1057
+ * 根据 key 获取 输入点位置
1058
+ */
1059
+ getInputPoint(key?: string | number): LinePoint;
1060
+ /**
1061
+ * 根据 key 获取输出点位置
1062
+ */
1063
+ getOutputPoint(key?: string | number): LinePoint;
1064
+ /**
1065
+ * 获取 port 实体
1066
+ */
1067
+ protected getPortEntity(portId: string): WorkflowPortEntity | undefined;
1068
+ /**
1069
+ * 拼接 port 实体的 id
1070
+ */
1071
+ protected getPortId(portType: WorkflowPortType, portKey?: string | number): string;
1072
+ /**
1073
+ * 创建 port 实体
1074
+ */
1075
+ protected createPortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
1076
+ /**
1077
+ * 获取或创建 port 实体
1078
+ */
1079
+ protected getOrCreatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
1080
+ /**
1081
+ * 更新 port 实体
1082
+ */
1083
+ protected updatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
1084
+ }
1085
+
1086
+ /**
1087
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
1088
+ * SPDX-License-Identifier: MIT
1089
+ */
1090
+
1091
+ interface WorkflowNodeLines {
1092
+ inputLines: WorkflowLineEntity[];
1093
+ outputLines: WorkflowLineEntity[];
1094
+ }
1095
+ /**
1096
+ * 节点的关联的线条
1097
+ */
1098
+ declare class WorkflowNodeLinesData extends EntityData<WorkflowNodeLines> {
1099
+ static type: string;
1100
+ entity: WorkflowNodeEntity;
1101
+ getDefaultData(): WorkflowNodeLines;
1102
+ constructor(entity: WorkflowNodeEntity);
1103
+ /**
1104
+ * 输入线条
1105
+ */
1106
+ get inputLines(): WorkflowLineEntity[];
1107
+ /**
1108
+ * 输出线条
1109
+ */
1110
+ get outputLines(): WorkflowLineEntity[];
1111
+ get allLines(): WorkflowLineEntity[];
1112
+ get availableLines(): WorkflowLineEntity[];
1113
+ /**
1114
+ * 输入节点
1115
+ */
1116
+ get inputNodes(): WorkflowNodeEntity[];
1117
+ /**
1118
+ * 所有输入节点
1119
+ */
1120
+ get allInputNodes(): WorkflowNodeEntity[];
1121
+ /**
1122
+ * 输出节点
1123
+ */
1124
+ get outputNodes(): WorkflowNodeEntity[];
1125
+ /**
1126
+ * 输入输出节点
1127
+ */
1128
+ get allOutputNodes(): WorkflowNodeEntity[];
1129
+ addLine(line: WorkflowLineEntity): void;
1130
+ removeLine(line: WorkflowLineEntity): void;
1131
+ }
1132
+
1133
+ /**
1134
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
1135
+ * SPDX-License-Identifier: MIT
1136
+ */
1137
+
1138
+ declare module '@flowgram.ai/document' {
1139
+ interface FlowNodeEntity {
1140
+ lines: WorkflowNodeLinesData;
1141
+ ports: WorkflowNodePortsData;
1142
+ }
1143
+ }
1144
+ type WorkflowNodeEntity = FlowNodeEntity;
1145
+ declare const WorkflowNodeEntity: typeof FlowNodeEntity;
1146
+
1147
+ export { type WorkflowSubCanvas as A, type NodesDragStartEvent as B, type NodesDragEndEvent as C, type NodesDraggingEvent as D, type onDragLineEndParams as E, LINE_HOVER_DISTANCE as F, type WorkflowLinePortInfo as G, type WorkflowLineEntityOpts as H, type WorkflowLineInfo as I, type WorkflowLineUIState as J, PORT_SIZE as K, type LineCenterPoint as L, type WorkflowPort as M, type NodesDragEvent as N, type OnDragLineEnd as O, POINT_RADIUS as P, type WorkflowPorts as Q, type WorkflowPortEntityOpts as R, WorkflowNodePortsData as S, type WorkflowNodeLines as T, WorkflowNodeLinesData as U, type WorkflowEntityHoverable as V, type WorkflowJSON as W, type HoverPosition as X, type WorkfloEntityHoverable as Y, WorkflowDocumentProvider as Z, WorkflowDocumentOptionsDefault as _, WorkflowDocument as a, WorkflowNodeEntity as b, WorkflowHoverService as c, WorkflowLinesManager as d, WorkflowSelectService as e, WorkflowDocumentOptions as f, type LineEventProps as g, type WorkflowNodeJSON as h, WorkflowPortEntity as i, WorkflowLineEntity as j, type LineRenderType as k, type WorkflowLineRenderContribution as l, type LinePosition as m, type WorkflowPortType as n, getPortEntityId as o, WORKFLOW_LINE_ENTITY as p, domReactToBounds as q, WorkflowContentChangeType as r, type WorkflowContentChangeEvent as s, type WorkflowNodeMeta as t, LineType as u, type LinePointLocation as v, type LinePoint as w, type LineColor as x, LineColors as y, type WorkflowLineRenderContributionFactory as z };