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() const startNode = nodes.find(node => node.data.type === 'start') const { id, data } = startNode as Node 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 ( setShowFeaturesPanel(false)} onAutoAddPromptVariable={handleAddOpeningStatementVariable} workflowVariables={data.variables} /> ) } export default memo(Features)