UNPKG

react-native-reanimated

Version:

More powerful alternative to Animated library for React Native.

36 lines (32 loc) • 1.19 kB
'use strict'; import type { WorkletFunction } from 'react-native-worklets'; /** * Converts any callback function to a mock worklet function for testing * purposes. This function simulates a worklet by adding the required internal * properties. * * @param callback - Optional callback function to wrap as a worklet. If not * provided, returns an empty worklet. * @returns A mock worklet function with the required worklet properties. */ export const worklet = <Args extends unknown[] = [], ReturnValue = void>( callback?: (...args: Args) => ReturnValue ): WorkletFunction<Args, ReturnValue> => { const fn = (callback ?? (() => undefined)) as WorkletFunction< Args, ReturnValue >; fn.__workletHash = Math.random(); return fn; }; /** Creates a new worklet with the same hash and closure as the original. */ export const cloneWorklet = <Args extends unknown[] = [], ReturnValue = void>( original: WorkletFunction<Args, ReturnValue> ): WorkletFunction<Args, ReturnValue> => { const w = worklet<Args, ReturnValue>(); w.__workletHash = original.__workletHash; if (original.__closure !== undefined) { w.__closure = [...original.__closure]; } return w; };