Files
page-assist/src/components/Sidepanel/Chat/body.tsx

63 lines
2.0 KiB
TypeScript
Raw Normal View History

2024-02-01 13:40:44 +05:30
import React from "react"
2024-03-23 14:44:05 +05:30
import { PlaygroundMessage } from "~/components/Common/Playground/Message"
import { useMessage } from "~/hooks/useMessage"
import { EmptySidePanel } from "../Chat/empty"
import { useWebUI } from "@/store/webui"
import { MessageSourcePopup } from "@/components/Common/Playground/MessageSourcePopup"
2024-02-01 13:40:44 +05:30
export const SidePanelBody = () => {
const {
messages,
streaming,
regenerateLastMessage,
editMessage,
isSearchingInternet
} = useMessage()
2024-02-01 13:40:44 +05:30
const divRef = React.useRef<HTMLDivElement>(null)
const [isSourceOpen, setIsSourceOpen] = React.useState(false)
const [source, setSource] = React.useState<any>(null)
const { ttsEnabled } = useWebUI()
2024-02-01 13:40:44 +05:30
React.useEffect(() => {
if (divRef.current) {
divRef.current.scrollIntoView({ behavior: "smooth" })
}
})
return (
<div className="grow flex flex-col md:translate-x-0 transition-transform duration-300 ease-in-out">
{messages.length === 0 && <EmptySidePanel />}
{messages.map((message, index) => (
<PlaygroundMessage
key={index}
isBot={message.isBot}
message={message.message}
2024-02-01 23:48:40 +05:30
name={message.name}
images={message.images || []}
currentMessageIndex={index}
totalMessages={messages.length}
onRengerate={regenerateLastMessage}
2024-08-03 23:00:57 +05:30
message_type={message.messageType}
isProcessing={streaming}
isSearchingInternet={isSearchingInternet}
sources={message.sources}
onEditFormSubmit={(value) => {
editMessage(index, value, !message.isBot)
}}
onSourceClick={(data) => {
setSource(data)
setIsSourceOpen(true)
}}
isTTSEnabled={ttsEnabled}
generationInfo={message?.generationInfo}
2024-02-01 13:40:44 +05:30
/>
))}
<div className="w-full h-48 flex-shrink-0"></div>
2024-02-01 13:40:44 +05:30
<div ref={divRef} />
<MessageSourcePopup
open={isSourceOpen}
setOpen={setIsSourceOpen}
source={source}
/>
2024-02-01 13:40:44 +05:30
</div>
)
}