import { IconBulbFilled, IconCheck, IconTrash, IconX, } from '@tabler/icons-react'; import { DragEvent, MouseEventHandler, useContext, useEffect, useState, } from 'react'; import { Prompt } from '@/types/prompt'; import SidebarActionButton from '@/components/Buttons/SidebarActionButton'; import PromptbarContext from '../PromptBar.context'; import { PromptModal } from './PromptModal'; interface Props { prompt: Prompt; } export const PromptComponent = ({ prompt }: Props) => { const { dispatch: promptDispatch, handleUpdatePrompt, handleDeletePrompt, } = useContext(PromptbarContext); const [showModal, setShowModal] = useState(false); const [isDeleting, setIsDeleting] = useState(false); const [isRenaming, setIsRenaming] = useState(false); const [renameValue, setRenameValue] = useState(''); const handleUpdate = (prompt: Prompt) => { handleUpdatePrompt(prompt); promptDispatch({ field: 'searchTerm', value: '' }); }; const handleDelete: MouseEventHandler = (e) => { e.stopPropagation(); if (isDeleting) { handleDeletePrompt(prompt); promptDispatch({ field: 'searchTerm', value: '' }); } setIsDeleting(false); }; const handleCancelDelete: MouseEventHandler = (e) => { e.stopPropagation(); setIsDeleting(false); }; const handleOpenDeleteModal: MouseEventHandler = (e) => { e.stopPropagation(); setIsDeleting(true); }; const handleDragStart = (e: DragEvent, prompt: Prompt) => { if (e.dataTransfer) { e.dataTransfer.setData('prompt', JSON.stringify(prompt)); } }; useEffect(() => { if (isRenaming) { setIsDeleting(false); } else if (isDeleting) { setIsRenaming(false); } }, [isRenaming, isDeleting]); return (
{(isDeleting || isRenaming) && (
)} {!isDeleting && !isRenaming && (
)} {showModal && ( setShowModal(false)} onUpdatePrompt={handleUpdate} /> )}
); };