react-beautiful-dnd-next
Version:
Beautiful and accessible drag and drop for lists with React
47 lines (42 loc) • 1.05 kB
JavaScript
// @flow
import type { Rect, Spacing } from 'css-box-model';
import getDistanceThresholds, {
type DistanceThresholds,
} from './get-distance-thresholds';
import type { Axis } from '../../../../../types';
import getValue from './get-value';
type GetOnAxisArgs = {|
container: Rect,
distanceToEdges: Spacing,
dragStartTime: number,
axis: Axis,
shouldUseTimeDampening: boolean,
|};
export default ({
container,
distanceToEdges,
dragStartTime,
axis,
shouldUseTimeDampening,
}: GetOnAxisArgs): number => {
const thresholds: DistanceThresholds = getDistanceThresholds(container, axis);
const isCloserToEnd: boolean =
distanceToEdges[axis.end] < distanceToEdges[axis.start];
if (isCloserToEnd) {
return getValue({
distanceToEdge: distanceToEdges[axis.end],
thresholds,
dragStartTime,
shouldUseTimeDampening,
});
}
return (
-1 *
getValue({
distanceToEdge: distanceToEdges[axis.start],
thresholds,
dragStartTime,
shouldUseTimeDampening,
})
);
};