| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | import type { FC } from 'react'import {  memo,  useMemo,  useRef,} from 'react'import type { NodeProps } from 'reactflow'import { useTranslation } from 'react-i18next'import NodeGroupItem from './components/node-group-item'import type { VariableAssignerNodeType } from './types'const i18nPrefix = 'workflow.nodes.variableAssigner'const Node: FC<NodeProps<VariableAssignerNodeType>> = (props) => {  const { t } = useTranslation()  const ref = useRef<HTMLDivElement>(null)  const { id, data } = props  const { advanced_settings } = data  const groups = useMemo(() => {    if (!advanced_settings?.group_enabled) {      return [{        groupEnabled: false,        targetHandleId: 'target',        title: t(`${i18nPrefix}.title`),        type: data.output_type,        variables: data.variables,        variableAssignerNodeId: id,        variableAssignerNodeData: data,      }]    }    return advanced_settings.groups.map((group) => {      return {        groupEnabled: true,        targetHandleId: group.groupId,        title: group.group_name,        type: group.output_type,        variables: group.variables,        variableAssignerNodeId: id,        variableAssignerNodeData: data,      }    })  }, [t, advanced_settings, data, id])  return (    <div className='relative mb-1 px-1 space-y-0.5' ref={ref}>      {        groups.map((item) => {          return (            <NodeGroupItem              key={item.title}              item={item}            />          )        })      }    </div >  )}export default memo(Node)
 |