refactor: Update SidepanelForm to handle drag and drop functionality

This commit is contained in:
n4ze3m 2024-06-10 19:55:06 +05:30
parent 69ba305453
commit dc5ccd43ca

View File

@ -7,16 +7,11 @@ import { toBase64 } from "~/libs/to-base64"
import { Checkbox, Dropdown, Image, Switch, Tooltip } from "antd"
import { useWebUI } from "~/store/webui"
import { defaultEmbeddingModelForRag } from "~/services/ollama"
import {
ImageIcon,
MicIcon,
StopCircleIcon,
X,
} from "lucide-react"
import { ImageIcon, MicIcon, StopCircleIcon, X } from "lucide-react"
import { useTranslation } from "react-i18next"
import { ModelSelect } from "@/components/Common/ModelSelect"
import { useSpeechRecognition } from "@/hooks/useSpeechRecognition"
import { PiGlobeX, PiGlobe} from "react-icons/pi";
import { PiGlobeX, PiGlobe } from "react-icons/pi"
type Props = {
dropedFile: File | undefined
@ -152,6 +147,30 @@ export const SidepanelForm = ({ dropedFile }: Props) => {
}
})
React.useEffect(() => {
const handleDrop = (e: DragEvent) => {
e.preventDefault()
if (e.dataTransfer?.items) {
for (let i = 0; i < e.dataTransfer.items.length; i++) {
if (e.dataTransfer.items[i].type === "text/plain") {
e.dataTransfer.items[i].getAsString((text) => {
form.setFieldValue("message", text)
})
}
}
}
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
}
textareaRef.current?.addEventListener("drop", handleDrop)
textareaRef.current?.addEventListener("dragover", handleDragOver)
return () => {
textareaRef.current?.removeEventListener("drop", handleDrop)
textareaRef.current?.removeEventListener("dragover", handleDragOver)
}
}, [])
return (
<div className="px-3 pt-3 md:px-6 md:pt-6 bg-gray-50 dark:bg-[#262626] border rounded-t-xl border-black/10 dark:border-gray-600">
<div