diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index 988b9b964..0d88b1156 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { NodeToolbar } from "reactflow"; import ShadTooltip from "../../components/ShadTooltipComponent"; import Tooltip from "../../components/TooltipComponent"; @@ -110,6 +110,43 @@ export default function GenericNode({ const emojiRegex = /\p{Emoji}/u; const isEmoji = emojiRegex.test(data?.node?.icon!); + const iconNodeRender = useCallback(() => { + if (data?.node?.icon) { + if (isEmoji) { + return {data.node.icon}; + } else { + const iconName = + data.node.icon || (data.node?.flow ? "group_components" : name); + const iconClassName = `generic-node-icon ${ + !showNode ? "absolute inset-x-6 h-12 w-12" : "" + }`; + const iconColor = nodeColors[types[data.type]]; + + return ( + + ); + } + } else { + const iconName = data.node?.flow ? "group_components" : name; + const iconClassName = `generic-node-icon ${ + !showNode ? "absolute inset-x-6 h-12 w-12" : "" + }`; + const iconColor = nodeColors[types[data.type]]; + + return ( + + ); + } + }, [data, isEmoji, name, showNode]); + return ( <> @@ -159,30 +196,7 @@ export default function GenericNode({ (!showNode && "justify-center") } > - {data?.node?.icon ? ( - isEmoji ? ( - {data?.node?.icon} - ) : ( - - ) - ) : ( - - )} - + {iconNodeRender()} {showNode && (
{nameEditable && inputName ? (