25 lines
1.3 KiB
JavaScript
25 lines
1.3 KiB
JavaScript
import { invariant } from '@react-dnd/invariant';
|
|
import { useCollectedProps } from '../useCollectedProps.js';
|
|
import { useOptionalFactory } from '../useOptionalFactory.js';
|
|
import { useConnectDragPreview, useConnectDragSource } from './connectors.js';
|
|
import { useDragSourceConnector } from './useDragSourceConnector.js';
|
|
import { useDragSourceMonitor } from './useDragSourceMonitor.js';
|
|
import { useRegisteredDragSource } from './useRegisteredDragSource.js';
|
|
/**
|
|
* useDragSource hook
|
|
* @param sourceSpec The drag source specification (object or function, function preferred)
|
|
* @param deps The memoization deps array to use when evaluating spec changes
|
|
*/ export function useDrag(specArg, deps) {
|
|
const spec = useOptionalFactory(specArg, deps);
|
|
invariant(!spec.begin, `useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`);
|
|
const monitor = useDragSourceMonitor();
|
|
const connector = useDragSourceConnector(spec.options, spec.previewOptions);
|
|
useRegisteredDragSource(spec, monitor, connector);
|
|
return [
|
|
useCollectedProps(spec.collect, monitor, connector),
|
|
useConnectDragSource(connector),
|
|
useConnectDragPreview(connector),
|
|
];
|
|
}
|
|
|
|
//# sourceMappingURL=useDrag.js.map
|