mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-03 00:58:50 +01:00
83 lines
2.3 KiB
TypeScript
83 lines
2.3 KiB
TypeScript
|
|
import React from 'react';
|
||
|
|
import { useMessageProcess } from '~/hooks';
|
||
|
|
import type { TMessageProps } from '~/common';
|
||
|
|
// eslint-disable-next-line import/no-cycle
|
||
|
|
import MultiMessage from '~/components/Chat/Messages/MultiMessage';
|
||
|
|
import ContentRender from './ContentRender';
|
||
|
|
|
||
|
|
const MessageContainer = React.memo(
|
||
|
|
({
|
||
|
|
handleScroll,
|
||
|
|
children,
|
||
|
|
}: {
|
||
|
|
handleScroll: (event?: unknown) => void;
|
||
|
|
children: React.ReactNode;
|
||
|
|
}) => {
|
||
|
|
return (
|
||
|
|
<div
|
||
|
|
className="text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent"
|
||
|
|
onWheel={handleScroll}
|
||
|
|
onTouchMove={handleScroll}
|
||
|
|
>
|
||
|
|
{children}
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
},
|
||
|
|
);
|
||
|
|
|
||
|
|
export default function MessageContent(props: TMessageProps) {
|
||
|
|
const {
|
||
|
|
showSibling,
|
||
|
|
conversation,
|
||
|
|
handleScroll,
|
||
|
|
siblingMessage,
|
||
|
|
latestMultiMessage,
|
||
|
|
isSubmittingFamily,
|
||
|
|
} = useMessageProcess({ message: props.message });
|
||
|
|
const { message, currentEditId, setCurrentEditId } = props;
|
||
|
|
|
||
|
|
if (!message || typeof message !== 'object') {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
const { children, messageId = null } = message;
|
||
|
|
|
||
|
|
return (
|
||
|
|
<>
|
||
|
|
<MessageContainer handleScroll={handleScroll}>
|
||
|
|
{showSibling ? (
|
||
|
|
<div className="m-auto my-2 flex justify-center p-4 py-2 md:gap-6">
|
||
|
|
<div className="flex w-full flex-row flex-wrap justify-between gap-1 md:max-w-5xl md:flex-nowrap md:gap-2 lg:max-w-5xl xl:max-w-6xl">
|
||
|
|
<ContentRender
|
||
|
|
{...props}
|
||
|
|
message={message}
|
||
|
|
isSubmittingFamily={isSubmittingFamily}
|
||
|
|
isCard
|
||
|
|
/>
|
||
|
|
<ContentRender
|
||
|
|
{...props}
|
||
|
|
isMultiMessage
|
||
|
|
isCard
|
||
|
|
message={siblingMessage ?? latestMultiMessage ?? undefined}
|
||
|
|
isSubmittingFamily={isSubmittingFamily}
|
||
|
|
/>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
) : (
|
||
|
|
<div className="m-auto justify-center p-4 py-2 md:gap-6 ">
|
||
|
|
<ContentRender {...props} />
|
||
|
|
</div>
|
||
|
|
)}
|
||
|
|
</MessageContainer>
|
||
|
|
<MultiMessage
|
||
|
|
key={messageId}
|
||
|
|
messageId={messageId}
|
||
|
|
conversation={conversation}
|
||
|
|
messagesTree={children ?? []}
|
||
|
|
currentEditId={currentEditId}
|
||
|
|
setCurrentEditId={setCurrentEditId}
|
||
|
|
/>
|
||
|
|
</>
|
||
|
|
);
|
||
|
|
}
|