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