|
import { useFetchFlow } from '@/hooks/flow-hooks'; |
|
import { Popover } from 'antd'; |
|
import get from 'lodash/get'; |
|
import React, { useMemo } from 'react'; |
|
import JsonView from 'react18-json-view'; |
|
import 'react18-json-view/src/style.css'; |
|
import { Operator } from '../../constant'; |
|
import { useReplaceIdWithText } from '../../hooks'; |
|
|
|
import styles from './index.less'; |
|
|
|
interface IProps extends React.PropsWithChildren { |
|
nodeId: string; |
|
} |
|
|
|
const NodePopover = ({ children, nodeId }: IProps) => { |
|
const { data } = useFetchFlow(); |
|
const component = useMemo(() => { |
|
return get(data, ['dsl', 'components', nodeId], {}); |
|
}, [nodeId, data]); |
|
|
|
const output = get(component, ['obj', 'params', 'output'], {}); |
|
const componentName = get(component, ['obj', 'component_name'], ''); |
|
const replacedOutput = useReplaceIdWithText(output); |
|
|
|
const content = |
|
componentName !== Operator.Answer ? ( |
|
<div |
|
onClick={(e) => { |
|
e.preventDefault(); |
|
e.stopPropagation(); |
|
}} |
|
> |
|
<JsonView |
|
src={replacedOutput} |
|
displaySize={30} |
|
className={styles.jsonView} |
|
/> |
|
</div> |
|
) : undefined; |
|
|
|
return ( |
|
<Popover content={content} placement="right" destroyTooltipOnHide> |
|
{children} |
|
</Popover> |
|
); |
|
}; |
|
|
|
export default NodePopover; |
|
|