packages/x-flow/src/nodes/node-start/index.tsx (34 lines of code) (raw):
import React, { memo, useContext } from 'react';
import NodeContainer from '../../components/NodeContainer';
import { ConfigContext } from '../../models/context';
export default memo((props: any) => {
const { onClick, type, data } = props;
const { settingMap, widgets, iconFontUrl, globalConfig } =
useContext(ConfigContext);
const nodeSetting = settingMap[type] || {};
const NodeWidget = widgets[nodeSetting?.nodeWidget] || undefined;
const nodeDescription = nodeSetting?.description || '';
const hideDesc =
nodeSetting?.nodePanel?.hideDesc ??
globalConfig?.nodePanel?.hideDesc ??
false;
const hideTitleTips = globalConfig?.nodeView?.hideTitleTips ?? false;
const SVGWidget = widgets[nodeSetting?.iconSvg]; // 自定义面板配置组件
return (
<NodeContainer
className="custom-node-code"
title={data?.title || nodeSetting?.title || '开始'}
icon={{
type: nodeSetting?.icon?.type || 'icon-start',
style: { fontSize: 14, color: '#fff' },
bgColor: nodeSetting?.icon?.bgColor || '#17B26A',
}}
onClick={onClick}
hideDesc={hideDesc}
desc={data?.desc}
NodeWidget={NodeWidget ? <NodeWidget data={data} /> : undefined}
iconFontUrl={iconFontUrl}
description={nodeDescription} // 不允许用户更改的节点描述
iconSvg={SVGWidget ? <SVGWidget setting={nodeSetting} /> : false}
hideTitleTips={hideTitleTips}
nodeSettingTitle={nodeSetting?.title || '开始'}
/>
);
});