diff --git a/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts b/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts index 774c979771..6548575b25 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts @@ -16,7 +16,6 @@ import type { import { useGestureCallbacks } from './useGestureCallbacks'; import { bindSharedValues, - prepareConfig, prepareConfigForNativeSide, prepareRelations, unbindSharedValues, @@ -41,9 +40,6 @@ export function useGesture< ); } - // This has to be done ASAP as other hooks depend `shouldUseReanimatedDetector`. - prepareConfig(config); - // TODO: Call only necessary hooks depending on which callbacks are defined (?) const { jsEventHandler, reanimatedEventHandler, animatedEventHandler } = useGestureCallbacks(handlerTag, config); diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts index d728407101..f2f02db037 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts @@ -16,7 +16,7 @@ import { } from './propsWhiteList'; import { hasWorkletEventHandlers, maybeUnpackValue } from './reanimatedUtils'; -export function prepareConfig< +export function resolveInternalConfigProps< TConfig extends object, THandlerData, TExtendedHandlerData extends THandlerData, @@ -125,7 +125,7 @@ function remapProps< TInternalConfig extends Record, >( config: TConfig & TInternalConfig, - propsMapping: Map + propsMapping: ReadonlyMap ): TInternalConfig { type MergedConfig = TConfig & TInternalConfig; @@ -142,6 +142,11 @@ function remapProps< return config; } +const DEFAULT_PROPS_MAPPING = new Map(); +const DEFAULT_PROPS_TRANSFORMER = ( + config: TConfig +): TConfig => config; + export function useClonedAndRemappedConfig< TConfig extends Record, THandlerData, @@ -151,8 +156,10 @@ export function useClonedAndRemappedConfig< config: ExcludeInternalConfigProps< BaseGestureConfig >, - propsMapping: Map = new Map(), - propsTransformer: (config: TInternalConfig) => TInternalConfig = (cfg) => cfg + propsMapping: ReadonlyMap = DEFAULT_PROPS_MAPPING, + propsTransformer: ( + config: TInternalConfig + ) => TInternalConfig = DEFAULT_PROPS_TRANSFORMER ): BaseGestureConfig { return useMemo(() => { const clonedConfig = cloneConfig< @@ -161,11 +168,15 @@ export function useClonedAndRemappedConfig< TExtendedHandlerData >(config); - return propsTransformer( + const transformedConfig = propsTransformer( remapProps( clonedConfig as TConfig & TInternalConfig, propsMapping ) ); + + resolveInternalConfigProps(transformedConfig); + + return transformedConfig; }, [config, propsMapping, propsTransformer]); } diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts index b35971b51a..baeb57d343 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts @@ -1,5 +1,4 @@ export { - prepareConfig, prepareConfigForNativeSide, useClonedAndRemappedConfig, } from './configUtils';