| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | import type { FC } from 'react'import {  memo,} from 'react'import { useTranslation } from 'react-i18next'import {  RiAddLine,} from '@remixicon/react'import useConfig from './use-config'import type { IfElseNodeType } from './types'import ConditionWrap from './components/condition-wrap'import Button from '@/app/components/base/button'import type { NodePanelProps } from '@/app/components/workflow/types'import Field from '@/app/components/workflow/nodes/_base/components/field'const i18nPrefix = 'workflow.nodes.ifElse'const Panel: FC<NodePanelProps<IfElseNodeType>> = ({  id,  data,}) => {  const { t } = useTranslation()  const {    readOnly,    inputs,    filterVar,    handleAddCase,    handleRemoveCase,    handleSortCase,    handleAddCondition,    handleUpdateCondition,    handleRemoveCondition,    handleToggleConditionLogicalOperator,    handleAddSubVariableCondition,    handleRemoveSubVariableCondition,    handleUpdateSubVariableCondition,    handleToggleSubVariableConditionLogicalOperator,    nodesOutputVars,    availableNodes,    varsIsVarFileAttribute,  } = useConfig(id, data)  const cases = inputs.cases || []  return (    <div className='p-1'>      <ConditionWrap        nodeId={id}        cases={cases}        readOnly={readOnly}        handleSortCase={handleSortCase}        handleRemoveCase={handleRemoveCase}        handleAddCondition={handleAddCondition}        handleRemoveCondition={handleRemoveCondition}        handleUpdateCondition={handleUpdateCondition}        handleToggleConditionLogicalOperator={handleToggleConditionLogicalOperator}        handleAddSubVariableCondition={handleAddSubVariableCondition}        handleRemoveSubVariableCondition={handleRemoveSubVariableCondition}        handleUpdateSubVariableCondition={handleUpdateSubVariableCondition}        handleToggleSubVariableConditionLogicalOperator={handleToggleSubVariableConditionLogicalOperator}        nodesOutputVars={nodesOutputVars}        availableNodes={availableNodes}        varsIsVarFileAttribute={varsIsVarFileAttribute}        filterVar={filterVar}      />      <div className='px-4 py-2'>        <Button          className='w-full'          variant='tertiary'          onClick={() => handleAddCase()}          disabled={readOnly}        >          <RiAddLine className='mr-1 w-4 h-4' />          ELIF        </Button>      </div>      <div className='my-2 mx-3 h-[1px] bg-divider-subtle'></div>      <Field        title={t(`${i18nPrefix}.else`)}        className='px-4 py-2'      >        <div className='leading-[18px] text-xs font-normal text-text-tertiary'>{t(`${i18nPrefix}.elseDescription`)}</div>      </Field>    </div>  )}export default memo(Panel)
 |