@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.
- package/lib/cjs/index.cjs +69 -26
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/core/ui-extensions.d.ts +21 -6
- package/lib/cjs/src/core/ui-extensions.d.ts.map +1 -1
- package/lib/cjs/src/misc/WorkbenchCanvas.d.ts.map +1 -1
- package/lib/cjs/src/misc/layout.d.ts +67 -52
- package/lib/cjs/src/misc/layout.d.ts.map +1 -1
- package/lib/cjs/src/misc/mapping.d.ts +2 -0
- package/lib/cjs/src/misc/mapping.d.ts.map +1 -1
- package/lib/esm/index.js +69 -26
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/core/ui-extensions.d.ts +21 -6
- package/lib/esm/src/core/ui-extensions.d.ts.map +1 -1
- package/lib/esm/src/misc/WorkbenchCanvas.d.ts.map +1 -1
- package/lib/esm/src/misc/layout.d.ts +67 -52
- package/lib/esm/src/misc/layout.d.ts.map +1 -1
- package/lib/esm/src/misc/mapping.d.ts +2 -0
- package/lib/esm/src/misc/mapping.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -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":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
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;+
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
84
|
-
|
|
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":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/misc/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAOvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CACrC,IAAI,EAAE,oBAAoB,KACvB,sBAAsB,CAAC;AAE5B,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CACvC,IAAI,EAAE,sBAAsB,KACzB,wBAAwB,CAAC;AAE9B,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CACvC,IAAI,EAAE,sBAAsB,KACzB,wBAAwB,CAAC;AAE9B,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,CAAC;AAE5E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,QAAQ,GACjB,eAAe,CAOjB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,GAC9C;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAMA;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,oBAAoB,GACzB,sBAAsB,CAcxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,GAC3B,wBAAwB,CAU1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,GAC3B,wBAAwB,CAO1B;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,cAAc,EACpB,SAAS,CAAC,EAAE;IACV,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAChD,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;CACjD,GACA,gBAAgB,CA6DlB"}
|
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,QAAQ,EACR,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
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
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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) =>
|
|
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) =>
|
|
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);
|