import { BaseNode } from '@/interfaces/database/flow'; import { cn } from '@/lib/utils'; import { NodeProps, Position } from '@xyflow/react'; import get from 'lodash/get'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { AgentDialogueMode, BeginQueryType, BeginQueryTypeIconMap, NodeHandleId, Operator, } from '../../constant'; import { BeginFormSchemaType } from '../../form/begin-form/schema'; import { useBuildWebhookUrl } from '../../hooks/use-build-webhook-url'; import OperatorIcon from '../../operator-icon'; import { LabelCard } from './card'; import { CommonHandle } from './handle'; import { RightHandleStyle } from './handle-icon'; import styles from './index.less'; import { NodeWrapper } from './node-wrapper'; function InnerBeginNode({ data, id, selected, }: NodeProps>) { const { t } = useTranslation(); const inputs = get(data, 'form.inputs', {}); const mode = data.form?.mode; const isWebhookMode = mode === AgentDialogueMode.Webhook; const url = useBuildWebhookUrl(); return (
{t(`flow.begin`)}
{t(`flow.${isWebhookMode ? 'webhook.name' : mode}`)}
{isWebhookMode ? ( URL {url} ) : (
{Object.entries(inputs).map(([key, val], idx) => { const Icon = BeginQueryTypeIconMap[val.type as BeginQueryType]; return ( {val.name} {val.optional ? 'Yes' : 'No'} ); })}
)}
); } export const BeginNode = memo(InnerBeginNode);