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> = ({ 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 (
{ data._isCandidate && ( ) } { data._children!.length === 1 && ( ) }
) } export default memo(Node)