Skip to content

Commit cdf2106

Browse files
committed
test component
1 parent 89b0a55 commit cdf2106

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import {
2+
NodeDefinition,
3+
createJSXElement,
4+
NodeVisual,
5+
renderElement,
6+
} from '@devhelpr/visual-programming-system';
7+
import { NodeInfo } from '@devhelpr/web-flow-executor';
8+
9+
export const renderTestNodeDefinition: NodeDefinition = {
10+
nodeTypeName: 'redner-tet-node',
11+
description: 'A render test component',
12+
13+
nodeTheme: {
14+
backgroundColorClass: 'bg-teal-400',
15+
//textColorClass: 'text-white',
16+
},
17+
};
18+
19+
const TestComponent = ({
20+
setUpdater,
21+
}: {
22+
setUpdater?: (updated: (payload: any) => void) => void;
23+
}) => {
24+
let elementInstance: HTMLElement | null = null;
25+
setUpdater?.((payload: any) => {
26+
console.log('TestComponent updated with payload:', payload);
27+
if (elementInstance) {
28+
elementInstance.innerHTML = `Updated with payload: ${JSON.stringify(
29+
payload
30+
)}`;
31+
}
32+
});
33+
// This component can be used to test rendering and updates
34+
return (
35+
<div
36+
getElement={(element: HTMLElement) => {
37+
elementInstance = element;
38+
}}
39+
>
40+
Hello from TestComponent
41+
</div>
42+
);
43+
};
44+
45+
export class RenderTestNodeVisual extends NodeVisual<NodeInfo> {
46+
additionalContainerCssClasses = 'overflow-y-auto p-8';
47+
componentUpdater: ((payload: any) => void) | undefined = undefined;
48+
49+
render = () => {
50+
return (
51+
<div
52+
getElement={(element: HTMLElement) => {
53+
element.innerHTML = '';
54+
renderElement(
55+
<TestComponent
56+
setUpdater={(updater) => {
57+
this.componentUpdater = updater;
58+
}}
59+
/>,
60+
element
61+
);
62+
}}
63+
></div>
64+
);
65+
};
66+
updateVisual = (
67+
incomingData: unknown,
68+
_parentNode: HTMLElement,
69+
// Using underscore prefix to indicate intentionally unused parameter
70+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
71+
_nodeInfo: NodeInfo,
72+
_scopeId?: string | undefined
73+
) => {
74+
if (!this.canvasAppInstance) {
75+
return;
76+
}
77+
this.componentUpdater?.(incomingData);
78+
};
79+
80+
isResizing = false;
81+
resizeObserver: ResizeObserver | undefined = undefined;
82+
83+
destroy() {
84+
//
85+
}
86+
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ import {
3131
dummy3Definition,
3232
dummyDefinition,
3333
} from '../custom-nodes-v2/dummy-definition';
34+
import {
35+
renderTestNodeDefinition,
36+
RenderTestNodeVisual,
37+
} from '../custom-nodes-v2/render-test-node-definition';
3438

3539
const nodes: NodeRegistration[] = [
3640
() => ({
@@ -50,6 +54,7 @@ const nodes: NodeRegistration[] = [
5054
createNodeClass(dummyDefinition),
5155
createNodeClass(dummy2Definition),
5256
createNodeClass(dummy3Definition),
57+
createNodeClass(renderTestNodeDefinition, RenderTestNodeVisual),
5358
];
5459

5560
export const registerNodes = (

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"license": "see license in license.md",
55
"scripts": {
66
"start": "nx serve vps-web",
7+
"dev": "nx serve vps-web",
78
"startapi": "nx serve vps-api",
89
"build": "nx build vps-web",
910
"build-all": "nx run-many --all --target=build --skip-nx-cache",

0 commit comments

Comments
 (0)