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