| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- import React, { useMemo, useState } from 'react'
 - import { useTranslation } from 'react-i18next'
 - import { RiArrowRightSLine } from '@remixicon/react'
 - import FileImageRender from './file-image-render'
 - import FileTypeIcon from './file-type-icon'
 - import FileItem from './file-uploader-in-attachment/file-item'
 - import type { FileEntity } from './types'
 - import {
 -   getFileAppearanceType,
 - } from './utils'
 - import Tooltip from '@/app/components/base/tooltip'
 - import { SupportUploadFileTypes } from '@/app/components/workflow/types'
 - import cn from '@/utils/classnames'
 - 
 - type Props = {
 -   fileList: {
 -     varName: string
 -     list: FileEntity[]
 -   }[]
 -   isExpanded?: boolean
 -   noBorder?: boolean
 -   noPadding?: boolean
 - }
 - 
 - const FileListInLog = ({ fileList, isExpanded = false, noBorder = false, noPadding = false }: Props) => {
 -   const { t } = useTranslation()
 -   const [expanded, setExpanded] = useState(isExpanded)
 -   const fullList = useMemo(() => {
 -     return fileList.reduce((acc: FileEntity[], { list }) => {
 -       return [...acc, ...list]
 -     }, [])
 -   }, [fileList])
 - 
 -   if (!fileList.length)
 -     return null
 - 
 -   return (
 -     <div className={cn('px-3 py-2', expanded && 'py-3', !noBorder && 'border-t border-divider-subtle', noPadding && '!p-0')}>
 -       <div className='flex justify-between gap-1'>
 -         {expanded && (
 -           <div className='grow py-1 text-text-secondary system-xs-semibold-uppercase cursor-pointer' onClick={() => setExpanded(!expanded)}>{t('appLog.runDetail.fileListLabel')}</div>
 -         )}
 -         {!expanded && (
 -           <div className='flex gap-1'>
 -             {fullList.map((file) => {
 -               const { id, name, type, supportFileType, base64Url, url } = file
 -               const isImageFile = supportFileType === SupportUploadFileTypes.image
 -               return (
 -                 <>
 -                   {isImageFile && (
 -                     <Tooltip
 -                       popupContent={name}
 -                     >
 -                       <div key={id}>
 -                         <FileImageRender
 -                           className='w-8 h-8'
 -                           imageUrl={base64Url || url || ''}
 -                         />
 -                       </div>
 -                     </Tooltip>
 -                   )}
 -                   {!isImageFile && (
 -                     <Tooltip
 -                       popupContent={name}
 -                     >
 -                       <div key={id} className='p-1.5 rounded-md bg-components-panel-on-panel-item-bg border-[0.5px] border-components-panel-border shadow-xs'>
 -                         <FileTypeIcon
 -                           type={getFileAppearanceType(name, type)}
 -                           size='md'
 -                         />
 -                       </div>
 -                     </Tooltip>
 -                   )}
 -                 </>
 -               )
 -             })}
 -           </div>
 -         )}
 -         <div className='flex items-center gap-1 cursor-pointer' onClick={() => setExpanded(!expanded)}>
 -           {!expanded && <div className='text-text-tertiary system-xs-medium-uppercase'>{t('appLog.runDetail.fileListDetail')}</div>}
 -           <RiArrowRightSLine className={cn('w-4 h-4 text-text-tertiary', expanded && 'rotate-90')} />
 -         </div>
 -       </div>
 -       {expanded && (
 -         <div className='flex flex-col gap-3'>
 -           {fileList.map(item => (
 -             <div key={item.varName} className='flex flex-col gap-1 system-xs-regular'>
 -               <div className='py-1 text-text-tertiary '>{item.varName}</div>
 -               {item.list.map(file => (
 -                 <FileItem
 -                   key={file.id}
 -                   file={file}
 -                   showDeleteAction={false}
 -                   showDownloadAction
 -                   canPreview
 -                 />
 -               ))}
 -             </div>
 -           ))}
 -         </div>
 -       )}
 -     </div>
 -   )
 - }
 - 
 - export default FileListInLog
 
 
  |