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"
|
2024-02-02 00:13:10 +05:30
|
|
|
import { EmptySidePanel } from "../Chat/empty"
|
2024-04-14 18:16:47 +05:30
|
|
|
import { useWebUI } from "@/store/webui"
|
2024-06-08 23:58:40 +05:30
|
|
|
import { MessageSourcePopup } from "@/components/Common/Playground/MessageSourcePopup"
|
2024-02-01 13:40:44 +05:30
|
|
|
|
|
|
|
|
export const SidePanelBody = () => {
|
2024-06-08 23:58:40 +05:30
|
|
|
const {
|
|
|
|
|
messages,
|
|
|
|
|
streaming,
|
|
|
|
|
regenerateLastMessage,
|
|
|
|
|
editMessage,
|
|
|
|
|
isSearchingInternet
|
|
|
|
|
} = useMessage()
|
2024-02-01 13:40:44 +05:30
|
|
|
const divRef = React.useRef<HTMLDivElement>(null)
|
2024-06-08 23:58:40 +05:30
|
|
|
const [isSourceOpen, setIsSourceOpen] = React.useState(false)
|
|
|
|
|
const [source, setSource] = React.useState<any>(null)
|
2024-04-16 00:45:22 +05:30
|
|
|
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}
|
2024-02-03 17:51:11 +05:30
|
|
|
images={message.images || []}
|
2024-02-25 00:12:46 +05:30
|
|
|
currentMessageIndex={index}
|
|
|
|
|
totalMessages={messages.length}
|
2024-05-18 16:25:06 +05:30
|
|
|
onRengerate={regenerateLastMessage}
|
2024-08-03 23:00:57 +05:30
|
|
|
message_type={message.messageType}
|
2024-06-08 23:58:40 +05:30
|
|
|
isProcessing={streaming}
|
|
|
|
|
isSearchingInternet={isSearchingInternet}
|
|
|
|
|
sources={message.sources}
|
2024-05-18 16:25:06 +05:30
|
|
|
onEditFormSubmit={(value) => {
|
|
|
|
|
editMessage(index, value, !message.isBot)
|
|
|
|
|
}}
|
2024-06-08 23:58:40 +05:30
|
|
|
onSourceClick={(data) => {
|
|
|
|
|
setSource(data)
|
|
|
|
|
setIsSourceOpen(true)
|
|
|
|
|
}}
|
2024-04-14 18:16:47 +05:30
|
|
|
isTTSEnabled={ttsEnabled}
|
2024-02-01 13:40:44 +05:30
|
|
|
/>
|
|
|
|
|
))}
|
2024-06-08 23:58:40 +05:30
|
|
|
<div className="w-full h-48 flex-shrink-0"></div>
|
2024-02-01 13:40:44 +05:30
|
|
|
<div ref={divRef} />
|
2024-06-08 23:58:40 +05:30
|
|
|
<MessageSourcePopup
|
|
|
|
|
open={isSourceOpen}
|
|
|
|
|
setOpen={setIsSourceOpen}
|
|
|
|
|
source={source}
|
|
|
|
|
/>
|
2024-02-01 13:40:44 +05:30
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|