| 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) | |