@hello-pangea/dnd
Version:
Beautiful and accessible drag and drop for lists with React
44 lines (40 loc) • 946 B
text/typescript
import type { Position } from 'css-box-model';
import type {
DroppableDimension,
Viewport,
DragImpact,
DraggableDimension,
DraggableDimensionMap,
LiftEffect,
} from '../../../types';
import getPageBorderBoxCenterFromImpact from '../get-page-border-box-center';
import getClientFromPageBorderBoxCenter from './get-client-from-page-border-box-center';
interface Args {
impact: DragImpact;
draggable: DraggableDimension;
droppable: DroppableDimension;
draggables: DraggableDimensionMap;
viewport: Viewport;
afterCritical: LiftEffect;
}
export default ({
impact,
draggable,
droppable,
draggables,
viewport,
afterCritical,
}: Args): Position => {
const pageBorderBoxCenter: Position = getPageBorderBoxCenterFromImpact({
impact,
draggable,
draggables,
droppable,
afterCritical,
});
return getClientFromPageBorderBoxCenter({
pageBorderBoxCenter,
draggable,
viewport,
});
};