| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import { Input } from '@/components/ui/input';
- import {
- Sheet,
- SheetContent,
- SheetHeader,
- SheetTitle,
- } from '@/components/ui/sheet';
- import { useTranslate } from '@/hooks/common-hooks';
- import { IModalProps } from '@/interfaces/common';
- import { RAGFlowNodeType } from '@/interfaces/database/flow';
- import { cn } from '@/lib/utils';
- import { lowerFirst } from 'lodash';
- import { Play, X } from 'lucide-react';
- import { useMemo } from 'react';
- import { BeginId, Operator } from '../constant';
- import { AgentFormContext } from '../context';
- import { RunTooltip } from '../flow-tooltip';
- import { useHandleNodeNameChange } from '../hooks/use-change-node-name';
- import OperatorIcon from '../operator-icon';
- import useGraphStore from '../store';
- import { needsSingleStepDebugging } from '../utils';
- import SingleDebugDrawer from './single-debug-drawer';
- import { useFormConfigMap } from './use-form-config-map';
-
- interface IProps {
- node?: RAGFlowNodeType;
- singleDebugDrawerVisible: IModalProps<any>['visible'];
- hideSingleDebugDrawer: IModalProps<any>['hideModal'];
- showSingleDebugDrawer: IModalProps<any>['showModal'];
- chatVisible: boolean;
- }
-
- const EmptyContent = () => <div></div>;
-
- const FormSheet = ({
- visible,
- hideModal,
- node,
- singleDebugDrawerVisible,
- chatVisible,
- hideSingleDebugDrawer,
- showSingleDebugDrawer,
- }: IModalProps<any> & IProps) => {
- const operatorName: Operator = node?.data.label as Operator;
- const clickedToolId = useGraphStore((state) => state.clickedToolId);
-
- const FormConfigMap = useFormConfigMap();
-
- const currentFormMap = FormConfigMap[operatorName];
-
- const OperatorForm = currentFormMap?.component ?? EmptyContent;
-
- const { name, handleNameBlur, handleNameChange } = useHandleNodeNameChange({
- id: node?.id,
- data: node?.data,
- });
-
- const isMcp = useMemo(() => {
- return (
- operatorName === Operator.Tool &&
- Object.values(Operator).every((x) => x !== clickedToolId)
- );
- }, [clickedToolId, operatorName]);
-
- const { t } = useTranslate('flow');
-
- return (
- <Sheet open={visible} modal={false}>
- <SheetContent
- className={cn('top-20 p-0 flex flex-col pb-20', {
- 'right-[620px]': chatVisible,
- })}
- closeIcon={false}
- >
- <SheetHeader>
- <SheetTitle className="hidden"></SheetTitle>
- <section className="flex-col border-b py-2 px-5">
- <div className="flex items-center gap-2 pb-3">
- <OperatorIcon name={operatorName}></OperatorIcon>
-
- {isMcp ? (
- <div className="flex-1">MCP Config</div>
- ) : (
- <div className="flex items-center gap-1 flex-1">
- <label htmlFor="">{t('title')}</label>
- {node?.id === BeginId ? (
- <span>{t(BeginId)}</span>
- ) : (
- <Input
- value={name}
- onBlur={handleNameBlur}
- onChange={handleNameChange}
- ></Input>
- )}
- </div>
- )}
-
- {needsSingleStepDebugging(operatorName) && (
- <RunTooltip>
- <Play
- className="size-5 cursor-pointer"
- onClick={showSingleDebugDrawer}
- />
- </RunTooltip>
- )}
- <X onClick={hideModal} />
- </div>
- <span>{t(`${lowerFirst(operatorName)}Description`)}</span>
- </section>
- </SheetHeader>
- <section className="pt-4 overflow-auto flex-1">
- {visible && (
- <AgentFormContext.Provider value={node}>
- <OperatorForm node={node} key={node?.id}></OperatorForm>
- </AgentFormContext.Provider>
- )}
- </section>
- </SheetContent>
- {singleDebugDrawerVisible && (
- <SingleDebugDrawer
- visible={singleDebugDrawerVisible}
- hideModal={hideSingleDebugDrawer}
- componentId={node?.id}
- ></SingleDebugDrawer>
- )}
- </Sheet>
- );
- };
-
- export default FormSheet;
|