@flowgram.ai/free-layout-core 0.4.16 → 0.4.17
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/index.js +47 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +47 -183
- package/dist/index.d.ts +47 -183
- package/dist/index.js +47 -12
- package/dist/index.js.map +1 -1
- package/dist/typings/index.d.mts +4 -5
- package/dist/typings/index.d.ts +4 -5
- package/dist/typings/workflow-drag.d.mts +1 -2
- package/dist/typings/workflow-drag.d.ts +1 -2
- package/dist/typings/workflow-json.d.mts +3 -4
- package/dist/typings/workflow-json.d.ts +3 -4
- package/dist/typings/workflow-line.d.mts +3 -4
- package/dist/typings/workflow-line.d.ts +3 -4
- package/dist/typings/workflow-node.d.mts +2 -3
- package/dist/typings/workflow-node.d.ts +2 -3
- package/dist/typings/workflow-registry.d.mts +3 -4
- package/dist/typings/workflow-registry.d.ts +3 -4
- package/dist/typings/workflow-sub-canvas.d.mts +6 -1
- package/dist/typings/workflow-sub-canvas.d.ts +6 -1
- package/dist/{workflow-line-entity-IbhMSbBs.d.mts → workflow-node-entity-DtPEYn6-.d.mts} +377 -212
- package/dist/{workflow-line-entity-DcecHiNc.d.ts → workflow-node-entity-GyY_PHY6.d.ts} +377 -212
- package/package.json +9 -9
- package/dist/workflow-sub-canvas-IQzlYvPD.d.mts +0 -25
- package/dist/workflow-sub-canvas-IQzlYvPD.d.ts +0 -25
package/dist/index.d.mts
CHANGED
|
@@ -2,10 +2,8 @@ import { PlaygroundConfigEntity, CommandService, PlaygroundDragEvent, EntityData
|
|
|
2
2
|
export { bindConfigEntity, useConfigEntity, useEntities, useEntityDataFromContext, useEntityFromContext, useListenEvents, usePlayground, usePlaygroundContainer, usePlaygroundContext, useRefresh, useService } from '@flowgram.ai/core';
|
|
3
3
|
import { NodeFormProps } from '@flowgram.ai/node';
|
|
4
4
|
import { FlowOperationBaseService, FlowNodeType, FlowOperationBaseServiceImpl, FlowNodeEntityOrId, FlowNodeEntity } from '@flowgram.ai/document';
|
|
5
|
-
import { W as WorkflowHoverService, a as WorkflowDocument, b as WorkflowLinesManager, c as WorkflowSelectService, d as WorkflowDocumentOptions, L as LineEventProps, N as NodesDragEvent, e as WorkflowNodeJSON, f as
|
|
6
|
-
export {
|
|
7
|
-
import { W as WorkflowNodeEntity } from './workflow-sub-canvas-IQzlYvPD.mjs';
|
|
8
|
-
export { a as WorkflowSubCanvas } from './workflow-sub-canvas-IQzlYvPD.mjs';
|
|
5
|
+
import { W as WorkflowHoverService, a as WorkflowDocument, b as WorkflowLinesManager, c as WorkflowSelectService, d as WorkflowDocumentOptions, L as LineEventProps, N as NodesDragEvent, e as WorkflowNodeJSON, f as WorkflowNodeEntity, g as WorkflowPortEntity, h as WorkflowLineEntity, O as OnDragLineEnd, i as LineRenderType, j as WorkflowLineRenderContribution, k as LinePosition, l as LineCenterPoint, m as WorkflowJSON } from './workflow-node-entity-DtPEYn6-.mjs';
|
|
6
|
+
export { X as HoverPosition, F as LINE_HOVER_DISTANCE, x as LineColor, y as LineColors, w as LinePoint, v as LinePointLocation, u as LineType, C as NodesDragEndEvent, B as NodesDragStartEvent, D as NodesDraggingEvent, P as POINT_RADIUS, K as PORT_SIZE, p as WORKFLOW_LINE_ENTITY, Y as WorkfloEntityHoverable, s as WorkflowContentChangeEvent, r as WorkflowContentChangeType, _ as WorkflowDocumentOptionsDefault, Z as WorkflowDocumentProvider, V as WorkflowEntityHoverable, H as WorkflowLineEntityOpts, I as WorkflowLineInfo, G as WorkflowLinePortInfo, z as WorkflowLineRenderContributionFactory, J as WorkflowLineUIState, T as WorkflowNodeLines, U as WorkflowNodeLinesData, t as WorkflowNodeMeta, S as WorkflowNodePortsData, M as WorkflowPort, R as WorkflowPortEntityOpts, n as WorkflowPortType, Q as WorkflowPorts, A as WorkflowSubCanvas, q as domReactToBounds, o as getPortEntityId, E as onDragLineEndParams } from './workflow-node-entity-DtPEYn6-.mjs';
|
|
9
7
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
10
8
|
import { DisposableCollection, IPoint, Disposable, Rectangle } from '@flowgram.ai/utils';
|
|
11
9
|
export { compose, composeAsync, delay } from '@flowgram.ai/utils';
|
|
@@ -116,6 +114,10 @@ declare class WorkflowDragService {
|
|
|
116
114
|
private clearDrop;
|
|
117
115
|
private setLineColor;
|
|
118
116
|
private handleDragOnNode;
|
|
117
|
+
/**
|
|
118
|
+
* 容器内子节点总体位置重置为0
|
|
119
|
+
*/
|
|
120
|
+
private resetContainerInternalPosition;
|
|
119
121
|
private childrenOfContainer;
|
|
120
122
|
/**
|
|
121
123
|
* 绘制线条
|
|
@@ -191,6 +193,46 @@ declare class WorkflowOperationBaseServiceImpl extends FlowOperationBaseServiceI
|
|
|
191
193
|
updateNodePosition(nodeOrId: FlowNodeEntityOrId, position: IPoint): void;
|
|
192
194
|
}
|
|
193
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
198
|
+
* SPDX-License-Identifier: MIT
|
|
199
|
+
*/
|
|
200
|
+
|
|
201
|
+
interface WorkflowLineRenderDataSchema {
|
|
202
|
+
version: string;
|
|
203
|
+
contributions: Map<LineRenderType, WorkflowLineRenderContribution>;
|
|
204
|
+
position: LinePosition;
|
|
205
|
+
}
|
|
206
|
+
declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSchema> {
|
|
207
|
+
static type: string;
|
|
208
|
+
entity: WorkflowLineEntity;
|
|
209
|
+
constructor(entity: WorkflowLineEntity);
|
|
210
|
+
getDefaultData(): WorkflowLineRenderDataSchema;
|
|
211
|
+
get renderVersion(): string;
|
|
212
|
+
get position(): LinePosition;
|
|
213
|
+
get path(): string;
|
|
214
|
+
calcDistance(pos: IPoint): number;
|
|
215
|
+
get bounds(): Rectangle;
|
|
216
|
+
/**
|
|
217
|
+
* 更新数据
|
|
218
|
+
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
219
|
+
*/
|
|
220
|
+
update(): void;
|
|
221
|
+
private get lineType();
|
|
222
|
+
/**
|
|
223
|
+
* 获取 center 位置
|
|
224
|
+
*/
|
|
225
|
+
get center(): LineCenterPoint;
|
|
226
|
+
/**
|
|
227
|
+
* 更新版本
|
|
228
|
+
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
229
|
+
*/
|
|
230
|
+
private updatePosition;
|
|
231
|
+
private get currentLine();
|
|
232
|
+
private syncContributions;
|
|
233
|
+
private registerContribution;
|
|
234
|
+
}
|
|
235
|
+
|
|
194
236
|
/**
|
|
195
237
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
196
238
|
* SPDX-License-Identifier: MIT
|
|
@@ -377,184 +419,6 @@ declare enum InteractiveType {
|
|
|
377
419
|
PAD = "PAD"
|
|
378
420
|
}
|
|
379
421
|
|
|
380
|
-
/**
|
|
381
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
382
|
-
* SPDX-License-Identifier: MIT
|
|
383
|
-
*/
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* 节点的点位信息
|
|
387
|
-
* portsData 只监听点位的数目和类型,不监听点位的 position 变化
|
|
388
|
-
*/
|
|
389
|
-
declare class WorkflowNodePortsData extends EntityData {
|
|
390
|
-
static readonly type = "WorkflowNodePortsData";
|
|
391
|
-
readonly entity: WorkflowNodeEntity;
|
|
392
|
-
/** 静态的 ports 数据 */
|
|
393
|
-
protected _staticPorts: WorkflowPorts;
|
|
394
|
-
/** 存储 port 实体的 id,用于判断 port 是否存在 */
|
|
395
|
-
protected _portIDSet: Set<string>;
|
|
396
|
-
/** 上一次的 ports 数据,用于判断 ports 是否发生变化 */
|
|
397
|
-
protected _prePorts: WorkflowPorts;
|
|
398
|
-
constructor(entity: WorkflowNodeEntity);
|
|
399
|
-
getDefaultData(): any;
|
|
400
|
-
/**
|
|
401
|
-
* Update all ports data, includes static ports and dynamic ports
|
|
402
|
-
* @param ports
|
|
403
|
-
*/
|
|
404
|
-
updateAllPorts(ports?: WorkflowPorts): void;
|
|
405
|
-
/**
|
|
406
|
-
* @deprecated use `updateAllPorts` instead
|
|
407
|
-
*/
|
|
408
|
-
updateStaticPorts(ports: WorkflowPorts): void;
|
|
409
|
-
/**
|
|
410
|
-
* 动态计算点位,通过 dom 的 data-port-key
|
|
411
|
-
*/
|
|
412
|
-
updateDynamicPorts(): void;
|
|
413
|
-
/**
|
|
414
|
-
* 根据 key 获取 port 实体
|
|
415
|
-
*/
|
|
416
|
-
getPortEntityByKey(portType: WorkflowPortType, portKey?: string | number): WorkflowPortEntity;
|
|
417
|
-
/**
|
|
418
|
-
* 更新 ports 数据
|
|
419
|
-
*/
|
|
420
|
-
protected updatePorts(ports: WorkflowPorts): void;
|
|
421
|
-
/**
|
|
422
|
-
* 获取所有 port entities
|
|
423
|
-
*/
|
|
424
|
-
get allPorts(): WorkflowPortEntity[];
|
|
425
|
-
/**
|
|
426
|
-
* 获取输入点位
|
|
427
|
-
*/
|
|
428
|
-
get inputPorts(): WorkflowPortEntity[];
|
|
429
|
-
/**
|
|
430
|
-
* 获取输出点位
|
|
431
|
-
*/
|
|
432
|
-
get outputPorts(): WorkflowPortEntity[];
|
|
433
|
-
/**
|
|
434
|
-
* 获取输入点位置
|
|
435
|
-
*/
|
|
436
|
-
get inputPoints(): LinePoint[];
|
|
437
|
-
/**
|
|
438
|
-
* 获取输出点位置
|
|
439
|
-
*/
|
|
440
|
-
get outputPoints(): LinePoint[];
|
|
441
|
-
/**
|
|
442
|
-
* 根据 key 获取 输入点位置
|
|
443
|
-
*/
|
|
444
|
-
getInputPoint(key?: string | number): LinePoint;
|
|
445
|
-
/**
|
|
446
|
-
* 根据 key 获取输出点位置
|
|
447
|
-
*/
|
|
448
|
-
getOutputPoint(key?: string | number): LinePoint;
|
|
449
|
-
/**
|
|
450
|
-
* 获取 port 实体
|
|
451
|
-
*/
|
|
452
|
-
protected getPortEntity(portId: string): WorkflowPortEntity | undefined;
|
|
453
|
-
/**
|
|
454
|
-
* 拼接 port 实体的 id
|
|
455
|
-
*/
|
|
456
|
-
protected getPortId(portType: WorkflowPortType, portKey?: string | number): string;
|
|
457
|
-
/**
|
|
458
|
-
* 创建 port 实体
|
|
459
|
-
*/
|
|
460
|
-
protected createPortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
461
|
-
/**
|
|
462
|
-
* 获取或创建 port 实体
|
|
463
|
-
*/
|
|
464
|
-
protected getOrCreatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
465
|
-
/**
|
|
466
|
-
* 更新 port 实体
|
|
467
|
-
*/
|
|
468
|
-
protected updatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
473
|
-
* SPDX-License-Identifier: MIT
|
|
474
|
-
*/
|
|
475
|
-
|
|
476
|
-
interface WorkflowNodeLines {
|
|
477
|
-
inputLines: WorkflowLineEntity[];
|
|
478
|
-
outputLines: WorkflowLineEntity[];
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* 节点的关联的线条
|
|
482
|
-
*/
|
|
483
|
-
declare class WorkflowNodeLinesData extends EntityData<WorkflowNodeLines> {
|
|
484
|
-
static type: string;
|
|
485
|
-
entity: WorkflowNodeEntity;
|
|
486
|
-
getDefaultData(): WorkflowNodeLines;
|
|
487
|
-
constructor(entity: WorkflowNodeEntity);
|
|
488
|
-
/**
|
|
489
|
-
* 输入线条
|
|
490
|
-
*/
|
|
491
|
-
get inputLines(): WorkflowLineEntity[];
|
|
492
|
-
/**
|
|
493
|
-
* 输出线条
|
|
494
|
-
*/
|
|
495
|
-
get outputLines(): WorkflowLineEntity[];
|
|
496
|
-
get allLines(): WorkflowLineEntity[];
|
|
497
|
-
get availableLines(): WorkflowLineEntity[];
|
|
498
|
-
/**
|
|
499
|
-
* 输入节点
|
|
500
|
-
*/
|
|
501
|
-
get inputNodes(): WorkflowNodeEntity[];
|
|
502
|
-
/**
|
|
503
|
-
* 所有输入节点
|
|
504
|
-
*/
|
|
505
|
-
get allInputNodes(): WorkflowNodeEntity[];
|
|
506
|
-
/**
|
|
507
|
-
* 输出节点
|
|
508
|
-
*/
|
|
509
|
-
get outputNodes(): WorkflowNodeEntity[];
|
|
510
|
-
/**
|
|
511
|
-
* 输入输出节点
|
|
512
|
-
*/
|
|
513
|
-
get allOutputNodes(): WorkflowNodeEntity[];
|
|
514
|
-
addLine(line: WorkflowLineEntity): void;
|
|
515
|
-
removeLine(line: WorkflowLineEntity): void;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
/**
|
|
519
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
520
|
-
* SPDX-License-Identifier: MIT
|
|
521
|
-
*/
|
|
522
|
-
|
|
523
|
-
interface WorkflowLineRenderDataSchema {
|
|
524
|
-
version: string;
|
|
525
|
-
contributions: Map<LineRenderType, WorkflowLineRenderContribution>;
|
|
526
|
-
position: LinePosition;
|
|
527
|
-
}
|
|
528
|
-
declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSchema> {
|
|
529
|
-
static type: string;
|
|
530
|
-
entity: WorkflowLineEntity;
|
|
531
|
-
constructor(entity: WorkflowLineEntity);
|
|
532
|
-
getDefaultData(): WorkflowLineRenderDataSchema;
|
|
533
|
-
get renderVersion(): string;
|
|
534
|
-
get position(): LinePosition;
|
|
535
|
-
get path(): string;
|
|
536
|
-
calcDistance(pos: IPoint): number;
|
|
537
|
-
get bounds(): Rectangle;
|
|
538
|
-
/**
|
|
539
|
-
* 更新数据
|
|
540
|
-
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
541
|
-
*/
|
|
542
|
-
update(): void;
|
|
543
|
-
private get lineType();
|
|
544
|
-
/**
|
|
545
|
-
* 获取 center 位置
|
|
546
|
-
*/
|
|
547
|
-
get center(): LineCenterPoint;
|
|
548
|
-
/**
|
|
549
|
-
* 更新版本
|
|
550
|
-
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
551
|
-
*/
|
|
552
|
-
private updatePosition;
|
|
553
|
-
private get currentLine();
|
|
554
|
-
private syncContributions;
|
|
555
|
-
private registerContribution;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
422
|
/**
|
|
559
423
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
560
424
|
* SPDX-License-Identifier: MIT
|
|
@@ -562,4 +426,4 @@ declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSc
|
|
|
562
426
|
|
|
563
427
|
declare const WorkflowDocumentContainerModule: ContainerModule;
|
|
564
428
|
|
|
565
|
-
export { EditorCursorState, InteractiveType, LineCenterPoint, LineEventProps,
|
|
429
|
+
export { EditorCursorState, InteractiveType, LineCenterPoint, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowJSON, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPortEntity, WorkflowResetLayoutService, WorkflowSelectService, buildGroupJSON, fitView, getAntiOverlapPosition, getLineCenter, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,8 @@ import { PlaygroundConfigEntity, CommandService, PlaygroundDragEvent, EntityData
|
|
|
2
2
|
export { bindConfigEntity, useConfigEntity, useEntities, useEntityDataFromContext, useEntityFromContext, useListenEvents, usePlayground, usePlaygroundContainer, usePlaygroundContext, useRefresh, useService } from '@flowgram.ai/core';
|
|
3
3
|
import { NodeFormProps } from '@flowgram.ai/node';
|
|
4
4
|
import { FlowOperationBaseService, FlowNodeType, FlowOperationBaseServiceImpl, FlowNodeEntityOrId, FlowNodeEntity } from '@flowgram.ai/document';
|
|
5
|
-
import { W as WorkflowHoverService, a as WorkflowDocument, b as WorkflowLinesManager, c as WorkflowSelectService, d as WorkflowDocumentOptions, L as LineEventProps, N as NodesDragEvent, e as WorkflowNodeJSON, f as
|
|
6
|
-
export {
|
|
7
|
-
import { W as WorkflowNodeEntity } from './workflow-sub-canvas-IQzlYvPD.js';
|
|
8
|
-
export { a as WorkflowSubCanvas } from './workflow-sub-canvas-IQzlYvPD.js';
|
|
5
|
+
import { W as WorkflowHoverService, a as WorkflowDocument, b as WorkflowLinesManager, c as WorkflowSelectService, d as WorkflowDocumentOptions, L as LineEventProps, N as NodesDragEvent, e as WorkflowNodeJSON, f as WorkflowNodeEntity, g as WorkflowPortEntity, h as WorkflowLineEntity, O as OnDragLineEnd, i as LineRenderType, j as WorkflowLineRenderContribution, k as LinePosition, l as LineCenterPoint, m as WorkflowJSON } from './workflow-node-entity-GyY_PHY6.js';
|
|
6
|
+
export { X as HoverPosition, F as LINE_HOVER_DISTANCE, x as LineColor, y as LineColors, w as LinePoint, v as LinePointLocation, u as LineType, C as NodesDragEndEvent, B as NodesDragStartEvent, D as NodesDraggingEvent, P as POINT_RADIUS, K as PORT_SIZE, p as WORKFLOW_LINE_ENTITY, Y as WorkfloEntityHoverable, s as WorkflowContentChangeEvent, r as WorkflowContentChangeType, _ as WorkflowDocumentOptionsDefault, Z as WorkflowDocumentProvider, V as WorkflowEntityHoverable, H as WorkflowLineEntityOpts, I as WorkflowLineInfo, G as WorkflowLinePortInfo, z as WorkflowLineRenderContributionFactory, J as WorkflowLineUIState, T as WorkflowNodeLines, U as WorkflowNodeLinesData, t as WorkflowNodeMeta, S as WorkflowNodePortsData, M as WorkflowPort, R as WorkflowPortEntityOpts, n as WorkflowPortType, Q as WorkflowPorts, A as WorkflowSubCanvas, q as domReactToBounds, o as getPortEntityId, E as onDragLineEndParams } from './workflow-node-entity-GyY_PHY6.js';
|
|
9
7
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
10
8
|
import { DisposableCollection, IPoint, Disposable, Rectangle } from '@flowgram.ai/utils';
|
|
11
9
|
export { compose, composeAsync, delay } from '@flowgram.ai/utils';
|
|
@@ -116,6 +114,10 @@ declare class WorkflowDragService {
|
|
|
116
114
|
private clearDrop;
|
|
117
115
|
private setLineColor;
|
|
118
116
|
private handleDragOnNode;
|
|
117
|
+
/**
|
|
118
|
+
* 容器内子节点总体位置重置为0
|
|
119
|
+
*/
|
|
120
|
+
private resetContainerInternalPosition;
|
|
119
121
|
private childrenOfContainer;
|
|
120
122
|
/**
|
|
121
123
|
* 绘制线条
|
|
@@ -191,6 +193,46 @@ declare class WorkflowOperationBaseServiceImpl extends FlowOperationBaseServiceI
|
|
|
191
193
|
updateNodePosition(nodeOrId: FlowNodeEntityOrId, position: IPoint): void;
|
|
192
194
|
}
|
|
193
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
198
|
+
* SPDX-License-Identifier: MIT
|
|
199
|
+
*/
|
|
200
|
+
|
|
201
|
+
interface WorkflowLineRenderDataSchema {
|
|
202
|
+
version: string;
|
|
203
|
+
contributions: Map<LineRenderType, WorkflowLineRenderContribution>;
|
|
204
|
+
position: LinePosition;
|
|
205
|
+
}
|
|
206
|
+
declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSchema> {
|
|
207
|
+
static type: string;
|
|
208
|
+
entity: WorkflowLineEntity;
|
|
209
|
+
constructor(entity: WorkflowLineEntity);
|
|
210
|
+
getDefaultData(): WorkflowLineRenderDataSchema;
|
|
211
|
+
get renderVersion(): string;
|
|
212
|
+
get position(): LinePosition;
|
|
213
|
+
get path(): string;
|
|
214
|
+
calcDistance(pos: IPoint): number;
|
|
215
|
+
get bounds(): Rectangle;
|
|
216
|
+
/**
|
|
217
|
+
* 更新数据
|
|
218
|
+
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
219
|
+
*/
|
|
220
|
+
update(): void;
|
|
221
|
+
private get lineType();
|
|
222
|
+
/**
|
|
223
|
+
* 获取 center 位置
|
|
224
|
+
*/
|
|
225
|
+
get center(): LineCenterPoint;
|
|
226
|
+
/**
|
|
227
|
+
* 更新版本
|
|
228
|
+
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
229
|
+
*/
|
|
230
|
+
private updatePosition;
|
|
231
|
+
private get currentLine();
|
|
232
|
+
private syncContributions;
|
|
233
|
+
private registerContribution;
|
|
234
|
+
}
|
|
235
|
+
|
|
194
236
|
/**
|
|
195
237
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
196
238
|
* SPDX-License-Identifier: MIT
|
|
@@ -377,184 +419,6 @@ declare enum InteractiveType {
|
|
|
377
419
|
PAD = "PAD"
|
|
378
420
|
}
|
|
379
421
|
|
|
380
|
-
/**
|
|
381
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
382
|
-
* SPDX-License-Identifier: MIT
|
|
383
|
-
*/
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* 节点的点位信息
|
|
387
|
-
* portsData 只监听点位的数目和类型,不监听点位的 position 变化
|
|
388
|
-
*/
|
|
389
|
-
declare class WorkflowNodePortsData extends EntityData {
|
|
390
|
-
static readonly type = "WorkflowNodePortsData";
|
|
391
|
-
readonly entity: WorkflowNodeEntity;
|
|
392
|
-
/** 静态的 ports 数据 */
|
|
393
|
-
protected _staticPorts: WorkflowPorts;
|
|
394
|
-
/** 存储 port 实体的 id,用于判断 port 是否存在 */
|
|
395
|
-
protected _portIDSet: Set<string>;
|
|
396
|
-
/** 上一次的 ports 数据,用于判断 ports 是否发生变化 */
|
|
397
|
-
protected _prePorts: WorkflowPorts;
|
|
398
|
-
constructor(entity: WorkflowNodeEntity);
|
|
399
|
-
getDefaultData(): any;
|
|
400
|
-
/**
|
|
401
|
-
* Update all ports data, includes static ports and dynamic ports
|
|
402
|
-
* @param ports
|
|
403
|
-
*/
|
|
404
|
-
updateAllPorts(ports?: WorkflowPorts): void;
|
|
405
|
-
/**
|
|
406
|
-
* @deprecated use `updateAllPorts` instead
|
|
407
|
-
*/
|
|
408
|
-
updateStaticPorts(ports: WorkflowPorts): void;
|
|
409
|
-
/**
|
|
410
|
-
* 动态计算点位,通过 dom 的 data-port-key
|
|
411
|
-
*/
|
|
412
|
-
updateDynamicPorts(): void;
|
|
413
|
-
/**
|
|
414
|
-
* 根据 key 获取 port 实体
|
|
415
|
-
*/
|
|
416
|
-
getPortEntityByKey(portType: WorkflowPortType, portKey?: string | number): WorkflowPortEntity;
|
|
417
|
-
/**
|
|
418
|
-
* 更新 ports 数据
|
|
419
|
-
*/
|
|
420
|
-
protected updatePorts(ports: WorkflowPorts): void;
|
|
421
|
-
/**
|
|
422
|
-
* 获取所有 port entities
|
|
423
|
-
*/
|
|
424
|
-
get allPorts(): WorkflowPortEntity[];
|
|
425
|
-
/**
|
|
426
|
-
* 获取输入点位
|
|
427
|
-
*/
|
|
428
|
-
get inputPorts(): WorkflowPortEntity[];
|
|
429
|
-
/**
|
|
430
|
-
* 获取输出点位
|
|
431
|
-
*/
|
|
432
|
-
get outputPorts(): WorkflowPortEntity[];
|
|
433
|
-
/**
|
|
434
|
-
* 获取输入点位置
|
|
435
|
-
*/
|
|
436
|
-
get inputPoints(): LinePoint[];
|
|
437
|
-
/**
|
|
438
|
-
* 获取输出点位置
|
|
439
|
-
*/
|
|
440
|
-
get outputPoints(): LinePoint[];
|
|
441
|
-
/**
|
|
442
|
-
* 根据 key 获取 输入点位置
|
|
443
|
-
*/
|
|
444
|
-
getInputPoint(key?: string | number): LinePoint;
|
|
445
|
-
/**
|
|
446
|
-
* 根据 key 获取输出点位置
|
|
447
|
-
*/
|
|
448
|
-
getOutputPoint(key?: string | number): LinePoint;
|
|
449
|
-
/**
|
|
450
|
-
* 获取 port 实体
|
|
451
|
-
*/
|
|
452
|
-
protected getPortEntity(portId: string): WorkflowPortEntity | undefined;
|
|
453
|
-
/**
|
|
454
|
-
* 拼接 port 实体的 id
|
|
455
|
-
*/
|
|
456
|
-
protected getPortId(portType: WorkflowPortType, portKey?: string | number): string;
|
|
457
|
-
/**
|
|
458
|
-
* 创建 port 实体
|
|
459
|
-
*/
|
|
460
|
-
protected createPortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
461
|
-
/**
|
|
462
|
-
* 获取或创建 port 实体
|
|
463
|
-
*/
|
|
464
|
-
protected getOrCreatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
465
|
-
/**
|
|
466
|
-
* 更新 port 实体
|
|
467
|
-
*/
|
|
468
|
-
protected updatePortEntity(portInfo: WorkflowPort): WorkflowPortEntity;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
473
|
-
* SPDX-License-Identifier: MIT
|
|
474
|
-
*/
|
|
475
|
-
|
|
476
|
-
interface WorkflowNodeLines {
|
|
477
|
-
inputLines: WorkflowLineEntity[];
|
|
478
|
-
outputLines: WorkflowLineEntity[];
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* 节点的关联的线条
|
|
482
|
-
*/
|
|
483
|
-
declare class WorkflowNodeLinesData extends EntityData<WorkflowNodeLines> {
|
|
484
|
-
static type: string;
|
|
485
|
-
entity: WorkflowNodeEntity;
|
|
486
|
-
getDefaultData(): WorkflowNodeLines;
|
|
487
|
-
constructor(entity: WorkflowNodeEntity);
|
|
488
|
-
/**
|
|
489
|
-
* 输入线条
|
|
490
|
-
*/
|
|
491
|
-
get inputLines(): WorkflowLineEntity[];
|
|
492
|
-
/**
|
|
493
|
-
* 输出线条
|
|
494
|
-
*/
|
|
495
|
-
get outputLines(): WorkflowLineEntity[];
|
|
496
|
-
get allLines(): WorkflowLineEntity[];
|
|
497
|
-
get availableLines(): WorkflowLineEntity[];
|
|
498
|
-
/**
|
|
499
|
-
* 输入节点
|
|
500
|
-
*/
|
|
501
|
-
get inputNodes(): WorkflowNodeEntity[];
|
|
502
|
-
/**
|
|
503
|
-
* 所有输入节点
|
|
504
|
-
*/
|
|
505
|
-
get allInputNodes(): WorkflowNodeEntity[];
|
|
506
|
-
/**
|
|
507
|
-
* 输出节点
|
|
508
|
-
*/
|
|
509
|
-
get outputNodes(): WorkflowNodeEntity[];
|
|
510
|
-
/**
|
|
511
|
-
* 输入输出节点
|
|
512
|
-
*/
|
|
513
|
-
get allOutputNodes(): WorkflowNodeEntity[];
|
|
514
|
-
addLine(line: WorkflowLineEntity): void;
|
|
515
|
-
removeLine(line: WorkflowLineEntity): void;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
/**
|
|
519
|
-
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
520
|
-
* SPDX-License-Identifier: MIT
|
|
521
|
-
*/
|
|
522
|
-
|
|
523
|
-
interface WorkflowLineRenderDataSchema {
|
|
524
|
-
version: string;
|
|
525
|
-
contributions: Map<LineRenderType, WorkflowLineRenderContribution>;
|
|
526
|
-
position: LinePosition;
|
|
527
|
-
}
|
|
528
|
-
declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSchema> {
|
|
529
|
-
static type: string;
|
|
530
|
-
entity: WorkflowLineEntity;
|
|
531
|
-
constructor(entity: WorkflowLineEntity);
|
|
532
|
-
getDefaultData(): WorkflowLineRenderDataSchema;
|
|
533
|
-
get renderVersion(): string;
|
|
534
|
-
get position(): LinePosition;
|
|
535
|
-
get path(): string;
|
|
536
|
-
calcDistance(pos: IPoint): number;
|
|
537
|
-
get bounds(): Rectangle;
|
|
538
|
-
/**
|
|
539
|
-
* 更新数据
|
|
540
|
-
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
541
|
-
*/
|
|
542
|
-
update(): void;
|
|
543
|
-
private get lineType();
|
|
544
|
-
/**
|
|
545
|
-
* 获取 center 位置
|
|
546
|
-
*/
|
|
547
|
-
get center(): LineCenterPoint;
|
|
548
|
-
/**
|
|
549
|
-
* 更新版本
|
|
550
|
-
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
551
|
-
*/
|
|
552
|
-
private updatePosition;
|
|
553
|
-
private get currentLine();
|
|
554
|
-
private syncContributions;
|
|
555
|
-
private registerContribution;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
422
|
/**
|
|
559
423
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
560
424
|
* SPDX-License-Identifier: MIT
|
|
@@ -562,4 +426,4 @@ declare class WorkflowLineRenderData extends EntityData<WorkflowLineRenderDataSc
|
|
|
562
426
|
|
|
563
427
|
declare const WorkflowDocumentContainerModule: ContainerModule;
|
|
564
428
|
|
|
565
|
-
export { EditorCursorState, InteractiveType, LineCenterPoint, LineEventProps,
|
|
429
|
+
export { EditorCursorState, InteractiveType, LineCenterPoint, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowJSON, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPortEntity, WorkflowResetLayoutService, WorkflowSelectService, buildGroupJSON, fitView, getAntiOverlapPosition, getLineCenter, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
package/dist/index.js
CHANGED
|
@@ -818,11 +818,11 @@ var WorkflowLineRenderData = class extends import_core7.EntityData {
|
|
|
818
818
|
* WARNING: 这个方法,必须在 requestAnimationFrame / useLayoutEffect 中调用,否则会引起浏览器强制重排
|
|
819
819
|
*/
|
|
820
820
|
updatePosition() {
|
|
821
|
-
this.data.position.from = this.entity.from.
|
|
821
|
+
this.data.position.from = this.entity.from.ports.getOutputPoint(this.entity.info.fromPort);
|
|
822
822
|
if (this.entity.info.drawingTo) {
|
|
823
823
|
this.data.position.to = this.entity.info.drawingTo;
|
|
824
824
|
} else {
|
|
825
|
-
this.data.position.to = this.entity.to?.
|
|
825
|
+
this.data.position.to = this.entity.to?.ports?.getInputPoint(this.entity.info.toPort) ?? {
|
|
826
826
|
x: this.data.position.from.x,
|
|
827
827
|
y: this.data.position.from.y,
|
|
828
828
|
location: this.data.position.from.location === "right" ? "left" : "top"
|
|
@@ -1084,13 +1084,13 @@ var _WorkflowLineEntity = class _WorkflowLineEntity extends import_core8.Entity
|
|
|
1084
1084
|
return this.getData(WorkflowLineRenderData).calcDistance(pos);
|
|
1085
1085
|
}
|
|
1086
1086
|
get fromPort() {
|
|
1087
|
-
return this.from.
|
|
1087
|
+
return this.from.ports.getPortEntityByKey("output", this.info.fromPort);
|
|
1088
1088
|
}
|
|
1089
1089
|
get toPort() {
|
|
1090
1090
|
if (!this.to) {
|
|
1091
1091
|
return void 0;
|
|
1092
1092
|
}
|
|
1093
|
-
return this.to.
|
|
1093
|
+
return this.to.ports.getPortEntityByKey("input", this.info.toPort);
|
|
1094
1094
|
}
|
|
1095
1095
|
/**
|
|
1096
1096
|
* 获取线条真实的输入输出节点坐标
|
|
@@ -1791,7 +1791,7 @@ var WorkflowLinesManager = class {
|
|
|
1791
1791
|
*/
|
|
1792
1792
|
getPortFromMousePos(pos) {
|
|
1793
1793
|
const allNodes = this.getSortedNodes().reverse();
|
|
1794
|
-
const allPorts = allNodes.map((node) => node.
|
|
1794
|
+
const allPorts = allNodes.map((node) => node.ports.allPorts).flat();
|
|
1795
1795
|
const targetPort = allPorts.find((port) => port.isHovered(pos.x, pos.y));
|
|
1796
1796
|
if (targetPort) {
|
|
1797
1797
|
const containNodes = this.getContainNodesFromMousePos(pos);
|
|
@@ -2232,6 +2232,8 @@ var WorkflowDocument = class extends import_document8.FlowDocument {
|
|
|
2232
2232
|
});
|
|
2233
2233
|
const datas = dataRegistries ? this.nodeDataRegistries.concat(...dataRegistries) : this.nodeDataRegistries;
|
|
2234
2234
|
node.addInitializeData(datas);
|
|
2235
|
+
node.ports = node.getData(WorkflowNodePortsData);
|
|
2236
|
+
node.lines = node.getData(WorkflowNodeLinesData);
|
|
2235
2237
|
node.onDispose(() => this.onNodeDisposeEmitter.fire({ node }));
|
|
2236
2238
|
this.options.fromNodeJSON?.(node, data, true);
|
|
2237
2239
|
isNew = true;
|
|
@@ -2682,10 +2684,6 @@ var WorkflowDragService = class {
|
|
|
2682
2684
|
return Promise.resolve(false);
|
|
2683
2685
|
}
|
|
2684
2686
|
this.isDragging = true;
|
|
2685
|
-
const sameParent = this.childrenOfContainer(selectedNodes);
|
|
2686
|
-
if (sameParent && sameParent.flowNodeType !== import_document10.FlowNodeBaseType.ROOT) {
|
|
2687
|
-
selectedNodes = [sameParent];
|
|
2688
|
-
}
|
|
2689
2687
|
let startPosition = this.getNodesPosition(selectedNodes);
|
|
2690
2688
|
let startPositions = selectedNodes.map((node) => {
|
|
2691
2689
|
const transform = node.getData(import_core15.TransformData);
|
|
@@ -2747,6 +2745,7 @@ var WorkflowDragService = class {
|
|
|
2747
2745
|
triggerEvent,
|
|
2748
2746
|
dragger
|
|
2749
2747
|
});
|
|
2748
|
+
this.resetContainerInternalPosition(selectedNodes);
|
|
2750
2749
|
}
|
|
2751
2750
|
});
|
|
2752
2751
|
const { clientX, clientY } = import_core15.MouseTouchEvent.getEventCoord(triggerEvent);
|
|
@@ -3017,12 +3016,48 @@ var WorkflowDragService = class {
|
|
|
3017
3016
|
};
|
|
3018
3017
|
}
|
|
3019
3018
|
}
|
|
3019
|
+
/**
|
|
3020
|
+
* 容器内子节点总体位置重置为0
|
|
3021
|
+
*/
|
|
3022
|
+
resetContainerInternalPosition(nodes) {
|
|
3023
|
+
const container = this.childrenOfContainer(nodes);
|
|
3024
|
+
if (!container) {
|
|
3025
|
+
return;
|
|
3026
|
+
}
|
|
3027
|
+
const bounds = import_utils16.Rectangle.enlarge(
|
|
3028
|
+
container.blocks.map((node) => {
|
|
3029
|
+
const x = node.transform.position.x - node.transform.bounds.width / 2;
|
|
3030
|
+
const y = node.transform.position.y;
|
|
3031
|
+
const width = node.transform.bounds.width;
|
|
3032
|
+
const height = node.transform.bounds.height;
|
|
3033
|
+
return new import_utils16.Rectangle(x, y, width, height);
|
|
3034
|
+
})
|
|
3035
|
+
);
|
|
3036
|
+
const containerTransform = container.getData(import_core15.TransformData);
|
|
3037
|
+
containerTransform.update({
|
|
3038
|
+
position: {
|
|
3039
|
+
x: containerTransform.position.x + bounds.x,
|
|
3040
|
+
y: containerTransform.position.y + bounds.y
|
|
3041
|
+
}
|
|
3042
|
+
});
|
|
3043
|
+
this.document.layout.updateAffectedTransform(container);
|
|
3044
|
+
container.blocks.forEach((node) => {
|
|
3045
|
+
const transform = node.getData(import_core15.TransformData);
|
|
3046
|
+
transform.update({
|
|
3047
|
+
position: {
|
|
3048
|
+
x: transform.position.x - bounds.x,
|
|
3049
|
+
y: transform.position.y - bounds.y
|
|
3050
|
+
}
|
|
3051
|
+
});
|
|
3052
|
+
this.document.layout.updateAffectedTransform(node);
|
|
3053
|
+
});
|
|
3054
|
+
}
|
|
3020
3055
|
childrenOfContainer(nodes) {
|
|
3021
3056
|
if (nodes.length === 0) {
|
|
3022
3057
|
return;
|
|
3023
3058
|
}
|
|
3024
3059
|
const sourceContainer = nodes[0]?.parent;
|
|
3025
|
-
if (!sourceContainer
|
|
3060
|
+
if (!sourceContainer) {
|
|
3026
3061
|
return;
|
|
3027
3062
|
}
|
|
3028
3063
|
const valid = nodes.every((node) => node?.parent === sourceContainer);
|
|
@@ -3223,7 +3258,7 @@ var WorkflowDragService = class {
|
|
|
3223
3258
|
}
|
|
3224
3259
|
/** 获取最近的 port */
|
|
3225
3260
|
getNearestPort(node, mousePos) {
|
|
3226
|
-
const portsData = node.
|
|
3261
|
+
const portsData = node.ports;
|
|
3227
3262
|
const distanceSortedPorts = portsData.inputPorts.sort((a, b) => {
|
|
3228
3263
|
const aDistance = Math.abs(mousePos.y - a.point.y);
|
|
3229
3264
|
const bDistance = Math.abs(mousePos.y - b.point.y);
|
|
@@ -3428,7 +3463,7 @@ var isFirefox = navigator?.userAgent?.includes?.("Firefox");
|
|
|
3428
3463
|
function useNodeRender(nodeFromProps) {
|
|
3429
3464
|
const node = nodeFromProps || (0, import_react2.useContext)(import_core21.PlaygroundEntityContext);
|
|
3430
3465
|
const renderData = node.getData(import_document13.FlowNodeRenderData);
|
|
3431
|
-
const portsData = node.
|
|
3466
|
+
const portsData = node.ports;
|
|
3432
3467
|
const readonly = usePlaygroundReadonlyState();
|
|
3433
3468
|
const dragService = (0, import_core21.useService)(WorkflowDragService);
|
|
3434
3469
|
const selectionService = (0, import_core21.useService)(WorkflowSelectService);
|