import classNames from 'classnames'; import { Handle, NodeProps, Position } from 'reactflow'; import OperateDropdown from '@/components/operate-dropdown'; import { CopyOutlined } from '@ant-design/icons'; import { Flex, MenuProps, Space } from 'antd'; import get from 'lodash/get'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { CategorizeAnchorPointPositions, Operator } from '../../constant'; import { NodeData } from '../../interface'; import OperatorIcon from '../../operator-icon'; import useGraphStore from '../../store'; import CategorizeHandle from './categorize-handle'; import styles from './index.less'; export function RagNode({ id, data, isConnectable = true, selected, }: NodeProps) { const { t } = useTranslation(); const deleteNodeById = useGraphStore((store) => store.deleteNodeById); const duplicateNodeById = useGraphStore((store) => store.duplicateNode); const deleteNode = useCallback(() => { deleteNodeById(id); }, [id, deleteNodeById]); const duplicateNode = useCallback(() => { duplicateNodeById(id); }, [id, duplicateNodeById]); const isCategorize = data.label === Operator.Categorize; const categoryData = get(data, 'form.category_description') ?? {}; const items: MenuProps['items'] = [ { key: '2', onClick: duplicateNode, label: ( {t('common.copy')} ), }, ]; return (
{isCategorize && Object.keys(categoryData).map((x, idx) => ( ))}
{id}
); }