@flowgram.ai/free-layout-core 0.1.0-alpha.7 → 0.1.0-alpha.9

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.
@@ -0,0 +1,21 @@
1
+ // src/typings/workflow-line.ts
2
+ var LineType = /* @__PURE__ */ ((LineType2) => {
3
+ LineType2[LineType2["BEZIER"] = 0] = "BEZIER";
4
+ LineType2[LineType2["LINE_CHART"] = 1] = "LINE_CHART";
5
+ return LineType2;
6
+ })(LineType || {});
7
+ var LineColors = /* @__PURE__ */ ((LineColors2) => {
8
+ LineColors2["HIDDEN"] = "var(--g-line-color-hidden,transparent)";
9
+ LineColors2["DEFUALT"] = "var(--g-line-color-default,#4d53e8)";
10
+ LineColors2["DRAWING"] = "var(--g-line-color-drawing, #5DD6E3)";
11
+ LineColors2["HOVER"] = "var(--g-line-color-hover,#37d0ff)";
12
+ LineColors2["SELECTED"] = "var(--g-line-color-selected,#37d0ff)";
13
+ LineColors2["ERROR"] = "var(--g-line-color-error,red)";
14
+ return LineColors2;
15
+ })(LineColors || {});
16
+
17
+ export {
18
+ LineType,
19
+ LineColors
20
+ };
21
+ //# sourceMappingURL=chunk-6DKK25L7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/typings/workflow-line.ts"],"sourcesContent":["import 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}\n\nexport enum LineColors {\n HIDDEN = 'var(--g-line-color-hidden,transparent)', // 隐藏线条\n DEFUALT = 'var(--g-line-color-default,#4d53e8)',\n DRAWING = 'var(--g-line-color-drawing, #5DD6E3)', // '#b5bbf8', // '#9197F1',\n HOVER = 'var(--g-line-color-hover,#37d0ff)',\n SELECTED = 'var(--g-line-color-selected,#37d0ff)',\n ERROR = 'var(--g-line-color-error,red)',\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":";AAIO,IAAK,WAAL,kBAAKA,cAAL;AACL,EAAAA,oBAAA;AACA,EAAAA,oBAAA;AAFU,SAAAA;AAAA,GAAA;AAqBL,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;AANE,SAAAA;AAAA,GAAA;","names":["LineType","LineColors"]}
package/dist/esm/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  LineColors,
13
13
  LineType
14
- } from "./chunk-PT4ZVDZZ.js";
14
+ } from "./chunk-6DKK25L7.js";
15
15
  import "./chunk-DDJTYHXN.js";
16
16
  import {
17
17
  WorkflowOperationBaseService
@@ -1043,8 +1043,8 @@ WorkflowSelectService = __decorateClass([
1043
1043
 
1044
1044
  // src/service/workflow-hover-service.ts
1045
1045
  import { inject as inject2, injectable as injectable2 } from "inversify";
1046
- import { EntityManager } from "@flowgram.ai/core";
1047
1046
  import { Emitter as Emitter2 } from "@flowgram.ai/utils";
1047
+ import { EntityManager } from "@flowgram.ai/core";
1048
1048
  var WorkflowHoverService = class {
1049
1049
  constructor() {
1050
1050
  this.onHoveredChangeEmitter = new Emitter2();
@@ -1125,7 +1125,7 @@ import {
1125
1125
  // src/workflow-lines-manager.ts
1126
1126
  import { last } from "lodash-es";
1127
1127
  import { inject as inject3, injectable as injectable3 } from "inversify";
1128
- import { Disposable as Disposable2, DisposableCollection, Emitter as Emitter3 } from "@flowgram.ai/utils";
1128
+ import { DisposableCollection, Emitter as Emitter3 } from "@flowgram.ai/utils";
1129
1129
  import { FlowNodeRenderData as FlowNodeRenderData2, FlowNodeTransformData as FlowNodeTransformData3 } from "@flowgram.ai/document";
1130
1130
  import { EntityManager as EntityManager2, PlaygroundConfigEntity as PlaygroundConfigEntity2, TransformData as TransformData6 } from "@flowgram.ai/core";
1131
1131
 
@@ -1144,19 +1144,23 @@ function toFormJSON(node) {
1144
1144
  if (!formData || !node.getNodeRegistry().formMeta) return void 0;
1145
1145
  return formData.toJSON();
1146
1146
  }
1147
- function initFormDataFromJSON(node, json) {
1147
+ function initFormDataFromJSON(node, json, isFirstCreate) {
1148
1148
  const formData = node.getData(FlowNodeFormData);
1149
1149
  const registry = node.getNodeRegistry();
1150
1150
  const { formMeta } = registry;
1151
1151
  if (formData && formMeta) {
1152
- formData.createForm(formMeta, json.data);
1153
- formData.onDataChange(() => {
1154
- node.document.fireContentChange({
1155
- type: "NODE_DATA_CHANGE" /* NODE_DATA_CHANGE */,
1156
- toJSON: () => formData.toJSON(),
1157
- entity: node
1152
+ if (isFirstCreate) {
1153
+ formData.createForm(formMeta, json.data);
1154
+ formData.onDataChange(() => {
1155
+ node.document.fireContentChange({
1156
+ type: "NODE_DATA_CHANGE" /* NODE_DATA_CHANGE */,
1157
+ toJSON: () => formData.toJSON(),
1158
+ entity: node
1159
+ });
1158
1160
  });
1159
- });
1161
+ } else {
1162
+ formData.updateFormValues(json.data);
1163
+ }
1160
1164
  }
1161
1165
  }
1162
1166
 
@@ -1167,8 +1171,8 @@ var WorkflowDocumentOptionsDefault = {
1167
1171
  grab: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC40ODczIDIuNjIzNzhDOS45MDczMSAyLjYyMzc4IDkuNDM3MTMgMy4wOTM5NiA5LjQzNzEzIDMuNjczOTZWNS4xNDM3NkM5LjM5NDI4IDQuNDAyNzQgOC43Nzk3OCAzLjgxNTA0IDguMDI4MDIgMy44MTUwNEM3LjI0ODQ4IDMuODE1MDQgNi42MTY1MyA0LjQ0Njk5IDYuNjE2NTMgNS4yMjY1M1YxMS44Mjg5TDUuNjc0MTggMTEuMDA0OUM1LjE1NDg3IDEwLjU1MDkgNC40MDk1IDEwLjQ2MzYgMy43OTkzOCAxMC43ODU1TDMuNjk2OTQgMTAuODM5NkMzLjA2MjE3IDExLjE3NDUgMi45MjI2IDEyLjAyMjggMy40MTY2MiAxMi41NDM0TDcuMzM5NTkgMTYuNjc3NVYxNy4zMjU5QzcuMzM5NTkgMTcuNzg2MiA3LjcxMjY5IDE4LjE1OTMgOC4xNzI5MiAxOC4xNTkzSDEzLjgwODRDMTQuMjY4NyAxOC4xNTkzIDE0LjY0MTcgMTcuNzg2MiAxNC42NDE3IDE3LjMyNTlWMTYuNzkzNUMxNS44MDk0IDE1LjY0ODUgMTYuNDY3MyAxNC4wODE5IDE2LjQ2NzMgMTIuNDQ2NVYxMS40OTY3TDE2LjQ2NzEgNi42MzY4NUMxNi40NjcxIDUuOTU2MyAxNS45MTU0IDUuNDA0NjEgMTUuMjM0OCA1LjQwNDYxQzE0LjU1NDMgNS40MDQ2MSAxNC4wMDI2IDUuOTU2MyAxNC4wMDI2IDYuNjM2ODVMMTQuMDAyMSA1LjA0NzI4QzE0LjAwMjEgNC4zNjY3MyAxMy40NTA0IDMuODE1MDQgMTIuNzY5OCAzLjgxNTA0QzEyLjA4OTMgMy44MTUwNCAxMS41Mzc2IDQuMzY2NzMgMTEuNTM3NiA1LjA0NzI4TDExLjUzNzUgMy42NzM5NUMxMS41Mzc1IDMuMDkzOTYgMTEuMDY3MyAyLjYyMzc4IDEwLjQ4NzMgMi42MjM3OFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNDg3NCAxLjM3NDAyQzExLjM2MTIgMS4zNzQwMiAxMi4xMjExIDEuODYxMTggMTIuNTEwNSAyLjU3ODY4QzEyLjU5NTggMi41Njk4MyAxMi42ODIzIDIuNTY1MjggMTIuNzcgMi41NjUyOEMxMy44Mjc4IDIuNTY1MjggMTQuNzMxMSAzLjIyNzAxIDE1LjA4ODUgNC4xNTkxMUMxNS4xMzcgNC4xNTYyOSAxNS4xODU4IDQuMTU0ODYgMTUuMjM1IDQuMTU0ODZDMTYuNjA1OSA0LjE1NDg2IDE3LjcxNzIgNS4yNjYxOSAxNy43MTcyIDYuNjM3MDlMMTcuNzE3NCAxMi40NDY3QzE3LjcxNzQgMTQuMjM1NSAxNy4wNjQ0IDE1Ljk1NTkgMTUuODkxOSAxNy4yOTA0VjE3LjMyNjJDMTUuODkxOSAxOC40NzY4IDE0Ljk1OTEgMTkuNDA5NSAxMy44MDg1IDE5LjQwOTVIOC4xNzMwNkM3LjAyMjQ3IDE5LjQwOTUgNi4wODk3MyAxOC40NzY4IDYuMDg5NzMgMTcuMzI2MlYxNy4xNzY0TDIuNTEwMDMgMTMuNDA0MUMxLjQ0NTk5IDEyLjI4MjggMS43NDY2IDEwLjQ1NTUgMy4xMTM3OSA5LjczNDI0TDMuMjE2MjQgOS42ODAxOUMzLjg5MTY4IDkuMzIzODMgNC42NjE4NSA5LjI1NDAxIDUuMzY2NjYgOS40NTE5OFY1LjIyNjc4QzUuMzY2NjYgMy43NTY4NyA2LjU1ODI2IDIuNTY1MjggOC4wMjgxNiAyLjU2NTI4QzguMTcyOTMgMi41NjUyOCA4LjMxNDk5IDIuNTc2ODQgOC40NTM0NyAyLjU5OTA3QzguODM5NDMgMS44NzA0MiA5LjYwNTQ2IDEuMzc0MDIgMTAuNDg3NCAxLjM3NDAyWk0xMi40NDc2IDMuODU3ODdWOS40NzY0NkMxMi40NDc2IDkuNzI4NTIgMTIuMjQzMyA5LjkzMjg1IDExLjk5MTMgOS45MzI4NUMxMS43MzkyIDkuOTMyODUgMTEuNTM0OSA5LjcyODUyIDExLjUzNDkgOS40NzY0NlYzLjc5NjU1QzExLjUzNDkgMy43Nzk1NiAxMS41MzU4IDMuNzYyNzcgMTEuNTM3NiAzLjc0NjI2VjMuNjc0MkMxMS41Mzc2IDMuNDMyODIgMTEuNDU2MiAzLjIxMDQ2IDExLjMxOTMgMy4wMzMwOUMxMS4xMjcyIDIuNzg0MjggMTAuODI2MSAyLjYyNDAyIDEwLjQ4NzQgMi42MjQwMkMxMC4xMjM4IDIuNjI0MDIgOS44MDMzMiAyLjgwODg2IDkuNjE0ODMgMy4wODk3QzkuNTAyNjkgMy4yNTY3OSA5LjQzNzI2IDMuNDU3ODUgOS40MzcyNiAzLjY3NDJWMy43ODU3M0M5LjQzNzM1IDMuNzg5MzMgOS40MzczOSAzLjc5Mjk0IDkuNDM3MzkgMy43OTY1NVY5LjkwMTdDOS40MzczOSAxMC4xNTM3IDkuMjMzMDYgMTAuMzU4MSA4Ljk4MTAxIDEwLjM1ODFDOC43Mjg5NSAxMC4zNTgxIDguNTI0NjIgMTAuMTUzNyA4LjUyNDYyIDkuOTAxN1YzLjkwNTA3QzguNDE3NzMgMy44NjQ5IDguMzA0NjggMy44MzczMiA4LjE4NzI2IDMuODI0MTVDOC4xMzUwNCAzLjgxODI5IDguMDgxOTUgMy44MTUyOCA4LjAyODE2IDMuODE1MjhDNy4yNDg2MSAzLjgxNTI4IDYuNjE2NjYgNC40NDcyMyA2LjYxNjY2IDUuMjI2NzhWMTEuODI5Mkw1LjY3NDMxIDExLjAwNTJDNS41Nzg2OCAxMC45MjE2IDUuNDc1MzcgMTAuODUwNCA1LjM2NjY2IDEwLjc5MTlDNC44ODUwNiAxMC41MzI5IDQuMjk3MjggMTAuNTIzMSAzLjc5OTUyIDEwLjc4NThMMy42OTcwNyAxMC44Mzk4QzMuMDYyMzEgMTEuMTc0NyAyLjkyMjczIDEyLjAyMzEgMy40MTY3NSAxMi41NDM3TDcuMzM5NzMgMTYuNjc3N1YxNy4zMjYyQzcuMzM5NzMgMTcuNzg2NCA3LjcxMjgyIDE4LjE1OTUgOC4xNzMwNiAxOC4xNTk1SDEzLjgwODVDMTQuMjY4OCAxOC4xNTk1IDE0LjY0MTkgMTcuNzg2NCAxNC42NDE5IDE3LjMyNjJWMTYuNzkzOEMxNS43Mzc5IDE1LjcxOSAxNi4zODQ3IDE0LjI3MjggMTYuNDYgMTIuNzQ3QzE2LjQ2NDEgMTIuNjY0MSAxNi40NjY1IDEyLjU4MDkgMTYuNDY3MiAxMi40OTc1TDE2LjQ2NzQgMTIuNDQ2N0wxNi40NjcyIDYuNjM3MDlDMTYuNDY3MiA1Ljk2MjMgMTUuOTI0OCA1LjQxNDE5IDE1LjI1MjIgNS40MDQ5N0wxNS4yMzUgNS40MDQ4NkMxNS4xMjQ2IDUuNDA0ODYgMTUuMDE3NyA1LjQxOTM2IDE0LjkxNTkgNS40NDY1NlY5LjYwMjI2QzE0LjkxNTkgOS44NTQzMSAxNC43MTE2IDEwLjA1ODYgMTQuNDU5NSAxMC4wNTg2QzE0LjIwNzUgMTAuMDU4NiAxNC4wMDMxIDkuODU0MzEgMTQuMDAzMSA5LjYwMjI2VjYuNjA1MTRDMTQuMDAyOSA2LjYxNTc2IDE0LjAwMjcgNi42MjY0MSAxNC4wMDI3IDYuNjM3MDlWOS4yNzcwNUwxNC4wMDIyIDUuMDQ3NTJDMTQuMDAyMiA0Ljg2OTEzIDEzLjk2NDMgNC42OTk2IDEzLjg5NjEgNC41NDY1M0MxMy43MDY0IDQuMTIwNzIgMTMuMjgyMiAzLjgyMjM1IDEyLjc4NzYgMy44MTU0MUwxMi43NyAzLjgxNTI4QzEyLjY1ODQgMy44MTUyOCAxMi41NTA0IDMuODMwMSAxMi40NDc2IDMuODU3ODdaIiBmaWxsPSIjMUQxQzIzIi8+Cjwvc3ZnPg=="), auto',
1168
1172
  grabbing: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjYxODE3IDUuNTk4NzVDNi42MTgxNyA0LjgxOTIgNy4yNTAxMiA0LjE4NzI2IDguMDI5NjcgNC4xODcyNkM4Ljc3ODczIDQuMTg3MjYgOS4zOTE1MiA0Ljc3MDc1IDkuNDM4MjkgNS41MDgwMUM5LjQ1OTkyIDQuOTQ3MSA5LjkyMTQ3IDQuNDk5MDIgMTAuNDg3NyA0LjQ5OTAyQzExLjA2NzcgNC40OTkwMiAxMS41Mzc4IDQuOTY5MiAxMS41Mzc4IDUuNTQ5MTlWOC43NjI0NkwxMS41Mzc5IDYuNzExNUMxMS41Mzc5IDYuMDMwOTUgMTIuMDg5NiA1LjQ3OTI2IDEyLjc3MDIgNS40NzkyNkMxMy40NTA3IDUuNDc5MjYgMTQuMDAyNCA2LjAzMDk1IDE0LjAwMjQgNi43MTE1TDE0LjAwMjQgOC43NjI0NkwxNC4wMDI5IDguMDE5ODNDMTQuMDAyOSA3LjMzOTI5IDE0LjU1NDYgNi43ODc1OSAxNS4yMzUyIDYuNzg3NTlDMTUuOTE1NyA2Ljc4NzU5IDE2LjQ2NzQgNy4zMzkyOCAxNi40Njc0IDguMDE5ODNWMTEuNDk3TDE2LjQ2NzUgMTIuNDQ2N0MxNi40Njc1IDE0LjA4MjEgMTUuODA5NiAxNS42NDg3IDE0LjY0MiAxNi43OTM4VjE3LjMyNjJDMTQuNjQyIDE3Ljc4NjQgMTQuMjY4OSAxOC4xNTk1IDEzLjgwODcgMTguMTU5NUg4LjE3MzE3QzcuNzEyOTMgMTguMTU5NSA3LjMzOTg0IDE3Ljc4NjQgNy4zMzk4NCAxNy4zMjYyVjE1Ljk0MjRMNS4zNDU2MiAxNC43NTM0QzQuNTg5MjQgMTQuMzAyNCA0LjEyNTkxIDEzLjQ4NjcgNC4xMjU4OSAxMi42MDYxTDQuMTI1ODMgOS4yODM4M0M0LjEyNTgyIDguOTU0MjcgNC4zMjAwMyA4LjY1NTY2IDQuNjIxMjkgOC41MjIwNUw2LjYxODE3IDcuNjM2MzRWNS41OTg3NVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNDg3OCAzLjI0OTAyQzExLjI3OTYgMy4yNDkwMiAxMS45Nzc4IDMuNjQ5MDIgMTIuMzkxNyA0LjI1Nzk2QzEyLjUxNTEgNC4yMzkwNiAxMi42NDE2IDQuMjI5MjYgMTIuNzcwMyA0LjIyOTI2QzEzLjcyMjQgNC4yMjkyNiAxNC41NDkzIDQuNzY1MzEgMTQuOTY1NyA1LjU1MjA3QzE1LjA1NDMgNS41NDI1IDE1LjE0NDIgNS41Mzc1OSAxNS4yMzUzIDUuNTM3NTlDMTYuNjA2MiA1LjUzNzU5IDE3LjcxNzYgNi42NDg5MyAxNy43MTc2IDguMDE5ODNMMTcuNzE3NyAxMi40NDY3QzE3LjcxNzcgMTQuMjM1NSAxNy4wNjQ3IDE1Ljk1NTkgMTUuODkyMSAxNy4yOTA0VjE3LjMyNjJDMTUuODkyMSAxOC40NzY4IDE0Ljk1OTQgMTkuNDA5NSAxMy44MDg4IDE5LjQwOTVIOC4xNzMzMkM3LjAyMjczIDE5LjQwOTUgNi4wODk5OCAxOC40NzY4IDYuMDg5OTggMTcuMzI2MlYxNi42NTI0TDQuNzA1NjMgMTUuODI3QzMuNTcxMDYgMTUuMTUwNSAyLjg3NjA3IDEzLjkyNzEgMi44NzYwNCAxMi42MDYxTDIuODc1OTggOS4yODM4NUMyLjg3NTk2IDguNDU5OTYgMy4zNjE0OSA3LjcxMzQ1IDQuMTE0NjIgNy4zNzk0TDUuMzY4MzIgNi44MjMzM1Y1LjU5ODc1QzUuMzY4MzIgNC4xMjg4NSA2LjU1OTkxIDIuOTM3MjYgOC4wMjk4MiAyLjkzNzI2QzguNjA4MzEgMi45MzcyNiA5LjE0MzU1IDMuMTIxNyA5LjU4MDA1IDMuNDM1MDVDOS44NTg1MyAzLjMxNTMyIDEwLjE2NTQgMy4yNDkwMiAxMC40ODc4IDMuMjQ5MDJaTTEyLjQ0NzkgNS41MjE4NlY5LjQ3NTU3QzEyLjQ0NzkgOS43Mjc2MiAxMi4yNDM2IDkuOTMxOTUgMTEuOTkxNiA5LjkzMTk1QzExLjc1NjggOS45MzE5NSAxMS41NjM0IDkuNzU0NjUgMTEuNTM4IDkuNTI2NjNDMTEuNTM2MSA5LjUwOTg3IDExLjUzNTIgOS40OTI4MyAxMS41MzUyIDkuNDc1NTdWNS40NzE1OEMxMS41MTU0IDUuMjAwODMgMTEuMzkzIDQuOTU4NTggMTEuMjA2NiA0Ljc4MzU4QzExLjAxODggNC42MDcxMSAxMC43NjU5IDQuNDk5MDIgMTAuNDg3OCA0LjQ5OTAyQzEwLjQ3NjYgNC40OTkwMiAxMC40NjU0IDQuNDk5MTkgMTAuNDU0MiA0LjQ5OTU0QzkuOTAzNDcgNC41MTY4NCA5LjQ1OTY0IDQuOTU4MjQgOS40Mzg0NCA1LjUwODAxQzkuNDM4MiA1LjUwNDMgOS40Mzc5NSA1LjUwMDU4IDkuNDM3NjkgNS40OTY4OFY5LjkwMjQzQzkuNDM3NjkgMTAuMTU0NSA5LjIzMzM2IDEwLjM1ODggOC45ODEzMSAxMC4zNTg4QzguNzI5MjUgMTAuMzU4OCA4LjUyNDkyIDEwLjE1NDUgOC41MjQ5MiA5LjkwMjQzVjQuMjc2NTNDOC4zNzA4NiA0LjIxODgyIDguMjA0MDIgNC4xODcyNiA4LjAyOTgyIDQuMTg3MjZDNy4yNTAyNyA0LjE4NzI2IDYuNjE4MzIgNC44MTkyIDYuNjE4MzIgNS41OTg3NUw2LjYxODI3IDkuOTc1OTlDNi42MTgyNyAxMC4yMjggNi40MTM5NCAxMC40MzI0IDYuMTYxODkgMTAuNDMyNEM1LjkwOTgzIDEwLjQzMjQgNS43MDU1IDEwLjIyOCA1LjcwNTUgOS45NzU5OVY4LjA0MTIyTDQuNjIxNDQgOC41MjIwNUM0LjMyMDE4IDguNjU1NjYgNC4xMjU5NyA4Ljk1NDI3IDQuMTI1OTggOS4yODM4M0w0LjEyNjA0IDEyLjYwNjFDNC4xMjYwNiAxMy40ODY3IDQuNTg5MzkgMTQuMzAyNCA1LjM0NTc2IDE0Ljc1MzRMNy4zMzk5OCAxNS45NDI0VjE3LjMyNjJDNy4zMzk5OCAxNy43ODY0IDcuNzEzMDggMTguMTU5NSA4LjE3MzMyIDE4LjE1OTVIMTMuODA4OEMxNC4yNjkgMTguMTU5NSAxNC42NDIxIDE3Ljc4NjQgMTQuNjQyMSAxNy4zMjYyVjE2Ljc5MzhDMTUuNzM4MSAxNS43MTkgMTYuMzg1IDE0LjI3MjggMTYuNDYwMyAxMi43NDdDMTYuNDY0NiAxMi42NiAxNi40NjcgMTIuNTcyOCAxNi40Njc2IDEyLjQ4NTRMMTYuNDY3NyAxMi40NDY3TDE2LjQ2NzYgOC4wMTk4M0MxNi40Njc2IDcuMzQ1MDQgMTUuOTI1MiA2Ljc5NjkzIDE1LjI1MjUgNi43ODc3MUwxNS4yMzUzIDYuNzg3NTlDMTUuMTI1IDYuNzg3NTkgMTUuMDE4IDYuODAyMSAxNC45MTYyIDYuODI5MzFWOS42MDEzNkMxNC45MTYyIDkuODUzNDIgMTQuNzExOSAxMC4wNTc3IDE0LjQ1OTggMTAuMDU3N0MxNC4yMDc4IDEwLjA1NzcgMTQuMDAzNCA5Ljg1MzQxIDE0LjAwMzQgOS42MDEzNlY3Ljk4OTg1QzE0LjAwMzIgNy45OTk4MiAxNC4wMDMxIDguMDA5ODEgMTQuMDAzMSA4LjAxOTgzTDE0LjAwMzQgOS42MDEzNkwxNC4wMDI1IDYuNzExNUMxNC4wMDI1IDYuNDQ5NzQgMTMuOTIwOSA2LjIwNzA1IDEzLjc4MTggNi4wMDc0OEMxMy41NjIgNS42OTI0MiAxMy4xOTg5IDUuNDg0ODMgMTIuNzg3IDUuNDc5MzdMMTIuNzcwMyA1LjQ3OTI2QzEyLjY1ODggNS40NzkyNiAxMi41NTA3IDUuNDk0MDggMTIuNDQ3OSA1LjUyMTg2WiIgZmlsbD0iIzFEMUMyMyIvPgo8L3N2Zz4="), auto'
1169
1173
  },
1170
- fromNodeJSON(node, json) {
1171
- initFormDataFromJSON(node, json);
1174
+ fromNodeJSON(node, json, isFirstCreate) {
1175
+ initFormDataFromJSON(node, json, isFirstCreate);
1172
1176
  return;
1173
1177
  },
1174
1178
  toNodeJSON(node) {
@@ -1232,12 +1236,12 @@ var WorkflowLinesManager = class {
1232
1236
  }
1233
1237
  get lineColor() {
1234
1238
  const color = {
1235
- default: "#4d53e8" /* DEFUALT */,
1236
- error: "red" /* ERROR */,
1237
- hidden: "transparent" /* HIDDEN */,
1238
- drawing: "#5DD6E3" /* DRAWING */,
1239
- hovered: "#37d0ff" /* HOVER */,
1240
- selected: "#37d0ff" /* HOVER */
1239
+ default: "var(--g-line-color-default,#4d53e8)" /* DEFUALT */,
1240
+ error: "var(--g-line-color-error,red)" /* ERROR */,
1241
+ hidden: "var(--g-line-color-hidden,transparent)" /* HIDDEN */,
1242
+ drawing: "var(--g-line-color-drawing, #5DD6E3)" /* DRAWING */,
1243
+ hovered: "var(--g-line-color-hover,#37d0ff)" /* HOVER */,
1244
+ selected: "var(--g-line-color-selected,#37d0ff)" /* SELECTED */
1241
1245
  };
1242
1246
  if (this.options.lineColor) {
1243
1247
  Object.assign(color, this.options.lineColor);
@@ -1320,17 +1324,15 @@ var WorkflowLinesManager = class {
1320
1324
  toNode?.removeLine(line);
1321
1325
  line.validate();
1322
1326
  });
1323
- line.toDispose.push(
1324
- Disposable2.create(() => {
1325
- if (available) {
1326
- this.onAvailableLinesChangeEmitter.fire({
1327
- type: "DELETE_LINE" /* DELETE_LINE */,
1328
- toJSON: () => line.toJSON(),
1329
- entity: line
1330
- });
1331
- }
1332
- })
1333
- );
1327
+ line.onDispose(() => {
1328
+ if (available) {
1329
+ this.onAvailableLinesChangeEmitter.fire({
1330
+ type: "DELETE_LINE" /* DELETE_LINE */,
1331
+ toJSON: () => line.toJSON(),
1332
+ entity: line
1333
+ });
1334
+ }
1335
+ });
1334
1336
  if (available) {
1335
1337
  this.onAvailableLinesChangeEmitter.fire({
1336
1338
  type: "ADD_LINE" /* ADD_LINE */,
@@ -1531,9 +1533,13 @@ WorkflowLinesManager = __decorateClass([
1531
1533
  // src/workflow-document.ts
1532
1534
  import { customAlphabet } from "nanoid";
1533
1535
  import { inject as inject5, injectable as injectable5, optional, postConstruct } from "inversify";
1534
- import { Disposable as Disposable3, Emitter as Emitter4 } from "@flowgram.ai/utils";
1536
+ import { Emitter as Emitter4 } from "@flowgram.ai/utils";
1535
1537
  import { NodeEngineContext } from "@flowgram.ai/form-core";
1536
- import { FlowDocument, FlowNodeBaseType, FlowNodeTransformData as FlowNodeTransformData5 } from "@flowgram.ai/document";
1538
+ import {
1539
+ FlowDocument,
1540
+ FlowNodeBaseType,
1541
+ FlowNodeTransformData as FlowNodeTransformData5
1542
+ } from "@flowgram.ai/document";
1537
1543
  import {
1538
1544
  injectPlaygroundContext,
1539
1545
  PlaygroundConfigEntity as PlaygroundConfigEntity4,
@@ -1543,16 +1549,16 @@ import {
1543
1549
 
1544
1550
  // src/layout/free-layout.ts
1545
1551
  import { inject as inject4, injectable as injectable4 } from "inversify";
1546
- import {
1547
- FlowDocumentProvider,
1548
- FlowNodeTransformData as FlowNodeTransformData4
1549
- } from "@flowgram.ai/document";
1550
- import { PlaygroundConfigEntity as PlaygroundConfigEntity3, TransformData as TransformData7 } from "@flowgram.ai/core";
1551
1552
  import {
1552
1553
  PaddingSchema,
1553
1554
  Rectangle as Rectangle7,
1554
1555
  SizeSchema as SizeSchema2
1555
1556
  } from "@flowgram.ai/utils";
1557
+ import {
1558
+ FlowDocumentProvider,
1559
+ FlowNodeTransformData as FlowNodeTransformData4
1560
+ } from "@flowgram.ai/document";
1561
+ import { PlaygroundConfigEntity as PlaygroundConfigEntity3, TransformData as TransformData7 } from "@flowgram.ai/core";
1556
1562
  var FREE_LAYOUT_KEY = "free-layout";
1557
1563
  var FreeLayout = class {
1558
1564
  constructor() {
@@ -1587,6 +1593,21 @@ var FreeLayout = class {
1587
1593
  const parentTransform = node.parent.getData(FlowNodeTransformData4);
1588
1594
  parentTransform.transform.fireChange();
1589
1595
  }
1596
+ /**
1597
+ * 更新所有受影响的上下游节点
1598
+ */
1599
+ updateAffectedTransform(node) {
1600
+ const transformData = node.transform;
1601
+ if (!transformData.localDirty) {
1602
+ return;
1603
+ }
1604
+ const allParents = this.getAllParents(node);
1605
+ const allBlocks = this.getAllBlocks(node).reverse();
1606
+ const affectedNodes = [...allBlocks, ...allParents];
1607
+ affectedNodes.forEach((node2) => {
1608
+ this.fireChange(node2);
1609
+ });
1610
+ }
1590
1611
  /**
1591
1612
  * 获取节点的 padding 数据
1592
1613
  * @param node
@@ -1632,6 +1653,30 @@ var FreeLayout = class {
1632
1653
  getDefaultNodeOrigin() {
1633
1654
  return { x: 0.5, y: 0 };
1634
1655
  }
1656
+ getAllParents(node) {
1657
+ const parents = [];
1658
+ let current = node.parent;
1659
+ while (current) {
1660
+ parents.push(current);
1661
+ current = current.parent;
1662
+ }
1663
+ return parents;
1664
+ }
1665
+ getAllBlocks(node) {
1666
+ return node.blocks.reduce(
1667
+ (acc, child) => [...acc, ...this.getAllBlocks(child)],
1668
+ [node]
1669
+ );
1670
+ }
1671
+ fireChange(node) {
1672
+ const transformData = node?.transform;
1673
+ if (!node || !transformData?.localDirty) {
1674
+ return;
1675
+ }
1676
+ node.clearMemoGlobal();
1677
+ node.clearMemoLocal();
1678
+ transformData.transform.fireChange();
1679
+ }
1635
1680
  };
1636
1681
  __decorateClass([
1637
1682
  inject4(PlaygroundConfigEntity3)
@@ -1654,7 +1699,6 @@ var WorkflowDocument = class extends FlowDocument {
1654
1699
  this.onContentChange = this._onContentChangeEmitter.event;
1655
1700
  this._onReloadEmitter = new Emitter4();
1656
1701
  this.onReload = this._onReloadEmitter.event;
1657
- this.disposed = false;
1658
1702
  /**
1659
1703
  * 数据加载完成
1660
1704
  */
@@ -1683,12 +1727,14 @@ var WorkflowDocument = class extends FlowDocument {
1683
1727
  });
1684
1728
  }
1685
1729
  async load() {
1730
+ if (this.disposed) return;
1686
1731
  this._loading = true;
1687
1732
  await super.load();
1688
1733
  this._loading = false;
1689
1734
  this.onLoadedEmitter.fire();
1690
1735
  }
1691
1736
  async reload(json, delayTime = 0) {
1737
+ if (this.disposed) return;
1692
1738
  this._loading = true;
1693
1739
  this.clear();
1694
1740
  this.fromJSON(json);
@@ -1701,6 +1747,7 @@ var WorkflowDocument = class extends FlowDocument {
1701
1747
  * @param json
1702
1748
  */
1703
1749
  fromJSON(json, fireRender = true) {
1750
+ if (this.disposed) return;
1704
1751
  const workflowJSON = {
1705
1752
  nodes: json.nodes ?? [],
1706
1753
  edges: json.edges ?? []
@@ -1743,9 +1790,11 @@ var WorkflowDocument = class extends FlowDocument {
1743
1790
  const formData = getFlowNodeFormData(node);
1744
1791
  const transform = node.getData(FlowNodeTransformData5);
1745
1792
  const freeLayout = this.layout;
1746
- transform.onDataChange(() => {
1747
- freeLayout.syncTransform(node);
1748
- });
1793
+ if (!isExistedNode) {
1794
+ transform.onDataChange(() => {
1795
+ freeLayout.syncTransform(node);
1796
+ });
1797
+ }
1749
1798
  let { position } = meta;
1750
1799
  if (!position) {
1751
1800
  position = this.getNodeDefaultPosition(json.type);
@@ -1764,13 +1813,15 @@ var WorkflowDocument = class extends FlowDocument {
1764
1813
  });
1765
1814
  }
1766
1815
  const positionData = node.getData(PositionData);
1767
- positionData.onDataChange(() => {
1768
- this.fireContentChange({
1769
- type: "MOVE_NODE" /* MOVE_NODE */,
1770
- toJSON: () => positionData.toJSON(),
1771
- entity: node
1816
+ if (!isExistedNode) {
1817
+ positionData.onDataChange(() => {
1818
+ this.fireContentChange({
1819
+ type: "MOVE_NODE" /* MOVE_NODE */,
1820
+ toJSON: () => positionData.toJSON(),
1821
+ entity: node
1822
+ });
1772
1823
  });
1773
- });
1824
+ }
1774
1825
  const subCanvas = this.getNodeSubCanvas(node);
1775
1826
  if (!isExistedNode && !subCanvas?.isCanvas) {
1776
1827
  this.fireContentChange({
@@ -1778,26 +1829,24 @@ var WorkflowDocument = class extends FlowDocument {
1778
1829
  entity: node,
1779
1830
  toJSON: () => this.toNodeJSON(node)
1780
1831
  });
1781
- node.toDispose.push(
1782
- Disposable3.create(() => {
1783
- this.fireContentChange({
1784
- type: "DELETE_NODE" /* DELETE_NODE */,
1785
- entity: node,
1786
- toJSON: () => this.toNodeJSON(node)
1787
- });
1788
- })
1789
- );
1790
- node.toDispose.push(
1791
- Disposable3.create(() => {
1792
- if (!node.parent || node.parent.flowNodeType === FlowNodeBaseType.ROOT) {
1793
- return;
1794
- }
1795
- const parentTransform = node.parent.getData(FlowNodeTransformData5);
1796
- setTimeout(() => {
1797
- parentTransform.fireChange();
1798
- }, 0);
1799
- })
1800
- );
1832
+ node.onDispose(() => {
1833
+ if (!node.parent || node.parent.flowNodeType === FlowNodeBaseType.ROOT) {
1834
+ return;
1835
+ }
1836
+ const parentTransform = node.parent.getData(FlowNodeTransformData5);
1837
+ parentTransform.fireChange();
1838
+ });
1839
+ let lastDeleteNodeData;
1840
+ node.preDispose.onDispose(() => {
1841
+ lastDeleteNodeData = this.toNodeJSON(node);
1842
+ });
1843
+ node.onDispose(() => {
1844
+ this.fireContentChange({
1845
+ type: "DELETE_NODE" /* DELETE_NODE */,
1846
+ entity: node,
1847
+ toJSON: () => lastDeleteNodeData
1848
+ });
1849
+ });
1801
1850
  }
1802
1851
  if (json.blocks) {
1803
1852
  this.renderJSON(
@@ -1813,19 +1862,95 @@ var WorkflowDocument = class extends FlowDocument {
1813
1862
  canvasTransform.update({
1814
1863
  position: subCanvas.parentNode.getNodeMeta()?.canvasPosition
1815
1864
  });
1816
- subCanvas.parentNode.onDispose(() => {
1817
- subCanvas.canvasNode.dispose();
1865
+ if (!isExistedNode) {
1866
+ subCanvas.parentNode.onDispose(() => {
1867
+ subCanvas.canvasNode.dispose();
1868
+ });
1869
+ subCanvas.canvasNode.onDispose(() => {
1870
+ subCanvas.parentNode.dispose();
1871
+ });
1872
+ }
1873
+ }
1874
+ if (!isExistedNode) {
1875
+ this.onNodeCreateEmitter.fire({
1876
+ node,
1877
+ data: json,
1878
+ json
1818
1879
  });
1819
- subCanvas.canvasNode.onDispose(() => {
1820
- subCanvas.parentNode.dispose();
1880
+ } else {
1881
+ this.onNodeUpdateEmitter.fire({
1882
+ node,
1883
+ data: json,
1884
+ json
1821
1885
  });
1822
1886
  }
1823
- this.onNodeCreateEmitter.fire({
1824
- node,
1825
- data: json
1887
+ return node;
1888
+ }
1889
+ /**
1890
+ * 添加节点,如果节点已经存在则不会重复创建
1891
+ * @param data
1892
+ * @param addedNodes
1893
+ */
1894
+ addNode(data, addedNodes, ignoreCreateAndUpdateEvent) {
1895
+ const { id, type = "block", originParent, parent, meta, hidden, index } = data;
1896
+ let node = this.getNode(id);
1897
+ let isNew = false;
1898
+ const register = this.getNodeRegistry(type, data.originParent);
1899
+ if (node && node.flowNodeType !== data.type) {
1900
+ node.dispose();
1901
+ node = void 0;
1902
+ }
1903
+ if (!node) {
1904
+ const { dataRegistries } = register;
1905
+ node = this.entityManager.createEntity(WorkflowNodeEntity, {
1906
+ id,
1907
+ document: this,
1908
+ flowNodeType: type,
1909
+ originParent,
1910
+ meta
1911
+ });
1912
+ const datas = dataRegistries ? this.nodeDataRegistries.concat(...dataRegistries) : this.nodeDataRegistries;
1913
+ node.addInitializeData(datas);
1914
+ node.onDispose(() => this.onNodeDisposeEmitter.fire({ node }));
1915
+ this.options.fromNodeJSON?.(node, data, true);
1916
+ isNew = true;
1917
+ } else {
1918
+ this.options.fromNodeJSON?.(node, data, false);
1919
+ }
1920
+ node.initData({
1921
+ originParent,
1922
+ parent,
1923
+ meta,
1924
+ hidden,
1925
+ index
1826
1926
  });
1927
+ addedNodes?.push(node);
1928
+ if (register.onCreate) {
1929
+ const extendNodes = register.onCreate(node, data);
1930
+ if (extendNodes && addedNodes) {
1931
+ addedNodes.push(...extendNodes);
1932
+ }
1933
+ }
1934
+ if (!ignoreCreateAndUpdateEvent) {
1935
+ if (isNew) {
1936
+ this.onNodeCreateEmitter.fire({
1937
+ node,
1938
+ data,
1939
+ json: data
1940
+ });
1941
+ } else {
1942
+ this.onNodeUpdateEmitter.fire({ node, data, json: data });
1943
+ }
1944
+ }
1827
1945
  return node;
1828
1946
  }
1947
+ get layout() {
1948
+ const layout = this.layouts.find((layout2) => layout2.name == this.currentLayoutKey);
1949
+ if (!layout) {
1950
+ throw new Error(`Unknown flow layout: ${this.currentLayoutKey}`);
1951
+ }
1952
+ return layout;
1953
+ }
1829
1954
  /**
1830
1955
  * 获取默认的 x y 坐标, 默认为当前画布可视区域中心
1831
1956
  * @param type
@@ -2037,11 +2162,7 @@ var WorkflowDocument = class extends FlowDocument {
2037
2162
  };
2038
2163
  }
2039
2164
  dispose() {
2040
- if (this.disposed) {
2041
- return;
2042
- }
2043
2165
  super.dispose();
2044
- this.disposed = true;
2045
2166
  this._onReloadEmitter.dispose();
2046
2167
  }
2047
2168
  /**
@@ -2239,15 +2360,10 @@ var WorkflowDragService = class {
2239
2360
  x: nodeStartPosition.x + offset.x,
2240
2361
  y: nodeStartPosition.y + offset.y
2241
2362
  };
2242
- if (node.collapsedChildren?.length > 0) {
2243
- node.collapsedChildren.forEach((childNode) => {
2244
- const childNodeTransformData = childNode.getData(FlowNodeTransformData6);
2245
- childNodeTransformData.fireChange();
2246
- });
2247
- }
2248
2363
  transform.update({
2249
2364
  position: newPosition
2250
2365
  });
2366
+ this.document.layout.updateAffectedTransform(node);
2251
2367
  positions.push(newPosition);
2252
2368
  });
2253
2369
  this._nodesDragEmitter.fire({
@@ -2768,18 +2884,14 @@ var layoutToPositions = async (nodes, nodePositionMap) => {
2768
2884
  const transform = node.getData(TransformData10);
2769
2885
  const deltaX = (nodePositionMap[node.id].x - transform.position.x) * v.d / 100;
2770
2886
  const deltaY = (nodePositionMap[node.id].y - transform.bounds.height / 2 - transform.position.y) * v.d / 100;
2771
- if (node.collapsedChildren?.length > 0) {
2772
- node.collapsedChildren.forEach((childNode) => {
2773
- const childNodeTransformData = childNode.getData(FlowNodeTransformData7);
2774
- childNodeTransformData.fireChange();
2775
- });
2776
- }
2777
2887
  transform.update({
2778
2888
  position: {
2779
2889
  x: transform.position.x + deltaX,
2780
2890
  y: transform.position.y + deltaY
2781
2891
  }
2782
2892
  });
2893
+ const document2 = node.document;
2894
+ document2.layout.updateAffectedTransform(node);
2783
2895
  });
2784
2896
  },
2785
2897
  onComplete: () => {