import React from "react" import { SidePanelBody } from "~components/Sidepanel/Chat/body" import { SidepanelForm } from "~components/Sidepanel/Chat/form" import { SidepanelHeader } from "~components/Sidepanel/Chat/header" import { useMessage } from "~hooks/useMessage" export const SidepanelChat = () => { const drop = React.useRef(null) const [dropedFile, setDropedFile] = React.useState() const [dropState, setDropState] = React.useState< "idle" | "dragging" | "error" >("idle") const {chatMode} = useMessage() React.useEffect(() => { if (!drop.current) { return } const handleDragOver = (e: DragEvent) => { e.preventDefault() e.stopPropagation() } const handleDrop = (e: DragEvent) => { e.preventDefault() e.stopPropagation() setDropState("idle") const files = Array.from(e.dataTransfer?.files || []) const isImage = files.every((file) => file.type.startsWith("image/")) if (!isImage) { setDropState("error") return } const newFiles = Array.from(e.dataTransfer?.files || []).slice(0, 1) if (newFiles.length > 0) { setDropedFile(newFiles[0]) } } const handleDragEnter = (e: DragEvent) => { e.preventDefault() e.stopPropagation() setDropState("dragging") } const handleDragLeave = (e: DragEvent) => { e.preventDefault() e.stopPropagation() setDropState("idle") } drop.current.addEventListener("dragover", handleDragOver) drop.current.addEventListener("drop", handleDrop) drop.current.addEventListener("dragenter", handleDragEnter) drop.current.addEventListener("dragleave", handleDragLeave) return () => { if (drop.current) { drop.current.removeEventListener("dragover", handleDragOver) drop.current.removeEventListener("drop", handleDrop) drop.current.removeEventListener("dragenter", handleDragEnter) drop.current.removeEventListener("dragleave", handleDragLeave) } } }, []) return (
) }