| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- import { useCallback, useState } from 'react'
 
- import produce from 'immer'
 
- import { useBoolean } from 'ahooks'
 
- import type { StartNodeType } from './types'
 
- import { ChangeType } from '@/app/components/workflow/types'
 
- import type { InputVar, MoreInfo, ValueSelector } from '@/app/components/workflow/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: StartNodeType) => {
 
-   const { nodesReadOnly: readOnly } = useNodesReadOnly()
 
-   const { handleOutVarRenameChange, isVarUsedInNodes, removeUsedVarInNodes } = useWorkflow()
 
-   const isChatMode = useIsChatMode()
 
-   const { inputs, setInputs } = useNodeCrud<StartNodeType>(id, payload)
 
-   const [isShowAddVarModal, {
 
-     setTrue: showAddVarModal,
 
-     setFalse: hideAddVarModal,
 
-   }] = useBoolean(false)
 
-   const [isShowRemoveVarConfirm, {
 
-     setTrue: showRemoveVarConfirm,
 
-     setFalse: hideRemoveVarConfirm,
 
-   }] = useBoolean(false)
 
-   const [removedVar, setRemovedVar] = useState<ValueSelector>([])
 
-   const [removedIndex, setRemoveIndex] = useState(0)
 
-   const handleVarListChange = useCallback((newList: InputVar[], moreInfo?: { index: number; payload: MoreInfo }) => {
 
-     if (moreInfo?.payload?.type === ChangeType.remove) {
 
-       if (isVarUsedInNodes([id, moreInfo?.payload?.payload?.beforeKey || ''])) {
 
-         showRemoveVarConfirm()
 
-         setRemovedVar([id, moreInfo?.payload?.payload?.beforeKey || ''])
 
-         setRemoveIndex(moreInfo?.index as number)
 
-         return
 
-       }
 
-     }
 
-     const newInputs = produce(inputs, (draft: any) => {
 
-       draft.variables = newList
 
-     })
 
-     setInputs(newInputs)
 
-     if (moreInfo?.payload?.type === ChangeType.changeVarName) {
 
-       const changedVar = newList[moreInfo.index]
 
-       handleOutVarRenameChange(id, [id, inputs.variables[moreInfo.index].variable], [id, changedVar.variable])
 
-     }
 
-   }, [handleOutVarRenameChange, id, inputs, isVarUsedInNodes, setInputs, showRemoveVarConfirm])
 
-   const removeVarInNode = useCallback(() => {
 
-     const newInputs = produce(inputs, (draft) => {
 
-       draft.variables.splice(removedIndex, 1)
 
-     })
 
-     setInputs(newInputs)
 
-     removeUsedVarInNodes(removedVar)
 
-     hideRemoveVarConfirm()
 
-   }, [hideRemoveVarConfirm, inputs, removeUsedVarInNodes, removedIndex, removedVar, setInputs])
 
-   const handleAddVariable = useCallback((payload: InputVar) => {
 
-     const newInputs = produce(inputs, (draft: StartNodeType) => {
 
-       draft.variables.push(payload)
 
-     })
 
-     setInputs(newInputs)
 
-   }, [inputs, setInputs])
 
-   return {
 
-     readOnly,
 
-     isChatMode,
 
-     inputs,
 
-     isShowAddVarModal,
 
-     showAddVarModal,
 
-     hideAddVarModal,
 
-     handleVarListChange,
 
-     handleAddVariable,
 
-     isShowRemoveVarConfirm,
 
-     hideRemoveVarConfirm,
 
-     onRemoveVarConfirm: removeVarInNode,
 
-   }
 
- }
 
- export default useConfig
 
 
  |