import { FormContainer } from '@/components/form-container'; import { BlockButton, Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Form, FormControl, FormField, FormItem, FormMessage, } from '@/components/ui/form'; import { RAGFlowSelect } from '@/components/ui/select'; import { Separator } from '@/components/ui/separator'; import { Textarea } from '@/components/ui/textarea'; import { useBuildSwitchOperatorOptions } from '@/hooks/logic-hooks/use-build-operator-options'; import { cn } from '@/lib/utils'; import { zodResolver } from '@hookform/resolvers/zod'; import { t } from 'i18next'; import { X } from 'lucide-react'; import { memo, useCallback, useMemo } from 'react'; import { useFieldArray, useForm, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { z } from 'zod'; import { SwitchLogicOperatorOptions } from '../../constant'; import { IOperatorForm } from '../../interface'; import { FormWrapper } from '../components/form-wrapper'; import { QueryVariable } from '../components/query-variable'; import { useValues } from './use-values'; import { useWatchFormChange } from './use-watch-change'; const ConditionKey = 'conditions'; const ItemKey = 'items'; type ConditionCardsProps = { name: string; removeParent(index: number): void; parentIndex: number; parentLength: number; } & IOperatorForm; function ConditionCards({ name: parentName, parentIndex, removeParent, parentLength, }: ConditionCardsProps) { const form = useFormContext(); const switchOperatorOptions = useBuildSwitchOperatorOptions(); const name = `${parentName}.${ItemKey}`; const { fields, remove, append } = useFieldArray({ name: name, control: form.control, }); const handleRemove = useCallback( (index: number) => () => { remove(index); if (parentIndex !== 0 && index === 0 && parentLength === 1) { removeParent(parentIndex); } }, [parentIndex, parentLength, remove, removeParent], ); return (
{fields.map((field, index) => { return (
1 && (index === 0 || index === fields.length - 1), }, )} >
( )} />
( )} />
(