import React from "react"; interface Coord { x: number; y: number; } interface Props extends React.HTMLAttributes { handleDrop(e: React.DragEvent, coord: Coord): void; } export default class DropTarget extends React.Component { supress(e: React.DragEvent) { e.stopPropagation(); e.preventDefault(); e.dataTransfer.dropEffect = "link"; e.dataTransfer.effectAllowed = "link"; } handleDrop = (e: React.DragEvent) => { this.supress(e); const { target } = e; if (!(target instanceof Element)) { return; } const { left: x, top: y } = target.getBoundingClientRect(); this.props.handleDrop(e, { x, y }); }; render() { const { // eslint-disable-next-line no-shadow, no-unused-vars handleDrop, ...passThroughProps } = this.props; return (
); } }