Files
igny8/frontend/node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts
2025-11-09 10:27:02 +00:00

35 lines
792 B
TypeScript

import type { DropTarget } from 'dnd-core'
import type { DropTargetMonitor } from '../../types/index.js'
import type { DropTargetHookSpec } from '../types.js'
export class DropTargetImpl<O, R, P> implements DropTarget {
public constructor(
public spec: DropTargetHookSpec<O, R, P>,
private monitor: DropTargetMonitor<O, R>,
) {}
public canDrop() {
const spec = this.spec
const monitor = this.monitor
return spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true
}
public hover() {
const spec = this.spec
const monitor = this.monitor
if (spec.hover) {
spec.hover(monitor.getItem(), monitor)
}
}
public drop() {
const spec = this.spec
const monitor = this.monitor
if (spec.drop) {
return spec.drop(monitor.getItem(), monitor)
}
return
}
}