import React from "react" import { PlaygroundForm } from "./PlaygroundForm" import { PlaygroundChat } from "./PlaygroundChat" import { useMessageOption } from "@/hooks/useMessageOption" export const Playground = () => { const drop = React.useRef(null) const [dropedFile, setDropedFile] = React.useState() const { selectedKnowledge } = useMessageOption() const [dropState, setDropState] = React.useState< "idle" | "dragging" | "error" >("idle") React.useEffect(() => { if (selectedKnowledge) { return } 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) } } }, [selectedKnowledge]) return (
) }