UNPKG

@hello-pangea/dnd

Version:

Beautiful and accessible drag and drop for lists with React

34 lines (29 loc) 784 B
import type { Position } from 'css-box-model'; import type { DisplacementGroups, LiftEffect, DraggableId, DisplacedBy, } from '../types'; import { origin, negate } from './position'; import didStartAfterCritical from './did-start-after-critical'; interface Args { displaced: DisplacementGroups; afterCritical: LiftEffect; combineWith: DraggableId; displacedBy: DisplacedBy; } export default ({ displaced, afterCritical, combineWith, displacedBy, }: Args): Position => { const isDisplaced = Boolean( displaced.visible[combineWith] || displaced.invisible[combineWith], ); if (didStartAfterCritical(combineWith, afterCritical)) { return isDisplaced ? origin : negate(displacedBy.point); } return isDisplaced ? displacedBy.point : origin; };