UNPKG

react-native-sortables

Version:

Powerful Sortable Components for Flexible Content Reordering in React Native

61 lines (60 loc) 1.75 kB
"use strict"; import { useAnimatedReaction } from 'react-native-reanimated'; import { useDebugContext } from '../../../debug'; import { error } from '../../../utils'; import { useCommonValuesContext } from '../CommonValuesProvider'; import { useDragContext } from '../DragProvider'; export default function useOrderUpdater(strategy, predefinedStrategies) { const useStrategy = typeof strategy === 'string' ? predefinedStrategies[strategy] : strategy; if (!useStrategy || typeof useStrategy !== 'function') { throw error(`'${String(useStrategy)}' is not a valid ordering strategy`); } const { activeItemDimensions, activeItemKey, keyToIndex } = useCommonValuesContext(); const { handleOrderChange, triggerOriginPosition } = useDragContext(); const debugContext = useDebugContext(); const debugCross = debugContext?.useDebugCross(); const updater = useStrategy(); useAnimatedReaction(() => ({ activeKey: activeItemKey.value, dimensions: activeItemDimensions.value, position: triggerOriginPosition.value }), ({ activeKey, dimensions, position }) => { if (!activeKey || !dimensions || !position) { if (debugCross) debugCross.set({ position: null }); return; } const activeIndex = keyToIndex.value[activeKey]; if (activeIndex === undefined) { return; } if (debugCross) { debugCross.set({ color: '#00007e', position }); } const newOrder = updater({ activeIndex, activeKey, dimensions, position }); if (newOrder) { handleOrderChange(activeKey, activeIndex, newOrder.indexOf(activeKey), newOrder); } }); } //# sourceMappingURL=useOrderUpdater.js.map