UNPKG

expo-dev-menu

Version:

Expo/React Native module with the developer menu.

59 lines (54 loc) 1.52 kB
import React from 'react'; import ReactNative from 'react-native'; import createNativeWrapper from './createNativeWrapper'; const MEMOIZED = new WeakMap(); function memoizeWrap(Component, config) { if (Component == null) { return null; } let memoized = MEMOIZED.get(Component); if (!memoized) { memoized = createNativeWrapper(Component, config); MEMOIZED.set(Component, memoized); } return memoized; } module.exports = { /* RN's components */ get ScrollView() { return memoizeWrap(ReactNative.ScrollView, { disallowInterruption: true, shouldCancelWhenOutside: false, }); }, get Switch() { return memoizeWrap(ReactNative.Switch, { shouldCancelWhenOutside: false, shouldActivateOnStart: true, disallowInterruption: true, }); }, get TextInput() { return memoizeWrap(ReactNative.TextInput); }, get DrawerLayoutAndroid() { const DrawerLayoutAndroid = memoizeWrap(ReactNative.DrawerLayoutAndroid, { disallowInterruption: true, }); DrawerLayoutAndroid.positions = ReactNative.DrawerLayoutAndroid.positions; return DrawerLayoutAndroid; }, get FlatList() { if (!MEMOIZED.FlatList) { const ScrollView = this.ScrollView; MEMOIZED.FlatList = React.forwardRef((props, ref) => ( <ReactNative.FlatList ref={ref} {...props} renderScrollComponent={scrollProps => <ScrollView {...scrollProps} />} /> )); } return MEMOIZED.FlatList; }, };