Spaces:
Build error
Build error
import type { FC } from 'react' | |
import { | |
memo, | |
useEffect, | |
} from 'react' | |
import { | |
Background, | |
useNodesInitialized, | |
useViewport, | |
} from 'reactflow' | |
import { useTranslation } from 'react-i18next' | |
import { IterationStartNodeDumb } from '../iteration-start' | |
import { useNodeIterationInteractions } from './use-interactions' | |
import type { IterationNodeType } from './types' | |
import AddBlock from './add-block' | |
import cn from '@/utils/classnames' | |
import type { NodeProps } from '@/app/components/workflow/types' | |
import Toast from '@/app/components/base/toast' | |
const i18nPrefix = 'workflow.nodes.iteration' | |
const Node: FC<NodeProps<IterationNodeType>> = ({ | |
id, | |
data, | |
}) => { | |
const { zoom } = useViewport() | |
const nodesInitialized = useNodesInitialized() | |
const { handleNodeIterationRerender } = useNodeIterationInteractions() | |
const { t } = useTranslation() | |
useEffect(() => { | |
if (nodesInitialized) | |
handleNodeIterationRerender(id) | |
if (data.is_parallel && data._isShowTips) { | |
Toast.notify({ | |
type: 'warning', | |
message: t(`${i18nPrefix}.answerNodeWarningDesc`), | |
duration: 5000, | |
}) | |
data._isShowTips = false | |
} | |
}, [nodesInitialized, id, handleNodeIterationRerender, data, t]) | |
return ( | |
<div className={cn( | |
'relative min-w-[240px] min-h-[90px] w-full h-full rounded-2xl bg-[#F0F2F7]/90', | |
)}> | |
<Background | |
id={`iteration-background-${id}`} | |
className='rounded-2xl !z-0' | |
gap={[14 / zoom, 14 / zoom]} | |
size={2 / zoom} | |
color='#E4E5E7' | |
/> | |
{ | |
data._isCandidate && ( | |
<IterationStartNodeDumb /> | |
) | |
} | |
{ | |
data._children!.length === 1 && ( | |
<AddBlock | |
iterationNodeId={id} | |
iterationNodeData={data} | |
/> | |
) | |
} | |
</div> | |
) | |
} | |
export default memo(Node) | |