import { useState } from 'react'; import type { TConversation, TMessage } from 'librechat-data-provider'; import { Clipboard, CheckMark, EditIcon, RegenerateIcon, ContinueIcon } from '~/components/svg'; import { useGenerations, useLocalize } from '~/hooks'; import { cn } from '~/utils'; type THoverButtons = { isEditing: boolean; enterEdit: (cancel?: boolean) => void; copyToClipboard: (setIsCopied: React.Dispatch>) => void; conversation: TConversation | null; isSubmitting: boolean; message: TMessage; regenerate: () => void; handleContinue: (e: React.MouseEvent) => void; latestMessage: TMessage | null; }; export default function HoverButtons({ isEditing, enterEdit, copyToClipboard, conversation, isSubmitting, message, regenerate, handleContinue, latestMessage, }: THoverButtons) { const localize = useLocalize(); const { endpoint } = conversation ?? {}; const [isCopied, setIsCopied] = useState(false); const { hideEditButton, regenerateEnabled, continueSupported } = useGenerations({ isEditing, isSubmitting, message, endpoint: endpoint ?? '', latestMessage, }); if (!conversation) { return null; } const { isCreatedByUser } = message; const onEdit = () => { if (isEditing) { return enterEdit(true); } enterEdit(); }; return (
{regenerateEnabled ? ( ) : null} {continueSupported ? ( ) : null}
); }