@bian-womp/spark-workbench 0.2.9 → 0.2.10

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.
@@ -22,11 +22,11 @@ export declare abstract class AbstractWorkbench implements GraphActions, GraphEv
22
22
  y: number;
23
23
  };
24
24
  params?: Record<string, unknown>;
25
- }): void;
25
+ }): string;
26
26
  abstract removeNode(nodeId: string): void;
27
27
  abstract connect(edge: Omit<GraphDefinition["edges"][number], "id"> & {
28
28
  id?: string;
29
- }): void;
29
+ }): string;
30
30
  abstract disconnect(edgeId: string): void;
31
31
  abstract updateParams(nodeId: string, params: Record<string, unknown>): void;
32
32
  abstract on<K extends WorkbenchEventName>(event: K, handler: (e: WorkbenchEventMap[K]) => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/core/AbstractWorkbench.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,8BAAsB,iBAAkB,YAAW,YAAY,EAAE,WAAW;IAC1E,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC;gBAEtB,IAAI,EAAE;QAChB,EAAE,EAAE,mBAAmB,CAAC;QACxB,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;IAOD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAClD,QAAQ,CAAC,MAAM,IAAI,eAAe;IAClC,QAAQ,CAAC,QAAQ,IAAI,gBAAgB;IACrC,QAAQ,CAAC,OAAO,CACd,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG;QACvD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GACA,IAAI;IACP,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzC,QAAQ,CAAC,OAAO,CACd,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GACnE,IAAI;IACP,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAE5E,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,kBAAkB,EACtC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GACzC,MAAM,IAAI;IAGb,KAAK,IAAI,mBAAmB;CAG7B"}
1
+ {"version":3,"file":"AbstractWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/core/AbstractWorkbench.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,8BAAsB,iBAAkB,YAAW,YAAY,EAAE,WAAW;IAC1E,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC;gBAEtB,IAAI,EAAE;QAChB,EAAE,EAAE,mBAAmB,CAAC;QACxB,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;IAOD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAClD,QAAQ,CAAC,MAAM,IAAI,eAAe;IAClC,QAAQ,CAAC,QAAQ,IAAI,gBAAgB;IACrC,QAAQ,CAAC,OAAO,CACd,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG;QACvD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GACA,MAAM;IACT,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzC,QAAQ,CAAC,OAAO,CACd,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GACnE,MAAM;IACT,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAE5E,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,kBAAkB,EACtC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GACzC,MAAM,IAAI;IAGb,KAAK,IAAI,mBAAmB;CAG7B"}
@@ -18,11 +18,11 @@ export declare class InMemoryWorkbench extends AbstractWorkbench {
18
18
  x: number;
19
19
  y: number;
20
20
  };
21
- }): void;
21
+ }): string;
22
22
  removeNode(nodeId: string): void;
23
23
  connect(edge: Omit<GraphDefinition["edges"][number], "id"> & {
24
24
  id?: string;
25
- }): void;
25
+ }): string;
26
26
  disconnect(edgeId: string): void;
27
27
  updateEdgeType(edgeId: string, typeId: string | undefined): void;
28
28
  updateParams(nodeId: string, params: Record<string, unknown>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/core/InMemoryWorkbench.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAElB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,OAAO,CAAC,GAAG,CAA6C;IACxD,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,SAAS,CAGb;IACJ,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,SAAS,CAGf;IAEF,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,MAAM,IAAI,eAAe;IAIzB,iBAAiB,IAAI,IAAI;IAIzB,QAAQ,IAAI,gBAAgB;IA8B5B,OAAO,CACL,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG;QACvD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrC,GACA,IAAI;IAeP,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAahC,OAAO,CACL,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GACnE,IAAI;IAeP,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAShC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAYhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWnE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAQhE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAQjE,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIxD,YAAY,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAS7D,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE;IAOpD,EAAE,CAAC,CAAC,SAAS,kBAAkB,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,MAAM,IAAI;IAOb,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"InMemoryWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/core/InMemoryWorkbench.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAElB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,OAAO,CAAC,GAAG,CAA6C;IACxD,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,SAAS,CAGb;IACJ,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,SAAS,CAGf;IAEF,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,MAAM,IAAI,eAAe;IAIzB,iBAAiB,IAAI,IAAI;IAIzB,QAAQ,IAAI,gBAAgB;IA8B5B,OAAO,CACL,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG;QACvD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrC,GACA,MAAM;IAgBT,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAahC,OAAO,CACL,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GACnE,MAAM;IAgBT,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAShC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAYhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWnE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAQhE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAQjE,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIxD,YAAY,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAS7D,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE;IAOpD,EAAE,CAAC,CAAC,SAAS,kBAAkB,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,MAAM,IAAI;IAOb,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,UAAU;CAGnB"}
@@ -15,11 +15,11 @@ export interface GraphActions {
15
15
  x: number;
16
16
  y: number;
17
17
  };
18
- }): void;
18
+ }): string;
19
19
  removeNode(nodeId: string): void;
20
20
  connect(edge: Omit<GraphDefinition["edges"][number], "id"> & {
21
21
  id?: string;
22
- }): void;
22
+ }): string;
23
23
  disconnect(edgeId: string): void;
24
24
  updateParams(nodeId: string, params: Record<string, unknown>): void;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultNode.d.ts","sourceRoot":"","sources":["../../../../src/misc/DefaultNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAWvB,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGrE,eAAO,MAAM,WAAW,yDAuDtB,CAAC;AAGH,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,YAAY,GACb,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,UAAU,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,2CAwDA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,EAAE,EACF,IAAI,EACJ,aAAa,GACd,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,2CA8QpE"}
1
+ {"version":3,"file":"DefaultNode.d.ts","sourceRoot":"","sources":["../../../../src/misc/DefaultNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAWvB,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGrE,eAAO,MAAM,WAAW,yDAuDtB,CAAC;AAGH,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,YAAY,GACb,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,UAAU,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,2CAwDA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,EAAE,EACF,IAAI,EACJ,aAAa,GACd,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,2CA8HpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,kDAoGA"}
1
+ {"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,kDAwSA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAiB9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe;iBAGX,OAAO;cACV,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM;eAC3C,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO;yBACvC,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;+CAyUpD,CAAC"}
1
+ {"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAkBf,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe;iBAGX,OAAO;cACV,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM;eAC3C,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO;yBACvC,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;+CA2VpD,CAAC"}
package/lib/esm/index.js CHANGED
@@ -167,6 +167,7 @@ class InMemoryWorkbench extends AbstractWorkbench {
167
167
  change: { type: "addNode", nodeId: id },
168
168
  });
169
169
  this.refreshValidation();
170
+ return id;
170
171
  }
171
172
  removeNode(nodeId) {
172
173
  this.def.nodes = this.def.nodes.filter((n) => n.nodeId !== nodeId);
@@ -191,6 +192,7 @@ class InMemoryWorkbench extends AbstractWorkbench {
191
192
  change: { type: "connect", edgeId: id },
192
193
  });
193
194
  this.refreshValidation();
195
+ return id;
194
196
  }
195
197
  disconnect(edgeId) {
196
198
  this.def.edges = this.def.edges.filter((e) => e.id !== edgeId);
@@ -2081,7 +2083,7 @@ function DefaultNodeHeader({ id, title, status, validation, right, onInvalidate,
2081
2083
  .join("; ") })), jsxs("span", { className: "text-[10px] opacity-70", children: ["(", id, ")"] })] })] }));
2082
2084
  }
2083
2085
  function DefaultNodeContent({ id, data, isConnectable, }) {
2084
- const ctx = useWorkbenchContext();
2086
+ useWorkbenchContext();
2085
2087
  const { showValues, inputValues, outputValues, toString } = data;
2086
2088
  const inputEntries = data.inputHandles ?? [];
2087
2089
  const outputEntries = data.outputHandles ?? [];
@@ -2091,98 +2093,6 @@ function DefaultNodeContent({ id, data, isConnectable, }) {
2091
2093
  outputs: []};
2092
2094
  const isRunning = !!status.activeRuns;
2093
2095
  const pct = Math.round(Math.max(0, Math.min(1, Number(status.progress) || 0)) * 100);
2094
- const handleBake = React.useCallback(async (handleId) => {
2095
- try {
2096
- const typeId = ctx.outputTypesMap?.[id]?.[handleId];
2097
- const rawValue = ctx.outputsMap?.[id]?.[handleId];
2098
- if (!typeId || rawValue === undefined)
2099
- return;
2100
- const unwrap = (v) => isTypedOutput(v) ? getTypedOutputValue(v) : v;
2101
- const clone = (v) => typeof structuredClone === "function"
2102
- ? structuredClone(v)
2103
- : JSON.parse(JSON.stringify(v));
2104
- const coerceIfNeeded = async (fromType, toType, value) => {
2105
- if (!toType || toType === fromType || !ctx.runner?.coerce)
2106
- return value;
2107
- try {
2108
- return await ctx.runner.coerce(fromType, toType, value);
2109
- }
2110
- catch {
2111
- return value;
2112
- }
2113
- };
2114
- const positions = ctx.wb.getPositions();
2115
- const pos = positions[id] || { x: 0, y: 0 };
2116
- const isArray = typeId.endsWith("[]");
2117
- const baseTypeId = isArray ? typeId.slice(0, -2) : typeId;
2118
- const tArr = isArray ? ctx.registry?.types.get(typeId) : undefined;
2119
- const tElem = ctx.registry?.types.get(baseTypeId);
2120
- const singleTarget = !isArray ? tElem?.bakeTarget : undefined;
2121
- const arrTarget = isArray ? tArr?.bakeTarget : undefined;
2122
- const elemTarget = isArray ? tElem?.bakeTarget : undefined;
2123
- const makeTargetInfo = (bt) => {
2124
- if (!bt)
2125
- return undefined;
2126
- const node = ctx.registry?.nodes.get(String(bt.nodeTypeId));
2127
- const inType = getInputTypeId(node?.inputs, String(bt.inputHandle || "Value"));
2128
- return { bt, inType };
2129
- };
2130
- // Plan and execute
2131
- if (singleTarget) {
2132
- const info = makeTargetInfo(singleTarget);
2133
- const v = unwrap(rawValue);
2134
- const coerced = await coerceIfNeeded(typeId, info?.inType, v);
2135
- ctx.wb.addNode({
2136
- nodeId: undefined,
2137
- typeId: String(singleTarget.nodeTypeId),
2138
- position: { x: pos.x + 180, y: pos.y },
2139
- params: {},
2140
- initialInputs: {
2141
- [String(singleTarget.inputHandle || "Value")]: clone(coerced),
2142
- },
2143
- });
2144
- return;
2145
- }
2146
- if (isArray && arrTarget) {
2147
- const info = makeTargetInfo(arrTarget);
2148
- const v = unwrap(rawValue);
2149
- const coerced = await coerceIfNeeded(typeId, info?.inType, v);
2150
- ctx.wb.addNode({
2151
- nodeId: undefined,
2152
- typeId: String(arrTarget.nodeTypeId),
2153
- position: { x: pos.x + 180, y: pos.y },
2154
- params: {},
2155
- initialInputs: {
2156
- [String(arrTarget.inputHandle || "Value")]: clone(coerced),
2157
- },
2158
- });
2159
- return;
2160
- }
2161
- if (isArray && elemTarget && Array.isArray(rawValue)) {
2162
- const info = makeTargetInfo(elemTarget);
2163
- const items = rawValue.map(unwrap);
2164
- const coercedItems = await Promise.all(items.map((v) => coerceIfNeeded(baseTypeId, info?.inType, v)));
2165
- const COLS = 4;
2166
- const DX = 180;
2167
- const DY = 160;
2168
- coercedItems.forEach((cv, idx) => {
2169
- const col = idx % COLS;
2170
- const row = Math.floor(idx / COLS);
2171
- ctx.wb.addNode({
2172
- nodeId: undefined,
2173
- typeId: String(elemTarget.nodeTypeId),
2174
- position: { x: pos.x + (col + 1) * DX, y: pos.y + row * DY },
2175
- params: {},
2176
- initialInputs: {
2177
- [String(elemTarget.inputHandle || "Value")]: clone(cv),
2178
- },
2179
- });
2180
- });
2181
- return;
2182
- }
2183
- }
2184
- catch { }
2185
- }, [ctx, id]);
2186
2096
  return (jsxs(Fragment, { children: [jsx("div", { className: cx("h-px", (isRunning || pct > 0) && "bg-blue-200 dark:bg-blue-900"), children: jsx("div", { className: cx("h-px transition-all", (isRunning || pct > 0) && "bg-blue-500"), style: { width: isRunning || pct > 0 ? `${pct}%` : 0 } }) }), jsx(NodeHandles, { data: data, isConnectable: isConnectable, getClassName: ({ kind, id }) => {
2187
2097
  const vIssues = (kind === "input" ? validation.inputs : validation.outputs).filter((v) => v.handle === id);
2188
2098
  const hasAny = vIssues.length > 0;
@@ -2210,26 +2120,7 @@ function DefaultNodeContent({ id, data, isConnectable, }) {
2210
2120
  const txt = toString(resolved.typeId, resolved.value);
2211
2121
  return typeof txt === "string" ? txt : String(txt);
2212
2122
  })();
2213
- const tId = ctx.outputTypesMap?.[id]?.[handleId];
2214
- let canBake = false;
2215
- if (tId?.endsWith("[]")) {
2216
- const base = tId.slice(0, -2);
2217
- const tArr = ctx.registry?.types.get(tId);
2218
- const tElem = ctx.registry?.types.get(base);
2219
- const arrTarget = tArr?.bakeTarget;
2220
- const elemTarget = tElem?.bakeTarget;
2221
- canBake = !!((arrTarget && ctx.registry?.nodes?.has?.(arrTarget.nodeTypeId)) ||
2222
- (elemTarget && ctx.registry?.nodes?.has?.(elemTarget.nodeTypeId)));
2223
- }
2224
- else if (tId) {
2225
- const t = ctx.registry?.types.get(tId);
2226
- const target = t?.bakeTarget;
2227
- canBake = !!(target && ctx.registry?.nodes?.has?.(target.nodeTypeId));
2228
- }
2229
- return (jsxs("span", { className: "flex items-center gap-1 w-full", children: [kind === "output" ? (jsxs(Fragment, { children: [canBake && (jsx("button", { onClick: (e) => {
2230
- e.stopPropagation();
2231
- handleBake(handleId);
2232
- }, title: "Bake value", className: "pointer-events-auto border border-gray-300 rounded px-1 py-0.5 text-[10px] bg-white/80 hover:bg-white mr-2", children: "Bake" })), valueText !== undefined && (jsx("span", { className: "opacity-60 truncate pl-1", style: { flex: 1, minWidth: 0, maxWidth: "100%" }, children: valueText })), jsx("span", { className: "truncate shrink-0", style: { maxWidth: "40%" }, children: handleId })] })) : (jsxs(Fragment, { children: [jsx("span", { className: "truncate shrink-0", style: { maxWidth: "40%" }, children: handleId }), valueText !== undefined && (jsx("span", { className: "opacity-60 truncate pr-1", style: { flex: 1, minWidth: 0, maxWidth: "100%" }, children: valueText }))] })), hasAny && (jsx(IssueBadge, { level: hasErr ? "error" : "warning", size: 12, className: "shrink-0", title: title }))] }));
2123
+ return (jsxs("span", { className: "flex items-center gap-1 w-full", children: [kind === "output" ? (jsxs(Fragment, { children: [valueText !== undefined && (jsx("span", { className: "opacity-60 truncate pl-1", style: { flex: 1, minWidth: 0, maxWidth: "100%" }, children: valueText })), jsx("span", { className: "truncate shrink-0", style: { maxWidth: "40%" }, children: handleId })] })) : (jsxs(Fragment, { children: [jsx("span", { className: "truncate shrink-0", style: { maxWidth: "40%" }, children: handleId }), valueText !== undefined && (jsx("span", { className: "opacity-60 truncate pr-1", style: { flex: 1, minWidth: 0, maxWidth: "100%" }, children: valueText }))] })), hasAny && (jsx(IssueBadge, { level: hasErr ? "error" : "warning", size: 12, className: "shrink-0", title: title }))] }));
2233
2124
  } })] }));
2234
2125
  }
2235
2126
 
@@ -2320,7 +2211,7 @@ function DefaultContextMenu({ open, clientPos, onAdd, onClose, }) {
2320
2211
  }
2321
2212
 
2322
2213
  function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
2323
- const { wb, runner, engineKind } = useWorkbenchContext();
2214
+ const { wb, runner, engineKind, registry, outputsMap, outputTypesMap } = useWorkbenchContext();
2324
2215
  const ref = useRef(null);
2325
2216
  // outside click + ESC
2326
2217
  useEffect(() => {
@@ -2355,39 +2246,181 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
2355
2246
  const x = Math.min(clientPos.x, (typeof window !== "undefined" ? window.innerWidth : 0) -
2356
2247
  (MENU_MIN_WIDTH + PADDING));
2357
2248
  const y = Math.min(clientPos.y, (typeof window !== "undefined" ? window.innerHeight : 0) - 240);
2249
+ // Bake helpers
2250
+ const getBakeableOutputs = () => {
2251
+ try {
2252
+ const def = wb.export();
2253
+ const node = def.nodes.find((n) => n.nodeId === nodeId);
2254
+ if (!node)
2255
+ return [];
2256
+ const desc = registry.nodes.get(node.typeId);
2257
+ const handles = Object.keys(desc?.outputs || {});
2258
+ const out = [];
2259
+ for (const h of handles) {
2260
+ const tId = outputTypesMap?.[nodeId]?.[h];
2261
+ if (!tId)
2262
+ continue;
2263
+ if (tId.endsWith("[]")) {
2264
+ const base = tId.slice(0, -2);
2265
+ const tArr = registry.types.get(tId);
2266
+ const tElem = registry.types.get(base);
2267
+ const arrT = tArr?.bakeTarget;
2268
+ const elemT = tElem?.bakeTarget;
2269
+ if ((arrT && registry.nodes.has(arrT.nodeTypeId)) ||
2270
+ (elemT && registry.nodes.has(elemT.nodeTypeId)))
2271
+ out.push(h);
2272
+ }
2273
+ else {
2274
+ const t = registry.types.get(tId);
2275
+ const bt = t?.bakeTarget;
2276
+ if (bt && registry.nodes.has(bt.nodeTypeId))
2277
+ out.push(h);
2278
+ }
2279
+ }
2280
+ return out;
2281
+ }
2282
+ catch {
2283
+ return [];
2284
+ }
2285
+ };
2286
+ const doBake = async (handleId) => {
2287
+ try {
2288
+ const typeId = outputTypesMap?.[nodeId]?.[handleId];
2289
+ const raw = outputsMap?.[nodeId]?.[handleId];
2290
+ if (!typeId || raw === undefined)
2291
+ return;
2292
+ const unwrap = (v) => isTypedOutput(v) ? getTypedOutputValue(v) : v;
2293
+ const clone = (v) => typeof structuredClone === "function"
2294
+ ? structuredClone(v)
2295
+ : JSON.parse(JSON.stringify(v));
2296
+ const coerceIfNeeded = async (fromType, toType, value) => {
2297
+ if (!toType || toType === fromType || !runner?.coerce)
2298
+ return value;
2299
+ try {
2300
+ return await runner.coerce(fromType, toType, value);
2301
+ }
2302
+ catch {
2303
+ return value;
2304
+ }
2305
+ };
2306
+ const pos = wb.getPositions?.()[nodeId] || { x: 0, y: 0 };
2307
+ const isArray = typeId.endsWith("[]");
2308
+ const baseTypeId = isArray ? typeId.slice(0, -2) : typeId;
2309
+ const tArr = isArray ? registry.types.get(typeId) : undefined;
2310
+ const tElem = registry.types.get(baseTypeId);
2311
+ const singleTarget = !isArray ? tElem?.bakeTarget : undefined;
2312
+ const arrTarget = isArray ? tArr?.bakeTarget : undefined;
2313
+ const elemTarget = isArray ? tElem?.bakeTarget : undefined;
2314
+ if (singleTarget) {
2315
+ const nodeDesc = registry.nodes.get(String(singleTarget.nodeTypeId));
2316
+ const inType = getInputTypeId(nodeDesc?.inputs, String(singleTarget.inputHandle || "Value"));
2317
+ const coerced = await coerceIfNeeded(typeId, inType, unwrap(raw));
2318
+ const newId = wb.addNode({
2319
+ typeId: String(singleTarget.nodeTypeId),
2320
+ position: { x: pos.x + 180, y: pos.y },
2321
+ params: {},
2322
+ });
2323
+ runner.update(wb.export());
2324
+ await runner.whenIdle();
2325
+ runner.setInputs(newId, {
2326
+ [String(singleTarget.inputHandle || "Value")]: coerced,
2327
+ });
2328
+ return;
2329
+ }
2330
+ if (isArray && arrTarget) {
2331
+ const nodeDesc = registry.nodes.get(String(arrTarget.nodeTypeId));
2332
+ const inType = getInputTypeId(nodeDesc?.inputs, String(arrTarget.inputHandle || "Value"));
2333
+ const coerced = await coerceIfNeeded(typeId, inType, unwrap(raw));
2334
+ const newId = `n${Math.random().toString(36).slice(2, 8)}`;
2335
+ wb.addNode({
2336
+ nodeId: newId,
2337
+ typeId: String(arrTarget.nodeTypeId),
2338
+ position: { x: pos.x + 180, y: pos.y },
2339
+ params: {},
2340
+ });
2341
+ runner.update(wb.export());
2342
+ await runner.whenIdle();
2343
+ runner.setInputs(newId, {
2344
+ [String(arrTarget.inputHandle || "Value")]: coerced,
2345
+ });
2346
+ return;
2347
+ }
2348
+ if (isArray && elemTarget && Array.isArray(raw)) {
2349
+ const nodeDesc = registry.nodes.get(String(elemTarget.nodeTypeId));
2350
+ const inType = getInputTypeId(nodeDesc?.inputs, String(elemTarget.inputHandle || "Value"));
2351
+ const items = raw.map(unwrap);
2352
+ const coercedItems = await Promise.all(items.map((v) => coerceIfNeeded(baseTypeId, inType, v)));
2353
+ const COLS = 4;
2354
+ const DX = 180;
2355
+ const DY = 160;
2356
+ for (let idx = 0; idx < coercedItems.length; idx++) {
2357
+ const cv = coercedItems[idx];
2358
+ const col = idx % COLS;
2359
+ const row = Math.floor(idx / COLS);
2360
+ const newId = wb.addNode({
2361
+ typeId: String(elemTarget.nodeTypeId),
2362
+ position: { x: pos.x + (col + 1) * DX, y: pos.y + row * DY },
2363
+ params: {},
2364
+ initialInputs: {
2365
+ [String(elemTarget.inputHandle || "Value")]: clone(cv),
2366
+ },
2367
+ });
2368
+ runner.update(wb.export());
2369
+ await runner.whenIdle();
2370
+ runner.setInputs(newId, {
2371
+ [String(elemTarget.inputHandle || "Value")]: cv,
2372
+ });
2373
+ }
2374
+ return;
2375
+ }
2376
+ }
2377
+ catch { }
2378
+ };
2358
2379
  // actions
2359
- const handleDelete = () => {
2380
+ const handleDelete = useCallback(() => {
2360
2381
  wb.removeNode(nodeId);
2361
2382
  onClose();
2362
- };
2363
- const handleDuplicate = () => {
2383
+ }, [nodeId, wb, onClose]);
2384
+ const handleDuplicate = useCallback(() => {
2364
2385
  const def = wb.export();
2365
2386
  const n = def.nodes.find((n) => n.nodeId === nodeId);
2366
2387
  if (!n)
2367
2388
  return onClose();
2368
2389
  const pos = wb.getPositions?.()[nodeId] || { x: 0, y: 0 };
2369
- wb.addNode({ typeId: n.typeId, params: n.params, position: { x: pos.x + 24, y: pos.y + 24 } });
2390
+ wb.addNode({
2391
+ typeId: n.typeId,
2392
+ params: n.params,
2393
+ position: { x: pos.x + 24, y: pos.y + 24 },
2394
+ });
2370
2395
  onClose();
2371
- };
2372
- const handleCopyId = async () => {
2396
+ }, [nodeId, wb, onClose]);
2397
+ useCallback(async (handleId) => {
2398
+ await doBake(handleId);
2399
+ onClose();
2400
+ }, [doBake, onClose]);
2401
+ const handleCopyId = useCallback(async () => {
2373
2402
  try {
2374
2403
  await navigator.clipboard.writeText(nodeId);
2375
2404
  }
2376
2405
  catch { }
2377
2406
  onClose();
2378
- };
2379
- const canRunPull = engineKind()?.toString() === "pull";
2380
- const handleRunPull = async () => {
2407
+ }, [nodeId, onClose]);
2408
+ const handleRunPull = useCallback(async () => {
2381
2409
  try {
2382
2410
  await runner.computeNode(nodeId);
2383
2411
  }
2384
2412
  catch { }
2385
2413
  onClose();
2386
- };
2414
+ }, [nodeId, runner, onClose]);
2415
+ const canRunPull = engineKind()?.toString() === "pull";
2416
+ const outs = getBakeableOutputs();
2387
2417
  return (jsxs("div", { ref: ref, tabIndex: -1, className: "fixed z-[1000] bg-white border border-gray-300 rounded-lg shadow-lg p-1 min-w-[180px] text-sm text-gray-700", style: { left: x, top: y }, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), onWheel: (e) => e.stopPropagation(), onContextMenu: (e) => {
2388
2418
  e.preventDefault();
2389
2419
  e.stopPropagation();
2390
- }, children: [jsxs("div", { className: "px-2 py-1 font-semibold text-gray-700", children: ["Node (", nodeId, ")"] }), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleDelete, children: "Delete" }), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleDuplicate, children: "Duplicate" }), canRunPull && (jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleRunPull, children: "Run (pull)" })), jsx("div", { className: "h-px bg-gray-200 my-1" }), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleCopyId, children: "Copy Node ID" })] }));
2420
+ }, children: [jsxs("div", { className: "px-2 py-1 font-semibold text-gray-700", children: ["Node (", nodeId, ")"] }), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleDelete, children: "Delete" }), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleDuplicate, children: "Duplicate" }), canRunPull && (jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleRunPull, children: "Run (pull)" })), jsx("div", { className: "h-px bg-gray-200 my-1" }), outs.length > 0 && (jsxs(Fragment, { children: [jsx("div", { className: "px-2 py-1 font-semibold text-gray-700", children: "Bake" }), outs.map((h) => (jsxs("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: async () => {
2421
+ await doBake(h);
2422
+ onClose();
2423
+ }, children: ["Bake: ", h] }, h))), jsx("div", { className: "h-px bg-gray-200 my-1" })] })), jsx("button", { className: "block w-full text-left px-2 py-1 hover:bg-gray-100", onClick: handleCopyId, children: "Copy Node ID" })] }));
2391
2424
  }
2392
2425
 
2393
2426
  const WorkbenchCanvas = React.forwardRef(({ showValues, toString, toElement, getDefaultNodeSize }, ref) => {
@@ -2617,10 +2650,21 @@ const WorkbenchCanvas = React.forwardRef(({ showValues, toString, toElement, get
2617
2650
  setNodeMenuOpen(false);
2618
2651
  }
2619
2652
  };
2620
- const addNodeAt = (typeId, pos) => {
2653
+ const addNodeAt = useCallback((typeId, pos) => {
2621
2654
  wb.addNode({ typeId, position: pos });
2622
- };
2623
- return (jsx("div", { className: "w-full h-full", onContextMenu: onContextMenu, children: jsx(ReactFlowProvider, { children: jsxs(ReactFlow, { nodes: throttled.nodes, edges: throttled.edges, nodeTypes: nodeTypes, selectionOnDrag: true, onInit: (inst) => (rfInstanceRef.current = inst), onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", fitView: true, children: [jsx(Background, { id: "workbench-canvas-background", variant: BackgroundVariant.Dots, gap: 12, size: 1 }), jsx(MiniMap, {}), jsx(Controls, {}), jsx(DefaultContextMenu, { open: menuOpen, clientPos: menuPos, onAdd: addNodeAt, onClose: () => setMenuOpen(false) }), jsx(NodeContextMenu, { open: nodeMenuOpen, clientPos: nodeMenuPos, nodeId: nodeAtMenu, onClose: () => setNodeMenuOpen(false) })] }) }) }));
2655
+ }, [wb]);
2656
+ useCallback((inst) => {
2657
+ rfInstanceRef.current = inst;
2658
+ }, []);
2659
+ const onCloseMenu = useCallback(() => {
2660
+ setMenuOpen(false);
2661
+ }, []);
2662
+ const onCloseNodeMenu = useCallback(() => {
2663
+ setNodeMenuOpen(false);
2664
+ }, []);
2665
+ return (jsx("div", { className: "w-full h-full", onContextMenu: onContextMenu, children: jsx(ReactFlowProvider, { children: jsxs(ReactFlow, { nodes: throttled.nodes, edges: throttled.edges, nodeTypes: nodeTypes, selectionOnDrag: true, onInit: (inst) => {
2666
+ rfInstanceRef.current = inst;
2667
+ }, onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", fitView: true, children: [jsx(Background, { id: "workbench-canvas-background", variant: BackgroundVariant.Dots, gap: 12, size: 1 }), jsx(MiniMap, {}), jsx(Controls, {}), jsx(DefaultContextMenu, { open: menuOpen, clientPos: menuPos, onAdd: addNodeAt, onClose: onCloseMenu }), jsx(NodeContextMenu, { open: nodeMenuOpen, clientPos: nodeMenuPos, nodeId: nodeAtMenu, onClose: onCloseNodeMenu })] }) }) }));
2624
2668
  });
2625
2669
 
2626
2670
  function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, example, onExampleChange, engine, onEngineChange, backendKind, onBackendKindChange, httpBaseUrl, onHttpBaseUrlChange, wsUrl, onWsUrlChange, debug, onDebugChange, showValues, onShowValuesChange, hideWorkbench, onHideWorkbenchChange, overrides, onInit, onChange, }) {