| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import { useCallback } from 'react';
- import { FlowNodeEntity, useNodeRender } from '@flowgram.ai/free-layout-editor';
- import { ConfigProvider } from '@douyinfe/semi-ui';
- import { NodeStatusBar } from '../testrun/node-status-bar';
- import { NodeRenderContext } from '../../context';
- import { ErrorIcon } from './styles';
- import { NodeWrapper } from './node-wrapper';
- export const BaseNode = ({ node }: { node: FlowNodeEntity }) => {
- /**
- * Provides methods related to node rendering
- * 提供节点渲染相关的方法
- */
- const nodeRender = useNodeRender();
- /**
- * It can only be used when nodeEngine is enabled
- * 只有在节点引擎开启时候才能使用表单
- */
- const form = nodeRender.form;
- /**
- * Used to make the Tooltip scale with the node, which can be implemented by itself depending on the UI library
- * 用于让 Tooltip 跟随节点缩放, 这个可以根据不同的 ui 库自己实现
- */
- const getPopupContainer = useCallback(() => node.renderData.node || document.body, []);
- return (
- <ConfigProvider getPopupContainer={getPopupContainer}>
- <NodeRenderContext.Provider value={nodeRender}>
- <NodeWrapper>
- {form?.state.invalid && <ErrorIcon />}
- {form?.render()}
- </NodeWrapper>
- <NodeStatusBar />
- </NodeRenderContext.Provider>
- </ConfigProvider>
- );
- };
|