MCPcopy Create free account
hub / github.com/FlowiseAI/Flowise / CanvasNode

Function CanvasNode

packages/ui/src/views/canvas/CanvasNode.jsx:26–291  ·  view source on GitHub ↗
({ data })

Source from the content-addressed store, hash-verified

24// ===========================|| CANVAS NODE ||=========================== //
25
26const CanvasNode = ({ data }) => {
27 const theme = useTheme()
28 const canvas = useSelector((state) => state.canvas)
29 const { deleteNode, duplicateNode } = useContext(flowContext)
30
31 const [showDialog, setShowDialog] = useState(false)
32 const [dialogProps, setDialogProps] = useState({})
33 const [showInfoDialog, setShowInfoDialog] = useState(false)
34 const [infoDialogProps, setInfoDialogProps] = useState({})
35 const [warningMessage, setWarningMessage] = useState('')
36 const [open, setOpen] = useState(false)
37 const [isForceCloseNodeInfo, setIsForceCloseNodeInfo] = useState(null)
38
39 const handleClose = () => {
40 setOpen(false)
41 }
42
43 const handleOpen = () => {
44 setOpen(true)
45 }
46
47 const getNodeInfoOpenStatus = () => {
48 if (isForceCloseNodeInfo) return false
49 else return !canvas.canvasDialogShow && open
50 }
51
52 const nodeOutdatedMessage = (oldVersion, newVersion) => `Node version ${oldVersion} outdated\nUpdate to latest version ${newVersion}`
53
54 const nodeVersionEmptyMessage = (newVersion) => `Node outdated\nUpdate to latest version ${newVersion}`
55
56 const onDialogClicked = () => {
57 const dialogProps = {
58 data,
59 inputParams: data.inputParams.filter((inputParam) => !inputParam.hidden).filter((param) => param.additionalParams),
60 confirmButtonName: 'Save',
61 cancelButtonName: 'Cancel'
62 }
63 setDialogProps(dialogProps)
64 setShowDialog(true)
65 }
66
67 const getBorderColor = () => {
68 if (data.selected) return theme.palette.primary.main
69 else if (theme?.customization?.isDarkMode) return theme.palette.grey[900] + 25
70 else return theme.palette.grey[900] + 50
71 }
72
73 useEffect(() => {
74 const componentNode = canvas.componentNodes.find((nd) => nd.name === data.name)
75 if (componentNode) {
76 if (!data.version) {
77 setWarningMessage(nodeVersionEmptyMessage(componentNode.version))
78 } else if (data.version && componentNode.version > data.version) {
79 setWarningMessage(nodeOutdatedMessage(data.version, componentNode.version))
80 } else if (componentNode.badge === 'DEPRECATING') {
81 setWarningMessage(
82 componentNode?.deprecateMessage ??
83 'This node will be deprecated in the next release. Change to a new node tagged with NEW'

Callers

nothing calls this directly

Calls 7

getNodeInfoOpenStatusFunction · 0.85
duplicateNodeFunction · 0.85
deleteNodeFunction · 0.85
stringifyMethod · 0.80
nodeVersionEmptyMessageFunction · 0.70
nodeOutdatedMessageFunction · 0.70
getBorderColorFunction · 0.70

Tested by

no test coverage detected