react-native-sortables
Version:
Powerful Sortable Components for Flexible Content Reordering in React Native
47 lines (43 loc) • 1.16 kB
text/typescript
import { useMemo } from 'react';
import { Gesture } from 'react-native-gesture-handler';
import type { SharedValue } from 'react-native-reanimated';
import { useDragContext } from '../DragProvider';
export default function useItemPanGesture(
key: string,
activationAnimationProgress: SharedValue<number>
) {
const { handleDragEnd, handleTouchesMove, handleTouchStart } =
useDragContext();
return useMemo(
() =>
Gesture.Manual()
.onTouchesDown((e, manager) => {
handleTouchStart(
e,
key,
activationAnimationProgress,
manager.activate,
manager.fail
);
})
.onTouchesMove((e, manager) => {
handleTouchesMove(e, manager.fail);
})
.onTouchesCancelled((_, manager) => {
manager.fail();
})
.onTouchesUp((_, manager) => {
manager.end();
})
.onFinalize(() => {
handleDragEnd(key, activationAnimationProgress);
}),
[
handleDragEnd,
handleTouchStart,
handleTouchesMove,
key,
activationAnimationProgress
]
);
}