- <>
-
- {title}
-
{required ? " *" : ""}
-
- {info !== "" && (
-
- {/* put div to avoid bug that does not display tooltip */}
-
-
-
-
- )}
-
-
- {left &&
- (type === "str" ||
- type === "bool" ||
- type === "float" ||
- type === "code" ||
- type === "prompt" ||
- type === "file" ||
- type === "int") &&
- !optionalHandle ? (
- <>>
- ) : (
-
-
- isValidConnection(connection, reactFlowInstance!)
- }
- className={classNames(
- left ? "-ml-0.5 " : "-mr-0.5 ",
- "h-3 w-3 rounded-full border-2 bg-background"
- )}
- style={{
- borderColor: color,
- top: position,
- }}
- >
-
+
+ isValidConnection(connection, reactFlowInstance!)
+ }
+ className={classNames(
+ left ? "my-12 -ml-0.5 " : " my-12 -mr-0.5 ",
+ "h-3 w-3 rounded-full border-2 bg-background"
)}
-
- {left === true &&
- type === "str" &&
- !data.node?.template[name].options ? (
-
- {data.node?.template[name].list ? (
-
- ) : data.node?.template[name].multiline ? (
-
- ) : (
-
- )}
-
- ) : left === true && type === "bool" ? (
-
- {
- handleOnNewValue(isEnabled);
- }}
- size="large"
- />
-
- ) : left === true && type === "float" ? (
-
-
-
- ) : left === true &&
- type === "str" &&
- data.node?.template[name].options ? (
-
-
-
- ) : left === true && type === "code" ? (
-
- {
- data.node = nodeClass;
- }}
- nodeClass={data.node}
- disabled={disabled}
- value={data.node?.template[name].value ?? ""}
- onChange={handleOnNewValue}
- />
-
- ) : left === true && type === "file" ? (
-
- {
- data.node!.template[name].file_path = filePath;
- save();
- }}
- >
-
- ) : left === true && type === "int" ? (
-
-
-
- ) : left === true && type === "prompt" ? (
-
-
{
- data.node = nodeClass;
- }}
- nodeClass={data.node}
- disabled={disabled}
- value={data.node?.template[name].value ?? ""}
- onChange={handleOnNewValue}
- />
-
- ) : (
- <>>
- )}
- >
-
+ style={{
+ borderColor: color,
+ top: position,
+ }}
+ >
+
)
+ ) : (
+
+ <>
+
+ {title}
+
{required ? " *" : ""}
+
+ {info !== "" && (
+
+ {/* put div to avoid bug that does not display tooltip */}
+
+
+
+
+ )}
+
+
+ {left &&
+ (type === "str" ||
+ type === "bool" ||
+ type === "float" ||
+ type === "code" ||
+ type === "prompt" ||
+ type === "file" ||
+ type === "int") &&
+ !optionalHandle ? (
+ <>>
+ ) : (
+
+
+ isValidConnection(connection, reactFlowInstance!)
+ }
+ className={classNames(
+ left ? "-ml-0.5 " : "-mr-0.5 ",
+ "h-3 w-3 rounded-full border-2 bg-background"
+ )}
+ style={{
+ borderColor: color,
+ top: position,
+ }}
+ >
+
+ )}
+
+ {left === true &&
+ type === "str" &&
+ !data.node?.template[name].options ? (
+
+ {data.node?.template[name].list ? (
+
+ ) : data.node?.template[name].multiline ? (
+
+ ) : (
+
+ )}
+
+ ) : left === true && type === "bool" ? (
+
+ {
+ handleOnNewValue(isEnabled);
+ }}
+ size="large"
+ />
+
+ ) : left === true && type === "float" ? (
+
+
+
+ ) : left === true &&
+ type === "str" &&
+ data.node?.template[name].options ? (
+
+
+
+ ) : left === true && type === "code" ? (
+
+ {
+ data.node = nodeClass;
+ }}
+ nodeClass={data.node}
+ disabled={disabled}
+ value={data.node?.template[name].value ?? ""}
+ onChange={handleOnNewValue}
+ />
+
+ ) : left === true && type === "file" ? (
+
+ {
+ data.node!.template[name].file_path = filePath;
+ save();
+ }}
+ >
+
+ ) : left === true && type === "int" ? (
+
+
+
+ ) : left === true && type === "prompt" ? (
+
+
{
+ data.node = nodeClass;
+ }}
+ nodeClass={data.node}
+ disabled={disabled}
+ value={data.node?.template[name].value ?? ""}
+ onChange={handleOnNewValue}
+ />
+
+ ) : (
+ <>>
+ )}
+ >
+
);
}
diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx
index 179429cc9..74547dfa8 100644
--- a/src/frontend/src/CustomNodes/GenericNode/index.tsx
+++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx
@@ -35,10 +35,11 @@ export default function GenericNode({
function countHandles(): void {
numberOfInputs = Object.keys(data.node!.template)
- .filter((templateField) => templateField.charAt(0) !== "_").map((templateCamp) => {
+ .filter((templateField) => templateField.charAt(0) !== "_")
+ .map((templateCamp) => {
const { template } = data.node!;
- if (template[templateCamp].input_types) return true
- if (!template[templateCamp].show) return false
+ if (template[templateCamp].input_types) return true;
+ if (!template[templateCamp].show) return false;
switch (template[templateCamp].type) {
case "str":
return false;
@@ -55,15 +56,15 @@ export default function GenericNode({
case "int":
return false;
default:
- return true
+ return true;
}
- })
- setHandles(numberOfInputs)
- };
+ });
+ setHandles(numberOfInputs);
+ }
useEffect(() => {
countHandles();
- }, [])
+ }, []);
// State for outline color
const { sseData, isBuilding } = useSSE();
@@ -91,10 +92,9 @@ export default function GenericNode({
useEffect(() => {
setTimeout(() => {
- updateNodeInternals(data.id)
- }, 400)
-
- }, [showNode])
+ updateNodeInternals(data.id);
+ }, 300);
+ }, [showNode]);
// New useEffect to watch for changes in sseData and update validation status
useEffect(() => {
@@ -124,8 +124,10 @@ export default function GenericNode({
className={classNames(
selected ? "border border-ring" : "border",
" transition-transform ",
- showNode ? " rounded-lg transform w-96 duration-500 ease-in-out scale-100 " : " rounded-full transform transform-width duration-500 w-26 h-26 scale-90 ",
- "generic-node-div",
+ showNode
+ ? " w-96 scale-100 transform rounded-lg duration-500 ease-in-out "
+ : " transform-width w-26 h-26 scale-90 transform rounded-full duration-500 ",
+ "generic-node-div"
)}
>
{data.node?.beta && showNode && (
@@ -134,11 +136,26 @@ export default function GenericNode({
)}