|
@@ -8,7 +8,6 @@ import type {
|
|
|
ChatConfig,
|
|
|
ChatItem,
|
|
|
} from '../../types'
|
|
|
-import { useChatContext } from '../context'
|
|
|
import Operation from './operation'
|
|
|
import AgentContent from './agent-content'
|
|
|
import BasicContent from './basic-content'
|
|
@@ -16,13 +15,13 @@ import SuggestedQuestions from './suggested-questions'
|
|
|
import More from './more'
|
|
|
import WorkflowProcess from './workflow-process'
|
|
|
import { AnswerTriangle } from '@/app/components/base/icons/src/vender/solid/general'
|
|
|
-import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
|
|
|
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
|
|
import Citation from '@/app/components/base/chat/chat/citation'
|
|
|
import { EditTitle } from '@/app/components/app/annotation/edit-annotation-modal/edit-item'
|
|
|
import type { Emoji } from '@/app/components/tools/types'
|
|
|
import type { AppData } from '@/models/share'
|
|
|
import AnswerIcon from '@/app/components/base/answer-icon'
|
|
|
+import cn from '@/utils/classnames'
|
|
|
|
|
|
type AnswerProps = {
|
|
|
item: ChatItem
|
|
@@ -61,26 +60,24 @@ const Answer: FC<AnswerProps> = ({
|
|
|
} = item
|
|
|
const hasAgentThoughts = !!agent_thoughts?.length
|
|
|
|
|
|
- const [containerWidth] = useState(0)
|
|
|
+ const [containerWidth, setContainerWidth] = useState(0)
|
|
|
const [contentWidth, setContentWidth] = useState(0)
|
|
|
const containerRef = useRef<HTMLDivElement>(null)
|
|
|
const contentRef = useRef<HTMLDivElement>(null)
|
|
|
|
|
|
- const {
|
|
|
- config: chatContextConfig,
|
|
|
- } = useChatContext()
|
|
|
+ const getContainerWidth = () => {
|
|
|
+ if (containerRef.current)
|
|
|
+ setContainerWidth(containerRef.current?.clientWidth + 16)
|
|
|
+ }
|
|
|
+ useEffect(() => {
|
|
|
+ getContainerWidth()
|
|
|
+ }, [])
|
|
|
|
|
|
- const voiceRef = useRef(chatContextConfig?.text_to_speech?.voice)
|
|
|
const getContentWidth = () => {
|
|
|
if (contentRef.current)
|
|
|
setContentWidth(contentRef.current?.clientWidth)
|
|
|
}
|
|
|
|
|
|
- useEffect(() => {
|
|
|
- voiceRef.current = chatContextConfig?.text_to_speech?.voice
|
|
|
- }
|
|
|
- , [chatContextConfig?.text_to_speech?.voice])
|
|
|
-
|
|
|
useEffect(() => {
|
|
|
if (!responding)
|
|
|
getContentWidth()
|
|
@@ -89,36 +86,20 @@ const Answer: FC<AnswerProps> = ({
|
|
|
return (
|
|
|
<div className='flex mb-2 last:mb-0'>
|
|
|
<div className='shrink-0 relative w-10 h-10'>
|
|
|
- {
|
|
|
- answerIcon || <AnswerIcon />
|
|
|
- }
|
|
|
- {
|
|
|
- responding && (
|
|
|
- <div className='absolute -top-[3px] -left-[3px] pl-[6px] flex items-center w-4 h-4 bg-white rounded-full shadow-xs border-[0.5px] border-gray-50'>
|
|
|
- <LoadingAnim type='avatar' />
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
+ {answerIcon || <AnswerIcon />}
|
|
|
+ {responding && (
|
|
|
+ <div className='absolute -top-[3px] -left-[3px] pl-[6px] flex items-center w-4 h-4 bg-white rounded-full shadow-xs border-[0.5px] border-gray-50'>
|
|
|
+ <LoadingAnim type='avatar' />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
</div>
|
|
|
<div className='chat-answer-container group grow w-0 ml-4' ref={containerRef}>
|
|
|
- <div className={`group relative pr-10 ${chatAnswerContainerInner}`}>
|
|
|
+ <div className={cn('group relative pr-10', chatAnswerContainerInner)}>
|
|
|
<AnswerTriangle className='absolute -left-2 top-0 w-2 h-3 text-gray-100' />
|
|
|
<div
|
|
|
ref={contentRef}
|
|
|
- className={`
|
|
|
- relative inline-block px-4 py-3 max-w-full bg-gray-100 rounded-b-2xl rounded-tr-2xl text-sm text-gray-900
|
|
|
- ${workflowProcess && 'w-full'}
|
|
|
- `}
|
|
|
+ className={cn('relative inline-block px-4 py-3 max-w-full bg-gray-100 rounded-b-2xl rounded-tr-2xl text-sm text-gray-900', workflowProcess && 'w-full')}
|
|
|
>
|
|
|
- {annotation?.id && (
|
|
|
- <div
|
|
|
- className='absolute -top-3.5 -right-3.5 box-border flex items-center justify-center h-7 w-7 p-0.5 rounded-lg bg-white cursor-pointer text-[#444CE7] shadow-md group-hover:hidden'
|
|
|
- >
|
|
|
- <div className='p-1 rounded-lg bg-[#EEF4FF] '>
|
|
|
- <MessageFast className='w-4 h-4' />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )}
|
|
|
{
|
|
|
!responding && (
|
|
|
<Operation
|