import { memo, } from 'react' import { useNodes } from 'reactflow' import FormItem from '../../nodes/_base/components/before-run-form/form-item' import { BlockEnum } from '../../types' import { useStore, useWorkflowStore, } from '../../store' import type { StartNodeType } from '../../nodes/start/types' import cn from '@/utils/classnames' const UserInput = () => { const workflowStore = useWorkflowStore() const inputs = useStore(s => s.inputs) const nodes = useNodes<StartNodeType>() const startNode = nodes.find(node => node.data.type === BlockEnum.Start) const variables = startNode?.data.variables || [] const handleValueChange = (variable: string, v: string) => { const { inputs, setInputs, } = workflowStore.getState() setInputs({ ...inputs, [variable]: v, }) } if (!variables.length) return null return ( <div className={cn('sticky top-0 bg-components-panel-on-panel-item-bg rounded-xl border-[0.5px] border-components-panel-border-subtle shadow-xs z-[1]')}> <div className='px-4 pt-3 pb-4'> {variables.map((variable, index) => ( <div key={variable.variable} className='mb-4 last-of-type:mb-0' > <FormItem autoFocus={index === 0} payload={variable} value={inputs[variable.variable]} onChange={v => handleValueChange(variable.variable, v)} /> </div> ))} </div> </div> ) } export default memo(UserInput)