| '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 |
|
|