@flowgram.ai/free-layout-core 0.1.13 → 0.1.15

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 (42) hide show
  1. package/dist/esm/{chunk-DE4324TR.js → chunk-IYUZVBAO.js} +1 -1
  2. package/dist/esm/chunk-IYUZVBAO.js.map +1 -0
  3. package/dist/esm/chunk-LJH3TSLZ.js +7 -0
  4. package/dist/esm/chunk-LJH3TSLZ.js.map +1 -0
  5. package/dist/esm/chunk-TQLT57GW.js +1 -0
  6. package/dist/esm/chunk-TQLT57GW.js.map +1 -0
  7. package/dist/esm/index.js +156 -60
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/typings/index.js +10 -5
  10. package/dist/esm/typings/workflow-drag.js +2 -0
  11. package/dist/esm/typings/workflow-drag.js.map +1 -0
  12. package/dist/esm/typings/workflow-operation.js +8 -0
  13. package/dist/esm/typings/workflow-operation.js.map +1 -0
  14. package/dist/index.d.mts +121 -7
  15. package/dist/index.d.ts +121 -7
  16. package/dist/index.js +202 -105
  17. package/dist/index.js.map +1 -1
  18. package/dist/typings/index.d.mts +2 -1
  19. package/dist/typings/index.d.ts +2 -1
  20. package/dist/typings/index.js +7 -2
  21. package/dist/typings/index.js.map +1 -1
  22. package/dist/typings/workflow-drag.d.mts +8 -0
  23. package/dist/typings/workflow-drag.d.ts +8 -0
  24. package/dist/typings/workflow-drag.js +19 -0
  25. package/dist/typings/workflow-drag.js.map +1 -0
  26. package/dist/typings/workflow-json.d.mts +1 -1
  27. package/dist/typings/workflow-json.d.ts +1 -1
  28. package/dist/typings/workflow-line.d.mts +1 -1
  29. package/dist/typings/workflow-line.d.ts +1 -1
  30. package/dist/typings/workflow-node.d.mts +1 -1
  31. package/dist/typings/workflow-node.d.ts +1 -1
  32. package/dist/typings/workflow-node.js.map +1 -1
  33. package/dist/typings/workflow-operation.d.mts +24 -0
  34. package/dist/typings/workflow-operation.d.ts +24 -0
  35. package/dist/typings/workflow-operation.js +31 -0
  36. package/dist/typings/workflow-operation.js.map +1 -0
  37. package/dist/typings/workflow-registry.d.mts +1 -1
  38. package/dist/typings/workflow-registry.d.ts +1 -1
  39. package/dist/{workflow-line-entity-BJQBRDgJ.d.mts → workflow-line-entity-CF97dniV.d.mts} +90 -170
  40. package/dist/{workflow-line-entity-CEitdjhk.d.ts → workflow-line-entity-niuFXSbE.d.ts} +90 -170
  41. package/package.json +9 -9
  42. package/dist/esm/chunk-DE4324TR.js.map +0 -1
@@ -1,7 +1,7 @@
1
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';
2
+ import { IPoint, Rectangle, PositionSchema, Emitter, Event, DisposableCollection } from '@flowgram.ai/utils';
3
+ import { PlaygroundDragEvent, PlaygroundDrag, EntityManager, SelectionService, Playground, Entity, PlaygroundConfigEntity, PlaygroundContext, EntityOpts } from '@flowgram.ai/core';
4
+ import { FlowNodeMeta, FlowNodeJSON, FlowNodeEntity, FlowDocumentOptions, FlowDocument } from '@flowgram.ai/document';
5
5
  import { W as WorkflowNodeEntity, a as WorkflowSubCanvas } from './workflow-sub-canvas-DOVla1mw.js';
6
6
  import { NodeEngineContext } from '@flowgram.ai/form-core';
7
7
  import { WorkflowEdgeJSON } from './typings/workflow-edge.js';
@@ -20,6 +20,7 @@ interface WorkflowNodeMeta extends FlowNodeMeta {
20
20
  defaultPorts?: WorkflowPorts;
21
21
  useDynamicPort?: boolean;
22
22
  subCanvas?: (node: WorkflowNodeEntity) => WorkflowSubCanvas | undefined;
23
+ isContainer?: boolean;
23
24
  }
24
25
  /**
25
26
  * 节点数据
@@ -126,6 +127,90 @@ type WorkflowLineRenderContributionFactory = (new (entity: WorkflowLineEntity) =
126
127
  type: LineRenderType;
127
128
  };
128
129
 
130
+ interface LineEventProps {
131
+ type: 'onDrag' | 'onDragEnd';
132
+ onDragNodeId?: string;
133
+ event?: MouseEvent;
134
+ }
135
+ interface INodesDragEvent {
136
+ type: string;
137
+ nodes: FlowNodeEntity[];
138
+ startPositions: PositionSchema[];
139
+ altKey: boolean;
140
+ dragEvent: PlaygroundDragEvent;
141
+ triggerEvent: MouseEvent | React.MouseEvent;
142
+ dragger: PlaygroundDrag;
143
+ }
144
+ interface NodesDragStartEvent extends INodesDragEvent {
145
+ type: 'onDragStart';
146
+ }
147
+ interface NodesDragEndEvent extends INodesDragEvent {
148
+ type: 'onDragEnd';
149
+ }
150
+ interface NodesDraggingEvent extends INodesDragEvent {
151
+ type: 'onDragging';
152
+ positions: PositionSchema[];
153
+ }
154
+ type NodesDragEvent = NodesDragStartEvent | NodesDraggingEvent | NodesDragEndEvent;
155
+ type onDragLineEndParams = {
156
+ fromPort: WorkflowPortEntity;
157
+ toPort?: WorkflowPortEntity;
158
+ mousePos: PositionSchema;
159
+ line?: WorkflowLineEntity;
160
+ originLine?: WorkflowLineEntity;
161
+ event: PlaygroundDragEvent;
162
+ };
163
+ type OnDragLineEnd = (params: onDragLineEndParams) => Promise<void>;
164
+
165
+ declare const WorkflowDocumentOptions: unique symbol;
166
+ /**
167
+ * 线条配置
168
+ */
169
+ interface WorkflowDocumentOptions extends FlowDocumentOptions {
170
+ cursors?: {
171
+ grab?: string;
172
+ grabbing?: string;
173
+ };
174
+ /** 线条颜色 */
175
+ lineColor?: Partial<LineColor>;
176
+ /** 是否显示错误线条 */
177
+ isErrorLine?: (fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity | undefined, lines: WorkflowLinesManager) => boolean;
178
+ /** 是否错误端口 */
179
+ isErrorPort?: (port: WorkflowPortEntity) => boolean;
180
+ /** 是否禁用端口 */
181
+ isDisabledPort?: (port: WorkflowPortEntity) => boolean;
182
+ /** 是否反转线条箭头 */
183
+ isReverseLine?: (line: WorkflowLineEntity) => boolean;
184
+ /** 是否隐藏线条箭头 */
185
+ isHideArrowLine?: (line: WorkflowLineEntity) => boolean;
186
+ /** 是否流动线条 */
187
+ isFlowingLine?: (line: WorkflowLineEntity) => boolean;
188
+ /** 是否禁用线条 */
189
+ isDisabledLine?: (line: WorkflowLineEntity) => boolean;
190
+ /** 是否竖向线条 */
191
+ isVerticalLine?: (line: WorkflowLineEntity) => boolean;
192
+ /** 拖拽线条结束 */
193
+ onDragLineEnd?: (params: onDragLineEndParams) => Promise<void>;
194
+ /** 获取线条渲染器 */
195
+ setLineRenderType?: (line: WorkflowLineEntity) => LineRenderType | undefined;
196
+ /** 设置线条样式 */
197
+ setLineClassName?: (line: WorkflowLineEntity) => string | undefined;
198
+ /** 能否添加线条 */
199
+ canAddLine?: (fromPort: WorkflowPortEntity, toPort: WorkflowPortEntity, lines: WorkflowLinesManager, silent?: boolean) => boolean;
200
+ /** 能否删除节点 */
201
+ canDeleteNode?: (node: WorkflowNodeEntity, silent?: boolean) => boolean;
202
+ /** 能否删除线条 */
203
+ canDeleteLine?: (line: WorkflowLineEntity, newLineInfo?: Required<WorkflowLinePortInfo>, silent?: boolean) => boolean;
204
+ /**
205
+ * @param fromPort - 开始点
206
+ * @param oldToPort - 旧的连接点
207
+ * @param newToPort - 新的连接点
208
+ * @param lines - 线条管理器
209
+ */
210
+ canResetLine?: (fromPort: WorkflowPortEntity, oldToPort: WorkflowPortEntity, newToPort: WorkflowPortEntity, lines: WorkflowLinesManager) => boolean;
211
+ }
212
+ declare const WorkflowDocumentOptionsDefault: WorkflowDocumentOptions;
213
+
129
214
  /**
130
215
  * 可 Hover 的节点 类型
131
216
  */
@@ -301,172 +386,6 @@ declare class WorkflowDocument extends FlowDocument {
301
386
  private createWorkflowLine;
302
387
  }
303
388
 
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
389
  /**
471
390
  * 线条管理
472
391
  */
@@ -541,6 +460,7 @@ declare class WorkflowLinesManager {
541
460
  getNodeFromMousePos(pos: IPoint): WorkflowNodeEntity | undefined;
542
461
  registerContribution(factory: WorkflowLineRenderContributionFactory): this;
543
462
  private registerData;
463
+ private getNodeIndex;
544
464
  }
545
465
 
546
466
  type WorkflowPortType = 'input' | 'output';
@@ -744,4 +664,4 @@ declare class WorkflowLineEntity extends Entity<WorkflowLineEntityOpts> {
744
664
  fireRender(): void;
745
665
  }
746
666
 
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 };
667
+ export { type NodesDraggingEvent as A, type onDragLineEndParams as B, LINE_HOVER_DISTANCE as C, type WorkflowLinePortInfo as D, type WorkflowLineEntityOpts as E, type WorkflowLineInfo as F, PORT_SIZE as G, type WorkflowPortEntityOpts as H, type WorkfloEntityHoverable as I, WorkflowDocumentProvider as J, WorkflowDocumentOptionsDefault as K, type LineEventProps as L, type NodesDragEvent as N, type OnDragLineEnd as O, POINT_RADIUS as P, WorkflowHoverService as W, WorkflowDocument as a, WorkflowLinesManager as b, WorkflowSelectService as c, WorkflowDocumentOptions as d, type WorkflowNodeJSON as e, WorkflowPortEntity as f, WorkflowLineEntity as g, type WorkflowPorts as h, type WorkflowPortType as i, type WorkflowPort as j, type LineRenderType as k, type WorkflowLineRenderContribution as l, type LinePosition as m, getPortEntityId as n, WORKFLOW_LINE_ENTITY as o, domReactToBounds as p, type WorkflowJSON as q, WorkflowContentChangeType as r, type WorkflowContentChangeEvent as s, type WorkflowNodeMeta as t, LineType as u, type LineColor as v, LineColors as w, type WorkflowLineRenderContributionFactory as x, type NodesDragStartEvent as y, type NodesDragEndEvent as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowgram.ai/free-layout-core",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "homepage": "https://flowgram.ai/",
5
5
  "repository": "https://github.com/bytedance/flowgram.ai",
6
6
  "license": "MIT",
@@ -34,12 +34,12 @@
34
34
  "reflect-metadata": "~0.2.2",
35
35
  "lodash-es": "^4.17.21",
36
36
  "nanoid": "^4.0.2",
37
- "@flowgram.ai/core": "0.1.13",
38
- "@flowgram.ai/document": "0.1.13",
39
- "@flowgram.ai/form-core": "0.1.13",
40
- "@flowgram.ai/node": "0.1.13",
41
- "@flowgram.ai/reactive": "0.1.13",
42
- "@flowgram.ai/utils": "0.1.13"
37
+ "@flowgram.ai/core": "0.1.15",
38
+ "@flowgram.ai/form-core": "0.1.15",
39
+ "@flowgram.ai/node": "0.1.15",
40
+ "@flowgram.ai/reactive": "0.1.15",
41
+ "@flowgram.ai/utils": "0.1.15",
42
+ "@flowgram.ai/document": "0.1.15"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@testing-library/react": "^12",
@@ -53,8 +53,8 @@
53
53
  "tsup": "^8.0.1",
54
54
  "typescript": "^5.0.4",
55
55
  "vitest": "^0.34.6",
56
- "@flowgram.ai/eslint-config": "0.1.13",
57
- "@flowgram.ai/ts-config": "0.1.13"
56
+ "@flowgram.ai/eslint-config": "0.1.15",
57
+ "@flowgram.ai/ts-config": "0.1.15"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "react": ">=17",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/typings/index.ts"],"sourcesContent":["export * from './workflow-json';\nexport * from './workflow-edge';\nexport * from './workflow-node';\nexport * from './workflow-registry';\nexport * from './workflow-line';\nexport * from './workflow-sub-canvas';\n\nexport const URLParams = Symbol('');\n\nexport interface URLParams {\n [key: string]: string;\n}\n"],"mappings":";AAOO,IAAM,YAAY,OAAO,EAAE;","names":[]}