@@ -277,6 +277,30 @@ export default memo((props: any) => {
277277 } ;
278278 } , [ menuItem , isEnd ] ) ;
279279
280+ const renderHandleMemo = useCallback ( ( ) => {
281+ if ( renderHandle ) {
282+ return renderHandle (
283+ SourceHandle ,
284+ {
285+ position :sourcePosition ,
286+ isConnectable :connectable ,
287+ selected :selected ,
288+ isHovered :isHovered ,
289+ handleAddNode :handleAddNode
290+ } ,
291+ {
292+ id,
293+ type,
294+ data,
295+ layout,
296+ isConnectable,
297+ readOnly
298+ }
299+ )
300+ }
301+ return null
302+ } , [ renderHandle , SourceHandle , sourcePosition , connectable , selected , isHovered , handleAddNode , id , type , data , layout , isConnectable , readOnly ] )
303+
280304 return (
281305 < div
282306 className = { classNames ( 'xflow-node-container' , {
@@ -292,7 +316,12 @@ export default memo((props: any) => {
292316 >
293317 { ! settingMap ?. [ type ] ?. targetHandleHidden && ! isNote && (
294318 < Handle
295- { ...handleProps }
319+ isValidConnection = { ( edge ) => {
320+ if ( handleProps . isValidConnection ) {
321+ return handleProps . isValidConnection ( edge , 'target' , type )
322+ }
323+ return true
324+ } }
296325 type = "target"
297326 position = { targetPosition }
298327 isConnectable = { connectable }
@@ -333,24 +362,7 @@ export default memo((props: any) => {
333362 < div onClick = { ( ) => {
334363 onClick ( data )
335364 } } >
336- { renderHandle (
337- SourceHandle ,
338- {
339- position :sourcePosition ,
340- isConnectable :connectable ,
341- selected :selected ,
342- isHovered :isHovered ,
343- handleAddNode :handleAddNode
344- } ,
345- {
346- id,
347- type,
348- data,
349- layout,
350- isConnectable,
351- readOnly
352- }
353- ) }
365+ { renderHandleMemo ( ) }
354366 </ div >
355367 :
356368 < Fragment >
@@ -363,6 +375,7 @@ export default memo((props: any) => {
363375 isHovered = { isHovered }
364376 handleAddNode = { handleAddNode }
365377 isConnected = { isSourceHandleConnected }
378+ nodeType = { type }
366379 // isConnectableStart={isConnectableStart}
367380 // isConnectableEnd={isConnectableEnd}
368381 />
0 commit comments