| 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) |
|
|