UNPKG

@hello-pangea/dnd

Version:

Beautiful and accessible drag and drop for lists with React

29 lines (24 loc) 738 B
import type { Position } from 'css-box-model'; import type { Viewport, DraggableDimension } from '../../../types'; import { add, subtract } from '../../position'; import withViewportDisplacement from '../../with-scroll-change/with-viewport-displacement'; interface Args { pageBorderBoxCenter: Position; draggable: DraggableDimension; viewport: Viewport; } export default ({ pageBorderBoxCenter, draggable, viewport, }: Args): Position => { const withoutPageScrollChange: Position = withViewportDisplacement( viewport, pageBorderBoxCenter, ); const offset: Position = subtract( withoutPageScrollChange, draggable.page.borderBox.center, ); return add(draggable.client.borderBox.center, offset); };