Skip to content

Commit c0453ab

Browse files
committed
move code to create custom nodes more easily to library packages
1 parent 63736a6 commit c0453ab

File tree

17 files changed

+407
-38
lines changed

17 files changed

+407
-38
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import {
2+
createJSXElement,
3+
FlowNode,
4+
IComputeResult,
5+
IRectNodeComponent,
6+
Rect,
7+
IFlowCanvasBase,
8+
FormField,
9+
InitialValues,
10+
IRunCounter,
11+
IConnectionNodeComponent,
12+
} from '@devhelpr/visual-programming-system';
13+
import { FlowEngine, NodeInfo, RunCounter } from '@devhelpr/web-flow-executor';
14+
15+
export type CreateRunCounterContext = (
16+
isRunViaRunButton: boolean,
17+
shouldResetConnectionSlider: boolean,
18+
onFlowFinished?: () => void
19+
) => RunCounter;
20+
21+
export class BaseRectNode {
22+
nodeRenderElement: HTMLElement | undefined = undefined;
23+
rectElement: HTMLElement | undefined = undefined;
24+
canvasAppInstance: IFlowCanvasBase<NodeInfo> | undefined = undefined;
25+
id: string;
26+
node: IRectNodeComponent<NodeInfo> | undefined = undefined;
27+
updated: () => void;
28+
29+
rectInstance: Rect<NodeInfo> | undefined;
30+
31+
createRunCounterContext: CreateRunCounterContext | undefined = undefined;
32+
33+
static readonly nodeTypeName: string = 'rect-node';
34+
static readonly nodeTitle: string = 'Rect node';
35+
static readonly category: string = 'Default';
36+
37+
static readonly text: string = 'rect';
38+
39+
static getFormFields:
40+
| ((
41+
getNode: () => IRectNodeComponent<NodeInfo>,
42+
updated: () => void,
43+
values?: InitialValues
44+
) => FormField[])
45+
| undefined = undefined;
46+
47+
static readonly disableManualResize: boolean = true;
48+
flowEngine: FlowEngine | undefined = undefined;
49+
constructor(
50+
id: string,
51+
updated: () => void,
52+
node: IRectNodeComponent<NodeInfo>,
53+
flowEngine?: FlowEngine
54+
) {
55+
this.id = id;
56+
this.updated = updated;
57+
this.node = node;
58+
this.flowEngine = flowEngine;
59+
}
60+
61+
initNode(_node: IRectNodeComponent<NodeInfo>, _flowEngine?: FlowEngine) {
62+
//
63+
}
64+
65+
destroy() {
66+
//
67+
}
68+
69+
updateVisual:
70+
| ((data: any, scopeId?: string | undefined) => void)
71+
| undefined = undefined;
72+
73+
initializeCompute: (() => void) | undefined = undefined;
74+
75+
compute = (
76+
input: unknown,
77+
_loopIndex?: number,
78+
_payload?: unknown,
79+
_portName?: string,
80+
_scopeId?: string,
81+
_runCounter?: IRunCounter,
82+
_connection?: IConnectionNodeComponent<NodeInfo>
83+
): Promise<IComputeResult> => {
84+
return new Promise<IComputeResult>((resolve) => {
85+
resolve({
86+
result: input,
87+
output: input,
88+
followPath: undefined,
89+
});
90+
});
91+
};
92+
93+
childElementSelector = '.child-node-wrapper > textarea';
94+
render(_node: FlowNode<NodeInfo>) {
95+
return <div></div>;
96+
}
97+
onResize: ((width: number, height: number) => void) | undefined = undefined;
98+
setSize = (width: number, height: number) => {
99+
//
100+
};
101+
}

apps/vps-web/src/app/custom-nodes/classes/canvas-node-class.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { BaseRectNode } from '@devhelpr/app-canvas';
12
import {
23
createJSXElement,
34
FlowNode,
45
IComputeResult,
56
IRectNodeComponent,
67
} from '@devhelpr/visual-programming-system';
78
import { NodeInfo } from '@devhelpr/web-flow-executor';
8-
import { BaseRectNode } from './base-rect-node-class';
99

1010
export class CanvasNode extends BaseRectNode {
1111
static readonly nodeTypeName: string = 'canvas-rect-node';

apps/vps-web/src/app/custom-nodes/classes/draw-grid-node.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BaseRectNode } from '@devhelpr/app-canvas';
12
import {
23
createElement,
34
createJSXElement,
@@ -7,8 +8,6 @@ import {
78
} from '@devhelpr/visual-programming-system';
89
import { getRunIndex, NodeInfo, runNode } from '@devhelpr/web-flow-executor';
910

10-
import { BaseRectNode } from './base-rect-node-class';
11-
1211
class Label extends HTMLElement {
1312
constructor() {
1413
super();

apps/vps-web/src/app/custom-nodes/classes/oval-node-class.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { NodeInfo } from '@devhelpr/web-flow-executor';
77

88
// @ts-expect-error:will-fix-later
99
import TestWorker from './workers/test-worker?worker';
10-
import { BaseRectNode } from './base-rect-node-class';
10+
import { BaseRectNode } from '@devhelpr/app-canvas';
1111

1212
const testWorker = new TestWorker();
1313

apps/vps-web/src/app/custom-nodes/classes/prompt-image-class.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BaseRectNode } from '@devhelpr/app-canvas';
12
import {
23
createJSXElement,
34
FlowNode,
@@ -6,7 +7,6 @@ import {
67
InitialValues,
78
} from '@devhelpr/visual-programming-system';
89
import { NodeInfo } from '@devhelpr/web-flow-executor';
9-
import { BaseRectNode } from './base-rect-node-class';
1010

1111
export class PromptImageNode extends BaseRectNode {
1212
static readonly nodeTypeName: string = 'prompt-image-rect-node';

apps/vps-web/src/app/custom-nodes/classes/prompt-node-class.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BaseRectNode } from '@devhelpr/app-canvas';
12
import {
23
createJSXElement,
34
FlowNode,
@@ -7,7 +8,6 @@ import {
78
FormFieldType,
89
} from '@devhelpr/visual-programming-system';
910
import { NodeInfo } from '@devhelpr/web-flow-executor';
10-
import { BaseRectNode } from './base-rect-node-class';
1111

1212
export class PromptNode extends BaseRectNode {
1313
static readonly nodeTypeName: string = 'prompt-rect-node';

apps/vps-web/src/app/custom-nodes/classes/webcam-node.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BaseRectNode } from '@devhelpr/app-canvas';
12
import {
23
createElement,
34
createJSXElement,
@@ -7,8 +8,6 @@ import {
78
} from '@devhelpr/visual-programming-system';
89
import { getRunIndex, NodeInfo, runNode } from '@devhelpr/web-flow-executor';
910

10-
import { BaseRectNode } from './base-rect-node-class';
11-
1211
interface WebcamViewerSettings {
1312
fadeRadius: number;
1413
fadePower: number;

apps/vps-web/src/app/custom-nodes/register-nodes.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@ import {
44
RunCounter,
55
} from '@devhelpr/web-flow-executor';
66
import { mermaidNodeName, getMermaidNode } from './mermaid';
7-
import { getRectNode } from './rect-node';
7+
88
import { OvalNode } from './classes/oval-node-class';
99
import { DrawGridNode } from './classes/draw-grid-node';
10-
import {
11-
isBaseRectNode,
12-
isFactoryNode,
13-
NodeRegistration,
14-
} from './utils/register-helpers';
15-
import { createNodeClass, RectNode } from './classes/rect-node-class';
1610
import { WebcamViewerNode } from './classes/webcam-node';
1711
import { CanvasNode } from './classes/canvas-node-class';
1812
import { PromptNode } from './classes/prompt-node-class';
@@ -35,6 +29,14 @@ import {
3529
renderTestNodeDefinition,
3630
RenderTestNodeVisual,
3731
} from '../custom-nodes-v2/render-test-node-definition';
32+
import {
33+
NodeRegistration,
34+
RectNode,
35+
createNodeClass,
36+
isFactoryNode,
37+
isBaseRectNode,
38+
getRectNode,
39+
} from '@devhelpr/app-canvas';
3840

3941
const nodes: NodeRegistration[] = [
4042
() => ({

0 commit comments

Comments
 (0)