@flowgram.ai/free-layout-core 0.2.26 → 0.2.28
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 +50 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +89 -51
- 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/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-registry.d.mts +1 -1
- package/dist/typings/workflow-registry.d.ts +1 -1
- package/dist/{workflow-line-entity-pkRs4Hgt.d.ts → workflow-line-entity-A940oVos.d.ts} +4 -4
- package/dist/{workflow-line-entity-BmfC83KK.d.mts → workflow-line-entity-JyclGGfq.d.mts} +4 -4
- package/package.json +10 -10
package/dist/index.d.mts
CHANGED
|
@@ -2,8 +2,8 @@ import { PlaygroundConfigEntity, CommandService, PlaygroundDragEvent, EntityData
|
|
|
2
2
|
export { bindConfigEntity, useConfigEntity, useEntities, useEntityDataFromContext, useEntityFromContext, useListenEvents, usePlayground, usePlaygroundContainer, usePlaygroundContext, usePlaygroundLatest, 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 WorkflowPortEntity, g as WorkflowLineEntity, O as OnDragLineEnd, h as
|
|
6
|
-
export { K as HoverPosition, C as LINE_HOVER_DISTANCE, v as LineColor, w as LineColors, u as LineType, z as NodesDragEndEvent, y as NodesDragStartEvent, A as NodesDraggingEvent, P as POINT_RADIUS, H as PORT_SIZE,
|
|
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 WorkflowPortEntity, g as WorkflowLineEntity, O as OnDragLineEnd, h as WorkflowJSON, i as WorkflowPorts, j as WorkflowPortType, k as WorkflowPort, l as LineRenderType, m as WorkflowLineRenderContribution, n as LinePosition } from './workflow-line-entity-JyclGGfq.mjs';
|
|
6
|
+
export { K as HoverPosition, C as LINE_HOVER_DISTANCE, v as LineColor, w as LineColors, u as LineType, z as NodesDragEndEvent, y as NodesDragStartEvent, A as NodesDraggingEvent, P as POINT_RADIUS, H as PORT_SIZE, p as WORKFLOW_LINE_ENTITY, M as WorkfloEntityHoverable, s as WorkflowContentChangeEvent, r as WorkflowContentChangeType, R as WorkflowDocumentOptionsDefault, Q as WorkflowDocumentProvider, J as WorkflowEntityHoverable, E as WorkflowLineEntityOpts, F as WorkflowLineInfo, D as WorkflowLinePortInfo, x as WorkflowLineRenderContributionFactory, G as WorkflowLineUIState, t as WorkflowNodeMeta, I as WorkflowPortEntityOpts, q as domReactToBounds, o as getPortEntityId, B as onDragLineEndParams } from './workflow-line-entity-JyclGGfq.mjs';
|
|
7
7
|
import { W as WorkflowNodeEntity } from './workflow-sub-canvas-IQzlYvPD.mjs';
|
|
8
8
|
export { a as WorkflowSubCanvas } from './workflow-sub-canvas-IQzlYvPD.mjs';
|
|
9
9
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
@@ -323,6 +323,13 @@ declare function useWorkflowDocument(): WorkflowDocument;
|
|
|
323
323
|
*/
|
|
324
324
|
declare function usePlaygroundReadonlyState(listenChange?: boolean): boolean;
|
|
325
325
|
|
|
326
|
+
/**
|
|
327
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
328
|
+
* SPDX-License-Identifier: MIT
|
|
329
|
+
*/
|
|
330
|
+
|
|
331
|
+
declare const buildGroupJSON: (json: WorkflowJSON) => WorkflowJSON;
|
|
332
|
+
|
|
326
333
|
/**
|
|
327
334
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
328
335
|
* SPDX-License-Identifier: MIT
|
|
@@ -562,4 +569,4 @@ declare class WorkflowSimpleLineContribution implements WorkflowLineRenderContri
|
|
|
562
569
|
private projectPointOnLine;
|
|
563
570
|
}
|
|
564
571
|
|
|
565
|
-
export { EditorCursorState, InteractiveType, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, type StraightData, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, type WorkflowNodeLines, WorkflowNodeLinesData, WorkflowNodePortsData, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPort, WorkflowPortEntity, WorkflowPortType, WorkflowPorts, WorkflowResetLayoutService, WorkflowSelectService, WorkflowSimpleLineContribution, fitView, getAntiOverlapPosition, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
|
572
|
+
export { EditorCursorState, InteractiveType, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, type StraightData, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowJSON, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, type WorkflowNodeLines, WorkflowNodeLinesData, WorkflowNodePortsData, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPort, WorkflowPortEntity, WorkflowPortType, WorkflowPorts, WorkflowResetLayoutService, WorkflowSelectService, WorkflowSimpleLineContribution, buildGroupJSON, fitView, getAntiOverlapPosition, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { PlaygroundConfigEntity, CommandService, PlaygroundDragEvent, EntityData
|
|
|
2
2
|
export { bindConfigEntity, useConfigEntity, useEntities, useEntityDataFromContext, useEntityFromContext, useListenEvents, usePlayground, usePlaygroundContainer, usePlaygroundContext, usePlaygroundLatest, 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 WorkflowPortEntity, g as WorkflowLineEntity, O as OnDragLineEnd, h as
|
|
6
|
-
export { K as HoverPosition, C as LINE_HOVER_DISTANCE, v as LineColor, w as LineColors, u as LineType, z as NodesDragEndEvent, y as NodesDragStartEvent, A as NodesDraggingEvent, P as POINT_RADIUS, H as PORT_SIZE,
|
|
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 WorkflowPortEntity, g as WorkflowLineEntity, O as OnDragLineEnd, h as WorkflowJSON, i as WorkflowPorts, j as WorkflowPortType, k as WorkflowPort, l as LineRenderType, m as WorkflowLineRenderContribution, n as LinePosition } from './workflow-line-entity-A940oVos.js';
|
|
6
|
+
export { K as HoverPosition, C as LINE_HOVER_DISTANCE, v as LineColor, w as LineColors, u as LineType, z as NodesDragEndEvent, y as NodesDragStartEvent, A as NodesDraggingEvent, P as POINT_RADIUS, H as PORT_SIZE, p as WORKFLOW_LINE_ENTITY, M as WorkfloEntityHoverable, s as WorkflowContentChangeEvent, r as WorkflowContentChangeType, R as WorkflowDocumentOptionsDefault, Q as WorkflowDocumentProvider, J as WorkflowEntityHoverable, E as WorkflowLineEntityOpts, F as WorkflowLineInfo, D as WorkflowLinePortInfo, x as WorkflowLineRenderContributionFactory, G as WorkflowLineUIState, t as WorkflowNodeMeta, I as WorkflowPortEntityOpts, q as domReactToBounds, o as getPortEntityId, B as onDragLineEndParams } from './workflow-line-entity-A940oVos.js';
|
|
7
7
|
import { W as WorkflowNodeEntity } from './workflow-sub-canvas-IQzlYvPD.js';
|
|
8
8
|
export { a as WorkflowSubCanvas } from './workflow-sub-canvas-IQzlYvPD.js';
|
|
9
9
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
@@ -323,6 +323,13 @@ declare function useWorkflowDocument(): WorkflowDocument;
|
|
|
323
323
|
*/
|
|
324
324
|
declare function usePlaygroundReadonlyState(listenChange?: boolean): boolean;
|
|
325
325
|
|
|
326
|
+
/**
|
|
327
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
328
|
+
* SPDX-License-Identifier: MIT
|
|
329
|
+
*/
|
|
330
|
+
|
|
331
|
+
declare const buildGroupJSON: (json: WorkflowJSON) => WorkflowJSON;
|
|
332
|
+
|
|
326
333
|
/**
|
|
327
334
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
328
335
|
* SPDX-License-Identifier: MIT
|
|
@@ -562,4 +569,4 @@ declare class WorkflowSimpleLineContribution implements WorkflowLineRenderContri
|
|
|
562
569
|
private projectPointOnLine;
|
|
563
570
|
}
|
|
564
571
|
|
|
565
|
-
export { EditorCursorState, InteractiveType, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, type StraightData, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, type WorkflowNodeLines, WorkflowNodeLinesData, WorkflowNodePortsData, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPort, WorkflowPortEntity, WorkflowPortType, WorkflowPorts, WorkflowResetLayoutService, WorkflowSelectService, WorkflowSimpleLineContribution, fitView, getAntiOverlapPosition, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
|
572
|
+
export { EditorCursorState, InteractiveType, LineEventProps, LinePosition, LineRenderType, NodePostionUpdateEvent, type NodeRenderReturnType, NodesDragEvent, OnDragLineEnd, type PositionMap, type StraightData, WorkflowCommands, WorkflowDocument, WorkflowDocumentContainerModule, WorkflowDocumentOptions, WorkflowDragService, WorkflowHoverService, WorkflowJSON, WorkflowLineEntity, WorkflowLineRenderContribution, WorkflowLineRenderData, type WorkflowLineRenderDataSchema, WorkflowLinesManager, WorkflowNodeEntity, WorkflowNodeJSON, type WorkflowNodeLines, WorkflowNodeLinesData, WorkflowNodePortsData, WorkflowOperationBaseService, WorkflowOperationBaseServiceImpl, WorkflowPort, WorkflowPortEntity, WorkflowPortType, WorkflowPorts, WorkflowResetLayoutService, WorkflowSelectService, WorkflowSimpleLineContribution, buildGroupJSON, fitView, getAntiOverlapPosition, nanoid, useCurrentDomNode, useCurrentEntity, useNodeRender, usePlaygroundReadonlyState, useWorkflowDocument };
|
package/dist/index.js
CHANGED
|
@@ -59,6 +59,7 @@ __export(src_exports, {
|
|
|
59
59
|
WorkflowSelectService: () => WorkflowSelectService,
|
|
60
60
|
WorkflowSimpleLineContribution: () => WorkflowSimpleLineContribution,
|
|
61
61
|
bindConfigEntity: () => import_core3.bindConfigEntity,
|
|
62
|
+
buildGroupJSON: () => buildGroupJSON,
|
|
62
63
|
compose: () => import_utils.compose,
|
|
63
64
|
composeAsync: () => import_utils.composeAsync,
|
|
64
65
|
delay: () => import_utils4.delay,
|
|
@@ -105,7 +106,7 @@ var import_core25 = require("@flowgram.ai/core");
|
|
|
105
106
|
var import_react2 = require("react");
|
|
106
107
|
var import_reactive = require("@flowgram.ai/reactive");
|
|
107
108
|
var import_node = require("@flowgram.ai/node");
|
|
108
|
-
var
|
|
109
|
+
var import_document13 = require("@flowgram.ai/document");
|
|
109
110
|
var import_core21 = require("@flowgram.ai/core");
|
|
110
111
|
|
|
111
112
|
// src/service/workflow-select-service.ts
|
|
@@ -117,6 +118,34 @@ var import_utils9 = require("@flowgram.ai/utils");
|
|
|
117
118
|
var import_core3 = require("@flowgram.ai/core");
|
|
118
119
|
var import_utils4 = require("@flowgram.ai/utils");
|
|
119
120
|
|
|
121
|
+
// src/utils/build-group-json.ts
|
|
122
|
+
var import_document = require("@flowgram.ai/document");
|
|
123
|
+
var buildGroupJSON = (json) => {
|
|
124
|
+
const { nodes, edges } = json;
|
|
125
|
+
const groupJSONs = nodes.filter(
|
|
126
|
+
(nodeJSON) => nodeJSON.type === import_document.FlowNodeBaseType.GROUP
|
|
127
|
+
);
|
|
128
|
+
const nodeJSONMap = new Map(nodes.map((n) => [n.id, n]));
|
|
129
|
+
const groupNodeJSONs = groupJSONs.map((groupJSON) => {
|
|
130
|
+
const groupBlocks = (groupJSON.data.blockIDs ?? []).map((blockID) => nodeJSONMap.get(blockID)).filter(Boolean);
|
|
131
|
+
const groupEdges = edges?.filter(
|
|
132
|
+
(edge) => groupBlocks.some((block) => block.id === edge.sourceNodeID || block.id === edge.targetNodeID)
|
|
133
|
+
);
|
|
134
|
+
const groupNodeJSON = {
|
|
135
|
+
...groupJSON,
|
|
136
|
+
blocks: groupBlocks,
|
|
137
|
+
edges: groupEdges
|
|
138
|
+
};
|
|
139
|
+
return groupNodeJSON;
|
|
140
|
+
});
|
|
141
|
+
const groupBlockSet = new Set(groupJSONs.map((groupJSON) => groupJSON.data.blockIDs).flat());
|
|
142
|
+
const processedNodes = nodes.filter((nodeJSON) => !groupBlockSet.has(nodeJSON.id)).concat(groupNodeJSONs);
|
|
143
|
+
return {
|
|
144
|
+
nodes: processedNodes,
|
|
145
|
+
edges
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
|
|
120
149
|
// src/utils/nanoid.ts
|
|
121
150
|
var import_nanoid = require("nanoid");
|
|
122
151
|
function nanoid(n) {
|
|
@@ -170,8 +199,8 @@ function domReactToBounds(react) {
|
|
|
170
199
|
}
|
|
171
200
|
|
|
172
201
|
// src/entities/workflow-node-entity.ts
|
|
173
|
-
var
|
|
174
|
-
var WorkflowNodeEntity =
|
|
202
|
+
var import_document2 = require("@flowgram.ai/document");
|
|
203
|
+
var WorkflowNodeEntity = import_document2.FlowNodeEntity;
|
|
175
204
|
|
|
176
205
|
// src/entities/workflow-line-entity.ts
|
|
177
206
|
var import_lodash_es2 = require("lodash-es");
|
|
@@ -180,12 +209,12 @@ var import_core8 = require("@flowgram.ai/core");
|
|
|
180
209
|
|
|
181
210
|
// src/entity-datas/workflow-node-ports-data.ts
|
|
182
211
|
var import_lodash_es = require("lodash-es");
|
|
183
|
-
var
|
|
212
|
+
var import_document4 = require("@flowgram.ai/document");
|
|
184
213
|
var import_core5 = require("@flowgram.ai/core");
|
|
185
214
|
|
|
186
215
|
// src/entities/workflow-port-entity.ts
|
|
187
216
|
var import_utils5 = require("@flowgram.ai/utils");
|
|
188
|
-
var
|
|
217
|
+
var import_document3 = require("@flowgram.ai/document");
|
|
189
218
|
var import_core4 = require("@flowgram.ai/core");
|
|
190
219
|
var PORT_SIZE = 24;
|
|
191
220
|
var WorkflowPortEntity = class extends import_core4.Entity {
|
|
@@ -233,7 +262,7 @@ var WorkflowPortEntity = class extends import_core4.Entity {
|
|
|
233
262
|
}
|
|
234
263
|
get point() {
|
|
235
264
|
const { targetElement } = this;
|
|
236
|
-
const { bounds } = this.node.getData(
|
|
265
|
+
const { bounds } = this.node.getData(import_document3.FlowNodeTransformData);
|
|
237
266
|
if (targetElement) {
|
|
238
267
|
const pos = domReactToBounds(targetElement.getBoundingClientRect()).center;
|
|
239
268
|
return this.entityManager.getEntity(import_core4.PlaygroundConfigEntity).getPosFromMouseEvent({
|
|
@@ -262,7 +291,7 @@ var WorkflowPortEntity = class extends import_core4.Entity {
|
|
|
262
291
|
*/
|
|
263
292
|
get relativePosition() {
|
|
264
293
|
const { point } = this;
|
|
265
|
-
const { bounds } = this.node.getData(
|
|
294
|
+
const { bounds } = this.node.getData(import_document3.FlowNodeTransformData);
|
|
266
295
|
return {
|
|
267
296
|
x: point.x - bounds.x,
|
|
268
297
|
y: point.y - bounds.y
|
|
@@ -372,7 +401,7 @@ var WorkflowNodePortsData = class extends import_core5.EntityData {
|
|
|
372
401
|
* 动态计算点位,通过 dom 的 data-port-key
|
|
373
402
|
*/
|
|
374
403
|
updateDynamicPorts() {
|
|
375
|
-
const domNode = this.entity.getData(
|
|
404
|
+
const domNode = this.entity.getData(import_document4.FlowNodeRenderData).node;
|
|
376
405
|
const elements = domNode.querySelectorAll("[data-port-id]");
|
|
377
406
|
const staticPorts = this._staticPorts;
|
|
378
407
|
const dynamicPorts = [];
|
|
@@ -1215,20 +1244,20 @@ WorkflowHoverService = __decorateClass([
|
|
|
1215
1244
|
var import_nanoid3 = require("nanoid");
|
|
1216
1245
|
var import_inversify6 = require("inversify");
|
|
1217
1246
|
var import_utils16 = require("@flowgram.ai/utils");
|
|
1218
|
-
var import_document8 = require("@flowgram.ai/document");
|
|
1219
1247
|
var import_document9 = require("@flowgram.ai/document");
|
|
1248
|
+
var import_document10 = require("@flowgram.ai/document");
|
|
1220
1249
|
var import_core15 = require("@flowgram.ai/core");
|
|
1221
1250
|
|
|
1222
1251
|
// src/workflow-lines-manager.ts
|
|
1223
1252
|
var import_lodash_es3 = require("lodash-es");
|
|
1224
1253
|
var import_inversify3 = require("inversify");
|
|
1225
1254
|
var import_utils12 = require("@flowgram.ai/utils");
|
|
1226
|
-
var
|
|
1255
|
+
var import_document6 = require("@flowgram.ai/document");
|
|
1227
1256
|
var import_core12 = require("@flowgram.ai/core");
|
|
1228
1257
|
|
|
1229
1258
|
// src/workflow-document-option.ts
|
|
1230
1259
|
var import_form_core2 = require("@flowgram.ai/form-core");
|
|
1231
|
-
var
|
|
1260
|
+
var import_document5 = require("@flowgram.ai/document");
|
|
1232
1261
|
var import_core11 = require("@flowgram.ai/core");
|
|
1233
1262
|
|
|
1234
1263
|
// src/utils/flow-node-form-data.ts
|
|
@@ -1320,7 +1349,7 @@ var WorkflowDocumentOptionsDefault = {
|
|
|
1320
1349
|
const nodeMeta = node.getNodeMeta();
|
|
1321
1350
|
const subCanvas = nodeMeta.subCanvas?.(node);
|
|
1322
1351
|
if (subCanvas?.isCanvas === false) {
|
|
1323
|
-
const canvasNodeTransform = subCanvas.canvasNode.getData(
|
|
1352
|
+
const canvasNodeTransform = subCanvas.canvasNode.getData(import_document5.FlowNodeTransformData);
|
|
1324
1353
|
const { x, y } = canvasNodeTransform.transform.position;
|
|
1325
1354
|
metaData.canvasPosition = { x, y };
|
|
1326
1355
|
}
|
|
@@ -1652,7 +1681,7 @@ var WorkflowLinesManager = class {
|
|
|
1652
1681
|
const allNodes = this.getSortedNodes();
|
|
1653
1682
|
const zoom = this.entityManager.getEntity(import_core12.PlaygroundConfigEntity)?.config?.zoom || 1;
|
|
1654
1683
|
const containNodes = allNodes.map((node) => {
|
|
1655
|
-
const { bounds } = node.getData(
|
|
1684
|
+
const { bounds } = node.getData(import_document6.FlowNodeTransformData);
|
|
1656
1685
|
if (bounds.clone().pad(4 / zoom).contains(pos.x, pos.y)) {
|
|
1657
1686
|
return node;
|
|
1658
1687
|
}
|
|
@@ -1660,7 +1689,7 @@ var WorkflowLinesManager = class {
|
|
|
1660
1689
|
return containNodes;
|
|
1661
1690
|
}
|
|
1662
1691
|
getNodeIndex(node) {
|
|
1663
|
-
const nodeRenderData = node.getData(
|
|
1692
|
+
const nodeRenderData = node.getData(import_document6.FlowNodeRenderData);
|
|
1664
1693
|
return nodeRenderData.stackIndex;
|
|
1665
1694
|
}
|
|
1666
1695
|
};
|
|
@@ -1685,13 +1714,13 @@ var import_nanoid2 = require("nanoid");
|
|
|
1685
1714
|
var import_inversify5 = require("inversify");
|
|
1686
1715
|
var import_utils14 = require("@flowgram.ai/utils");
|
|
1687
1716
|
var import_form_core3 = require("@flowgram.ai/form-core");
|
|
1688
|
-
var
|
|
1717
|
+
var import_document8 = require("@flowgram.ai/document");
|
|
1689
1718
|
var import_core14 = require("@flowgram.ai/core");
|
|
1690
1719
|
|
|
1691
1720
|
// src/layout/free-layout.ts
|
|
1692
1721
|
var import_inversify4 = require("inversify");
|
|
1693
1722
|
var import_utils13 = require("@flowgram.ai/utils");
|
|
1694
|
-
var
|
|
1723
|
+
var import_document7 = require("@flowgram.ai/document");
|
|
1695
1724
|
var import_core13 = require("@flowgram.ai/core");
|
|
1696
1725
|
var FREE_LAYOUT_KEY = "free-layout";
|
|
1697
1726
|
var FreeLayout = class {
|
|
@@ -1705,12 +1734,12 @@ var FreeLayout = class {
|
|
|
1705
1734
|
* 更新布局
|
|
1706
1735
|
*/
|
|
1707
1736
|
update() {
|
|
1708
|
-
if (this.document.root.getData(
|
|
1737
|
+
if (this.document.root.getData(import_document7.FlowNodeTransformData)?.localDirty) {
|
|
1709
1738
|
this.document.root.clearMemoGlobal();
|
|
1710
1739
|
}
|
|
1711
1740
|
}
|
|
1712
1741
|
syncTransform(node) {
|
|
1713
|
-
const transform = node.getData(
|
|
1742
|
+
const transform = node.getData(import_document7.FlowNodeTransformData);
|
|
1714
1743
|
if (!transform.localDirty) {
|
|
1715
1744
|
return;
|
|
1716
1745
|
}
|
|
@@ -1724,7 +1753,7 @@ var FreeLayout = class {
|
|
|
1724
1753
|
}
|
|
1725
1754
|
node.parent.clearMemoGlobal();
|
|
1726
1755
|
node.parent.clearMemoLocal();
|
|
1727
|
-
const parentTransform = node.parent.getData(
|
|
1756
|
+
const parentTransform = node.parent.getData(import_document7.FlowNodeTransformData);
|
|
1728
1757
|
parentTransform.transform.fireChange();
|
|
1729
1758
|
}
|
|
1730
1759
|
/**
|
|
@@ -1748,7 +1777,7 @@ var FreeLayout = class {
|
|
|
1748
1777
|
*/
|
|
1749
1778
|
getPadding(node) {
|
|
1750
1779
|
const { padding } = node.getNodeMeta();
|
|
1751
|
-
const transform = node.getData(
|
|
1780
|
+
const transform = node.getData(import_document7.FlowNodeTransformData);
|
|
1752
1781
|
if (padding) {
|
|
1753
1782
|
return typeof padding === "function" ? padding(transform) : padding;
|
|
1754
1783
|
}
|
|
@@ -1816,7 +1845,7 @@ __decorateClass([
|
|
|
1816
1845
|
(0, import_inversify4.inject)(import_core13.PlaygroundConfigEntity)
|
|
1817
1846
|
], FreeLayout.prototype, "playgroundConfig", 2);
|
|
1818
1847
|
__decorateClass([
|
|
1819
|
-
(0, import_inversify4.inject)(
|
|
1848
|
+
(0, import_inversify4.inject)(import_document7.FlowDocumentProvider)
|
|
1820
1849
|
], FreeLayout.prototype, "documentProvider", 2);
|
|
1821
1850
|
FreeLayout = __decorateClass([
|
|
1822
1851
|
(0, import_inversify4.injectable)()
|
|
@@ -1825,7 +1854,7 @@ FreeLayout = __decorateClass([
|
|
|
1825
1854
|
// src/workflow-document.ts
|
|
1826
1855
|
var nanoid2 = (0, import_nanoid2.customAlphabet)("1234567890", 5);
|
|
1827
1856
|
var WorkflowDocumentProvider = Symbol("WorkflowDocumentProvider");
|
|
1828
|
-
var WorkflowDocument = class extends
|
|
1857
|
+
var WorkflowDocument = class extends import_document8.FlowDocument {
|
|
1829
1858
|
constructor() {
|
|
1830
1859
|
super(...arguments);
|
|
1831
1860
|
this._onContentChangeEmitter = new import_utils14.Emitter();
|
|
@@ -1922,7 +1951,7 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
1922
1951
|
const { formMeta } = registry;
|
|
1923
1952
|
const meta = node.getNodeMeta();
|
|
1924
1953
|
const formData = getFlowNodeFormData(node);
|
|
1925
|
-
const transform = node.getData(
|
|
1954
|
+
const transform = node.getData(import_document8.FlowNodeTransformData);
|
|
1926
1955
|
const freeLayout = this.layout;
|
|
1927
1956
|
if (!isExistedNode) {
|
|
1928
1957
|
transform.onDataChange(() => {
|
|
@@ -1964,10 +1993,10 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
1964
1993
|
toJSON: () => this.toNodeJSON(node)
|
|
1965
1994
|
});
|
|
1966
1995
|
node.onDispose(() => {
|
|
1967
|
-
if (!node.parent || node.parent.flowNodeType ===
|
|
1996
|
+
if (!node.parent || node.parent.flowNodeType === import_document8.FlowNodeBaseType.ROOT) {
|
|
1968
1997
|
return;
|
|
1969
1998
|
}
|
|
1970
|
-
const parentTransform = node.parent.getData(
|
|
1999
|
+
const parentTransform = node.parent.getData(import_document8.FlowNodeTransformData);
|
|
1971
2000
|
parentTransform.fireChange();
|
|
1972
2001
|
});
|
|
1973
2002
|
let lastDeleteNodeData;
|
|
@@ -2132,10 +2161,10 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
2132
2161
|
);
|
|
2133
2162
|
}
|
|
2134
2163
|
getAllNodes() {
|
|
2135
|
-
return this.entityManager.getEntities(WorkflowNodeEntity).filter((n) => n.id !==
|
|
2164
|
+
return this.entityManager.getEntities(WorkflowNodeEntity).filter((n) => n.id !== import_document8.FlowNodeBaseType.ROOT);
|
|
2136
2165
|
}
|
|
2137
2166
|
getAllPorts() {
|
|
2138
|
-
return this.entityManager.getEntities(WorkflowPortEntity).filter((p) => p.node.id !==
|
|
2167
|
+
return this.entityManager.getEntities(WorkflowPortEntity).filter((p) => p.node.id !== import_document8.FlowNodeBaseType.ROOT);
|
|
2139
2168
|
}
|
|
2140
2169
|
/**
|
|
2141
2170
|
* 获取画布中的非游离节点
|
|
@@ -2290,10 +2319,11 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
2290
2319
|
*/
|
|
2291
2320
|
toJSON() {
|
|
2292
2321
|
const rootJSON = this.toNodeJSON(this.root);
|
|
2293
|
-
|
|
2322
|
+
const json = {
|
|
2294
2323
|
nodes: rootJSON.blocks ?? [],
|
|
2295
2324
|
edges: rootJSON.edges ?? []
|
|
2296
2325
|
};
|
|
2326
|
+
return json;
|
|
2297
2327
|
}
|
|
2298
2328
|
dispose() {
|
|
2299
2329
|
super.dispose();
|
|
@@ -2305,10 +2335,11 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
2305
2335
|
renderJSON(json, options) {
|
|
2306
2336
|
const { parent = this.root, isClone = false } = options ?? {};
|
|
2307
2337
|
const containerID = this.getNodeSubCanvas(parent)?.canvasNode.id ?? parent.id;
|
|
2308
|
-
const
|
|
2338
|
+
const processedJSON = buildGroupJSON(json);
|
|
2339
|
+
const nodes = processedJSON.nodes.map(
|
|
2309
2340
|
(nodeJSON) => this.createWorkflowNode(nodeJSON, isClone, containerID)
|
|
2310
2341
|
);
|
|
2311
|
-
const edges =
|
|
2342
|
+
const edges = processedJSON.edges.map((edge) => this.createWorkflowLine(edge, containerID)).filter(Boolean);
|
|
2312
2343
|
return { nodes, edges };
|
|
2313
2344
|
}
|
|
2314
2345
|
getNodeSubCanvas(node) {
|
|
@@ -2318,13 +2349,19 @@ var WorkflowDocument = class extends import_document7.FlowDocument {
|
|
|
2318
2349
|
return subCanvas;
|
|
2319
2350
|
}
|
|
2320
2351
|
getNodeChildren(node) {
|
|
2321
|
-
if (!node) return [];
|
|
2352
|
+
if (!node || node.flowNodeType === import_document8.FlowNodeBaseType.GROUP) return [];
|
|
2322
2353
|
const subCanvas = this.getNodeSubCanvas(node);
|
|
2323
|
-
const
|
|
2324
|
-
const
|
|
2354
|
+
const realChildren = subCanvas ? subCanvas.canvasNode.blocks : node.blocks;
|
|
2355
|
+
const childrenWithoutSubCanvas = realChildren.filter((child) => {
|
|
2325
2356
|
const childMeta = child.getNodeMeta();
|
|
2326
2357
|
return !childMeta.subCanvas?.(node)?.isCanvas;
|
|
2327
2358
|
}).filter(Boolean);
|
|
2359
|
+
const children = childrenWithoutSubCanvas.map((child) => {
|
|
2360
|
+
if (child.flowNodeType === import_document8.FlowNodeBaseType.GROUP) {
|
|
2361
|
+
return [child, ...child.blocks];
|
|
2362
|
+
}
|
|
2363
|
+
return child;
|
|
2364
|
+
}).flat();
|
|
2328
2365
|
return children;
|
|
2329
2366
|
}
|
|
2330
2367
|
toLineJSON(line) {
|
|
@@ -2456,7 +2493,7 @@ var WorkflowDragService = class {
|
|
|
2456
2493
|
}
|
|
2457
2494
|
this.isDragging = true;
|
|
2458
2495
|
const sameParent = this.childrenOfContainer(selectedNodes);
|
|
2459
|
-
if (sameParent && sameParent.flowNodeType !==
|
|
2496
|
+
if (sameParent && sameParent.flowNodeType !== import_document10.FlowNodeBaseType.ROOT) {
|
|
2460
2497
|
selectedNodes = [sameParent];
|
|
2461
2498
|
}
|
|
2462
2499
|
let startPosition = this.getNodesPosition(selectedNodes);
|
|
@@ -2626,7 +2663,7 @@ var WorkflowDragService = class {
|
|
|
2626
2663
|
if (!mousePos) {
|
|
2627
2664
|
return { x: 0, y: 0 };
|
|
2628
2665
|
}
|
|
2629
|
-
if (!subNodeType || !containerNode || containerNode.flowNodeType ===
|
|
2666
|
+
if (!subNodeType || !containerNode || containerNode.flowNodeType === import_document10.FlowNodeBaseType.ROOT) {
|
|
2630
2667
|
return mousePos;
|
|
2631
2668
|
}
|
|
2632
2669
|
const isParentEmpty = !containerNode.children || containerNode.children.length === 0;
|
|
@@ -2712,7 +2749,7 @@ var WorkflowDragService = class {
|
|
|
2712
2749
|
return offset;
|
|
2713
2750
|
}
|
|
2714
2751
|
updateDroppableTransforms() {
|
|
2715
|
-
this._droppableTransforms = this.document.getRenderDatas(
|
|
2752
|
+
this._droppableTransforms = this.document.getRenderDatas(import_document9.FlowNodeTransformData, false).filter((transform) => {
|
|
2716
2753
|
const { entity } = transform;
|
|
2717
2754
|
if (entity.originParent) {
|
|
2718
2755
|
return this.nodeSelectable(entity) && this.nodeSelectable(entity.originParent);
|
|
@@ -2729,7 +2766,7 @@ var WorkflowDragService = class {
|
|
|
2729
2766
|
*/
|
|
2730
2767
|
getNodesPosition(nodes) {
|
|
2731
2768
|
const selectedBounds = import_utils16.Rectangle.enlarge(
|
|
2732
|
-
nodes.map((n) => n.getData(
|
|
2769
|
+
nodes.map((n) => n.getData(import_document9.FlowNodeTransformData).bounds)
|
|
2733
2770
|
);
|
|
2734
2771
|
const position = {
|
|
2735
2772
|
x: selectedBounds.x,
|
|
@@ -3009,7 +3046,7 @@ __decorateClass([
|
|
|
3009
3046
|
(0, import_inversify6.inject)(WorkflowSelectService)
|
|
3010
3047
|
], WorkflowDragService.prototype, "selectService", 2);
|
|
3011
3048
|
__decorateClass([
|
|
3012
|
-
(0, import_inversify6.inject)(
|
|
3049
|
+
(0, import_inversify6.inject)(import_document9.FlowOperationBaseService)
|
|
3013
3050
|
], WorkflowDragService.prototype, "operationService", 2);
|
|
3014
3051
|
__decorateClass([
|
|
3015
3052
|
(0, import_inversify6.inject)(WorkflowDocumentOptions)
|
|
@@ -3028,13 +3065,13 @@ var import_core18 = require("@flowgram.ai/core");
|
|
|
3028
3065
|
var import_utils17 = require("@flowgram.ai/utils");
|
|
3029
3066
|
|
|
3030
3067
|
// src/utils/layout-to-positions.ts
|
|
3031
|
-
var
|
|
3068
|
+
var import_document11 = require("@flowgram.ai/document");
|
|
3032
3069
|
var import_core16 = require("@flowgram.ai/core");
|
|
3033
3070
|
var layoutToPositions = async (nodes, nodePositionMap) => {
|
|
3034
3071
|
const newNodePositionMap = {};
|
|
3035
3072
|
nodes.forEach((node) => {
|
|
3036
3073
|
const transform = node.getData(import_core16.TransformData);
|
|
3037
|
-
const nodeTransform = node.getData(
|
|
3074
|
+
const nodeTransform = node.getData(import_document11.FlowNodeTransformData);
|
|
3038
3075
|
newNodePositionMap[node.id] = {
|
|
3039
3076
|
x: transform.position.x,
|
|
3040
3077
|
y: transform.position.y + nodeTransform.bounds.height / 2
|
|
@@ -3130,9 +3167,9 @@ WorkflowResetLayoutService = __decorateClass([
|
|
|
3130
3167
|
// src/service/workflow-operation-base-service.ts
|
|
3131
3168
|
var import_inversify8 = require("inversify");
|
|
3132
3169
|
var import_utils19 = require("@flowgram.ai/utils");
|
|
3133
|
-
var
|
|
3170
|
+
var import_document12 = require("@flowgram.ai/document");
|
|
3134
3171
|
var import_core19 = require("@flowgram.ai/core");
|
|
3135
|
-
var WorkflowOperationBaseServiceImpl = class extends
|
|
3172
|
+
var WorkflowOperationBaseServiceImpl = class extends import_document12.FlowOperationBaseServiceImpl {
|
|
3136
3173
|
constructor() {
|
|
3137
3174
|
super(...arguments);
|
|
3138
3175
|
this.onNodePostionUpdateEmitter = new import_utils19.Emitter();
|
|
@@ -3184,7 +3221,7 @@ function checkTargetDraggable(el) {
|
|
|
3184
3221
|
}
|
|
3185
3222
|
function useNodeRender(nodeFromProps) {
|
|
3186
3223
|
const node = nodeFromProps || (0, import_react2.useContext)(import_core21.PlaygroundEntityContext);
|
|
3187
|
-
const renderData = node.getData(
|
|
3224
|
+
const renderData = node.getData(import_document13.FlowNodeRenderData);
|
|
3188
3225
|
const portsData = node.getData(WorkflowNodePortsData);
|
|
3189
3226
|
const readonly = usePlaygroundReadonlyState();
|
|
3190
3227
|
const dragService = (0, import_core21.useService)(WorkflowDragService);
|
|
@@ -3351,11 +3388,11 @@ function useNodeRender(nodeFromProps) {
|
|
|
3351
3388
|
}
|
|
3352
3389
|
|
|
3353
3390
|
// src/hooks/use-current-dom-node.ts
|
|
3354
|
-
var
|
|
3391
|
+
var import_document14 = require("@flowgram.ai/document");
|
|
3355
3392
|
var import_core22 = require("@flowgram.ai/core");
|
|
3356
3393
|
function useCurrentDomNode() {
|
|
3357
3394
|
const entity = (0, import_core22.useEntityFromContext)();
|
|
3358
|
-
const renderData = entity.getData(
|
|
3395
|
+
const renderData = entity.getData(import_document14.FlowNodeRenderData);
|
|
3359
3396
|
return renderData.node;
|
|
3360
3397
|
}
|
|
3361
3398
|
|
|
@@ -3386,16 +3423,16 @@ var InteractiveType = /* @__PURE__ */ ((InteractiveType2) => {
|
|
|
3386
3423
|
// src/workflow-document-container-module.ts
|
|
3387
3424
|
var import_inversify10 = require("inversify");
|
|
3388
3425
|
var import_utils20 = require("@flowgram.ai/utils");
|
|
3389
|
-
var
|
|
3426
|
+
var import_document16 = require("@flowgram.ai/document");
|
|
3390
3427
|
|
|
3391
3428
|
// src/workflow-document-contribution.ts
|
|
3392
3429
|
var import_inversify9 = require("inversify");
|
|
3393
|
-
var
|
|
3430
|
+
var import_document15 = require("@flowgram.ai/document");
|
|
3394
3431
|
var WorkflowDocumentContribution = class {
|
|
3395
3432
|
registerDocument(document2) {
|
|
3396
3433
|
document2.registerNodeDatas(
|
|
3397
|
-
|
|
3398
|
-
|
|
3434
|
+
import_document15.FlowNodeTransformData,
|
|
3435
|
+
import_document15.FlowNodeRenderData,
|
|
3399
3436
|
WorkflowNodePortsData,
|
|
3400
3437
|
WorkflowNodeLinesData
|
|
3401
3438
|
);
|
|
@@ -3430,11 +3467,11 @@ var WorkflowDocumentContainerModule = new import_inversify10.ContainerModule(
|
|
|
3430
3467
|
bind(WorkflowResetLayoutService).toSelf().inSingletonScope();
|
|
3431
3468
|
bind(WorkflowOperationBaseService).to(WorkflowOperationBaseServiceImpl).inSingletonScope();
|
|
3432
3469
|
bind(URLParams).toDynamicValue(() => getUrlParams()).inSingletonScope();
|
|
3433
|
-
(0, import_utils20.bindContributions)(bind, WorkflowDocumentContribution, [
|
|
3470
|
+
(0, import_utils20.bindContributions)(bind, WorkflowDocumentContribution, [import_document16.FlowDocumentContribution]);
|
|
3434
3471
|
bind(WorkflowDocumentOptions).toConstantValue({
|
|
3435
3472
|
...WorkflowDocumentOptionsDefault
|
|
3436
3473
|
});
|
|
3437
|
-
rebind(
|
|
3474
|
+
rebind(import_document16.FlowDocument).toService(WorkflowDocument);
|
|
3438
3475
|
bind(WorkflowDocumentProvider).toDynamicValue((ctx) => () => ctx.container.get(WorkflowDocument)).inSingletonScope();
|
|
3439
3476
|
}
|
|
3440
3477
|
);
|
|
@@ -3546,6 +3583,7 @@ WorkflowSimpleLineContribution.type = "WorkflowSimpleLineContribution";
|
|
|
3546
3583
|
WorkflowSelectService,
|
|
3547
3584
|
WorkflowSimpleLineContribution,
|
|
3548
3585
|
bindConfigEntity,
|
|
3586
|
+
buildGroupJSON,
|
|
3549
3587
|
compose,
|
|
3550
3588
|
composeAsync,
|
|
3551
3589
|
delay,
|