| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | '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/app/chat/loading-anim'type OutputPanelProps = {  isRunning?: boolean  outputs?: any  error?: string  height?: number}const OutputPanel: FC<OutputPanelProps> = ({  isRunning,  outputs,  error,  height,}) => {  return (    <div className='bg-gray-50 py-2'>      {isRunning && (        <div className='pt-4 pl-[26px]'>          <LoadingAnim type='text' />        </div>      )}      {!isRunning && error && (        <div className='px-4'>          <div className='px-3 py-[10px] rounded-lg !bg-[#fef3f2] border-[0.5px] border-[rbga(0,0,0,0.05)] shadow-xs'>            <div className='text-xs leading-[18px] text-[#d92d20]'>{error}</div>          </div>        </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
 |