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