@bian-womp/spark-workbench 0.2.56 → 0.2.57

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.
@@ -1,6 +1,6 @@
1
1
  import type React from "react";
2
+ import type { EstimateNodeSizeFunction, CreateHandleBoundsFunction, CreateHandleLayoutFunction, LayoutNodeFunction } from "../misc/layout";
2
3
  export type NodeRenderer = React.ComponentType<any>;
3
- export type IconProvider = (nodeTypeId: string) => unknown;
4
4
  export type ConnectionLineRenderer = React.ComponentType<any>;
5
5
  export type MinimapRenderer = React.ComponentType<any>;
6
6
  export type ControlsRenderer = React.ComponentType<any>;
@@ -11,8 +11,6 @@ export interface UIExtensionRegistry {
11
11
  registerNodeRenderer(nodeTypeId: string, renderer: NodeRenderer | undefined): this;
12
12
  getNodeRenderer(nodeTypeId: string): NodeRenderer | undefined;
13
13
  getAllNodeRenderers(): Record<string, NodeRenderer>;
14
- registerIconProvider(provider: IconProvider | undefined): this;
15
- getIconProvider(): IconProvider | undefined;
16
14
  registerConnectionLineRenderer(renderer: ConnectionLineRenderer | undefined): this;
17
15
  getConnectionLineRenderer(): ConnectionLineRenderer | undefined;
18
16
  registerMinimapRenderer(renderer: MinimapRenderer | undefined): this;
@@ -25,21 +23,30 @@ export interface UIExtensionRegistry {
25
23
  getDefaultContextMenuRenderer(): DefaultContextMenuRenderer | undefined;
26
24
  registerNodeContextMenuRenderer(renderer: NodeContextMenuRenderer | undefined): this;
27
25
  getNodeContextMenuRenderer(): NodeContextMenuRenderer | undefined;
26
+ registerEstimateNodeSize(override: EstimateNodeSizeFunction | undefined): this;
27
+ getEstimateNodeSize(): EstimateNodeSizeFunction | undefined;
28
+ registerCreateHandleBounds(override: CreateHandleBoundsFunction | undefined): this;
29
+ getCreateHandleBounds(): CreateHandleBoundsFunction | undefined;
30
+ registerCreateHandleLayout(override: CreateHandleLayoutFunction | undefined): this;
31
+ getCreateHandleLayout(): CreateHandleLayoutFunction | undefined;
32
+ registerLayoutNode(override: LayoutNodeFunction | undefined): this;
33
+ getLayoutNode(): LayoutNodeFunction | undefined;
28
34
  }
29
35
  export declare class DefaultUIExtensionRegistry implements UIExtensionRegistry {
30
36
  private nodeRenderers;
31
- private iconProvider?;
32
37
  private connectionLineRenderer?;
33
38
  private minimapRenderer?;
34
39
  private controlsRenderer?;
35
40
  private backgroundRenderer?;
36
41
  private defaultContextMenuRenderer?;
37
42
  private nodeContextMenuRenderer?;
43
+ private estimateNodeSizeOverride?;
44
+ private createHandleBoundsOverride?;
45
+ private createHandleLayoutOverride?;
46
+ private layoutNodeOverride?;
38
47
  registerNodeRenderer(nodeTypeId: string, renderer: NodeRenderer | undefined): this;
39
48
  getNodeRenderer(nodeTypeId: string): NodeRenderer | undefined;
40
49
  getAllNodeRenderers(): Record<string, NodeRenderer>;
41
- registerIconProvider(provider: IconProvider | undefined): this;
42
- getIconProvider(): IconProvider | undefined;
43
50
  registerConnectionLineRenderer(renderer: ConnectionLineRenderer | undefined): this;
44
51
  getConnectionLineRenderer(): ConnectionLineRenderer | undefined;
45
52
  registerMinimapRenderer(renderer: MinimapRenderer | undefined): this;
@@ -52,5 +59,13 @@ export declare class DefaultUIExtensionRegistry implements UIExtensionRegistry {
52
59
  getDefaultContextMenuRenderer(): DefaultContextMenuRenderer | undefined;
53
60
  registerNodeContextMenuRenderer(renderer: NodeContextMenuRenderer | undefined): this;
54
61
  getNodeContextMenuRenderer(): NodeContextMenuRenderer | undefined;
62
+ registerEstimateNodeSize(override: EstimateNodeSizeFunction | undefined): this;
63
+ getEstimateNodeSize(): EstimateNodeSizeFunction | undefined;
64
+ registerCreateHandleBounds(override: CreateHandleBoundsFunction | undefined): this;
65
+ getCreateHandleBounds(): CreateHandleBoundsFunction | undefined;
66
+ registerCreateHandleLayout(override: CreateHandleLayoutFunction | undefined): this;
67
+ getCreateHandleLayout(): CreateHandleLayoutFunction | undefined;
68
+ registerLayoutNode(override: LayoutNodeFunction | undefined): this;
69
+ getLayoutNode(): LayoutNodeFunction | undefined;
55
70
  }
56
71
  //# sourceMappingURL=ui-extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-extensions.d.ts","sourceRoot":"","sources":["../../../../src/core/ui-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-extensions.d.ts","sourceRoot":"","sources":["../../../../src/core/ui-extensions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAqBf,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;+CAgiBpD,CAAC"}
1
+ {"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAqBf,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;+CAiiBpD,CAAC"}
@@ -1,12 +1,7 @@
1
1
  import type { ResolvedHandles, GraphNodeDefinition } from "@bian-womp/spark-protocol";
2
- import { Registry } from "@bian-womp/spark-graph";
2
+ import type { Registry } from "@bian-womp/spark-graph";
3
3
  import { Position } from "@xyflow/react";
4
- export declare function computeEffectiveHandles(node: GraphNodeDefinition, registry: Registry): ResolvedHandles;
5
- export declare function countVisibleHandles(handles: Omit<ResolvedHandles, "inputDefaults">): {
6
- inputsCount: number;
7
- outputsCount: number;
8
- };
9
- export declare function estimateNodeSize(args: {
4
+ export type EstimateNodeSizeArgs = {
10
5
  node: GraphNodeDefinition;
11
6
  registry: Registry;
12
7
  showValues?: boolean;
@@ -14,37 +9,20 @@ export declare function estimateNodeSize(args: {
14
9
  width?: number;
15
10
  height?: number;
16
11
  };
17
- }): {
12
+ };
13
+ export type EstimateNodeSizeResult = {
18
14
  width: number;
19
15
  height: number;
20
- inputsCount: number;
21
- outputsCount: number;
22
- rowCount: number;
23
16
  };
24
- /**
25
- * Calculate the Y position for handle layout (center of row).
26
- * Used for positioning handles in React Flow.
27
- */
28
- export declare function getHandleLayoutY(rowIndex: number): number;
29
- /**
30
- * Calculate the Y position for handle bounds (top + centering offset).
31
- * Used for hit-testing and edge routing.
32
- */
33
- export declare function getHandleBoundsY(rowIndex: number): number;
34
- /**
35
- * Calculate the X position for handle bounds based on position and node width.
36
- */
37
- export declare function getHandleBoundsX(position: Position, nodeWidth: number): number;
38
- /**
39
- * Create handle bounds object for hit-testing/edge routing.
40
- */
41
- export declare function createHandleBounds(args: {
17
+ export type EstimateNodeSizeFunction = (args: EstimateNodeSizeArgs) => EstimateNodeSizeResult;
18
+ export type CreateHandleBoundsArgs = {
42
19
  id: string;
43
20
  type: "source" | "target";
44
21
  position: Position;
45
22
  rowIndex: number;
46
23
  nodeWidth: number;
47
- }): {
24
+ };
25
+ export type CreateHandleBoundsResult = {
48
26
  id: string;
49
27
  type: "source" | "target";
50
28
  position: Position;
@@ -53,21 +31,21 @@ export declare function createHandleBounds(args: {
53
31
  width: number;
54
32
  height: number;
55
33
  };
56
- /**
57
- * Create handle layout object for React Flow rendering.
58
- */
59
- export declare function createHandleLayout(args: {
34
+ export type CreateHandleBoundsFunction = (args: CreateHandleBoundsArgs) => CreateHandleBoundsResult;
35
+ export type CreateHandleLayoutArgs = {
60
36
  id: string;
61
37
  type: "source" | "target";
62
38
  position: Position;
63
39
  rowIndex: number;
64
- }): {
40
+ };
41
+ export type CreateHandleLayoutResult = {
65
42
  id: string;
66
43
  type: "source" | "target";
67
44
  position: Position;
68
45
  y: number;
69
46
  };
70
- export declare function layoutNode(args: {
47
+ export type CreateHandleLayoutFunction = (args: CreateHandleLayoutArgs) => CreateHandleLayoutResult;
48
+ export type LayoutNodeArgs = {
71
49
  node: GraphNodeDefinition;
72
50
  registry: Registry;
73
51
  showValues?: boolean;
@@ -75,25 +53,62 @@ export declare function layoutNode(args: {
75
53
  width?: number;
76
54
  height?: number;
77
55
  };
78
- }): {
56
+ };
57
+ export type HandleBounds = {
58
+ id: string;
59
+ type: "source" | "target";
60
+ position: Position;
61
+ x: number;
62
+ y: number;
63
+ width?: number;
64
+ height?: number;
65
+ };
66
+ export type HandleLayout = {
67
+ id: string;
68
+ type: "source" | "target";
69
+ position: Position;
70
+ y: number;
71
+ };
72
+ export type LayoutNodeResult = {
79
73
  width: number;
80
74
  height: number;
81
75
  inputOrder: string[];
82
76
  outputOrder: string[];
83
- handles: Array<{
84
- id: string;
85
- type: "source" | "target";
86
- position: Position;
87
- x: number;
88
- y: number;
89
- width?: number;
90
- height?: number;
91
- }>;
92
- handleLayout: Array<{
93
- id: string;
94
- type: "source" | "target";
95
- position: Position;
96
- y: number;
97
- }>;
77
+ handles: HandleBounds[];
78
+ handleLayout: HandleLayout[];
98
79
  };
80
+ export type LayoutNodeFunction = (args: LayoutNodeArgs) => LayoutNodeResult;
81
+ export declare function computeEffectiveHandles(node: GraphNodeDefinition, registry: Registry): ResolvedHandles;
82
+ export declare function countVisibleHandles(handles: Omit<ResolvedHandles, "inputDefaults">): {
83
+ inputsCount: number;
84
+ outputsCount: number;
85
+ };
86
+ export declare function estimateNodeSize(args: EstimateNodeSizeArgs): EstimateNodeSizeResult;
87
+ /**
88
+ * Calculate the Y position for handle layout (center of row).
89
+ * Used for positioning handles in React Flow.
90
+ */
91
+ export declare function getHandleLayoutY(rowIndex: number): number;
92
+ /**
93
+ * Calculate the Y position for handle bounds (top + centering offset).
94
+ * Used for hit-testing and edge routing.
95
+ */
96
+ export declare function getHandleBoundsY(rowIndex: number): number;
97
+ /**
98
+ * Calculate the X position for handle bounds based on position and node width.
99
+ */
100
+ export declare function getHandleBoundsX(position: Position, nodeWidth: number): number;
101
+ /**
102
+ * Create handle bounds object for hit-testing/edge routing.
103
+ */
104
+ export declare function createHandleBounds(args: CreateHandleBoundsArgs): CreateHandleBoundsResult;
105
+ /**
106
+ * Create handle layout object for React Flow rendering.
107
+ */
108
+ export declare function createHandleLayout(args: CreateHandleLayoutArgs): CreateHandleLayoutResult;
109
+ export declare function layoutNode(args: LayoutNodeArgs, overrides?: {
110
+ estimateNodeSize?: EstimateNodeSizeFunction;
111
+ createHandleBounds?: CreateHandleBoundsFunction;
112
+ createHandleLayout?: CreateHandleLayoutFunction;
113
+ }): LayoutNodeResult;
99
114
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/misc/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/misc/layout.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Registry, ValidationIssue } from "@bian-womp/spark-graph";
3
3
  import { Position } from "@xyflow/react";
4
4
  import type { EdgeRunStatus, NodeRunStatus } from "../core/contracts";
5
5
  import type { HandleIssue } from "../core/contracts";
6
+ import type { UIExtensionRegistry } from "../core/ui-extensions";
6
7
  export interface RFNode {
7
8
  id: string;
8
9
  position: {
@@ -97,6 +98,7 @@ export declare function toReactFlow(def: GraphDefinition, positions: Record<stri
97
98
  width: number;
98
99
  height: number;
99
100
  } | undefined;
101
+ ui?: UIExtensionRegistry;
100
102
  }): {
101
103
  nodes: RFNode[];
102
104
  edges: RFEdge[];
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../../../src/misc/mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../../../src/misc/mapping.ts"],"names":[],"mappings":"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"}
package/lib/esm/index.js CHANGED
@@ -30,13 +30,6 @@ class DefaultUIExtensionRegistry {
30
30
  }
31
31
  return result;
32
32
  }
33
- registerIconProvider(provider) {
34
- this.iconProvider = provider;
35
- return this;
36
- }
37
- getIconProvider() {
38
- return this.iconProvider;
39
- }
40
33
  // React Flow renderers
41
34
  registerConnectionLineRenderer(renderer) {
42
35
  this.connectionLineRenderer = renderer;
@@ -80,6 +73,35 @@ class DefaultUIExtensionRegistry {
80
73
  getNodeContextMenuRenderer() {
81
74
  return this.nodeContextMenuRenderer;
82
75
  }
76
+ // Layout function overrides
77
+ registerEstimateNodeSize(override) {
78
+ this.estimateNodeSizeOverride = override;
79
+ return this;
80
+ }
81
+ getEstimateNodeSize() {
82
+ return this.estimateNodeSizeOverride;
83
+ }
84
+ registerCreateHandleBounds(override) {
85
+ this.createHandleBoundsOverride = override;
86
+ return this;
87
+ }
88
+ getCreateHandleBounds() {
89
+ return this.createHandleBoundsOverride;
90
+ }
91
+ registerCreateHandleLayout(override) {
92
+ this.createHandleLayoutOverride = override;
93
+ return this;
94
+ }
95
+ getCreateHandleLayout() {
96
+ return this.createHandleLayoutOverride;
97
+ }
98
+ registerLayoutNode(override) {
99
+ this.layoutNodeOverride = override;
100
+ return this;
101
+ }
102
+ getLayoutNode() {
103
+ return this.layoutNodeOverride;
104
+ }
83
105
  }
84
106
 
85
107
  class AbstractWorkbench {
@@ -1440,7 +1462,7 @@ function estimateNodeSize(args) {
1440
1462
  const baseWidth = showValues ? 320 : 240;
1441
1463
  const width = overrides?.width ?? baseWidth;
1442
1464
  const height = overrides?.height ?? NODE_HEADER_HEIGHT_PX + rows * NODE_ROW_HEIGHT_PX;
1443
- return { width, height, inputsCount, outputsCount, rowCount: rows };
1465
+ return { width, height };
1444
1466
  }
1445
1467
  /**
1446
1468
  * Calculate the Y position for handle layout (center of row).
@@ -1497,26 +1519,29 @@ function createHandleLayout(args) {
1497
1519
  y: getHandleLayoutY(args.rowIndex),
1498
1520
  };
1499
1521
  }
1500
- function layoutNode(args) {
1501
- const { node, registry, showValues, overrides } = args;
1522
+ function layoutNode(args, overrides) {
1523
+ const { node, registry, showValues, overrides: sizeOverrides } = args;
1502
1524
  const { inputs, outputs } = computeEffectiveHandles(node, registry);
1503
1525
  const inputOrder = Object.keys(inputs).filter((k) => !isInputPrivate(inputs, k));
1504
1526
  const outputOrder = Object.keys(outputs);
1505
- const { width, height } = estimateNodeSize({
1527
+ const estimateNodeSizeFn = overrides?.estimateNodeSize ?? estimateNodeSize;
1528
+ const createHandleBoundsFn = overrides?.createHandleBounds ?? createHandleBounds;
1529
+ const createHandleLayoutFn = overrides?.createHandleLayout ?? createHandleLayout;
1530
+ const { width, height } = estimateNodeSizeFn({
1506
1531
  node,
1507
1532
  registry,
1508
1533
  showValues,
1509
- overrides,
1534
+ overrides: sizeOverrides,
1510
1535
  });
1511
1536
  const handles = [
1512
- ...inputOrder.map((id, i) => createHandleBounds({
1537
+ ...inputOrder.map((id, i) => createHandleBoundsFn({
1513
1538
  id,
1514
1539
  type: "target",
1515
1540
  position: Position.Left,
1516
1541
  rowIndex: i,
1517
1542
  nodeWidth: width,
1518
1543
  })),
1519
- ...outputOrder.map((id, i) => createHandleBounds({
1544
+ ...outputOrder.map((id, i) => createHandleBoundsFn({
1520
1545
  id,
1521
1546
  type: "source",
1522
1547
  position: Position.Right,
@@ -1525,13 +1550,13 @@ function layoutNode(args) {
1525
1550
  })),
1526
1551
  ];
1527
1552
  const handleLayout = [
1528
- ...inputOrder.map((id, i) => createHandleLayout({
1553
+ ...inputOrder.map((id, i) => createHandleLayoutFn({
1529
1554
  id,
1530
1555
  type: "target",
1531
1556
  position: Position.Left,
1532
1557
  rowIndex: i,
1533
1558
  })),
1534
- ...outputOrder.map((id, i) => createHandleLayout({
1559
+ ...outputOrder.map((id, i) => createHandleLayoutFn({
1535
1560
  id,
1536
1561
  type: "source",
1537
1562
  position: Position.Right,
@@ -1824,15 +1849,32 @@ function toReactFlow(def, positions, registry, opts) {
1824
1849
  // This map is still used later for certain checks; align with valid handles
1825
1850
  const nodeHandleMap = {};
1826
1851
  Object.assign(nodeHandleMap, validHandleMap);
1852
+ // Get layout function overrides from UI registry
1853
+ const layoutNodeOverride = opts.ui?.getLayoutNode() ?? layoutNode;
1854
+ const createHandleBoundsFn = opts.ui?.getCreateHandleBounds() ?? createHandleBounds;
1855
+ const createHandleLayoutFn = opts.ui?.getCreateHandleLayout() ?? createHandleLayout;
1856
+ const estimateNodeSizeFn = opts.ui?.getEstimateNodeSize() ?? estimateNodeSize;
1827
1857
  const nodes = def.nodes.map((n) => {
1828
1858
  const { inputs: inputSource, outputs: outputSource } = computeEffectiveHandles(n, registry);
1829
1859
  const overrideSize = opts.getDefaultNodeSize?.(n.typeId);
1830
- const geom = layoutNode({
1831
- node: n,
1832
- registry,
1833
- showValues: opts.showValues,
1834
- overrides: overrideSize,
1835
- });
1860
+ // If layoutNode is overridden, use it directly; otherwise use default with internal overrides
1861
+ const geom = layoutNodeOverride
1862
+ ? layoutNodeOverride({
1863
+ node: n,
1864
+ registry,
1865
+ showValues: opts.showValues,
1866
+ overrides: overrideSize,
1867
+ })
1868
+ : layoutNode({
1869
+ node: n,
1870
+ registry,
1871
+ showValues: opts.showValues,
1872
+ overrides: overrideSize,
1873
+ }, {
1874
+ estimateNodeSize: estimateNodeSizeFn,
1875
+ createHandleBounds: createHandleBoundsFn,
1876
+ createHandleLayout: createHandleLayoutFn,
1877
+ });
1836
1878
  const inputHandles = geom.inputOrder.map((id) => ({
1837
1879
  id,
1838
1880
  typeId: getInputTypeId(inputSource, id),
@@ -1851,7 +1893,7 @@ function toReactFlow(def, positions, registry, opts) {
1851
1893
  const extraInputs = Array.from(missingInputsByNode[n.nodeId] || []);
1852
1894
  const extraOutputs = Array.from(missingOutputsByNode[n.nodeId] || []);
1853
1895
  const extraHandleLayoutLeft = extraInputs.map((id, i) => ({
1854
- ...createHandleLayout({
1896
+ ...createHandleLayoutFn({
1855
1897
  id,
1856
1898
  type: "target",
1857
1899
  position: Position.Left,
@@ -1860,7 +1902,7 @@ function toReactFlow(def, positions, registry, opts) {
1860
1902
  missing: true,
1861
1903
  }));
1862
1904
  const extraHandleLayoutRight = extraOutputs.map((id, i) => ({
1863
- ...createHandleLayout({
1905
+ ...createHandleLayoutFn({
1864
1906
  id,
1865
1907
  type: "source",
1866
1908
  position: Position.Right,
@@ -1874,14 +1916,14 @@ function toReactFlow(def, positions, registry, opts) {
1874
1916
  ...extraHandleLayoutRight,
1875
1917
  ];
1876
1918
  // Precompute handle bounds (including missing) so edges can render immediately
1877
- const missingBoundsLeft = extraInputs.map((id, i) => createHandleBounds({
1919
+ const missingBoundsLeft = extraInputs.map((id, i) => createHandleBoundsFn({
1878
1920
  id,
1879
1921
  type: "target",
1880
1922
  position: Position.Left,
1881
1923
  rowIndex: baseLeftCount + i,
1882
1924
  nodeWidth: geom.width,
1883
1925
  }));
1884
- const missingBoundsRight = extraOutputs.map((id, i) => createHandleBounds({
1926
+ const missingBoundsRight = extraOutputs.map((id, i) => createHandleBoundsFn({
1885
1927
  id,
1886
1928
  type: "source",
1887
1929
  position: Position.Right,
@@ -3689,6 +3731,7 @@ const WorkbenchCanvas = React.forwardRef(({ showValues, toString, toElement, get
3689
3731
  selectedNodeIds: new Set(sel.nodes),
3690
3732
  selectedEdgeIds: new Set(sel.edges),
3691
3733
  getDefaultNodeSize,
3734
+ ui,
3692
3735
  });
3693
3736
  // Retain references for unchanged items
3694
3737
  const stableNodes = retainStabilityById(prevNodesRef.current, out.nodes, isSameNode);