|  | @@ -6,6 +6,7 @@ import {
 | 
											
												
													
														|  |  } from 'react'
 |  |  } from 'react'
 | 
											
												
													
														|  |  import cn from 'classnames'
 |  |  import cn from 'classnames'
 | 
											
												
													
														|  |  import { useTranslation } from 'react-i18next'
 |  |  import { useTranslation } from 'react-i18next'
 | 
											
												
													
														|  | 
 |  | +import copy from 'copy-to-clipboard'
 | 
											
												
													
														|  |  import ResultText from '../run/result-text'
 |  |  import ResultText from '../run/result-text'
 | 
											
												
													
														|  |  import ResultPanel from '../run/result-panel'
 |  |  import ResultPanel from '../run/result-panel'
 | 
											
												
													
														|  |  import TracingPanel from '../run/tracing-panel'
 |  |  import TracingPanel from '../run/tracing-panel'
 | 
											
										
											
												
													
														|  | @@ -16,9 +17,12 @@ import { useStore } from '../store'
 | 
											
												
													
														|  |  import {
 |  |  import {
 | 
											
												
													
														|  |    WorkflowRunningStatus,
 |  |    WorkflowRunningStatus,
 | 
											
												
													
														|  |  } from '../types'
 |  |  } from '../types'
 | 
											
												
													
														|  | 
 |  | +import { SimpleBtn } from '../../app/text-generate/item'
 | 
											
												
													
														|  | 
 |  | +import Toast from '../../base/toast'
 | 
											
												
													
														|  |  import InputsPanel from './inputs-panel'
 |  |  import InputsPanel from './inputs-panel'
 | 
											
												
													
														|  |  import Loading from '@/app/components/base/loading'
 |  |  import Loading from '@/app/components/base/loading'
 | 
											
												
													
														|  |  import { XClose } from '@/app/components/base/icons/src/vender/line/general'
 |  |  import { XClose } from '@/app/components/base/icons/src/vender/line/general'
 | 
											
												
													
														|  | 
 |  | +import { Clipboard } from '@/app/components/base/icons/src/vender/line/files'
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  const WorkflowPreview = () => {
 |  |  const WorkflowPreview = () => {
 | 
											
												
													
														|  |    const { t } = useTranslation()
 |  |    const { t } = useTranslation()
 | 
											
										
											
												
													
														|  | @@ -108,12 +112,28 @@ const WorkflowPreview = () => {
 | 
											
												
													
														|  |              <InputsPanel onRun={() => switchTab('RESULT')} />
 |  |              <InputsPanel onRun={() => switchTab('RESULT')} />
 | 
											
												
													
														|  |            )}
 |  |            )}
 | 
											
												
													
														|  |            {currentTab === 'RESULT' && (
 |  |            {currentTab === 'RESULT' && (
 | 
											
												
													
														|  | -            <ResultText
 |  | 
 | 
											
												
													
														|  | -              isRunning={workflowRunningData?.result?.status === WorkflowRunningStatus.Running || !workflowRunningData?.result}
 |  | 
 | 
											
												
													
														|  | -              outputs={workflowRunningData?.resultText}
 |  | 
 | 
											
												
													
														|  | -              error={workflowRunningData?.result?.error}
 |  | 
 | 
											
												
													
														|  | -              onClick={() => switchTab('DETAIL')}
 |  | 
 | 
											
												
													
														|  | -            />
 |  | 
 | 
											
												
													
														|  | 
 |  | +            <>
 | 
											
												
													
														|  | 
 |  | +              <ResultText
 | 
											
												
													
														|  | 
 |  | +                isRunning={workflowRunningData?.result?.status === WorkflowRunningStatus.Running || !workflowRunningData?.result}
 | 
											
												
													
														|  | 
 |  | +                outputs={workflowRunningData?.resultText}
 | 
											
												
													
														|  | 
 |  | +                error={workflowRunningData?.result?.error}
 | 
											
												
													
														|  | 
 |  | +                onClick={() => switchTab('DETAIL')}
 | 
											
												
													
														|  | 
 |  | +              />
 | 
											
												
													
														|  | 
 |  | +              <SimpleBtn
 | 
											
												
													
														|  | 
 |  | +                isDisabled={workflowRunningData?.result.status !== WorkflowRunningStatus.Succeeded}
 | 
											
												
													
														|  | 
 |  | +                className={cn('ml-4 mb-4 inline-flex space-x-1')}
 | 
											
												
													
														|  | 
 |  | +                onClick={() => {
 | 
											
												
													
														|  | 
 |  | +                  const content = workflowRunningData?.resultText
 | 
											
												
													
														|  | 
 |  | +                  if (typeof content === 'string')
 | 
											
												
													
														|  | 
 |  | +                    copy(content)
 | 
											
												
													
														|  | 
 |  | +                  else
 | 
											
												
													
														|  | 
 |  | +                    copy(JSON.stringify(content))
 | 
											
												
													
														|  | 
 |  | +                  Toast.notify({ type: 'success', message: t('common.actionMsg.copySuccessfully') })
 | 
											
												
													
														|  | 
 |  | +                }}>
 | 
											
												
													
														|  | 
 |  | +                <Clipboard className='w-3.5 h-3.5' />
 | 
											
												
													
														|  | 
 |  | +                <div>{t('common.operation.copy')}</div>
 | 
											
												
													
														|  | 
 |  | +              </SimpleBtn>
 | 
											
												
													
														|  | 
 |  | +            </>
 | 
											
												
													
														|  |            )}
 |  |            )}
 | 
											
												
													
														|  |            {currentTab === 'DETAIL' && (
 |  |            {currentTab === 'DETAIL' && (
 | 
											
												
													
														|  |              <ResultPanel
 |  |              <ResultPanel
 | 
											
										
											
												
													
														|  | @@ -143,6 +163,7 @@ const WorkflowPreview = () => {
 | 
											
												
													
														|  |                <Loading />
 |  |                <Loading />
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |            )}
 |  |            )}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  |        </div>
 |  |        </div>
 | 
											
												
													
														|  |      </div>
 |  |      </div>
 |