@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
43 lines (35 loc) • 978 B
text/typescript
import { MouseEventHandler, use, useCallback } from 'react';
import { useChatStore } from '@/store/chat';
import { VirtuosoContext } from '../components/VirtualizedList/VirtuosoContext';
interface UseDoubleClickEditProps {
disableEditing?: boolean;
error: any;
id: string;
index: number;
role: string;
}
export const useDoubleClickEdit = ({
disableEditing,
role,
error,
id,
index,
}: UseDoubleClickEditProps) => {
const [toggleMessageEditing] = useChatStore((s) => [s.toggleMessageEditing]);
const virtuosoRef = use(VirtuosoContext);
return useCallback<MouseEventHandler<HTMLDivElement>>(
(e) => {
if (
disableEditing ||
error ||
id === 'default' ||
!e.altKey ||
!['assistant', 'user'].includes(role)
)
return;
toggleMessageEditing(id, true);
virtuosoRef?.current?.scrollIntoView({ align: 'start', behavior: 'auto', index });
},
[role, disableEditing],
);
};