| 'use client' | |
| import type { FC } from 'react' | |
| import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' | |
| import { CodeLanguage } from '@/app/components/workflow/nodes/code/types' | |
| import { Markdown } from '@/app/components/base/markdown' | |
| import LoadingAnim from '@/app/components/base/chat/chat/loading-anim' | |
| import StatusContainer from '@/app/components/workflow/run/status-container' | |
| type OutputPanelProps = { | |
| isRunning?: boolean | |
| outputs?: any | |
| error?: string | |
| height?: number | |
| } | |
| const OutputPanel: FC<OutputPanelProps> = ({ | |
| isRunning, | |
| outputs, | |
| error, | |
| height, | |
| }) => { | |
| return ( | |
| <div className='py-2'> | |
| {isRunning && ( | |
| <div className='pt-4 pl-[26px]'> | |
| <LoadingAnim type='text' /> | |
| </div> | |
| )} | |
| {!isRunning && error && ( | |
| <div className='px-4'> | |
| <StatusContainer status='failed'>{error}</StatusContainer> | |
| </div> | |
| )} | |
| {!isRunning && !outputs && ( | |
| <div className='px-4 py-2'> | |
| <Markdown content='No Output' /> | |
| </div> | |
| )} | |
| {outputs && Object.keys(outputs).length === 1 && ( | |
| <div className='px-4 py-2'> | |
| <Markdown content={outputs[Object.keys(outputs)[0]] || ''} /> | |
| </div> | |
| )} | |
| {outputs && Object.keys(outputs).length > 1 && height! > 0 && ( | |
| <div className='px-4 py-2 flex flex-col gap-2'> | |
| <CodeEditor | |
| readOnly | |
| title={<div></div>} | |
| language={CodeLanguage.json} | |
| value={outputs} | |
| isJSONStringifyBeauty | |
| height={height} | |
| /> | |
| </div> | |
| )} | |
| </div> | |
| ) | |
| } | |
| export default OutputPanel | |