import { memo, useState } from "react" import { useDragContext } from "./draggableContext" const DroppableWrapper = memo(({onDrop, droppableTags=["widget"], ...props}) => { const { draggedElement } = useDragContext() const [showDroppable, setShowDroppable] = useState({ show: false, allow: false }) const handleDragEnter = (e) => { const dragElementType = draggedElement.getAttribute("data-draggable-type") if (droppableTags.length === 0 || droppableTags.includes(dragElementType)){ setShowDroppable({ allow: true, show: true }) }else{ setShowDroppable({ allow: false, show: true }) } } const handleDragOver = (e) => { // console.log("Drag over: ", e.dataTransfer.getData("text/plain"), e.dataTransfer) const dragElementType = draggedElement.getAttribute("data-draggable-type") if (droppableTags.length === 0 || droppableTags.includes(dragElementType)){ e.preventDefault() // this is necessary to allow drop to take place } } const handleDropEvent = (e) => { setShowDroppable({ allow: false, show: false }) if(onDrop){ onDrop(e, draggedElement) } } const handleDragLeave = (e) => { if (!e.currentTarget.contains(e.relatedTarget)) { setShowDroppable({ allow: false, show: false }) } } return (