|  | @@ -4,6 +4,7 @@ import type {
 | 
											
												
													
														|  |  } from 'react'
 |  |  } from 'react'
 | 
											
												
													
														|  |  import {
 |  |  import {
 | 
											
												
													
														|  |    memo,
 |  |    memo,
 | 
											
												
													
														|  | 
 |  | +  useCallback,
 | 
											
												
													
														|  |    useEffect,
 |  |    useEffect,
 | 
											
												
													
														|  |    useRef,
 |  |    useRef,
 | 
											
												
													
														|  |  } from 'react'
 |  |  } from 'react'
 | 
											
										
											
												
													
														|  | @@ -76,19 +77,20 @@ const Chat: FC<ChatProps> = ({
 | 
											
												
													
														|  |    const chatContainerInnerRef = useRef<HTMLDivElement>(null)
 |  |    const chatContainerInnerRef = useRef<HTMLDivElement>(null)
 | 
											
												
													
														|  |    const chatFooterRef = useRef<HTMLDivElement>(null)
 |  |    const chatFooterRef = useRef<HTMLDivElement>(null)
 | 
											
												
													
														|  |    const chatFooterInnerRef = useRef<HTMLDivElement>(null)
 |  |    const chatFooterInnerRef = useRef<HTMLDivElement>(null)
 | 
											
												
													
														|  | 
 |  | +  const userScrolledRef = useRef(false)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  const handleScrolltoBottom = () => {
 |  | 
 | 
											
												
													
														|  | -    if (chatContainerRef.current)
 |  | 
 | 
											
												
													
														|  | 
 |  | +  const handleScrolltoBottom = useCallback(() => {
 | 
											
												
													
														|  | 
 |  | +    if (chatContainerRef.current && !userScrolledRef.current)
 | 
											
												
													
														|  |        chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight
 |  |        chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight
 | 
											
												
													
														|  | -  }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  }, [])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  const handleWindowResize = () => {
 |  | 
 | 
											
												
													
														|  | 
 |  | +  const handleWindowResize = useCallback(() => {
 | 
											
												
													
														|  |      if (chatContainerRef.current && chatFooterRef.current)
 |  |      if (chatContainerRef.current && chatFooterRef.current)
 | 
											
												
													
														|  |        chatFooterRef.current.style.width = `${chatContainerRef.current.clientWidth}px`
 |  |        chatFooterRef.current.style.width = `${chatContainerRef.current.clientWidth}px`
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      if (chatContainerInnerRef.current && chatFooterInnerRef.current)
 |  |      if (chatContainerInnerRef.current && chatFooterInnerRef.current)
 | 
											
												
													
														|  |        chatFooterInnerRef.current.style.width = `${chatContainerInnerRef.current.clientWidth}px`
 |  |        chatFooterInnerRef.current.style.width = `${chatContainerInnerRef.current.clientWidth}px`
 | 
											
												
													
														|  | -  }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  }, [])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    useThrottleEffect(() => {
 |  |    useThrottleEffect(() => {
 | 
											
												
													
														|  |      handleScrolltoBottom()
 |  |      handleScrolltoBottom()
 | 
											
										
											
												
													
														|  | @@ -98,7 +100,7 @@ const Chat: FC<ChatProps> = ({
 | 
											
												
													
														|  |    useEffect(() => {
 |  |    useEffect(() => {
 | 
											
												
													
														|  |      window.addEventListener('resize', debounce(handleWindowResize))
 |  |      window.addEventListener('resize', debounce(handleWindowResize))
 | 
											
												
													
														|  |      return () => window.removeEventListener('resize', handleWindowResize)
 |  |      return () => window.removeEventListener('resize', handleWindowResize)
 | 
											
												
													
														|  | -  }, [])
 |  | 
 | 
											
												
													
														|  | 
 |  | +  }, [handleWindowResize])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    useEffect(() => {
 |  |    useEffect(() => {
 | 
											
												
													
														|  |      if (chatFooterRef.current && chatContainerRef.current) {
 |  |      if (chatFooterRef.current && chatContainerRef.current) {
 | 
											
										
											
												
													
														|  | @@ -117,7 +119,19 @@ const Chat: FC<ChatProps> = ({
 | 
											
												
													
														|  |          resizeObserver.disconnect()
 |  |          resizeObserver.disconnect()
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -  }, [chatFooterRef, chatContainerRef])
 |  | 
 | 
											
												
													
														|  | 
 |  | +  }, [handleScrolltoBottom])
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  useEffect(() => {
 | 
											
												
													
														|  | 
 |  | +    const chatContainer = chatContainerRef.current
 | 
											
												
													
														|  | 
 |  | +    if (chatContainer) {
 | 
											
												
													
														|  | 
 |  | +      const setUserScrolled = () => {
 | 
											
												
													
														|  | 
 |  | +        if (chatContainer)
 | 
											
												
													
														|  | 
 |  | +          userScrolledRef.current = chatContainer.scrollHeight - chatContainer.scrollTop >= chatContainer.clientHeight + 300
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +      chatContainer.addEventListener('scroll', setUserScrolled)
 | 
											
												
													
														|  | 
 |  | +      return () => chatContainer.removeEventListener('scroll', setUserScrolled)
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +  }, [])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    const hasTryToAsk = config?.suggested_questions_after_answer?.enabled && !!suggestedQuestions?.length && onSend
 |  |    const hasTryToAsk = config?.suggested_questions_after_answer?.enabled && !!suggestedQuestions?.length && onSend
 | 
											
												
													
														|  |  
 |  |  
 |