import { Space } from 'antd'; import classNames from 'classnames'; import React, { memo } from 'react'; import { shallow } from 'zustand/shallow'; import SourceHandle from '../../components/CustomNode/sourceHandle'; import TextEllipsis from '../../components/TextEllipsis'; import { useStore } from '../../hooks/useStore'; import { uuid } from '../../utils'; import './index.less'; export default memo((props: any) => { const { data, position, isConnectable, selected, isHovered, handleAddNode, CustomNodeWidget, isSwitchBottom, nodeSetting, } = props; const { parallelExtra } = nodeSetting; const { nodes, edges } = useStore( (state: any) => ({ nodes: state.nodes, edges: state.edges, mousePosition: state.mousePosition, addNodes: state.addNodes, addEdges: state.addEdges, onEdgesChange: state.onEdgesChange, }), shallow ); const renderTitle = (item, index) => { const defTitle = item?.title || `事件${index}`; const title = parallelExtra?.titleKey ? item[parallelExtra?.titleKey] : defTitle; return (
{title && ( )}
flow?.sourceHandle === item?._id) ?.length === 0 } selected={selected} isHovered={isHovered} handleAddNode={data => { handleAddNode(data, item?._id); }} id={item?._id} className="item-handle" isConnected={ (edges || [])?.filter(flow => flow?.sourceHandle === item?._id) ?.length > 0 } nodeType={'Parallel'} />
); }; const renderContent = (item, index) => { const value = parallelExtra?.valueKey ? item[parallelExtra?.valueKey] : item?.value; return (
{CustomNodeWidget ? ( ) : (
{value && (
)}
)}
); }; return ( {(data?.list || [{ _id: `id_${uuid()}` }, { _id: `id_${uuid()}` }])?.map( (item, index) => (
{isSwitchBottom ? ( <> {renderContent(item, index)} {renderTitle(item, index)} ) : ( <> {renderTitle(item, index)} {renderContent(item, index)} )}
) )}
); });