| | |
| | | import Input from '@/app/components/base/input' |
| | | import Textarea from '@/app/components/base/textarea' |
| | | import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' |
| | | import { noop } from 'lodash-es' |
| | | |
| | | type Props = { |
| | | readonly: boolean |
| | |
| | | nodeId, |
| | | list, |
| | | onChange, |
| | | onOpen = noop, |
| | | onOpen = () => { }, |
| | | filterVar, |
| | | filterToAssignedVar, |
| | | getAssignedVarType, |
| | |
| | | }, [onOpen]) |
| | | |
| | | const handleFilterToAssignedVar = useCallback((index: number) => { |
| | | return (payload: Var) => { |
| | | const { variable_selector, operation } = list[index] |
| | | if (!variable_selector || !operation || !filterToAssignedVar) return true |
| | | return (payload: Var, valueSelector: ValueSelector) => { |
| | | const item = list[index] |
| | | const assignedVarType = item.variable_selector ? getAssignedVarType?.(item.variable_selector) : undefined |
| | | |
| | | const assignedVarType = getAssignedVarType?.(variable_selector) |
| | | const isSameVariable = Array.isArray(variable_selector) && variable_selector.join('.') === `${payload.nodeId}.${payload.variable}` |
| | | if (!filterToAssignedVar || !item.variable_selector || !assignedVarType || !item.operation) |
| | | return true |
| | | |
| | | return !isSameVariable && (!assignedVarType || filterToAssignedVar(payload, assignedVarType, operation)) |
| | | return filterToAssignedVar( |
| | | payload, |
| | | assignedVarType, |
| | | item.operation, |
| | | ) |
| | | } |
| | | }, [list, filterToAssignedVar, getAssignedVarType]) |
| | | |
| | |
| | | |
| | | return ( |
| | | <div className='flex items-start gap-1 self-stretch' key={index}> |
| | | <div className='flex grow flex-col items-start gap-1'> |
| | | <div className='flex flex-col items-start gap-1 flex-grow'> |
| | | <div className='flex items-center gap-1 self-stretch'> |
| | | <VarReferencePicker |
| | | readonly={readonly} |
| | |
| | | /> |
| | | </div> |
| | | {item.operation !== WriteMode.clear && item.operation !== WriteMode.set |
| | | && item.operation !== WriteMode.removeFirst && item.operation !== WriteMode.removeLast |
| | | && !writeModeTypesNum?.includes(item.operation) |
| | | && ( |
| | | <VarReferencePicker |
| | |
| | | </div> |
| | | <ActionButton |
| | | size='l' |
| | | className='group shrink-0 hover:!bg-state-destructive-hover' |
| | | className='flex-shrink-0 group hover:!bg-state-destructive-hover' |
| | | onClick={handleVarRemove(index)} |
| | | > |
| | | <RiDeleteBinLine className='h-4 w-4 text-text-tertiary group-hover:text-text-destructive' /> |
| | | <RiDeleteBinLine className='text-text-tertiary w-4 h-4 group-hover:text-text-destructive' /> |
| | | </ActionButton> |
| | | </div> |
| | | ) |