react-native-gesture-handler
Version:
Declarative API exposing native platform touch and gesture system to React Native
38 lines (31 loc) • 956 B
text/typescript
import { State } from '../State';
import { tagMessage } from '../utils';
export type GestureStateManagerType = {
activate(handlerTag: number): void;
fail(handlerTag: number): void;
deactivate(handlerTag: number): void;
};
const setGestureState = (handlerTag: number, state: State) => {
'worklet';
if (globalThis._setGestureStateSync) {
globalThis._setGestureStateSync(handlerTag, state);
} else if (globalThis._setGestureStateAsync) {
globalThis._setGestureStateAsync(handlerTag, state);
} else {
throw new Error(tagMessage('Failed to set gesture state'));
}
};
export const GestureStateManager: GestureStateManagerType = {
activate(handlerTag: number) {
'worklet';
setGestureState(handlerTag, State.ACTIVE);
},
fail(handlerTag: number) {
'worklet';
setGestureState(handlerTag, State.FAILED);
},
deactivate(handlerTag: number) {
'worklet';
setGestureState(handlerTag, State.END);
},
};