Spaces:
Paused
Paused
| 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<CommonNodeType>() | |
| 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 ( | |
| <div | |
| tabIndex={-1} | |
| className={cn('absolute top-14 right-0 bottom-2 flex z-10 outline-none')} | |
| key={`${isRestoring}`} | |
| > | |
| { | |
| showMessageLogModal && ( | |
| <MessageLogModal | |
| fixedWidth | |
| width={400} | |
| currentLogItem={currentLogItem} | |
| onCancel={() => { | |
| setCurrentLogItem() | |
| setShowMessageLogModal(false) | |
| }} | |
| defaultTab={currentLogModalActiveTab} | |
| /> | |
| ) | |
| } | |
| { | |
| !!selectedNode && ( | |
| <NodePanel {...selectedNode!} /> | |
| ) | |
| } | |
| { | |
| historyWorkflowData && !isChatMode && ( | |
| <Record /> | |
| ) | |
| } | |
| { | |
| historyWorkflowData && isChatMode && ( | |
| <ChatRecord /> | |
| ) | |
| } | |
| { | |
| showDebugAndPreviewPanel && isChatMode && ( | |
| <DebugAndPreview /> | |
| ) | |
| } | |
| { | |
| showDebugAndPreviewPanel && !isChatMode && ( | |
| <WorkflowPreview /> | |
| ) | |
| } | |
| { | |
| showEnvPanel && ( | |
| <EnvPanel /> | |
| ) | |
| } | |
| { | |
| showChatVariablePanel && ( | |
| <ChatVariablePanel /> | |
| ) | |
| } | |
| { | |
| showGlobalVariablePanel && ( | |
| <GlobalVariablePanel /> | |
| ) | |
| } | |
| </div> | |
| ) | |
| } | |
| export default memo(Panel) | |