Spaces:
Paused
Paused
| import { | |
| memo, | |
| useCallback, | |
| } from 'react' | |
| import { useNodes } from 'reactflow' | |
| import { useStore } from './store' | |
| import { | |
| useIsChatMode, | |
| useNodesReadOnly, | |
| useNodesSyncDraft, | |
| } from './hooks' | |
| import { type CommonNodeType, type InputVar, InputVarType, type Node } from './types' | |
| import useConfig from './nodes/start/use-config' | |
| import type { StartNodeType } from './nodes/start/types' | |
| import type { PromptVariable } from '@/models/debug' | |
| import NewFeaturePanel from '@/app/components/base/features/new-feature-panel' | |
| const Features = () => { | |
| const setShowFeaturesPanel = useStore(s => s.setShowFeaturesPanel) | |
| const isChatMode = useIsChatMode() | |
| const { nodesReadOnly } = useNodesReadOnly() | |
| const { handleSyncWorkflowDraft } = useNodesSyncDraft() | |
| const nodes = useNodes<CommonNodeType>() | |
| const startNode = nodes.find(node => node.data.type === 'start') | |
| const { id, data } = startNode as Node<StartNodeType> | |
| const { handleAddVariable } = useConfig(id, data) | |
| const handleAddOpeningStatementVariable = (variables: PromptVariable[]) => { | |
| const newVariable = variables[0] | |
| const startNodeVariable: InputVar = { | |
| variable: newVariable.key, | |
| label: newVariable.name, | |
| type: InputVarType.textInput, | |
| max_length: newVariable.max_length, | |
| required: newVariable.required || false, | |
| options: [], | |
| } | |
| handleAddVariable(startNodeVariable) | |
| } | |
| const handleFeaturesChange = useCallback(() => { | |
| handleSyncWorkflowDraft() | |
| setShowFeaturesPanel(true) | |
| }, [handleSyncWorkflowDraft, setShowFeaturesPanel]) | |
| return ( | |
| <NewFeaturePanel | |
| show | |
| isChatMode={isChatMode} | |
| disabled={nodesReadOnly} | |
| onChange={handleFeaturesChange} | |
| onClose={() => setShowFeaturesPanel(false)} | |
| onAutoAddPromptVariable={handleAddOpeningStatementVariable} | |
| workflowVariables={data.variables} | |
| /> | |
| ) | |
| } | |
| export default memo(Features) | |