Spaces:
Paused
Paused
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; | |