@flowgram.ai/free-layout-core 0.2.16 → 0.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{chunk-J5FVRRUV.js → chunk-242F2JCI.js} +1 -1
- package/dist/esm/chunk-242F2JCI.js.map +1 -0
- package/dist/esm/{chunk-BJKYSQMI.js → chunk-CTGO4RKX.js} +1 -1
- package/dist/esm/chunk-CTGO4RKX.js.map +1 -0
- package/dist/esm/{chunk-IYUZVBAO.js → chunk-IKQUOAWQ.js} +1 -1
- package/dist/esm/chunk-IKQUOAWQ.js.map +1 -0
- package/dist/esm/{chunk-LJH3TSLZ.js → chunk-O4WKIIW2.js} +1 -1
- package/dist/esm/chunk-O4WKIIW2.js.map +1 -0
- package/dist/esm/index.js +55 -35
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/typings/index.js +4 -4
- package/dist/esm/typings/workflow-json.js +1 -1
- package/dist/esm/typings/workflow-line.js +1 -1
- package/dist/esm/typings/workflow-operation.js +1 -1
- package/dist/index.d.mts +82 -5
- package/dist/index.d.ts +82 -5
- package/dist/index.js +35 -15
- package/dist/index.js.map +1 -1
- package/dist/typings/index.d.mts +7 -2
- package/dist/typings/index.d.ts +7 -2
- package/dist/typings/index.js.map +1 -1
- package/dist/typings/workflow-drag.d.mts +2 -2
- package/dist/typings/workflow-drag.d.ts +2 -2
- package/dist/typings/workflow-drag.js.map +1 -1
- package/dist/typings/workflow-edge.d.mts +4 -0
- package/dist/typings/workflow-edge.d.ts +4 -0
- package/dist/typings/workflow-edge.js.map +1 -1
- package/dist/typings/workflow-json.d.mts +2 -2
- package/dist/typings/workflow-json.d.ts +2 -2
- package/dist/typings/workflow-json.js.map +1 -1
- package/dist/typings/workflow-line.d.mts +2 -2
- package/dist/typings/workflow-line.d.ts +2 -2
- package/dist/typings/workflow-line.js.map +1 -1
- package/dist/typings/workflow-node.d.mts +2 -2
- package/dist/typings/workflow-node.d.ts +2 -2
- package/dist/typings/workflow-node.js.map +1 -1
- package/dist/typings/workflow-operation.d.mts +5 -0
- package/dist/typings/workflow-operation.d.ts +5 -0
- package/dist/typings/workflow-operation.js.map +1 -1
- package/dist/typings/workflow-registry.d.mts +7 -2
- package/dist/typings/workflow-registry.d.ts +7 -2
- package/dist/typings/workflow-registry.js.map +1 -1
- package/dist/typings/workflow-sub-canvas.d.mts +1 -1
- package/dist/typings/workflow-sub-canvas.d.ts +1 -1
- package/dist/typings/workflow-sub-canvas.js.map +1 -1
- package/dist/{workflow-line-entity-B4Mfa03B.d.ts → workflow-line-entity-BUokXoMi.d.ts} +61 -2
- package/dist/{workflow-line-entity-B34FWw9W.d.mts → workflow-line-entity-BuRLWUuf.d.mts} +61 -2
- package/dist/{workflow-sub-canvas-DOVla1mw.d.mts → workflow-sub-canvas-IQzlYvPD.d.mts} +10 -0
- package/dist/{workflow-sub-canvas-DOVla1mw.d.ts → workflow-sub-canvas-IQzlYvPD.d.ts} +10 -0
- package/package.json +9 -9
- package/dist/esm/chunk-BJKYSQMI.js.map +0 -1
- package/dist/esm/chunk-IYUZVBAO.js.map +0 -1
- package/dist/esm/chunk-J5FVRRUV.js.map +0 -1
- package/dist/esm/chunk-LJH3TSLZ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/typings/workflow-json.ts"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { type WorkflowLineEntity, type WorkflowNodeEntity } from '../entities';\nimport { type WorkflowNodeJSON } from './workflow-node';\nimport { type WorkflowEdgeJSON } from './workflow-edge';\n\nexport interface WorkflowJSON {\n nodes: WorkflowNodeJSON[];\n edges: WorkflowEdgeJSON[];\n}\n\nexport enum WorkflowContentChangeType {\n /**\n * 添加节点\n */\n ADD_NODE = 'ADD_NODE',\n /**\n * 删除节点\n */\n DELETE_NODE = 'DELETE_NODE',\n /**\n * 移动节点\n */\n MOVE_NODE = 'MOVE_NODE',\n /**\n * 节点数据更新 (表单引擎数据 或者 extInfo 数据)\n */\n NODE_DATA_CHANGE = 'NODE_DATA_CHANGE',\n /**\n * 添加线条\n */\n ADD_LINE = 'ADD_LINE',\n /**\n * 删除线条\n */\n DELETE_LINE = 'DELETE_LINE',\n /**\n * 节点Meta信息变更\n */\n META_CHANGE = 'META_CHANGE',\n}\n\nexport interface WorkflowContentChangeEvent {\n type: WorkflowContentChangeType;\n /**\n * 当前触发的元素的json数据,toJSON 需要主动触发\n */\n toJSON: () => any;\n /*\n * 当前的事件的 entity\n */\n entity: WorkflowNodeEntity | WorkflowLineEntity;\n}\n"],"mappings":";AAcO,IAAK,4BAAL,kBAAKA,+BAAL;AAIL,EAAAA,2BAAA,cAAW;AAIX,EAAAA,2BAAA,iBAAc;AAId,EAAAA,2BAAA,eAAY;AAIZ,EAAAA,2BAAA,sBAAmB;AAInB,EAAAA,2BAAA,cAAW;AAIX,EAAAA,2BAAA,iBAAc;AAId,EAAAA,2BAAA,iBAAc;AA5BJ,SAAAA;AAAA,GAAA;","names":["WorkflowContentChangeType"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/typings/workflow-line.ts"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport type { Rectangle, IPoint } from '@flowgram.ai/utils';\n\nimport { type WorkflowLineEntity } from '../entities';\n\nexport enum LineType {\n BEZIER, // 贝塞尔曲线\n LINE_CHART, // 折叠线\n}\n\nexport type LineRenderType = LineType | string;\n\nexport interface LinePosition {\n from: IPoint;\n to: IPoint;\n}\n\nexport interface LineColor {\n hidden: string;\n default: string;\n drawing: string;\n hovered: string;\n selected: string;\n error: string;\n flowing: string;\n}\n\nexport enum LineColors {\n HIDDEN = 'var(--g-workflow-line-color-hidden,transparent)', // 隐藏线条\n DEFUALT = 'var(--g-workflow-line-color-default,#4d53e8)',\n DRAWING = 'var(--g-workflow-line-color-drawing, #5DD6E3)', // '#b5bbf8', // '#9197F1',\n HOVER = 'var(--g-workflow-line-color-hover,#37d0ff)',\n SELECTED = 'var(--g-workflow-line-color-selected,#37d0ff)',\n ERROR = 'var(--g-workflow-line-color-error,red)',\n FLOWING = 'var(--g-workflow-line-color-flowing,#4d53e8)', // 流动线条,默认使用主题色\n}\n\nexport interface WorkflowLineRenderContribution {\n entity: WorkflowLineEntity;\n path: string;\n bounds: Rectangle;\n update: (params: { fromPos: IPoint; toPos: IPoint }) => void;\n calcDistance: (pos: IPoint) => number;\n}\n\nexport type WorkflowLineRenderContributionFactory = (new (\n entity: WorkflowLineEntity\n) => WorkflowLineRenderContribution) & {\n type: LineRenderType;\n};\n"],"mappings":";AASO,IAAK,WAAL,kBAAKA,cAAL;AACL,EAAAA,oBAAA;AACA,EAAAA,oBAAA;AAFU,SAAAA;AAAA,GAAA;AAsBL,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,YAAS;AACT,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,aAAU;AAPA,SAAAA;AAAA,GAAA;","names":["LineType","LineColors"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/typings/index.ts"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './workflow-json';\nexport * from './workflow-edge';\nexport * from './workflow-node';\nexport * from './workflow-registry';\nexport * from './workflow-line';\nexport * from './workflow-sub-canvas';\nexport * from './workflow-operation';\nexport * from './workflow-drag';\n\nexport const URLParams = Symbol('');\n\nexport interface URLParams {\n [key: string]: string;\n}\n"],"mappings":";AAcO,IAAM,YAAY,OAAO,EAAE;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/typings/workflow-operation.ts"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IPoint, Event } from '@flowgram.ai/utils';\nimport {\n FlowNodeEntity,\n FlowNodeEntityOrId,\n FlowOperationBaseService,\n} from '@flowgram.ai/document';\n\nexport interface NodePostionUpdateEvent {\n node: FlowNodeEntity;\n oldPosition: IPoint;\n newPosition: IPoint;\n}\n\nexport interface WorkflowOperationBaseService extends FlowOperationBaseService {\n /**\n * 节点位置更新事件\n */\n readonly onNodePostionUpdate: Event<NodePostionUpdateEvent>;\n /**\n * 更新节点位置\n * @param nodeOrId\n * @param position\n * @returns\n */\n updateNodePosition(nodeOrId: FlowNodeEntityOrId, position: IPoint): void;\n}\n\nexport const WorkflowOperationBaseService = Symbol('WorkflowOperationBaseService');\n"],"mappings":";AAgCO,IAAM,+BAA+B,OAAO,8BAA8B;","names":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
URLParams
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IKQUOAWQ.js";
|
|
4
4
|
import "./chunk-KNYZRMIO.js";
|
|
5
5
|
import "./chunk-NU6G5HF4.js";
|
|
6
6
|
import "./chunk-TQLT57GW.js";
|
|
7
7
|
import "./chunk-CGOMTQ3G.js";
|
|
8
8
|
import {
|
|
9
9
|
WorkflowContentChangeType
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-242F2JCI.js";
|
|
11
11
|
import {
|
|
12
12
|
LineColors,
|
|
13
13
|
LineType
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CTGO4RKX.js";
|
|
15
15
|
import "./chunk-DDJTYHXN.js";
|
|
16
16
|
import {
|
|
17
17
|
WorkflowOperationBaseService
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-O4WKIIW2.js";
|
|
19
19
|
import {
|
|
20
20
|
__decorateClass
|
|
21
21
|
} from "./chunk-EUXUH3YW.js";
|
|
@@ -694,6 +694,7 @@ var _WorkflowLineEntity = class _WorkflowLineEntity extends Entity2 {
|
|
|
694
694
|
super(opts);
|
|
695
695
|
this._processing = false;
|
|
696
696
|
this._hasError = false;
|
|
697
|
+
this.stackIndex = 0;
|
|
697
698
|
/**
|
|
698
699
|
* 线条数据
|
|
699
700
|
*/
|
|
@@ -1134,7 +1135,7 @@ import {
|
|
|
1134
1135
|
MouseTouchEvent,
|
|
1135
1136
|
PlaygroundConfigEntity as PlaygroundConfigEntity5,
|
|
1136
1137
|
PlaygroundDrag,
|
|
1137
|
-
TransformData as
|
|
1138
|
+
TransformData as TransformData8
|
|
1138
1139
|
} from "@flowgram.ai/core";
|
|
1139
1140
|
|
|
1140
1141
|
// src/workflow-lines-manager.ts
|
|
@@ -1142,7 +1143,7 @@ import { last } from "lodash-es";
|
|
|
1142
1143
|
import { inject as inject3, injectable as injectable3 } from "inversify";
|
|
1143
1144
|
import { DisposableCollection, Emitter as Emitter3 } from "@flowgram.ai/utils";
|
|
1144
1145
|
import { FlowNodeRenderData as FlowNodeRenderData2, FlowNodeTransformData as FlowNodeTransformData3 } from "@flowgram.ai/document";
|
|
1145
|
-
import { EntityManager as EntityManager2, PlaygroundConfigEntity as PlaygroundConfigEntity2
|
|
1146
|
+
import { EntityManager as EntityManager2, PlaygroundConfigEntity as PlaygroundConfigEntity2 } from "@flowgram.ai/core";
|
|
1146
1147
|
|
|
1147
1148
|
// src/workflow-document-option.ts
|
|
1148
1149
|
import { FlowNodeErrorData } from "@flowgram.ai/form-core";
|
|
@@ -1489,7 +1490,8 @@ var WorkflowLinesManager = class {
|
|
|
1489
1490
|
const allPorts = this.entityManager.getEntities(WorkflowPortEntity).filter((port) => port.node.flowNodeType !== "root");
|
|
1490
1491
|
const targetPort = allPorts.find((port) => port.isHovered(pos.x, pos.y));
|
|
1491
1492
|
if (targetPort) {
|
|
1492
|
-
const
|
|
1493
|
+
const containNodes = this.getContainNodesFromMousePos(pos);
|
|
1494
|
+
const targetNode = last(containNodes);
|
|
1493
1495
|
if (targetNode && targetNode !== targetPort.node) {
|
|
1494
1496
|
return;
|
|
1495
1497
|
}
|
|
@@ -1501,16 +1503,8 @@ var WorkflowLinesManager = class {
|
|
|
1501
1503
|
* @param pos - 鼠标位置
|
|
1502
1504
|
*/
|
|
1503
1505
|
getNodeFromMousePos(pos) {
|
|
1504
|
-
const allNodes = this.document.getAllNodes().sort((a, b) => this.getNodeIndex(a) - this.getNodeIndex(b));
|
|
1505
|
-
const containNodes = [];
|
|
1506
1506
|
const { selection } = this.selectService;
|
|
1507
|
-
const
|
|
1508
|
-
allNodes.forEach((node) => {
|
|
1509
|
-
const { bounds } = node.getData(FlowNodeTransformData3);
|
|
1510
|
-
if (bounds.clone().pad(4 / zoom).contains(pos.x, pos.y)) {
|
|
1511
|
-
containNodes.push(node);
|
|
1512
|
-
}
|
|
1513
|
-
});
|
|
1507
|
+
const containNodes = this.getContainNodesFromMousePos(pos);
|
|
1514
1508
|
if (selection?.length) {
|
|
1515
1509
|
const filteredNodes = containNodes.filter(
|
|
1516
1510
|
(node) => selection.some((_node) => node.id === _node.id)
|
|
@@ -1528,6 +1522,18 @@ var WorkflowLinesManager = class {
|
|
|
1528
1522
|
registerData(line) {
|
|
1529
1523
|
line.addData(WorkflowLineRenderData);
|
|
1530
1524
|
}
|
|
1525
|
+
/** 获取鼠标坐标位置的所有节点(stackIndex 从小到大排序) */
|
|
1526
|
+
getContainNodesFromMousePos(pos) {
|
|
1527
|
+
const allNodes = this.document.getAllNodes().sort((a, b) => this.getNodeIndex(a) - this.getNodeIndex(b));
|
|
1528
|
+
const zoom = this.entityManager.getEntity(PlaygroundConfigEntity2)?.config?.zoom || 1;
|
|
1529
|
+
const containNodes = allNodes.map((node) => {
|
|
1530
|
+
const { bounds } = node.getData(FlowNodeTransformData3);
|
|
1531
|
+
if (bounds.clone().pad(4 / zoom).contains(pos.x, pos.y)) {
|
|
1532
|
+
return node;
|
|
1533
|
+
}
|
|
1534
|
+
}).filter(Boolean);
|
|
1535
|
+
return containNodes;
|
|
1536
|
+
}
|
|
1531
1537
|
getNodeIndex(node) {
|
|
1532
1538
|
const nodeRenderData = node.getData(FlowNodeRenderData2);
|
|
1533
1539
|
return nodeRenderData.stackIndex;
|
|
@@ -1563,7 +1569,7 @@ import {
|
|
|
1563
1569
|
injectPlaygroundContext,
|
|
1564
1570
|
PlaygroundConfigEntity as PlaygroundConfigEntity4,
|
|
1565
1571
|
PositionData,
|
|
1566
|
-
TransformData as
|
|
1572
|
+
TransformData as TransformData7
|
|
1567
1573
|
} from "@flowgram.ai/core";
|
|
1568
1574
|
|
|
1569
1575
|
// src/layout/free-layout.ts
|
|
@@ -1577,7 +1583,7 @@ import {
|
|
|
1577
1583
|
FlowDocumentProvider,
|
|
1578
1584
|
FlowNodeTransformData as FlowNodeTransformData4
|
|
1579
1585
|
} from "@flowgram.ai/document";
|
|
1580
|
-
import { PlaygroundConfigEntity as PlaygroundConfigEntity3, TransformData as
|
|
1586
|
+
import { PlaygroundConfigEntity as PlaygroundConfigEntity3, TransformData as TransformData6 } from "@flowgram.ai/core";
|
|
1581
1587
|
var FREE_LAYOUT_KEY = "free-layout";
|
|
1582
1588
|
var FreeLayout = class {
|
|
1583
1589
|
constructor() {
|
|
@@ -1645,7 +1651,7 @@ var FreeLayout = class {
|
|
|
1645
1651
|
*/
|
|
1646
1652
|
getInitScroll(contentSize) {
|
|
1647
1653
|
const bounds = Rectangle7.enlarge(
|
|
1648
|
-
this.document.getAllNodes().map((node) => node.getData(
|
|
1654
|
+
this.document.getAllNodes().map((node) => node.getData(TransformData6).bounds)
|
|
1649
1655
|
).pad(30, 30);
|
|
1650
1656
|
const viewport = this.playgroundConfig.getViewport(false);
|
|
1651
1657
|
const zoom = SizeSchema2.fixSize(bounds, viewport);
|
|
@@ -1658,13 +1664,13 @@ var FreeLayout = class {
|
|
|
1658
1664
|
* 获取默认输入点
|
|
1659
1665
|
*/
|
|
1660
1666
|
getDefaultInputPoint(node) {
|
|
1661
|
-
return node.getData(
|
|
1667
|
+
return node.getData(TransformData6).bounds.leftCenter;
|
|
1662
1668
|
}
|
|
1663
1669
|
/**
|
|
1664
1670
|
* 获取默认输出点
|
|
1665
1671
|
*/
|
|
1666
1672
|
getDefaultOutputPoint(node) {
|
|
1667
|
-
return node.getData(
|
|
1673
|
+
return node.getData(TransformData6).bounds.rightCenter;
|
|
1668
1674
|
}
|
|
1669
1675
|
/**
|
|
1670
1676
|
* 水平中心点
|
|
@@ -1818,7 +1824,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
1818
1824
|
if (!position) {
|
|
1819
1825
|
position = this.getNodeDefaultPosition(json.type);
|
|
1820
1826
|
}
|
|
1821
|
-
node.getData(
|
|
1827
|
+
node.getData(TransformData7).update({
|
|
1822
1828
|
position
|
|
1823
1829
|
});
|
|
1824
1830
|
if (formMeta && formData && !formData.formModel.initialized) {
|
|
@@ -1877,7 +1883,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
1877
1883
|
);
|
|
1878
1884
|
}
|
|
1879
1885
|
if (subCanvas) {
|
|
1880
|
-
const canvasTransform = subCanvas.canvasNode.getData(
|
|
1886
|
+
const canvasTransform = subCanvas.canvasNode.getData(TransformData7);
|
|
1881
1887
|
canvasTransform.update({
|
|
1882
1888
|
position: subCanvas.parentNode.getNodeMeta()?.canvasPosition
|
|
1883
1889
|
});
|
|
@@ -2346,7 +2352,7 @@ var WorkflowDragService = class {
|
|
|
2346
2352
|
}
|
|
2347
2353
|
let startPosition = this.getNodesPosition(selectedNodes);
|
|
2348
2354
|
let startPositions = selectedNodes.map((node) => {
|
|
2349
|
-
const transform = node.getData(
|
|
2355
|
+
const transform = node.getData(TransformData8);
|
|
2350
2356
|
return { x: transform.position.x, y: transform.position.y };
|
|
2351
2357
|
});
|
|
2352
2358
|
let dragSuccess = false;
|
|
@@ -2373,7 +2379,7 @@ var WorkflowDragService = class {
|
|
|
2373
2379
|
});
|
|
2374
2380
|
const positions = [];
|
|
2375
2381
|
selectedNodes.forEach((node, index) => {
|
|
2376
|
-
const transform = node.getData(
|
|
2382
|
+
const transform = node.getData(TransformData8);
|
|
2377
2383
|
const nodeStartPosition = startPositions[index];
|
|
2378
2384
|
const newPosition = {
|
|
2379
2385
|
x: nodeStartPosition.x + offset.x,
|
|
@@ -2482,6 +2488,7 @@ var WorkflowDragService = class {
|
|
|
2482
2488
|
const dropNode = this._dropNode;
|
|
2483
2489
|
const { allowDrop } = this.canDropToNode({
|
|
2484
2490
|
dragNodeType: type,
|
|
2491
|
+
dropNodeType: dropNode?.flowNodeType,
|
|
2485
2492
|
dropNode
|
|
2486
2493
|
});
|
|
2487
2494
|
const dragNode = allowDrop ? await this.dropCard(type, e, data, dropNode) : void 0;
|
|
@@ -2506,7 +2513,7 @@ var WorkflowDragService = class {
|
|
|
2506
2513
|
/**
|
|
2507
2514
|
* 如果存在容器节点,且传入鼠标坐标,需要用容器的坐标减去传入的鼠标坐标
|
|
2508
2515
|
*/
|
|
2509
|
-
adjustSubNodePosition(subNodeType, containerNode, mousePos
|
|
2516
|
+
adjustSubNodePosition(subNodeType, containerNode, mousePos) {
|
|
2510
2517
|
if (!mousePos) {
|
|
2511
2518
|
return { x: 0, y: 0 };
|
|
2512
2519
|
}
|
|
@@ -2515,16 +2522,16 @@ var WorkflowDragService = class {
|
|
|
2515
2522
|
}
|
|
2516
2523
|
const isParentEmpty = !containerNode.children || containerNode.children.length === 0;
|
|
2517
2524
|
const parentPadding = this.document.layout.getPadding(containerNode);
|
|
2518
|
-
const
|
|
2519
|
-
if (isParentEmpty
|
|
2525
|
+
const containerWorldTransform = containerNode.transform.transform.worldTransform;
|
|
2526
|
+
if (isParentEmpty) {
|
|
2520
2527
|
return {
|
|
2521
2528
|
x: 0,
|
|
2522
2529
|
y: parentPadding.top
|
|
2523
2530
|
};
|
|
2524
2531
|
} else {
|
|
2525
2532
|
return {
|
|
2526
|
-
x: mousePos.x -
|
|
2527
|
-
y: mousePos.y -
|
|
2533
|
+
x: mousePos.x - containerWorldTransform.tx,
|
|
2534
|
+
y: mousePos.y - containerWorldTransform.ty
|
|
2528
2535
|
};
|
|
2529
2536
|
}
|
|
2530
2537
|
}
|
|
@@ -2541,7 +2548,20 @@ var WorkflowDragService = class {
|
|
|
2541
2548
|
* 判断是否可以放置节点
|
|
2542
2549
|
*/
|
|
2543
2550
|
canDropToNode(params) {
|
|
2551
|
+
const { canDropToNode } = this.document.options;
|
|
2544
2552
|
const { dragNodeType, dropNode } = params;
|
|
2553
|
+
if (canDropToNode) {
|
|
2554
|
+
const result = canDropToNode(params);
|
|
2555
|
+
if (result) {
|
|
2556
|
+
return {
|
|
2557
|
+
allowDrop: true,
|
|
2558
|
+
dropNode
|
|
2559
|
+
};
|
|
2560
|
+
}
|
|
2561
|
+
return {
|
|
2562
|
+
allowDrop: false
|
|
2563
|
+
};
|
|
2564
|
+
}
|
|
2545
2565
|
if (!dragNodeType) {
|
|
2546
2566
|
return {
|
|
2547
2567
|
allowDrop: false,
|
|
@@ -2884,11 +2904,11 @@ import { DisposableCollection as DisposableCollection3, Emitter as Emitter6 } fr
|
|
|
2884
2904
|
|
|
2885
2905
|
// src/utils/layout-to-positions.ts
|
|
2886
2906
|
import { FlowNodeTransformData as FlowNodeTransformData7 } from "@flowgram.ai/document";
|
|
2887
|
-
import { TransformData as
|
|
2907
|
+
import { TransformData as TransformData9, startTween } from "@flowgram.ai/core";
|
|
2888
2908
|
var layoutToPositions = async (nodes, nodePositionMap) => {
|
|
2889
2909
|
const newNodePositionMap = {};
|
|
2890
2910
|
nodes.forEach((node) => {
|
|
2891
|
-
const transform = node.getData(
|
|
2911
|
+
const transform = node.getData(TransformData9);
|
|
2892
2912
|
const nodeTransform = node.getData(FlowNodeTransformData7);
|
|
2893
2913
|
newNodePositionMap[node.id] = {
|
|
2894
2914
|
x: transform.position.x,
|
|
@@ -2902,7 +2922,7 @@ var layoutToPositions = async (nodes, nodePositionMap) => {
|
|
|
2902
2922
|
duration: 300,
|
|
2903
2923
|
onUpdate: (v) => {
|
|
2904
2924
|
nodes.forEach((node) => {
|
|
2905
|
-
const transform = node.getData(
|
|
2925
|
+
const transform = node.getData(TransformData9);
|
|
2906
2926
|
const deltaX = (nodePositionMap[node.id].x - transform.position.x) * v.d / 100;
|
|
2907
2927
|
const deltaY = (nodePositionMap[node.id].y - transform.bounds.height / 2 - transform.position.y) * v.d / 100;
|
|
2908
2928
|
transform.update({
|
|
@@ -2986,7 +3006,7 @@ WorkflowResetLayoutService = __decorateClass([
|
|
|
2986
3006
|
import { inject as inject8 } from "inversify";
|
|
2987
3007
|
import { Emitter as Emitter7 } from "@flowgram.ai/utils";
|
|
2988
3008
|
import { FlowOperationBaseServiceImpl } from "@flowgram.ai/document";
|
|
2989
|
-
import { TransformData as
|
|
3009
|
+
import { TransformData as TransformData10 } from "@flowgram.ai/core";
|
|
2990
3010
|
var WorkflowOperationBaseServiceImpl = class extends FlowOperationBaseServiceImpl {
|
|
2991
3011
|
constructor() {
|
|
2992
3012
|
super(...arguments);
|
|
@@ -2998,7 +3018,7 @@ var WorkflowOperationBaseServiceImpl = class extends FlowOperationBaseServiceImp
|
|
|
2998
3018
|
if (!node) {
|
|
2999
3019
|
return;
|
|
3000
3020
|
}
|
|
3001
|
-
const transformData = node.getData(
|
|
3021
|
+
const transformData = node.getData(TransformData10);
|
|
3002
3022
|
const oldPosition = {
|
|
3003
3023
|
x: transformData.position.x,
|
|
3004
3024
|
y: transformData.position.y
|