2025-09-09 14:37:32 +05:30
|
|
|
import { Position } from "@xyflow/react";
|
|
|
|
|
import { ReactNode } from "react";
|
|
|
|
|
|
|
|
|
|
import { BaseHandle } from "@/components/flow/nodes/BaseHandle";
|
|
|
|
|
import { BaseNode } from "@/components/flow/nodes/BaseNode";
|
|
|
|
|
import { NodeHeader, NodeHeaderIcon, NodeHeaderTitle } from "@/components/flow/nodes/NodeHeader";
|
|
|
|
|
|
|
|
|
|
interface NodeContentProps {
|
|
|
|
|
selected: boolean;
|
|
|
|
|
invalid?: boolean;
|
2025-11-06 18:26:15 +05:30
|
|
|
selected_through_edge?: boolean;
|
|
|
|
|
hovered_through_edge?: boolean;
|
2025-09-09 14:37:32 +05:30
|
|
|
title: string;
|
|
|
|
|
icon: ReactNode;
|
|
|
|
|
bgColor: string;
|
|
|
|
|
hasSourceHandle?: boolean;
|
|
|
|
|
hasTargetHandle?: boolean;
|
|
|
|
|
children?: ReactNode;
|
|
|
|
|
className?: string;
|
2025-11-06 18:26:15 +05:30
|
|
|
onDoubleClick?: () => void;
|
|
|
|
|
nodeId?: string;
|
2025-09-09 14:37:32 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const NodeContent = ({
|
|
|
|
|
selected,
|
|
|
|
|
invalid,
|
2025-11-06 18:26:15 +05:30
|
|
|
selected_through_edge,
|
|
|
|
|
hovered_through_edge,
|
2025-09-09 14:37:32 +05:30
|
|
|
title,
|
|
|
|
|
icon,
|
|
|
|
|
bgColor,
|
|
|
|
|
hasSourceHandle = false,
|
|
|
|
|
hasTargetHandle = false,
|
|
|
|
|
children,
|
|
|
|
|
className = "",
|
2025-11-06 18:26:15 +05:30
|
|
|
onDoubleClick,
|
|
|
|
|
nodeId,
|
2025-09-09 14:37:32 +05:30
|
|
|
}: NodeContentProps) => {
|
|
|
|
|
return (
|
2025-11-06 18:26:15 +05:30
|
|
|
<BaseNode
|
|
|
|
|
selected={selected}
|
|
|
|
|
invalid={invalid}
|
|
|
|
|
selected_through_edge={selected_through_edge}
|
|
|
|
|
hovered_through_edge={hovered_through_edge}
|
|
|
|
|
className={`p-0 overflow-hidden ${className}`}
|
|
|
|
|
onDoubleClick={onDoubleClick}
|
|
|
|
|
>
|
2025-09-09 14:37:32 +05:30
|
|
|
{hasTargetHandle && <BaseHandle type="target" position={Position.Top} />}
|
|
|
|
|
<NodeHeader className={`px-3 py-2 border-b ${bgColor}`}>
|
|
|
|
|
<NodeHeaderIcon>{icon}</NodeHeaderIcon>
|
2025-11-06 18:26:15 +05:30
|
|
|
<NodeHeaderTitle>{title} - NodeID: {nodeId}</NodeHeaderTitle>
|
2025-09-09 14:37:32 +05:30
|
|
|
</NodeHeader>
|
|
|
|
|
<div className="p-3">
|
|
|
|
|
{children}
|
|
|
|
|
</div>
|
|
|
|
|
{hasSourceHandle && <BaseHandle type="source" position={Position.Bottom} />}
|
|
|
|
|
</BaseNode>
|
|
|
|
|
);
|
|
|
|
|
};
|