rapida-react
Version:
An easy to use react client for building generative ai application using Rapida platform.
50 lines (48 loc) • 1.47 kB
JavaScript
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