'use client' import type { FC } from 'react' import React, { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { ReactSortable } from 'react-sortablejs' import { RiAddLine, RiDeleteBinLine, RiDraggable, } from '@remixicon/react' import type { CaseItem, HandleAddCondition, HandleAddSubVariableCondition, HandleRemoveCondition, HandleToggleConditionLogicalOperator, HandleToggleSubVariableConditionLogicalOperator, HandleUpdateCondition, HandleUpdateSubVariableCondition, handleRemoveSubVariableCondition } from '../types' import type { Node, NodeOutPutVar, Var } from '../../../types' import { VarType } from '../../../types' import { useGetAvailableVars } from '../../variable-assigner/hooks' import { SUB_VARIABLES } from '../../constants' import ConditionList from './condition-list' import ConditionAdd from './condition-add' import cn from '@/utils/classnames' import Button from '@/app/components/base/button' import { PortalSelect as Select } from '@/app/components/base/select' import { noop } from 'lodash-es' type Props = { isSubVariable?: boolean caseId?: string conditionId?: string cases: CaseItem[] readOnly: boolean handleSortCase?: (sortedCases: (CaseItem & { id: string })[]) => void handleRemoveCase?: (caseId: string) => void handleAddCondition?: HandleAddCondition handleRemoveCondition?: HandleRemoveCondition handleUpdateCondition?: HandleUpdateCondition handleToggleConditionLogicalOperator?: HandleToggleConditionLogicalOperator handleAddSubVariableCondition?: HandleAddSubVariableCondition handleRemoveSubVariableCondition?: handleRemoveSubVariableCondition handleUpdateSubVariableCondition?: HandleUpdateSubVariableCondition handleToggleSubVariableConditionLogicalOperator?: HandleToggleSubVariableConditionLogicalOperator nodeId: string nodesOutputVars: NodeOutPutVar[] availableNodes: Node[] varsIsVarFileAttribute?: Record filterVar: (varPayload: Var) => boolean } const ConditionWrap: FC = ({ isSubVariable, caseId, conditionId, nodeId: id = '', cases = [], readOnly, handleSortCase = noop, handleRemoveCase, handleUpdateCondition, handleAddCondition, handleRemoveCondition, handleToggleConditionLogicalOperator, handleAddSubVariableCondition, handleRemoveSubVariableCondition, handleUpdateSubVariableCondition, handleToggleSubVariableConditionLogicalOperator, nodesOutputVars = [], availableNodes = [], varsIsVarFileAttribute = {}, filterVar = () => true, }) => { const { t } = useTranslation() const getAvailableVars = useGetAvailableVars() const [willDeleteCaseId, setWillDeleteCaseId] = useState('') const casesLength = cases.length const filterNumberVar = useCallback((varPayload: Var) => { return varPayload.type === VarType.number }, []) const subVarOptions = SUB_VARIABLES.map(item => ({ name: item, value: item, })) return ( <> ({ ...caseItem, id: caseItem.case_id }))} setList={handleSortCase} handle='.handle' ghostClass='bg-components-panel-bg' animation={150} disabled={readOnly || isSubVariable} > { cases.map((item, index) => (
{!isSubVariable && ( <>