vue3-dnd
Version:
Drag and Drop for Vue Composition API
27 lines (26 loc) • 1.08 kB
JavaScript
import { useRegisteredDropTarget } from "./useRegisteredDropTarget.js";
import { useOptionalFactory } from "../useOptionalFactory.js";
import { useDropTargetMonitor } from "./useDropTargetMonitor.js";
import { useDropTargetConnector } from "./useDropTargetConnector.js";
import { useCollectedProps } from "../useCollectedProps";
import { useConnectDropTarget } from "./connectors";
import { computed, unref } from "vue-demi";
/**
* useDropTarget Hook
* @param specArg The drop target specification (object or function, function preferred)
*/ export function useDrop(specArg) {
var spec = useOptionalFactory(specArg);
var monitor = useDropTargetMonitor();
var connector = useDropTargetConnector(computed(function() {
return unref(spec).options;
}));
useRegisteredDropTarget(spec, monitor, connector);
return [
useCollectedProps(computed(function() {
return unref(spec).collect || function() {
return {};
};
}), monitor, connector),
useConnectDropTarget(connector, spec),
];
}