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