mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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)
 | 
