/* * Copyright © 2024 Hexastack. All rights reserved. * * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ import React, { PropsWithChildren } from "react"; import { useChat } from "../providers/ChatProvider"; import { useWidget } from "../providers/WidgetProvider"; import ChatHeader from "./ChatHeader"; import ConnectionLost from "./ConnectionLost"; import Messages from "./Messages"; import UserInput from "./UserInput"; import Webview from "./Webview"; import "./ChatWindow.scss"; type ChatWindowProps = PropsWithChildren<{ CustomHeader?: () => JSX.Element; CustomAvatar?: () => JSX.Element; PreChat?: React.FC; PostChat?: React.FC; }>; const ChatWindow: React.FC = ({ CustomHeader, CustomAvatar, PreChat, PostChat, }) => { const { connectionState } = useChat(); const { screen, isOpen } = useWidget(); return (
{CustomHeader && } {screen === "prechat" && PreChat && } {["prechat", "postchat", "webview"].indexOf(screen) === -1 && connectionState === 3 && } {screen !== "prechat" && screen !== "postchat" && connectionState !== 3 && } {screen === "postchat" && PostChat && } {["prechat", "postchat", "webview"].indexOf(screen) === -1 && connectionState === 3 && } {screen === "webview" && }
); }; export default ChatWindow;