| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- import { useCallback } from 'react'
 - import produce from 'immer'
 - import type { Var } from '../../types'
 - import { VarType } from '../../types'
 - import { getVarType } from '../_base/components/variable/utils'
 - import { LogicalOperator } from './types'
 - import type { Condition, IfElseNodeType } from './types'
 - import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud'
 - import {
 -   useIsChatMode,
 -   useNodesReadOnly,
 -   useWorkflow,
 - } from '@/app/components/workflow/hooks'
 - 
 - const useConfig = (id: string, payload: IfElseNodeType) => {
 -   const { nodesReadOnly: readOnly } = useNodesReadOnly()
 -   const { getBeforeNodesInSameBranch } = useWorkflow()
 -   const isChatMode = useIsChatMode()
 -   const availableNodes = getBeforeNodesInSameBranch(id)
 - 
 -   const { inputs, setInputs } = useNodeCrud<IfElseNodeType>(id, payload)
 - 
 -   const handleConditionsChange = useCallback((newConditions: Condition[]) => {
 -     const newInputs = produce(inputs, (draft) => {
 -       draft.conditions = newConditions
 -     })
 -     setInputs(newInputs)
 -   }, [inputs, setInputs])
 - 
 -   const handleAddCondition = useCallback(() => {
 -     const newInputs = produce(inputs, (draft) => {
 -       draft.conditions.push({
 -         id: `${Date.now()}`,
 -         variable_selector: [],
 -         comparison_operator: undefined,
 -         value: '',
 -       })
 -     })
 -     setInputs(newInputs)
 -   }, [inputs, setInputs])
 - 
 -   const handleLogicalOperatorToggle = useCallback(() => {
 -     const newInputs = produce(inputs, (draft) => {
 -       draft.logical_operator = draft.logical_operator === LogicalOperator.and ? LogicalOperator.or : LogicalOperator.and
 -     })
 -     setInputs(newInputs)
 -   }, [inputs, setInputs])
 - 
 -   const filterVar = useCallback((varPayload: Var) => {
 -     return varPayload.type !== VarType.arrayFile
 -   }, [])
 - 
 -   const varTypesList = (inputs.conditions || []).map((condition) => {
 -     return getVarType(condition.variable_selector, availableNodes, isChatMode)
 -   })
 - 
 -   return {
 -     readOnly,
 -     inputs,
 -     handleConditionsChange,
 -     handleAddCondition,
 -     handleLogicalOperatorToggle,
 -     varTypesList,
 -     filterVar,
 -   }
 - }
 - 
 - export default useConfig
 
 
  |