UNPKG

bitmovin-player-react-native

Version:

Official React Native bindings for Bitmovin's mobile Player SDKs.

33 lines (29 loc) 970 B
import { useCallback } from 'react'; import { Event } from '../events'; import { normalizeNonFinite } from '../utils/normalizeNonFinite'; /** * A function that takes a generic event as argument. */ type Callback<E> = (event: E) => void; /** * A function that takes the synthetic version of a generic event as argument. */ type NativeCallback<E> = (event: { nativeEvent: E }) => void; /** * Create a proxy function that unwraps native events. */ export function useProxy(): <E extends Event>( callback?: Callback<E> ) => NativeCallback<E> { return useCallback( <E extends Event>(callback?: Callback<E>) => (event: { nativeEvent: E }) => { // Remove the target field from the event as it's React Native internal metadata const { target: _target, ...eventWithoutTarget } = event.nativeEvent as any; const sanitized = normalizeNonFinite(eventWithoutTarget); callback?.(sanitized as E); }, [] ); }