UNPKG

react-native-gesture-handler

Version:

Declarative API exposing native platform touch and gesture system to React Native

73 lines (63 loc) 1.92 kB
"use strict"; import { tagMessage } from '../../../utils'; function isNativeEvent(event) { 'worklet'; return 'nativeEvent' in event; } export function maybeExtractNativeEvent(event) { 'worklet'; return isNativeEvent(event) ? event.nativeEvent : event; } export function flattenAndFilterEvent(event) { 'worklet'; return { handlerTag: event.handlerTag, ...event.handlerData }; } export function isEventForHandlerWithTag(handlerTag, event) { 'worklet'; return event.handlerTag === handlerTag; } export function isNativeAnimatedEvent(callback) { 'worklet'; return !!callback && '_argMapping' in callback; } export function checkMappingForChangeProperties(animatedEvent) { for (const mapping of animatedEvent._argMapping) { if (!mapping || !('nativeEvent' in mapping && 'handlerData' in mapping.nativeEvent)) { continue; } for (const key in mapping.nativeEvent.handlerData) { if (key.startsWith('change')) { throw new Error(tagMessage(`${key} is not available when using Animated.Event.`)); } } } } export function shouldHandleTouchEvents(config) { return !!config.onTouchesDown || !!config.onTouchesMove || !!config.onTouchesUp || !!config.onTouchesCancel; } export function getChangeEventCalculator(diffCalculator) { 'worklet'; return (current, previous) => { 'worklet'; const currentEventData = current.handlerData; const previousEventData = previous ? previous.handlerData : null; const changePayload = diffCalculator(currentEventData, previousEventData); current.handlerData = { ...currentEventData, ...changePayload }; return current; }; } export function isTouchEvent(event) { 'worklet'; return 'allTouches' in event; } export function isStateChangeEvent(event) { 'worklet'; return 'oldState' in event && event.oldState !== undefined; } //# sourceMappingURL=eventUtils.js.map