import React, { useState } from 'react'; import { useDrag, useDrop } from 'react-dnd'; import type { TConversationTag } from 'librechat-data-provider'; import { DeleteBookmarkButton, EditBookmarkButton } from '~/components/Bookmarks'; import { TableRow, TableCell } from '~/components/ui'; interface BookmarkTableRowProps { row: TConversationTag; moveRow: (dragIndex: number, hoverIndex: number) => void; position: number; } const BookmarkTableRow: React.FC = ({ row, moveRow, position }) => { const [isHovered, setIsHovered] = useState(false); const ref = React.useRef(null); const [, drop] = useDrop({ accept: 'bookmark', hover(item: { index: number }) { if (!ref.current) { return; } const dragIndex = item.index; const hoverIndex = position; if (dragIndex === hoverIndex) { return; } moveRow(dragIndex, hoverIndex); item.index = hoverIndex; }, }); const [{ isDragging }, drag] = useDrag({ type: 'bookmark', item: { index: position }, collect: (monitor) => ({ isDragging: monitor.isDragging(), }), }); drag(drop(ref)); return ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} >
{row.tag}
{row.count}
setIsHovered(true)} onBlur={() => setIsHovered(false)} > setIsHovered(true)} onBlur={() => setIsHovered(false)} /> setIsHovered(true)} onBlur={() => setIsHovered(false)} />
); }; export default BookmarkTableRow;