UNPKG

rapida-react

Version:

An easy to use react client for building generative ai application using Rapida platform.

50 lines (48 loc) 1.47 kB
import { agentMessageChangeEventObserver, useMaybeVoiceAgent } from "./chunk-5UOY4SG5.mjs"; import { cn } from "./chunk-32YFHJN5.mjs"; // src/components/text/conversations/index.tsx import React, { useEffect, useRef, useState } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; var Conversation = ({ className, MessageWrapper, intialConversations = [] }) => { const [chats, setChats] = useState([]); const ctrRef = useRef(null); const [_, setChanged] = useState(false); const agentContext = useMaybeVoiceAgent(); React.useEffect(() => { const serverEventListner = agentMessageChangeEventObserver( agentContext ).subscribe((agentEvents) => { setChats([...intialConversations, ...agentEvents.chats]); setChanged((prevChanged) => !prevChanged); }); return () => { serverEventListner.unsubscribe(); }; }, [agentContext]); const scrollTo = (ref) => { setTimeout( () => ref.current?.scrollIntoView({ inline: "center", behavior: "smooth" }), 777 ); }; useEffect(() => { scrollTo(ctrRef); }, [JSON.stringify(chats)]); return /* @__PURE__ */ jsxs("ul", { className: cn(className), children: [ chats.map((chat, idx) => /* @__PURE__ */ jsx(MessageWrapper, { message: chat }, `msg-idx-${idx}`)), /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("div", { ref: ctrRef }) }) ] }); }; export { Conversation }; //# sourceMappingURL=chunk-GKZ4RFKG.mjs.map