import { keyframes } from "@emotion/react"; import { Center, Text, Flex, Avatar, Accordion, Box, Stack, Container, Divider, ActionIcon, Tooltip } from "@mantine/core"; import React from "react"; import CodeBlock from "./CodeBlock"; // @ts-ignore import SvgAvatarDevChat from './avatar_devchat.svg'; // @ts-ignore import SvgAvatarUser from './avatar_spaceman.png'; import { IconCheck, IconCopy } from "@tabler/icons-react"; import { useSelector } from 'react-redux'; import { selectGenerating, selectResponsed, selectMessages, } from './chatSlice'; const MessageBlink = (props: any) => { const { messageType, lastMessage } = props; const generating = useSelector(selectGenerating); const responsed = useSelector(selectResponsed); const blink = keyframes({ '50%': { opacity: 0 }, }); return (generating && messageType === 'bot' && lastMessage ? | : <>); }; const MessageContext = (props: any) => { const { contexts } = props; return (contexts && { contexts?.map((item: any, index: number) => { const { context } = item; return ( {'command' in context ? context.command : context.path} { context.content ?
{context.content}
:
No content
}
); }) }
); }; const DefaultMessage = (
No messages yet
); const MessageHeader = (props: any) => { const { type, message, contexts, onRefillClick } = props; const [refilled, setRefilled] = React.useState(false); return ( { type === 'bot' ? : } {type === 'bot' ? 'DevChat' : 'User'} {type === 'user' ? { onRefillClick({ message: message, contexts: contexts }); setRefilled(true); setTimeout(() => { setRefilled(false); }, 2000); }}> {refilled ? : } : <> } ); }; const MessageContainer = (props: any) => { const { width, onRefillClick } = props; const messages = useSelector(selectMessages); const messageList = messages.map((item: any, index: number) => { const { message: messageText, type: messageType, contexts } = item; // setMessage(messageText); return (<> {index !== messages.length - 1 && } ); }); return (messageList.length > 0 ? messageList : DefaultMessage); }; export default MessageContainer;