@@ -4,7 +4,7 @@ import { Dropdown, Menu, message } from 'antd';
4
4
import { ItemType } from 'antd/es/menu/interface' ;
5
5
import classNames from 'classnames' ;
6
6
import { isFunction } from 'lodash' ;
7
- import React , { memo , useCallback , useContext , useMemo , useState } from 'react' ;
7
+ import React , { Fragment , memo , useCallback , useContext , useMemo , useState } from 'react' ;
8
8
import { shallow } from 'zustand/shallow' ;
9
9
import { useStore } from '../../hooks/useStore' ;
10
10
import { ConfigContext } from '../../models/context' ;
@@ -35,6 +35,7 @@ export default memo((props: any) => {
35
35
const disabledDelete = settingMap [ type ] ?. disabledDelete ?? false ;
36
36
const switchExtra = settingMap [ type ] ?. switchExtra || { } ;
37
37
const handleProps = globalConfig ?. handle || { }
38
+ const renderHandle = settingMap [ type ] ?. renderHandle || void ( 0 )
38
39
// const isConnectableStart = globalConfig?.handle?.isConnectableStart ?? true;
39
40
// const isConnectableEnd = globalConfig?.handle?.isConnectableEnd ?? true;
40
41
@@ -324,20 +325,47 @@ export default memo((props: any) => {
324
325
isHovered = { isHovered }
325
326
handleAddNode = { handleAddNode }
326
327
/>
327
- { ! settingMap ?. [ type ] ?. sourceHandleHidden && ! isSwitchNode && (
328
- < >
329
- < SourceHandle
330
- position = { sourcePosition }
331
- isConnectable = { connectable }
332
- selected = { selected }
333
- isHovered = { isHovered }
334
- handleAddNode = { handleAddNode }
335
- isConnected = { isSourceHandleConnected }
336
- // isConnectableStart={isConnectableStart}
337
- // isConnectableEnd={isConnectableEnd}
338
- />
339
- </ >
340
- ) }
328
+ { typeof renderHandle === 'function' ?
329
+ < div onClick = { ( ) => {
330
+ onClick ( data )
331
+ } } >
332
+ { renderHandle (
333
+ SourceHandle ,
334
+ {
335
+ position :sourcePosition ,
336
+ isConnectable :connectable ,
337
+ selected :selected ,
338
+ isHovered :isHovered ,
339
+ handleAddNode :handleAddNode
340
+ } ,
341
+ {
342
+ id,
343
+ type,
344
+ data,
345
+ layout,
346
+ isConnectable,
347
+ readOnly
348
+ }
349
+ ) }
350
+ </ div >
351
+ :
352
+ < Fragment >
353
+ { ! settingMap ?. [ type ] ?. sourceHandleHidden && ! isSwitchNode && (
354
+ < >
355
+ < SourceHandle
356
+ position = { sourcePosition }
357
+ isConnectable = { connectable }
358
+ selected = { selected }
359
+ isHovered = { isHovered }
360
+ handleAddNode = { handleAddNode }
361
+ isConnected = { isSourceHandleConnected }
362
+ // isConnectableStart={isConnectableStart}
363
+ // isConnectableEnd={isConnectableEnd}
364
+ />
365
+ </ >
366
+ ) }
367
+ </ Fragment >
368
+ }
341
369
</ div >
342
370
) ;
343
- } ) ;
371
+ } ) ;
0 commit comments