| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- import {
 
-   memo,
 
-   useMemo,
 
- } from 'react'
 
- import { useTranslation } from 'react-i18next'
 
- import type { OnFeaturesChange } from '../types'
 
- import { useFeatures } from '../hooks'
 
- import FileUpload from './file-upload'
 
- import OpeningStatement from './opening-statement'
 
- import type { OpeningStatementProps } from './opening-statement'
 
- import SuggestedQuestionsAfterAnswer from './suggested-questions-after-answer'
 
- import TextToSpeech from './text-to-speech'
 
- import SpeechToText from './speech-to-text'
 
- import Citation from './citation'
 
- import Moderation from './moderation'
 
- import type { InputVar } from '@/app/components/workflow/types'
 
- export type FeaturePanelProps = {
 
-   onChange?: OnFeaturesChange
 
-   openingStatementProps: OpeningStatementProps
 
-   disabled?: boolean
 
-   workflowVariables: InputVar[]
 
- }
 
- const FeaturePanel = ({
 
-   onChange,
 
-   openingStatementProps,
 
-   disabled,
 
-   workflowVariables,
 
- }: FeaturePanelProps) => {
 
-   const { t } = useTranslation()
 
-   const features = useFeatures(s => s.features)
 
-   const showAdvanceFeature = useMemo(() => {
 
-     return features.opening?.enabled || features.suggested?.enabled || features.speech2text?.enabled || features.text2speech?.enabled || features.citation?.enabled
 
-   }, [features])
 
-   const showToolFeature = useMemo(() => {
 
-     return features.moderation?.enabled
 
-   }, [features])
 
-   return (
 
-     <div className='space-y-3'>
 
-       <FileUpload
 
-         onChange={onChange}
 
-         disabled={disabled}
 
-       />
 
-       {
 
-         showAdvanceFeature && (
 
-           <div>
 
-             <div className='flex items-center'>
 
-               <div className='shrink-0 text-xs font-semibold text-gray-500'>
 
-                 {t('appDebug.feature.groupChat.title')}
 
-               </div>
 
-               <div
 
-                 className='grow ml-3 h-[1px]'
 
-                 style={{ background: 'linear-gradient(270deg, rgba(243, 244, 246, 0) 0%, #F3F4F6 100%)' }}
 
-               ></div>
 
-             </div>
 
-             <div className='py-2 space-y-2'>
 
-               {
 
-                 features.opening?.enabled && (
 
-                   <OpeningStatement
 
-                     {...openingStatementProps}
 
-                     onChange={onChange}
 
-                     readonly={disabled}
 
-                     workflowVariables={workflowVariables}
 
-                   />
 
-                 )
 
-               }
 
-               {
 
-                 features.suggested?.enabled && (
 
-                   <SuggestedQuestionsAfterAnswer />
 
-                 )
 
-               }
 
-               {
 
-                 features.text2speech?.enabled && (
 
-                   <TextToSpeech onChange={onChange} disabled={disabled} />
 
-                 )
 
-               }
 
-               {
 
-                 features.speech2text?.enabled && (
 
-                   <SpeechToText />
 
-                 )
 
-               }
 
-               {
 
-                 features.citation?.enabled && (
 
-                   <Citation />
 
-                 )
 
-               }
 
-             </div>
 
-           </div>
 
-         )
 
-       }
 
-       {
 
-         showToolFeature && (
 
-           <div>
 
-             <div className='flex items-center'>
 
-               <div className='shrink-0 text-xs font-semibold text-gray-500'>
 
-                 {t('appDebug.feature.groupChat.title')}
 
-               </div>
 
-               <div
 
-                 className='grow ml-3 h-[1px]'
 
-                 style={{ background: 'linear-gradient(270deg, rgba(243, 244, 246, 0) 0%, #F3F4F6 100%)' }}
 
-               ></div>
 
-             </div>
 
-             <div className='py-2 space-y-2'>
 
-               {
 
-                 features.moderation?.enabled && (
 
-                   <Moderation onChange={onChange} disabled={disabled} />
 
-                 )
 
-               }
 
-             </div>
 
-           </div>
 
-         )
 
-       }
 
-     </div>
 
-   )
 
- }
 
- export default memo(FeaturePanel)
 
 
  |