@flowgram.ai/free-layout-core 0.1.0-alpha.17 → 0.1.0-alpha.19
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-O4WKIIW2.js → chunk-3UW6BHP2.js} +1 -1
- package/dist/esm/chunk-3UW6BHP2.js.map +1 -0
- package/dist/esm/index.js +161 -55
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/typings/index.js +1 -1
- package/dist/esm/typings/workflow-operation.js +1 -1
- package/dist/index.d.mts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +159 -50
- package/dist/index.js.map +1 -1
- package/dist/typings/index.d.mts +1 -1
- package/dist/typings/index.d.ts +1 -1
- package/dist/typings/index.js.map +1 -1
- package/dist/typings/workflow-drag.d.mts +1 -1
- package/dist/typings/workflow-drag.d.ts +1 -1
- package/dist/typings/workflow-json.d.mts +1 -1
- package/dist/typings/workflow-json.d.ts +1 -1
- package/dist/typings/workflow-line.d.mts +1 -1
- package/dist/typings/workflow-line.d.ts +1 -1
- package/dist/typings/workflow-node.d.mts +1 -1
- package/dist/typings/workflow-node.d.ts +1 -1
- package/dist/typings/workflow-operation.d.mts +9 -0
- package/dist/typings/workflow-operation.d.ts +9 -0
- package/dist/typings/workflow-operation.js.map +1 -1
- package/dist/typings/workflow-registry.d.mts +1 -1
- package/dist/typings/workflow-registry.d.ts +1 -1
- package/dist/typings/workflow-sub-canvas.d.mts +1 -1
- package/dist/typings/workflow-sub-canvas.d.ts +1 -1
- package/dist/{workflow-node-entity-B-9mEm2k.d.mts → workflow-node-entity-DH5qlw7I.d.mts} +41 -7
- package/dist/{workflow-node-entity-DvBGZ5Ve.d.ts → workflow-node-entity-DWVtlA2a.d.ts} +41 -7
- package/package.json +9 -9
- package/dist/esm/chunk-O4WKIIW2.js.map +0 -1
|
@@ -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\nimport { WorkflowJSON } from './workflow-json';\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 /**\n * 更新节点与线条\n */\n fromJSON(json: WorkflowJSON): void;\n}\n\nexport const WorkflowOperationBaseService = Symbol('WorkflowOperationBaseService');\n"],"mappings":";AAuCO,IAAM,+BAA+B,OAAO,8BAA8B;","names":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import "./chunk-DDJTYHXN.js";
|
|
16
16
|
import {
|
|
17
17
|
WorkflowOperationBaseService
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-3UW6BHP2.js";
|
|
19
19
|
import {
|
|
20
20
|
__decorateClass
|
|
21
21
|
} from "./chunk-EUXUH3YW.js";
|
|
@@ -183,6 +183,27 @@ import {
|
|
|
183
183
|
PlaygroundConfigEntity,
|
|
184
184
|
TransformData as TransformData3
|
|
185
185
|
} from "@flowgram.ai/core";
|
|
186
|
+
|
|
187
|
+
// src/utils/location-config-to-point.ts
|
|
188
|
+
function locationConfigToPoint(bounds, config, _offset = { x: 0, y: 0 }) {
|
|
189
|
+
const offset = { ..._offset };
|
|
190
|
+
if (config.left !== void 0) {
|
|
191
|
+
offset.x += typeof config.left === "string" ? parseFloat(config.left) * 0.01 * bounds.width : config.left;
|
|
192
|
+
} else if (config.right !== void 0) {
|
|
193
|
+
offset.x += bounds.width - (typeof config.right === "string" ? parseFloat(config.right) * 0.01 * bounds.width : config.right);
|
|
194
|
+
}
|
|
195
|
+
if (config.top !== void 0) {
|
|
196
|
+
offset.y += typeof config.top === "string" ? parseFloat(config.top) * 0.01 * bounds.height : config.top;
|
|
197
|
+
} else if (config.bottom !== void 0) {
|
|
198
|
+
offset.y += bounds.height - (typeof config.bottom === "string" ? parseFloat(config.bottom) * 0.01 * bounds.height : config.bottom);
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
x: bounds.x + offset.x,
|
|
202
|
+
y: bounds.y + offset.y
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/entities/workflow-port-entity.ts
|
|
186
207
|
var PORT_SIZE = 24;
|
|
187
208
|
var WorkflowPortEntity = class extends Entity {
|
|
188
209
|
constructor(opts) {
|
|
@@ -195,6 +216,7 @@ var WorkflowPortEntity = class extends Entity {
|
|
|
195
216
|
this.portType = opts.type;
|
|
196
217
|
this._disabled = opts.disabled;
|
|
197
218
|
this._offset = opts.offset;
|
|
219
|
+
this._locationConfig = opts.locationConfig;
|
|
198
220
|
this._location = opts.location;
|
|
199
221
|
this._size = opts.size;
|
|
200
222
|
this.node = opts.node;
|
|
@@ -242,7 +264,7 @@ var WorkflowPortEntity = class extends Entity {
|
|
|
242
264
|
return "right";
|
|
243
265
|
}
|
|
244
266
|
get point() {
|
|
245
|
-
const { targetElement } = this;
|
|
267
|
+
const { targetElement, _locationConfig } = this;
|
|
246
268
|
const { bounds } = this.node.getData(FlowNodeTransformData);
|
|
247
269
|
const location2 = this.location;
|
|
248
270
|
if (targetElement) {
|
|
@@ -257,8 +279,14 @@ var WorkflowPortEntity = class extends Entity {
|
|
|
257
279
|
location: location2
|
|
258
280
|
};
|
|
259
281
|
}
|
|
260
|
-
|
|
282
|
+
if (_locationConfig) {
|
|
283
|
+
return {
|
|
284
|
+
...locationConfigToPoint(bounds, _locationConfig, this._offset),
|
|
285
|
+
location: location2
|
|
286
|
+
};
|
|
287
|
+
}
|
|
261
288
|
const offset = this._offset || { x: 0, y: 0 };
|
|
289
|
+
let point = { x: 0, y: 0 };
|
|
262
290
|
switch (location2) {
|
|
263
291
|
case "left":
|
|
264
292
|
point = bounds.leftCenter;
|
|
@@ -371,6 +399,10 @@ var WorkflowPortEntity = class extends Entity {
|
|
|
371
399
|
this._offset = data.offset;
|
|
372
400
|
changed = true;
|
|
373
401
|
}
|
|
402
|
+
if (Compare.isChanged(data.locationConfig, this._locationConfig)) {
|
|
403
|
+
this._locationConfig = data.locationConfig;
|
|
404
|
+
changed = true;
|
|
405
|
+
}
|
|
374
406
|
if (Compare.isChanged(data.size, this._size)) {
|
|
375
407
|
this._size = data.size;
|
|
376
408
|
changed = true;
|
|
@@ -1391,10 +1423,7 @@ import {
|
|
|
1391
1423
|
delay as delay2,
|
|
1392
1424
|
Point
|
|
1393
1425
|
} from "@flowgram.ai/utils";
|
|
1394
|
-
import {
|
|
1395
|
-
FlowNodeTransformData as FlowNodeTransformData6,
|
|
1396
|
-
FlowOperationBaseService
|
|
1397
|
-
} from "@flowgram.ai/document";
|
|
1426
|
+
import { FlowNodeTransformData as FlowNodeTransformData6 } from "@flowgram.ai/document";
|
|
1398
1427
|
import { FlowNodeBaseType as FlowNodeBaseType3 } from "@flowgram.ai/document";
|
|
1399
1428
|
import {
|
|
1400
1429
|
CommandService,
|
|
@@ -1449,10 +1478,11 @@ function initFormDataFromJSON(node, json, isFirstCreate) {
|
|
|
1449
1478
|
// src/workflow-document-option.ts
|
|
1450
1479
|
var WorkflowDocumentOptions = Symbol("WorkflowDocumentOptions");
|
|
1451
1480
|
var WorkflowDocumentOptionsDefault = {
|
|
1452
|
-
cursors: {
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1481
|
+
// cursors: {
|
|
1482
|
+
// grab: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC40ODczIDIuNjIzNzhDOS45MDczMSAyLjYyMzc4IDkuNDM3MTMgMy4wOTM5NiA5LjQzNzEzIDMuNjczOTZWNS4xNDM3NkM5LjM5NDI4IDQuNDAyNzQgOC43Nzk3OCAzLjgxNTA0IDguMDI4MDIgMy44MTUwNEM3LjI0ODQ4IDMuODE1MDQgNi42MTY1MyA0LjQ0Njk5IDYuNjE2NTMgNS4yMjY1M1YxMS44Mjg5TDUuNjc0MTggMTEuMDA0OUM1LjE1NDg3IDEwLjU1MDkgNC40MDk1IDEwLjQ2MzYgMy43OTkzOCAxMC43ODU1TDMuNjk2OTQgMTAuODM5NkMzLjA2MjE3IDExLjE3NDUgMi45MjI2IDEyLjAyMjggMy40MTY2MiAxMi41NDM0TDcuMzM5NTkgMTYuNjc3NVYxNy4zMjU5QzcuMzM5NTkgMTcuNzg2MiA3LjcxMjY5IDE4LjE1OTMgOC4xNzI5MiAxOC4xNTkzSDEzLjgwODRDMTQuMjY4NyAxOC4xNTkzIDE0LjY0MTcgMTcuNzg2MiAxNC42NDE3IDE3LjMyNTlWMTYuNzkzNUMxNS44MDk0IDE1LjY0ODUgMTYuNDY3MyAxNC4wODE5IDE2LjQ2NzMgMTIuNDQ2NVYxMS40OTY3TDE2LjQ2NzEgNi42MzY4NUMxNi40NjcxIDUuOTU2MyAxNS45MTU0IDUuNDA0NjEgMTUuMjM0OCA1LjQwNDYxQzE0LjU1NDMgNS40MDQ2MSAxNC4wMDI2IDUuOTU2MyAxNC4wMDI2IDYuNjM2ODVMMTQuMDAyMSA1LjA0NzI4QzE0LjAwMjEgNC4zNjY3MyAxMy40NTA0IDMuODE1MDQgMTIuNzY5OCAzLjgxNTA0QzEyLjA4OTMgMy44MTUwNCAxMS41Mzc2IDQuMzY2NzMgMTEuNTM3NiA1LjA0NzI4TDExLjUzNzUgMy42NzM5NUMxMS41Mzc1IDMuMDkzOTYgMTEuMDY3MyAyLjYyMzc4IDEwLjQ4NzMgMi42MjM3OFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNDg3NCAxLjM3NDAyQzExLjM2MTIgMS4zNzQwMiAxMi4xMjExIDEuODYxMTggMTIuNTEwNSAyLjU3ODY4QzEyLjU5NTggMi41Njk4MyAxMi42ODIzIDIuNTY1MjggMTIuNzcgMi41NjUyOEMxMy44Mjc4IDIuNTY1MjggMTQuNzMxMSAzLjIyNzAxIDE1LjA4ODUgNC4xNTkxMUMxNS4xMzcgNC4xNTYyOSAxNS4xODU4IDQuMTU0ODYgMTUuMjM1IDQuMTU0ODZDMTYuNjA1OSA0LjE1NDg2IDE3LjcxNzIgNS4yNjYxOSAxNy43MTcyIDYuNjM3MDlMMTcuNzE3NCAxMi40NDY3QzE3LjcxNzQgMTQuMjM1NSAxNy4wNjQ0IDE1Ljk1NTkgMTUuODkxOSAxNy4yOTA0VjE3LjMyNjJDMTUuODkxOSAxOC40NzY4IDE0Ljk1OTEgMTkuNDA5NSAxMy44MDg1IDE5LjQwOTVIOC4xNzMwNkM3LjAyMjQ3IDE5LjQwOTUgNi4wODk3MyAxOC40NzY4IDYuMDg5NzMgMTcuMzI2MlYxNy4xNzY0TDIuNTEwMDMgMTMuNDA0MUMxLjQ0NTk5IDEyLjI4MjggMS43NDY2IDEwLjQ1NTUgMy4xMTM3OSA5LjczNDI0TDMuMjE2MjQgOS42ODAxOUMzLjg5MTY4IDkuMzIzODMgNC42NjE4NSA5LjI1NDAxIDUuMzY2NjYgOS40NTE5OFY1LjIyNjc4QzUuMzY2NjYgMy43NTY4NyA2LjU1ODI2IDIuNTY1MjggOC4wMjgxNiAyLjU2NTI4QzguMTcyOTMgMi41NjUyOCA4LjMxNDk5IDIuNTc2ODQgOC40NTM0NyAyLjU5OTA3QzguODM5NDMgMS44NzA0MiA5LjYwNTQ2IDEuMzc0MDIgMTAuNDg3NCAxLjM3NDAyWk0xMi40NDc2IDMuODU3ODdWOS40NzY0NkMxMi40NDc2IDkuNzI4NTIgMTIuMjQzMyA5LjkzMjg1IDExLjk5MTMgOS45MzI4NUMxMS43MzkyIDkuOTMyODUgMTEuNTM0OSA5LjcyODUyIDExLjUzNDkgOS40NzY0NlYzLjc5NjU1QzExLjUzNDkgMy43Nzk1NiAxMS41MzU4IDMuNzYyNzcgMTEuNTM3NiAzLjc0NjI2VjMuNjc0MkMxMS41Mzc2IDMuNDMyODIgMTEuNDU2MiAzLjIxMDQ2IDExLjMxOTMgMy4wMzMwOUMxMS4xMjcyIDIuNzg0MjggMTAuODI2MSAyLjYyNDAyIDEwLjQ4NzQgMi42MjQwMkMxMC4xMjM4IDIuNjI0MDIgOS44MDMzMiAyLjgwODg2IDkuNjE0ODMgMy4wODk3QzkuNTAyNjkgMy4yNTY3OSA5LjQzNzI2IDMuNDU3ODUgOS40MzcyNiAzLjY3NDJWMy43ODU3M0M5LjQzNzM1IDMuNzg5MzMgOS40MzczOSAzLjc5Mjk0IDkuNDM3MzkgMy43OTY1NVY5LjkwMTdDOS40MzczOSAxMC4xNTM3IDkuMjMzMDYgMTAuMzU4MSA4Ljk4MTAxIDEwLjM1ODFDOC43Mjg5NSAxMC4zNTgxIDguNTI0NjIgMTAuMTUzNyA4LjUyNDYyIDkuOTAxN1YzLjkwNTA3QzguNDE3NzMgMy44NjQ5IDguMzA0NjggMy44MzczMiA4LjE4NzI2IDMuODI0MTVDOC4xMzUwNCAzLjgxODI5IDguMDgxOTUgMy44MTUyOCA4LjAyODE2IDMuODE1MjhDNy4yNDg2MSAzLjgxNTI4IDYuNjE2NjYgNC40NDcyMyA2LjYxNjY2IDUuMjI2NzhWMTEuODI5Mkw1LjY3NDMxIDExLjAwNTJDNS41Nzg2OCAxMC45MjE2IDUuNDc1MzcgMTAuODUwNCA1LjM2NjY2IDEwLjc5MTlDNC44ODUwNiAxMC41MzI5IDQuMjk3MjggMTAuNTIzMSAzLjc5OTUyIDEwLjc4NThMMy42OTcwNyAxMC44Mzk4QzMuMDYyMzEgMTEuMTc0NyAyLjkyMjczIDEyLjAyMzEgMy40MTY3NSAxMi41NDM3TDcuMzM5NzMgMTYuNjc3N1YxNy4zMjYyQzcuMzM5NzMgMTcuNzg2NCA3LjcxMjgyIDE4LjE1OTUgOC4xNzMwNiAxOC4xNTk1SDEzLjgwODVDMTQuMjY4OCAxOC4xNTk1IDE0LjY0MTkgMTcuNzg2NCAxNC42NDE5IDE3LjMyNjJWMTYuNzkzOEMxNS43Mzc5IDE1LjcxOSAxNi4zODQ3IDE0LjI3MjggMTYuNDYgMTIuNzQ3QzE2LjQ2NDEgMTIuNjY0MSAxNi40NjY1IDEyLjU4MDkgMTYuNDY3MiAxMi40OTc1TDE2LjQ2NzQgMTIuNDQ2N0wxNi40NjcyIDYuNjM3MDlDMTYuNDY3MiA1Ljk2MjMgMTUuOTI0OCA1LjQxNDE5IDE1LjI1MjIgNS40MDQ5N0wxNS4yMzUgNS40MDQ4NkMxNS4xMjQ2IDUuNDA0ODYgMTUuMDE3NyA1LjQxOTM2IDE0LjkxNTkgNS40NDY1NlY5LjYwMjI2QzE0LjkxNTkgOS44NTQzMSAxNC43MTE2IDEwLjA1ODYgMTQuNDU5NSAxMC4wNTg2QzE0LjIwNzUgMTAuMDU4NiAxNC4wMDMxIDkuODU0MzEgMTQuMDAzMSA5LjYwMjI2VjYuNjA1MTRDMTQuMDAyOSA2LjYxNTc2IDE0LjAwMjcgNi42MjY0MSAxNC4wMDI3IDYuNjM3MDlWOS4yNzcwNUwxNC4wMDIyIDUuMDQ3NTJDMTQuMDAyMiA0Ljg2OTEzIDEzLjk2NDMgNC42OTk2IDEzLjg5NjEgNC41NDY1M0MxMy43MDY0IDQuMTIwNzIgMTMuMjgyMiAzLjgyMjM1IDEyLjc4NzYgMy44MTU0MUwxMi43NyAzLjgxNTI4QzEyLjY1ODQgMy44MTUyOCAxMi41NTA0IDMuODMwMSAxMi40NDc2IDMuODU3ODdaIiBmaWxsPSIjMUQxQzIzIi8+Cjwvc3ZnPg=="), auto',
|
|
1483
|
+
// grabbing:
|
|
1484
|
+
// 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjYxODE3IDUuNTk4NzVDNi42MTgxNyA0LjgxOTIgNy4yNTAxMiA0LjE4NzI2IDguMDI5NjcgNC4xODcyNkM4Ljc3ODczIDQuMTg3MjYgOS4zOTE1MiA0Ljc3MDc1IDkuNDM4MjkgNS41MDgwMUM5LjQ1OTkyIDQuOTQ3MSA5LjkyMTQ3IDQuNDk5MDIgMTAuNDg3NyA0LjQ5OTAyQzExLjA2NzcgNC40OTkwMiAxMS41Mzc4IDQuOTY5MiAxMS41Mzc4IDUuNTQ5MTlWOC43NjI0NkwxMS41Mzc5IDYuNzExNUMxMS41Mzc5IDYuMDMwOTUgMTIuMDg5NiA1LjQ3OTI2IDEyLjc3MDIgNS40NzkyNkMxMy40NTA3IDUuNDc5MjYgMTQuMDAyNCA2LjAzMDk1IDE0LjAwMjQgNi43MTE1TDE0LjAwMjQgOC43NjI0NkwxNC4wMDI5IDguMDE5ODNDMTQuMDAyOSA3LjMzOTI5IDE0LjU1NDYgNi43ODc1OSAxNS4yMzUyIDYuNzg3NTlDMTUuOTE1NyA2Ljc4NzU5IDE2LjQ2NzQgNy4zMzkyOCAxNi40Njc0IDguMDE5ODNWMTEuNDk3TDE2LjQ2NzUgMTIuNDQ2N0MxNi40Njc1IDE0LjA4MjEgMTUuODA5NiAxNS42NDg3IDE0LjY0MiAxNi43OTM4VjE3LjMyNjJDMTQuNjQyIDE3Ljc4NjQgMTQuMjY4OSAxOC4xNTk1IDEzLjgwODcgMTguMTU5NUg4LjE3MzE3QzcuNzEyOTMgMTguMTU5NSA3LjMzOTg0IDE3Ljc4NjQgNy4zMzk4NCAxNy4zMjYyVjE1Ljk0MjRMNS4zNDU2MiAxNC43NTM0QzQuNTg5MjQgMTQuMzAyNCA0LjEyNTkxIDEzLjQ4NjcgNC4xMjU4OSAxMi42MDYxTDQuMTI1ODMgOS4yODM4M0M0LjEyNTgyIDguOTU0MjcgNC4zMjAwMyA4LjY1NTY2IDQuNjIxMjkgOC41MjIwNUw2LjYxODE3IDcuNjM2MzRWNS41OTg3NVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNDg3OCAzLjI0OTAyQzExLjI3OTYgMy4yNDkwMiAxMS45Nzc4IDMuNjQ5MDIgMTIuMzkxNyA0LjI1Nzk2QzEyLjUxNTEgNC4yMzkwNiAxMi42NDE2IDQuMjI5MjYgMTIuNzcwMyA0LjIyOTI2QzEzLjcyMjQgNC4yMjkyNiAxNC41NDkzIDQuNzY1MzEgMTQuOTY1NyA1LjU1MjA3QzE1LjA1NDMgNS41NDI1IDE1LjE0NDIgNS41Mzc1OSAxNS4yMzUzIDUuNTM3NTlDMTYuNjA2MiA1LjUzNzU5IDE3LjcxNzYgNi42NDg5MyAxNy43MTc2IDguMDE5ODNMMTcuNzE3NyAxMi40NDY3QzE3LjcxNzcgMTQuMjM1NSAxNy4wNjQ3IDE1Ljk1NTkgMTUuODkyMSAxNy4yOTA0VjE3LjMyNjJDMTUuODkyMSAxOC40NzY4IDE0Ljk1OTQgMTkuNDA5NSAxMy44MDg4IDE5LjQwOTVIOC4xNzMzMkM3LjAyMjczIDE5LjQwOTUgNi4wODk5OCAxOC40NzY4IDYuMDg5OTggMTcuMzI2MlYxNi42NTI0TDQuNzA1NjMgMTUuODI3QzMuNTcxMDYgMTUuMTUwNSAyLjg3NjA3IDEzLjkyNzEgMi44NzYwNCAxMi42MDYxTDIuODc1OTggOS4yODM4NUMyLjg3NTk2IDguNDU5OTYgMy4zNjE0OSA3LjcxMzQ1IDQuMTE0NjIgNy4zNzk0TDUuMzY4MzIgNi44MjMzM1Y1LjU5ODc1QzUuMzY4MzIgNC4xMjg4NSA2LjU1OTkxIDIuOTM3MjYgOC4wMjk4MiAyLjkzNzI2QzguNjA4MzEgMi45MzcyNiA5LjE0MzU1IDMuMTIxNyA5LjU4MDA1IDMuNDM1MDVDOS44NTg1MyAzLjMxNTMyIDEwLjE2NTQgMy4yNDkwMiAxMC40ODc4IDMuMjQ5MDJaTTEyLjQ0NzkgNS41MjE4NlY5LjQ3NTU3QzEyLjQ0NzkgOS43Mjc2MiAxMi4yNDM2IDkuOTMxOTUgMTEuOTkxNiA5LjkzMTk1QzExLjc1NjggOS45MzE5NSAxMS41NjM0IDkuNzU0NjUgMTEuNTM4IDkuNTI2NjNDMTEuNTM2MSA5LjUwOTg3IDExLjUzNTIgOS40OTI4MyAxMS41MzUyIDkuNDc1NTdWNS40NzE1OEMxMS41MTU0IDUuMjAwODMgMTEuMzkzIDQuOTU4NTggMTEuMjA2NiA0Ljc4MzU4QzExLjAxODggNC42MDcxMSAxMC43NjU5IDQuNDk5MDIgMTAuNDg3OCA0LjQ5OTAyQzEwLjQ3NjYgNC40OTkwMiAxMC40NjU0IDQuNDk5MTkgMTAuNDU0MiA0LjQ5OTU0QzkuOTAzNDcgNC41MTY4NCA5LjQ1OTY0IDQuOTU4MjQgOS40Mzg0NCA1LjUwODAxQzkuNDM4MiA1LjUwNDMgOS40Mzc5NSA1LjUwMDU4IDkuNDM3NjkgNS40OTY4OFY5LjkwMjQzQzkuNDM3NjkgMTAuMTU0NSA5LjIzMzM2IDEwLjM1ODggOC45ODEzMSAxMC4zNTg4QzguNzI5MjUgMTAuMzU4OCA4LjUyNDkyIDEwLjE1NDUgOC41MjQ5MiA5LjkwMjQzVjQuMjc2NTNDOC4zNzA4NiA0LjIxODgyIDguMjA0MDIgNC4xODcyNiA4LjAyOTgyIDQuMTg3MjZDNy4yNTAyNyA0LjE4NzI2IDYuNjE4MzIgNC44MTkyIDYuNjE4MzIgNS41OTg3NUw2LjYxODI3IDkuOTc1OTlDNi42MTgyNyAxMC4yMjggNi40MTM5NCAxMC40MzI0IDYuMTYxODkgMTAuNDMyNEM1LjkwOTgzIDEwLjQzMjQgNS43MDU1IDEwLjIyOCA1LjcwNTUgOS45NzU5OVY4LjA0MTIyTDQuNjIxNDQgOC41MjIwNUM0LjMyMDE4IDguNjU1NjYgNC4xMjU5NyA4Ljk1NDI3IDQuMTI1OTggOS4yODM4M0w0LjEyNjA0IDEyLjYwNjFDNC4xMjYwNiAxMy40ODY3IDQuNTg5MzkgMTQuMzAyNCA1LjM0NTc2IDE0Ljc1MzRMNy4zMzk5OCAxNS45NDI0VjE3LjMyNjJDNy4zMzk5OCAxNy43ODY0IDcuNzEzMDggMTguMTU5NSA4LjE3MzMyIDE4LjE1OTVIMTMuODA4OEMxNC4yNjkgMTguMTU5NSAxNC42NDIxIDE3Ljc4NjQgMTQuNjQyMSAxNy4zMjYyVjE2Ljc5MzhDMTUuNzM4MSAxNS43MTkgMTYuMzg1IDE0LjI3MjggMTYuNDYwMyAxMi43NDdDMTYuNDY0NiAxMi42NiAxNi40NjcgMTIuNTcyOCAxNi40Njc2IDEyLjQ4NTRMMTYuNDY3NyAxMi40NDY3TDE2LjQ2NzYgOC4wMTk4M0MxNi40Njc2IDcuMzQ1MDQgMTUuOTI1MiA2Ljc5NjkzIDE1LjI1MjUgNi43ODc3MUwxNS4yMzUzIDYuNzg3NTlDMTUuMTI1IDYuNzg3NTkgMTUuMDE4IDYuODAyMSAxNC45MTYyIDYuODI5MzFWOS42MDEzNkMxNC45MTYyIDkuODUzNDIgMTQuNzExOSAxMC4wNTc3IDE0LjQ1OTggMTAuMDU3N0MxNC4yMDc4IDEwLjA1NzcgMTQuMDAzNCA5Ljg1MzQxIDE0LjAwMzQgOS42MDEzNlY3Ljk4OTg1QzE0LjAwMzIgNy45OTk4MiAxNC4wMDMxIDguMDA5ODEgMTQuMDAzMSA4LjAxOTgzTDE0LjAwMzQgOS42MDEzNkwxNC4wMDI1IDYuNzExNUMxNC4wMDI1IDYuNDQ5NzQgMTMuOTIwOSA2LjIwNzA1IDEzLjc4MTggNi4wMDc0OEMxMy41NjIgNS42OTI0MiAxMy4xOTg5IDUuNDg0ODMgMTIuNzg3IDUuNDc5MzdMMTIuNzcwMyA1LjQ3OTI2QzEyLjY1ODggNS40NzkyNiAxMi41NTA3IDUuNDk0MDggMTIuNDQ3OSA1LjUyMTg2WiIgZmlsbD0iIzFEMUMyMyIvPgo8L3N2Zz4="), auto',
|
|
1485
|
+
// },
|
|
1456
1486
|
fromNodeJSON(node, json, isFirstCreate) {
|
|
1457
1487
|
initFormDataFromJSON(node, json, isFirstCreate);
|
|
1458
1488
|
return;
|
|
@@ -2056,6 +2086,9 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2056
2086
|
this._loading = false;
|
|
2057
2087
|
this.onLoadedEmitter.fire();
|
|
2058
2088
|
}
|
|
2089
|
+
/**
|
|
2090
|
+
* @deprecated use `ctx.operation.fromJSON` instead
|
|
2091
|
+
*/
|
|
2059
2092
|
async reload(json, delayTime = 0) {
|
|
2060
2093
|
if (this.disposed) return;
|
|
2061
2094
|
this._loading = true;
|
|
@@ -2076,7 +2109,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2076
2109
|
edges: json.edges ?? []
|
|
2077
2110
|
};
|
|
2078
2111
|
this.entityManager.changeEntityLocked = true;
|
|
2079
|
-
this.
|
|
2112
|
+
this.batchAddFromJSON(workflowJSON);
|
|
2080
2113
|
this.entityManager.changeEntityLocked = false;
|
|
2081
2114
|
this.transformer.loading = false;
|
|
2082
2115
|
if (fireRender) {
|
|
@@ -2096,9 +2129,17 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2096
2129
|
* 创建流程节点
|
|
2097
2130
|
* @param json
|
|
2098
2131
|
*/
|
|
2099
|
-
createWorkflowNode(json, isClone = false,
|
|
2132
|
+
createWorkflowNode(json, isClone = false, parentID) {
|
|
2133
|
+
return this._createWorkflowNode(json, { parentID });
|
|
2134
|
+
}
|
|
2135
|
+
/**
|
|
2136
|
+
* 创建流程节点
|
|
2137
|
+
* @param json
|
|
2138
|
+
*/
|
|
2139
|
+
_createWorkflowNode(json, options) {
|
|
2140
|
+
const { parentID, onNodeCreated, onEdgeCreated } = options ?? {};
|
|
2100
2141
|
const isExistedNode = this.getNode(json.id);
|
|
2101
|
-
const parent = this.getNode(
|
|
2142
|
+
const parent = this.getNode(parentID ?? this.root.id) ?? this.root;
|
|
2102
2143
|
const node = this.addNode(
|
|
2103
2144
|
{
|
|
2104
2145
|
...json,
|
|
@@ -2125,15 +2166,19 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2125
2166
|
node.getData(TransformData7).update({
|
|
2126
2167
|
position
|
|
2127
2168
|
});
|
|
2128
|
-
if (formMeta && formData
|
|
2129
|
-
formData.
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2169
|
+
if (formMeta && formData) {
|
|
2170
|
+
if (!formData.formModel.initialized) {
|
|
2171
|
+
formData.createForm(formMeta, json.data);
|
|
2172
|
+
formData.onDataChange(() => {
|
|
2173
|
+
this.fireContentChange({
|
|
2174
|
+
type: "NODE_DATA_CHANGE" /* NODE_DATA_CHANGE */,
|
|
2175
|
+
toJSON: () => formData.toJSON(),
|
|
2176
|
+
entity: node
|
|
2177
|
+
});
|
|
2135
2178
|
});
|
|
2136
|
-
}
|
|
2179
|
+
} else {
|
|
2180
|
+
formData.updateFormValues(json.data);
|
|
2181
|
+
}
|
|
2137
2182
|
}
|
|
2138
2183
|
const positionData = node.getData(PositionData);
|
|
2139
2184
|
if (!isExistedNode) {
|
|
@@ -2172,11 +2217,12 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2172
2217
|
});
|
|
2173
2218
|
}
|
|
2174
2219
|
if (json.blocks) {
|
|
2175
|
-
this.
|
|
2220
|
+
this.batchAddFromJSON(
|
|
2176
2221
|
{ nodes: json.blocks, edges: json.edges ?? [] },
|
|
2177
2222
|
{
|
|
2178
2223
|
parent: node,
|
|
2179
|
-
|
|
2224
|
+
onNodeCreated,
|
|
2225
|
+
onEdgeCreated
|
|
2180
2226
|
}
|
|
2181
2227
|
);
|
|
2182
2228
|
}
|
|
@@ -2308,7 +2354,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2308
2354
|
throw new Error(`[WorkflowDocument.createWorkflowNodeByType] Node Id "${id}" duplicated.`);
|
|
2309
2355
|
}
|
|
2310
2356
|
}
|
|
2311
|
-
return this.
|
|
2357
|
+
return this._createWorkflowNode(
|
|
2312
2358
|
{
|
|
2313
2359
|
...json,
|
|
2314
2360
|
id,
|
|
@@ -2319,13 +2365,15 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2319
2365
|
blocks: json?.blocks,
|
|
2320
2366
|
edges: json?.edges
|
|
2321
2367
|
},
|
|
2322
|
-
|
|
2323
|
-
parentID
|
|
2368
|
+
{ parentID }
|
|
2324
2369
|
);
|
|
2325
2370
|
}
|
|
2326
2371
|
getAllNodes() {
|
|
2327
2372
|
return this.entityManager.getEntities(WorkflowNodeEntity).filter((n) => n.id !== FlowNodeBaseType2.ROOT);
|
|
2328
2373
|
}
|
|
2374
|
+
getAllEdges() {
|
|
2375
|
+
return this.entityManager.getEntities(WorkflowLineEntity);
|
|
2376
|
+
}
|
|
2329
2377
|
getAllPorts() {
|
|
2330
2378
|
return this.entityManager.getEntities(WorkflowPortEntity).filter((p) => p.node.id !== FlowNodeBaseType2.ROOT);
|
|
2331
2379
|
}
|
|
@@ -2426,7 +2474,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2426
2474
|
x: json.meta.position.x + 30,
|
|
2427
2475
|
y: json.meta.position.y + 30
|
|
2428
2476
|
};
|
|
2429
|
-
return this.
|
|
2477
|
+
return this._createWorkflowNode(
|
|
2430
2478
|
{
|
|
2431
2479
|
id: newNodeId || `1${nanoid2()}`,
|
|
2432
2480
|
type: node.flowNodeType,
|
|
@@ -2438,16 +2486,17 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2438
2486
|
blocks: json.blocks,
|
|
2439
2487
|
edges: json.edges
|
|
2440
2488
|
},
|
|
2441
|
-
|
|
2442
|
-
|
|
2489
|
+
{
|
|
2490
|
+
parentID: node.parent?.id
|
|
2491
|
+
}
|
|
2443
2492
|
);
|
|
2444
2493
|
}
|
|
2445
|
-
copyNodeFromJSON(flowNodeType, nodeJSON, newNodeId, position,
|
|
2494
|
+
copyNodeFromJSON(flowNodeType, nodeJSON, newNodeId, position, parentID) {
|
|
2446
2495
|
position = position || {
|
|
2447
2496
|
x: nodeJSON.meta.position.x + 30,
|
|
2448
2497
|
y: nodeJSON.meta.position.y + 30
|
|
2449
2498
|
};
|
|
2450
|
-
return this.
|
|
2499
|
+
return this._createWorkflowNode(
|
|
2451
2500
|
{
|
|
2452
2501
|
id: newNodeId || `1${nanoid2()}`,
|
|
2453
2502
|
type: flowNodeType,
|
|
@@ -2459,8 +2508,9 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2459
2508
|
blocks: nodeJSON.blocks,
|
|
2460
2509
|
edges: nodeJSON.edges
|
|
2461
2510
|
},
|
|
2462
|
-
|
|
2463
|
-
|
|
2511
|
+
{
|
|
2512
|
+
parentID
|
|
2513
|
+
}
|
|
2464
2514
|
);
|
|
2465
2515
|
}
|
|
2466
2516
|
canRemove(node, silent) {
|
|
@@ -2515,13 +2565,19 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2515
2565
|
* 批量添加节点
|
|
2516
2566
|
*/
|
|
2517
2567
|
batchAddFromJSON(json, options) {
|
|
2518
|
-
const { parent = this.root,
|
|
2519
|
-
const
|
|
2568
|
+
const { parent = this.root, onNodeCreated, onEdgeCreated } = options ?? {};
|
|
2569
|
+
const parentID = this.getNodeSubCanvas(parent)?.canvasNode.id ?? parent.id;
|
|
2520
2570
|
const processedJSON = buildGroupJSON(json);
|
|
2521
2571
|
const nodes = processedJSON.nodes.map(
|
|
2522
|
-
(nodeJSON) => this.
|
|
2572
|
+
(nodeJSON) => this._createWorkflowNode(nodeJSON, {
|
|
2573
|
+
parentID,
|
|
2574
|
+
onNodeCreated,
|
|
2575
|
+
onEdgeCreated
|
|
2576
|
+
})
|
|
2523
2577
|
);
|
|
2524
|
-
const edges = processedJSON.edges.map((edge) => this.createWorkflowLine(edge,
|
|
2578
|
+
const edges = processedJSON.edges.map((edge) => this.createWorkflowLine(edge, parentID)).filter(Boolean);
|
|
2579
|
+
nodes.forEach((node) => options?.onNodeCreated?.(node));
|
|
2580
|
+
edges.forEach((edge) => options?.onEdgeCreated?.(edge));
|
|
2525
2581
|
return { nodes, edges };
|
|
2526
2582
|
}
|
|
2527
2583
|
getNodeSubCanvas(node) {
|
|
@@ -2570,7 +2626,7 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2570
2626
|
}
|
|
2571
2627
|
return lineJSON;
|
|
2572
2628
|
}
|
|
2573
|
-
createWorkflowLine(json,
|
|
2629
|
+
createWorkflowLine(json, parentID) {
|
|
2574
2630
|
const fromNode = this.getNode(json.sourceNodeID);
|
|
2575
2631
|
const toNode = this.getNode(json.targetNodeID);
|
|
2576
2632
|
if (!fromNode || !toNode) {
|
|
@@ -2583,10 +2639,10 @@ var WorkflowDocument = class extends FlowDocument {
|
|
|
2583
2639
|
toPort: json.targetPortID,
|
|
2584
2640
|
data: json.data
|
|
2585
2641
|
};
|
|
2586
|
-
if (!
|
|
2642
|
+
if (!parentID) {
|
|
2587
2643
|
return this.linesManager.createLine(lineInfo);
|
|
2588
2644
|
}
|
|
2589
|
-
const canvasNode = this.getNode(
|
|
2645
|
+
const canvasNode = this.getNode(parentID);
|
|
2590
2646
|
if (!canvasNode) {
|
|
2591
2647
|
return this.linesManager.createLine(lineInfo);
|
|
2592
2648
|
}
|
|
@@ -3049,20 +3105,16 @@ var WorkflowDragService = class {
|
|
|
3049
3105
|
})
|
|
3050
3106
|
);
|
|
3051
3107
|
const containerTransform = container.getData(TransformData8);
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
y: containerTransform.position.y + bounds.y
|
|
3056
|
-
}
|
|
3108
|
+
this.operationService.updateNodePosition(container, {
|
|
3109
|
+
x: containerTransform.position.x + bounds.x,
|
|
3110
|
+
y: containerTransform.position.y + bounds.y
|
|
3057
3111
|
});
|
|
3058
3112
|
this.document.layout.updateAffectedTransform(container);
|
|
3059
3113
|
container.blocks.forEach((node) => {
|
|
3060
3114
|
const transform = node.getData(TransformData8);
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
y: transform.position.y - bounds.y
|
|
3065
|
-
}
|
|
3115
|
+
this.operationService.updateNodePosition(node, {
|
|
3116
|
+
x: transform.position.x - bounds.x,
|
|
3117
|
+
y: transform.position.y - bounds.y
|
|
3066
3118
|
});
|
|
3067
3119
|
this.document.layout.updateAffectedTransform(node);
|
|
3068
3120
|
});
|
|
@@ -3383,7 +3435,7 @@ __decorateClass([
|
|
|
3383
3435
|
inject6(WorkflowSelectService)
|
|
3384
3436
|
], WorkflowDragService.prototype, "selectService", 2);
|
|
3385
3437
|
__decorateClass([
|
|
3386
|
-
inject6(
|
|
3438
|
+
inject6(WorkflowOperationBaseService)
|
|
3387
3439
|
], WorkflowDragService.prototype, "operationService", 2);
|
|
3388
3440
|
__decorateClass([
|
|
3389
3441
|
inject6(WorkflowDocumentOptions)
|
|
@@ -3531,10 +3583,64 @@ var WorkflowOperationBaseServiceImpl = class extends FlowOperationBaseServiceImp
|
|
|
3531
3583
|
newPosition: position
|
|
3532
3584
|
});
|
|
3533
3585
|
}
|
|
3586
|
+
fromJSON(json) {
|
|
3587
|
+
if (this.document.disposed) return;
|
|
3588
|
+
const workflowJSON = {
|
|
3589
|
+
nodes: json.nodes ?? [],
|
|
3590
|
+
edges: json.edges ?? []
|
|
3591
|
+
};
|
|
3592
|
+
const oldNodes = this.document.getAllNodes();
|
|
3593
|
+
const oldEdges = this.linesManager.getAllLines();
|
|
3594
|
+
const oldPositionMap = new Map(
|
|
3595
|
+
oldNodes.map((node) => [
|
|
3596
|
+
node.id,
|
|
3597
|
+
{
|
|
3598
|
+
x: node.transform.transform.position.x,
|
|
3599
|
+
y: node.transform.transform.position.y
|
|
3600
|
+
}
|
|
3601
|
+
])
|
|
3602
|
+
);
|
|
3603
|
+
const newNodes = [];
|
|
3604
|
+
const newEdges = [];
|
|
3605
|
+
this.document.batchAddFromJSON(workflowJSON, {
|
|
3606
|
+
onNodeCreated: (node) => newNodes.push(node),
|
|
3607
|
+
onEdgeCreated: (edge) => newEdges.push(edge)
|
|
3608
|
+
});
|
|
3609
|
+
const newEdgeIDSet = new Set(newEdges.map((edge) => edge.id));
|
|
3610
|
+
oldEdges.forEach((edge) => {
|
|
3611
|
+
if (!newEdgeIDSet.has(edge.id)) {
|
|
3612
|
+
edge.dispose();
|
|
3613
|
+
return;
|
|
3614
|
+
}
|
|
3615
|
+
});
|
|
3616
|
+
const newNodeIDSet = new Set(newNodes.map((node) => node.id));
|
|
3617
|
+
oldNodes.forEach((node) => {
|
|
3618
|
+
if (!newNodeIDSet.has(node.id)) {
|
|
3619
|
+
node.dispose();
|
|
3620
|
+
return;
|
|
3621
|
+
}
|
|
3622
|
+
const oldPosition = oldPositionMap.get(node.id);
|
|
3623
|
+
const newPosition = {
|
|
3624
|
+
x: node.transform.transform.position.x,
|
|
3625
|
+
y: node.transform.transform.position.y
|
|
3626
|
+
};
|
|
3627
|
+
if (oldPosition && (oldPosition.x !== newPosition.x || oldPosition.y !== newPosition.y)) {
|
|
3628
|
+
this.onNodePostionUpdateEmitter.fire({
|
|
3629
|
+
node,
|
|
3630
|
+
oldPosition,
|
|
3631
|
+
newPosition
|
|
3632
|
+
});
|
|
3633
|
+
}
|
|
3634
|
+
});
|
|
3635
|
+
this.document.fireRender();
|
|
3636
|
+
}
|
|
3534
3637
|
};
|
|
3535
3638
|
__decorateClass([
|
|
3536
3639
|
inject8(WorkflowDocument)
|
|
3537
3640
|
], WorkflowOperationBaseServiceImpl.prototype, "document", 2);
|
|
3641
|
+
__decorateClass([
|
|
3642
|
+
inject8(WorkflowLinesManager)
|
|
3643
|
+
], WorkflowOperationBaseServiceImpl.prototype, "linesManager", 2);
|
|
3538
3644
|
|
|
3539
3645
|
// src/hooks/use-playground-readonly-state.ts
|
|
3540
3646
|
import { useEffect } from "react";
|
|
@@ -3632,8 +3738,8 @@ function useNodeRender(nodeFromProps) {
|
|
|
3632
3738
|
}, []);
|
|
3633
3739
|
const getExtInfo = useCallback(() => node.getExtInfo(), [node]);
|
|
3634
3740
|
const updateExtInfo = useCallback(
|
|
3635
|
-
(data) => {
|
|
3636
|
-
node.updateExtInfo(data);
|
|
3741
|
+
(data, fullUpdate) => {
|
|
3742
|
+
node.updateExtInfo(data, fullUpdate);
|
|
3637
3743
|
},
|
|
3638
3744
|
[node]
|
|
3639
3745
|
);
|
|
@@ -3668,7 +3774,7 @@ function useNodeRender(nodeFromProps) {
|
|
|
3668
3774
|
if (form) {
|
|
3669
3775
|
form.updateFormValues(values);
|
|
3670
3776
|
} else {
|
|
3671
|
-
updateExtInfo(values);
|
|
3777
|
+
updateExtInfo(values, true);
|
|
3672
3778
|
}
|
|
3673
3779
|
},
|
|
3674
3780
|
node,
|