import type { FC } from 'react' import { memo } from 'react' import { useNodes } from 'reactflow' import { useShallow } from 'zustand/react/shallow' import type { CommonNodeType } from '../types' import { Panel as NodePanel } from '../nodes' import { useStore } from '../store' import { useIsChatMode, } from '../hooks' import DebugAndPreview from './debug-and-preview' import Record from './record' import WorkflowPreview from './workflow-preview' import ChatRecord from './chat-record' import ChatVariablePanel from './chat-variable-panel' import EnvPanel from './env-panel' import GlobalVariablePanel from './global-variable-panel' import cn from '@/utils/classnames' import { useStore as useAppStore } from '@/app/components/app/store' import MessageLogModal from '@/app/components/base/message-log-modal' const Panel: FC = () => { const nodes = useNodes() const isChatMode = useIsChatMode() const selectedNode = nodes.find(node => node.data.selected) const historyWorkflowData = useStore(s => s.historyWorkflowData) const showDebugAndPreviewPanel = useStore(s => s.showDebugAndPreviewPanel) const showEnvPanel = useStore(s => s.showEnvPanel) const showChatVariablePanel = useStore(s => s.showChatVariablePanel) const showGlobalVariablePanel = useStore(s => s.showGlobalVariablePanel) const isRestoring = useStore(s => s.isRestoring) const { currentLogItem, setCurrentLogItem, showMessageLogModal, setShowMessageLogModal, currentLogModalActiveTab } = useAppStore(useShallow(state => ({ currentLogItem: state.currentLogItem, setCurrentLogItem: state.setCurrentLogItem, showMessageLogModal: state.showMessageLogModal, setShowMessageLogModal: state.setShowMessageLogModal, currentLogModalActiveTab: state.currentLogModalActiveTab, }))) return (
{ showMessageLogModal && ( { setCurrentLogItem() setShowMessageLogModal(false) }} defaultTab={currentLogModalActiveTab} /> ) } { !!selectedNode && ( ) } { historyWorkflowData && !isChatMode && ( ) } { historyWorkflowData && isChatMode && ( ) } { showDebugAndPreviewPanel && isChatMode && ( ) } { showDebugAndPreviewPanel && !isChatMode && ( ) } { showEnvPanel && ( ) } { showChatVariablePanel && ( ) } { showGlobalVariablePanel && ( ) }
) } export default memo(Panel)