12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import type { FC } from 'react'
- import {
- memo,
- useMemo,
- } 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 { 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 showInputsPanel = useStore(s => s.showInputsPanel)
- const workflowRunningData = useStore(s => s.workflowRunningData)
- const historyWorkflowData = useStore(s => s.historyWorkflowData)
- const { currentLogItem, setCurrentLogItem, showMessageLogModal, setShowMessageLogModal } = useAppStore(useShallow(state => ({
- currentLogItem: state.currentLogItem,
- setCurrentLogItem: state.setCurrentLogItem,
- showMessageLogModal: state.showMessageLogModal,
- setShowMessageLogModal: state.setShowMessageLogModal,
- })))
- const {
- showNodePanel,
- showDebugAndPreviewPanel,
- showWorkflowPreview,
- } = useMemo(() => {
- return {
- showNodePanel: !!selectedNode && !workflowRunningData && !historyWorkflowData && !showInputsPanel,
- showDebugAndPreviewPanel: isChatMode && workflowRunningData && !historyWorkflowData,
- showWorkflowPreview: !isChatMode && !historyWorkflowData && (workflowRunningData || showInputsPanel),
- }
- }, [
- showInputsPanel,
- selectedNode,
- isChatMode,
- workflowRunningData,
- historyWorkflowData,
- ])
- return (
- <div className='absolute top-14 right-0 bottom-2 flex z-10'>
- {
- showMessageLogModal && (
- <MessageLogModal
- fixedWidth
- width={400}
- currentLogItem={currentLogItem}
- onCancel={() => {
- setCurrentLogItem()
- setShowMessageLogModal(false)
- }}
- />
- )
- }
- {
- historyWorkflowData && !isChatMode && (
- <Record />
- )
- }
- {
- historyWorkflowData && isChatMode && (
- <ChatRecord />
- )
- }
- {
- showDebugAndPreviewPanel && (
- <DebugAndPreview />
- )
- }
- {
- showWorkflowPreview && (
- <WorkflowPreview />
- )
- }
- {
- showNodePanel && (
- <NodePanel {...selectedNode!} />
- )
- }
- </div>
- )
- }
- export default memo(Panel)
|