react-beautiful-dnd-next
Version:
Beautiful and accessible drag and drop for lists with React
33 lines (28 loc) • 720 B
JavaScript
// @flow
import type { Position } from 'css-box-model';
import type {
DisplacementMap,
OnLift,
DraggableId,
DisplacedBy,
} from '../types';
import { origin, negate } from './position';
import didStartDisplaced from './starting-displaced/did-start-displaced';
type Args = {|
displaced: DisplacementMap,
onLift: OnLift,
combineWith: DraggableId,
displacedBy: DisplacedBy,
|};
export default ({
displaced,
onLift,
combineWith,
displacedBy,
}: Args): Position => {
const isDisplaced: boolean = Boolean(displaced[combineWith]);
if (didStartDisplaced(combineWith, onLift)) {
return isDisplaced ? origin : negate(displacedBy.point);
}
return isDisplaced ? displacedBy.point : origin;
};