UNPKG

framer-motion

Version:

A simple and powerful JavaScript animation library

25 lines (22 loc) 833 B
import { mixNumber } from 'motion-dom'; import { moveItem } from 'motion-utils'; function checkReorder(order, value, offset, velocity) { if (!velocity) return order; const index = order.findIndex((item) => item.value === value); if (index === -1) return order; const nextOffset = velocity > 0 ? 1 : -1; const nextItem = order[index + nextOffset]; if (!nextItem) return order; const item = order[index]; const nextLayout = nextItem.layout; const nextItemCenter = mixNumber(nextLayout.min, nextLayout.max, 0.5); if ((nextOffset === 1 && item.layout.max + offset > nextItemCenter) || (nextOffset === -1 && item.layout.min + offset < nextItemCenter)) { return moveItem(order, index, index + nextOffset); } return order; } export { checkReorder };