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

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