'use client' import type { FC } from 'react' import React, { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { RiClipboardLine, } from '@remixicon/react' import copy from 'copy-to-clipboard' import { useParams } from 'next/navigation' import { HandThumbDownIcon, HandThumbUpIcon } from '@heroicons/react/24/outline' import { useBoolean } from 'ahooks' import { HashtagIcon } from '@heroicons/react/24/solid' import ResultTab from './result-tab' import cn from '@/utils/classnames' import { Markdown } from '@/app/components/base/markdown' import Loading from '@/app/components/base/loading' import Toast from '@/app/components/base/toast' import AudioBtn from '@/app/components/base/audio-btn' import type { Feedbacktype } from '@/app/components/base/chat/chat/type' import { fetchMoreLikeThis, updateFeedback } from '@/service/share' import { File02 } from '@/app/components/base/icons/src/vender/line/files' import { Bookmark } from '@/app/components/base/icons/src/vender/line/general' import { Stars02 } from '@/app/components/base/icons/src/vender/line/weather' import { RefreshCcw01 } from '@/app/components/base/icons/src/vender/line/arrows' import { fetchTextGenerationMessge } from '@/service/debug' import AnnotationCtrlBtn from '@/app/components/app/configuration/toolbox/annotation/annotation-ctrl-btn' import EditReplyModal from '@/app/components/app/annotation/edit-annotation-modal' import { useStore as useAppStore } from '@/app/components/app/store' import WorkflowProcessItem from '@/app/components/base/chat/chat/answer/workflow-process' import type { WorkflowProcess } from '@/app/components/base/chat/types' import type { SiteInfo } from '@/models/share' import { useChatContext } from '@/app/components/base/chat/chat/context' const MAX_DEPTH = 3 export type IGenerationItemProps = { isWorkflow?: boolean workflowProcessData?: WorkflowProcess className?: string isError: boolean onRetry: () => void content: any messageId?: string | null conversationId?: string isLoading?: boolean isResponding?: boolean isInWebApp?: boolean moreLikeThis?: boolean depth?: number feedback?: Feedbacktype onFeedback?: (feedback: Feedbacktype) => void onSave?: (messageId: string) => void isMobile?: boolean isInstalledApp: boolean installedAppId?: string taskId?: string controlClearMoreLikeThis?: number supportFeedback?: boolean supportAnnotation?: boolean isShowTextToSpeech?: boolean appId?: string varList?: { label: string; value: string | number | object }[] innerClassName?: string contentClassName?: string footerClassName?: string hideProcessDetail?: boolean siteInfo: SiteInfo | null } export const SimpleBtn = ({ className, isDisabled, onClick, children }: { className?: string isDisabled?: boolean onClick?: () => void children: React.ReactNode }) => (