@react-navigation/drawer 6.3.0 → 6.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/views/DrawerView.js +3 -3
- package/lib/commonjs/views/DrawerView.js.map +1 -1
- package/lib/module/views/DrawerView.js +3 -3
- package/lib/module/views/DrawerView.js.map +1 -1
- package/lib/typescript/src/views/legacy/Overlay.d.ts +3 -1
- package/lib/typescript/src/views/modern/Overlay.d.ts +3 -1
- package/package.json +2 -2
- package/src/views/DrawerView.tsx +2 -2
|
@@ -13,7 +13,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
13
13
|
|
|
14
14
|
var _reactNative = require("react-native");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var Reanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
17
17
|
|
|
18
18
|
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
19
19
|
|
|
@@ -61,7 +61,7 @@ const getDefaultDrawerWidth = _ref => {
|
|
|
61
61
|
const GestureHandlerWrapper = _GestureHandler.GestureHandlerRootView !== null && _GestureHandler.GestureHandlerRootView !== void 0 ? _GestureHandler.GestureHandlerRootView : _reactNative.View;
|
|
62
62
|
|
|
63
63
|
function DrawerViewBase(_ref2) {
|
|
64
|
-
var
|
|
64
|
+
var _Reanimated$isConfigu;
|
|
65
65
|
|
|
66
66
|
let {
|
|
67
67
|
state,
|
|
@@ -74,7 +74,7 @@ function DrawerViewBase(_ref2) {
|
|
|
74
74
|
// @ts-expect-error
|
|
75
75
|
useLegacyImplementation = !global.nativeCallSyncHook || // Reanimated 2 is not configured
|
|
76
76
|
// @ts-expect-error: the type definitions are incomplete
|
|
77
|
-
!((
|
|
77
|
+
!((_Reanimated$isConfigu = Reanimated.isConfigured) !== null && _Reanimated$isConfigu !== void 0 && _Reanimated$isConfigu.call(Reanimated))
|
|
78
78
|
} = _ref2;
|
|
79
79
|
const Drawer = useLegacyImplementation ? require('./legacy/Drawer').default : require('./modern/Drawer').default;
|
|
80
80
|
const focusedRouteKey = state.routes[state.index].key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DrawerView.tsx"],"names":["getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","Platform","OS","maxWidth","GestureHandlerWrapper","GestureHandlerRootView","View","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","Animated","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","React","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","DrawerActions","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","BackHandler","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Animated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["DrawerView.tsx"],"names":["getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","Platform","OS","maxWidth","GestureHandlerWrapper","GestureHandlerRootView","View","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","Reanimated","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","React","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","DrawerActions","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","BackHandler","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport * as Reanimated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Reanimated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
|
|
@@ -4,7 +4,7 @@ import { getHeaderTitle, Header, SafeAreaProviderCompat, Screen } from '@react-n
|
|
|
4
4
|
import { DrawerActions, useTheme } from '@react-navigation/native';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { BackHandler, I18nManager, Platform, StyleSheet, View } from 'react-native';
|
|
7
|
-
import
|
|
7
|
+
import * as Reanimated from 'react-native-reanimated';
|
|
8
8
|
import { useSafeAreaFrame } from 'react-native-safe-area-context';
|
|
9
9
|
import DrawerPositionContext from '../utils/DrawerPositionContext';
|
|
10
10
|
import DrawerStatusContext from '../utils/DrawerStatusContext';
|
|
@@ -36,7 +36,7 @@ const getDefaultDrawerWidth = _ref => {
|
|
|
36
36
|
const GestureHandlerWrapper = GestureHandlerRootView !== null && GestureHandlerRootView !== void 0 ? GestureHandlerRootView : View;
|
|
37
37
|
|
|
38
38
|
function DrawerViewBase(_ref2) {
|
|
39
|
-
var
|
|
39
|
+
var _Reanimated$isConfigu;
|
|
40
40
|
|
|
41
41
|
let {
|
|
42
42
|
state,
|
|
@@ -49,7 +49,7 @@ function DrawerViewBase(_ref2) {
|
|
|
49
49
|
// @ts-expect-error
|
|
50
50
|
useLegacyImplementation = !global.nativeCallSyncHook || // Reanimated 2 is not configured
|
|
51
51
|
// @ts-expect-error: the type definitions are incomplete
|
|
52
|
-
!((
|
|
52
|
+
!((_Reanimated$isConfigu = Reanimated.isConfigured) !== null && _Reanimated$isConfigu !== void 0 && _Reanimated$isConfigu.call(Reanimated))
|
|
53
53
|
} = _ref2;
|
|
54
54
|
const Drawer = useLegacyImplementation ? require('./legacy/Drawer').default : require('./modern/Drawer').default;
|
|
55
55
|
const focusedRouteKey = state.routes[state.index].key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DrawerView.tsx"],"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","DrawerActions","useTheme","React","BackHandler","I18nManager","Platform","StyleSheet","View","Animated","useSafeAreaFrame","DrawerPositionContext","DrawerStatusContext","getDrawerStatusFromState","DrawerContent","DrawerToggleButton","GestureHandlerRootView","MaybeScreen","MaybeScreenContainer","getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","OS","maxWidth","GestureHandlerWrapper","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":";;AAAA,SACEA,cADF,EAEEC,MAFF,EAGEC,sBAHF,EAIEC,MAJF,QAKO,4BALP;AAMA,SACEC,aADF,EAKEC,QALF,QAMO,0BANP;AAOA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SACEC,WADF,EAEEC,WAFF,EAGEC,QAHF,EAIEC,UAJF,EAKEC,IALF,QAMO,cANP;AAOA,OAAOC,QAAP,MAAqB,yBAArB;AACA,SAASC,gBAAT,QAAiC,gCAAjC;AAWA,OAAOC,qBAAP,MAAkC,gCAAlC;AACA,OAAOC,mBAAP,MAAgC,8BAAhC;AACA,OAAOC,wBAAP,MAAqC,mCAArC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,SAASC,sBAAT,QAAuC,kBAAvC;AACA,SAASC,WAAT,EAAsBC,oBAAtB,QAAkD,kBAAlD;;AASA,MAAMC,qBAAqB,GAAG,QAMxB;AAAA,MANyB;AAC7BC,IAAAA,MAD6B;AAE7BC,IAAAA;AAF6B,GAMzB;;AACJ;AACF;AACA;AACA;AACA;AACE,QAAMC,eAAe,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,EAAiBC,KAAjB,CAAxB;AACA,QAAMI,WAAW,GAAGJ,KAAK,GAAGD,MAA5B;AACA,QAAMM,QAAQ,GAAGJ,eAAe,IAAI,GAApC;AACA,QAAMK,YAAY,GAAGrB,QAAQ,CAACsB,EAAT,KAAgB,KAAhB,GAAyBH,WAAW,GAAG,EAAH,GAAQ,EAA5C,GAAkD,EAAvE;AACA,QAAMI,QAAQ,GAAGH,QAAQ,GAAG,GAAH,GAAS,GAAlC;AAEA,SAAOH,IAAI,CAACC,GAAL,CAASF,eAAe,GAAGK,YAA3B,EAAyCE,QAAzC,CAAP;AACD,CAnBD;;AAqBA,MAAMC,qBAAqB,GAAGd,sBAAH,aAAGA,sBAAH,cAAGA,sBAAH,GAA6BR,IAAxD;;AAEA,SAASuB,cAAT,QAiBU;AAAA;;AAAA,MAjBc;AACtBC,IAAAA,KADsB;AAEtBC,IAAAA,UAFsB;AAGtBC,IAAAA,WAHsB;AAItBC,IAAAA,aAJsB;AAKtBC,IAAAA,aAAa,GAAIC,KAAD,iBACd,oBAAC,aAAD,EAAmBA,KAAnB,CANoB;AAQtBC,IAAAA,qBAAqB,GAAGhC,QAAQ,CAACsB,EAAT,KAAgB,KAAhB,IACtBtB,QAAQ,CAACsB,EAAT,KAAgB,SADM,IAEtBtB,QAAQ,CAACsB,EAAT,KAAgB,KAVI;AAWtB;AACA;AACAW,IAAAA,uBAAuB,GAAG,CAACC,MAAM,CAACC,kBAAR,IACxB;AACA;AACA,+BAAChC,QAAQ,CAACiC,YAAV,kDAAC,2BAAAjC,QAAQ,CAAT;AAhBoB,GAiBd;AACR,QAAMkC,MAAwC,GAAGJ,uBAAuB,GACpEK,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OADyC,GAEpED,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OAF/B;AAIA,QAAMC,eAAe,GAAGd,KAAK,CAACe,MAAN,CAAaf,KAAK,CAACgB,KAAnB,EAA0BC,GAAlD;AACA,QAAM;AACJC,IAAAA,yBAAyB,GAAG,KADxB;AAEJC,IAAAA,cAAc,GAAG9C,WAAW,CAAC+C,KAAZ,GAAoB,OAApB,GAA8B,MAF3C;AAGJC,IAAAA,wBAAwB,GAAG,OAHvB;AAIJC,IAAAA,WAJI;AAKJC,IAAAA,UAAU,GAAGjD,QAAQ,CAACkD,MAAT,CAAgB;AAAEC,MAAAA,GAAG,EAAE,OAAP;AAAgBZ,MAAAA,OAAO,EAAE;AAAzB,KAAhB,CALT;AAMJa,IAAAA,mBANI;AAOJC,IAAAA,mBAAmB,GAAG,SAPlB;AAQJC,IAAAA,YAAY,GAAG,oBARX;AASJC,IAAAA,cAAc,GAAG,EATb;AAUJC,IAAAA,YAAY,GAAGxD,QAAQ,CAACsB,EAAT,KAAgB,KAAhB,IACbtB,QAAQ,CAACsB,EAAT,KAAgB,SADH,IAEbtB,QAAQ,CAACsB,EAAT,KAAgB,OAZd;AAaJmC,IAAAA,gBAAgB,GAAG;AAbf,MAcF7B,WAAW,CAACY,eAAD,CAAX,CAA6BkB,OAdjC;AAgBA,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsB/D,KAAK,CAACgE,QAAN,CAAe,CAACrB,eAAD,CAAf,CAA5B;;AAEA,MAAI,CAACmB,MAAM,CAACG,QAAP,CAAgBtB,eAAhB,CAAL,EAAuC;AACrCoB,IAAAA,SAAS,CAAC,CAAC,GAAGD,MAAJ,EAAYnB,eAAZ,CAAD,CAAT;AACD;;AAED,QAAMuB,UAAU,GAAG3D,gBAAgB,EAAnC;AAEA,QAAM;AAAE4D,IAAAA;AAAF,MAAapE,QAAQ,EAA3B;AAEA,QAAMqE,YAAY,GAAG1D,wBAAwB,CAACmB,KAAD,CAA7C;AAEA,QAAMwC,gBAAgB,GAAGrE,KAAK,CAACsE,WAAN,CAAkB,MAAM;AAC/CxC,IAAAA,UAAU,CAACyC,QAAX,CAAoB,EAClB,GAAGzE,aAAa,CAAC0E,UAAd,EADe;AAElBC,MAAAA,MAAM,EAAE5C,KAAK,CAACiB;AAFI,KAApB;AAID,GALwB,EAKtB,CAAChB,UAAD,EAAaD,KAAK,CAACiB,GAAnB,CALsB,CAAzB;AAOA,QAAM4B,iBAAiB,GAAG1E,KAAK,CAACsE,WAAN,CAAkB,MAAM;AAChDxC,IAAAA,UAAU,CAACyC,QAAX,CAAoB,EAClB,GAAGzE,aAAa,CAAC6E,WAAd,EADe;AAElBF,MAAAA,MAAM,EAAE5C,KAAK,CAACiB;AAFI,KAApB;AAID,GALyB,EAKvB,CAAChB,UAAD,EAAaD,KAAK,CAACiB,GAAnB,CALuB,CAA1B;AAOA9C,EAAAA,KAAK,CAAC4E,SAAN,CAAgB,MAAM;AACpB,QAAIR,YAAY,KAAKpC,aAAjB,IAAkCoB,UAAU,KAAK,WAArD,EAAkE;AAChE;AACD;;AAED,UAAMyB,kBAAkB,GAAG,MAAM;AAC/B;AACA;AACA,UAAI,CAAC/C,UAAU,CAACgD,SAAX,EAAL,EAA6B;AAC3B,eAAO,KAAP;AACD;;AAED,UAAI9C,aAAa,KAAK,MAAtB,EAA8B;AAC5BqC,QAAAA,gBAAgB;AACjB,OAFD,MAEO;AACLK,QAAAA,iBAAiB;AAClB;;AAED,aAAO,IAAP;AACD,KAdD;;AAgBA,UAAMK,YAAY,GAAIC,CAAD,IAAsB;AACzC,UAAIA,CAAC,CAAClC,GAAF,KAAU,QAAd,EAAwB;AACtB+B,QAAAA,kBAAkB;AACnB;AACF,KAJD,CArBoB,CA2BpB;AACA;AACA;;;AACA,UAAMI,YAAY,GAAGhF,WAAW,CAACiF,gBAAZ,CACnB,mBADmB,EAEnBL,kBAFmB,CAArB;;AAKA,QAAI1E,QAAQ,CAACsB,EAAT,KAAgB,KAApB,EAA2B;AAAA;;AACzB,mBAAA0D,QAAQ,UAAR,gEAAUC,IAAV,2FAAgBF,gBAAhB,qGAAmC,OAAnC,EAA4CH,YAA5C;AACD;;AAED,WAAO,MAAM;AACXE,MAAAA,YAAY,CAACI,MAAb;;AAEA,UAAIlF,QAAQ,CAACsB,EAAT,KAAgB,KAApB,EAA2B;AAAA;;AACzB,sBAAA0D,QAAQ,UAAR,mEAAUC,IAAV,6FAAgBE,mBAAhB,sGAAsC,OAAtC,EAA+CP,YAA/C;AACD;AACF,KAND;AAOD,GA9CD,EA8CG,CACD/C,aADC,EAEDoC,YAFC,EAGDhB,UAHC,EAIDsB,iBAJC,EAKDL,gBALC,EAMDvC,UANC,CA9CH;;AAuDA,QAAMyD,mBAAmB,GAAG,MAAM;AAChC,wBACE,oBAAC,qBAAD,CAAuB,QAAvB;AAAgC,MAAA,KAAK,EAAEvC;AAAvC,OACGf,aAAa,CAAC;AACbJ,MAAAA,KAAK,EAAEA,KADM;AAEbC,MAAAA,UAAU,EAAEA,UAFC;AAGbC,MAAAA,WAAW,EAAEA;AAHA,KAAD,CADhB,CADF;AASD,GAVD;;AAYA,QAAMyD,kBAAkB,GAAG,MAAM;AAC/B,wBACE,oBAAC,oBAAD;AACE,MAAA,OAAO,EAAErD,qBADX;AAEE,MAAA,YAAY,MAFd;AAGE,MAAA,KAAK,EAAEsD,MAAM,CAACC;AAHhB,OAKG7D,KAAK,CAACe,MAAN,CAAa+C,GAAb,CAAiB,CAACC,KAAD,EAAQ/C,KAAR,KAAkB;AAClC,YAAMgD,UAAU,GAAG9D,WAAW,CAAC6D,KAAK,CAAC9C,GAAP,CAA9B;AACA,YAAM;AAAEgD,QAAAA,IAAI,GAAG,IAAT;AAAeC,QAAAA;AAAf,UAAiCF,UAAU,CAAChC,OAAlD;AACA,YAAMiB,SAAS,GAAGjD,KAAK,CAACgB,KAAN,KAAgBA,KAAlC;;AAEA,UAAIkD,aAAa,IAAI,CAACjB,SAAtB,EAAiC;AAC/B,eAAO,IAAP;AACD;;AAED,UAAIgB,IAAI,IAAI,CAAChC,MAAM,CAACG,QAAP,CAAgB2B,KAAK,CAAC9C,GAAtB,CAAT,IAAuC,CAACgC,SAA5C,EAAuD;AACrD;AACA,eAAO,IAAP;AACD;;AAED,YAAM;AACJkB,QAAAA,MAAM,GAAG;AAAA;;AAAA,cAAC;AAAEC,YAAAA,MAAF;AAAUpC,YAAAA;AAAV,WAAD;AAAA,8BACP,oBAAC,MAAD,eACMA,OADN;AAEE,YAAA,MAAM,EAAEoC,MAFV;AAGE,YAAA,KAAK,EAAEvG,cAAc,CAACmE,OAAD,EAAU+B,KAAK,CAACM,IAAhB,CAHvB;AAIE,YAAA,UAAU,yBACRrC,OAAO,CAACsC,UADA,qEAENjE,KAAD,iBAAW,oBAAC,kBAAD,EAAwBA,KAAxB;AANhB,aADO;AAAA,SADL;AAYJkE,QAAAA;AAZI,UAaFP,UAAU,CAAChC,OAbf;AAeA,0BACE,oBAAC,WAAD;AACE,QAAA,GAAG,EAAE+B,KAAK,CAAC9C,GADb;AAEE,QAAA,KAAK,EAAE,CAAC1C,UAAU,CAACiG,YAAZ,EAA0B;AAAEC,UAAAA,MAAM,EAAExB,SAAS,GAAG,CAAH,GAAO,CAAC;AAA3B,SAA1B,CAFT;AAGE,QAAA,OAAO,EAAEA,SAHX;AAIE,QAAA,OAAO,EAAE3C;AAJX,sBAME,oBAAC,MAAD;AACE,QAAA,OAAO,EAAE2C,SADX;AAEE,QAAA,KAAK,EAAEe,UAAU,CAACD,KAFpB;AAGE,QAAA,UAAU,EAAEC,UAAU,CAAC/D,UAHzB;AAIE,QAAA,WAAW,EAAE+D,UAAU,CAAChC,OAAX,CAAmB0C,WAJlC;AAKE,QAAA,iBAAiB,EAAEV,UAAU,CAAChC,OAAX,CAAmB2C,iBALxC;AAME,QAAA,qBAAqB,EAAEX,UAAU,CAAChC,OAAX,CAAmB4C,qBAN5C;AAOE,QAAA,MAAM,EAAET,MAAM,CAAC;AACbC,UAAAA,MAAM,EAAE/B,UADK;AAEb0B,UAAAA,KAAK,EAAEC,UAAU,CAACD,KAFL;AAGb9D,UAAAA,UAAU,EACR+D,UAAU,CAAC/D,UAJA;AAKb+B,UAAAA,OAAO,EAAEgC,UAAU,CAAChC;AALP,SAAD,CAPhB;AAcE,QAAA,KAAK,EAAEuC;AAdT,SAgBGP,UAAU,CAACa,MAAX,EAhBH,CANF,CADF;AA2BD,KAxDA,CALH,CADF;AAiED,GAlED;;AAoEA,sBACE,oBAAC,mBAAD,CAAqB,QAArB;AAA8B,IAAA,KAAK,EAAEtC;AAArC,kBACE,oBAAC,MAAD;AACE,IAAA,IAAI,EAAEA,YAAY,KAAK,QADzB;AAEE,IAAA,MAAM,EAAEC,gBAFV;AAGE,IAAA,OAAO,EAAEK,iBAHX;AAIE,IAAA,mBAAmB,EAAEnB,mBAJvB;AAKE,IAAA,YAAY,EAAEI,YALhB;AAME,IAAA,cAAc,EAAED,cANlB;AAOE,IAAA,sBAAsB,EAAE,GAP1B;AAQE,IAAA,sBAAsB,EAAEE,gBAR1B;AASE,IAAA,mBAAmB,EAAEb,yBATvB;AAUE,IAAA,kBAAkB,EAAEG,wBAVtB;AAWE,IAAA,mBAAmB,EAAEM,mBAXvB;AAYE,IAAA,UAAU,EAAEJ,UAZd;AAaE,IAAA,cAAc,EAAEJ,cAblB;AAcE,IAAA,WAAW,EAAE,CACX;AACE9B,MAAAA,KAAK,EAAEF,qBAAqB,CAACkD,UAAD,CAD9B;AAEEyC,MAAAA,eAAe,EAAExC,MAAM,CAACyC;AAF1B,KADW,EAKXxD,UAAU,KAAK,WAAf,KACGJ,cAAc,KAAK,MAAnB,GACG;AACE6D,MAAAA,gBAAgB,EAAE1C,MAAM,CAAC2C,MAD3B;AAEEC,MAAAA,gBAAgB,EAAE3G,UAAU,CAAC4G;AAF/B,KADH,GAKG;AACEC,MAAAA,eAAe,EAAE9C,MAAM,CAAC2C,MAD1B;AAEEI,MAAAA,eAAe,EAAE9G,UAAU,CAAC4G;AAF9B,KANN,CALW,EAeX7D,WAfW,CAdf;AA+BE,IAAA,YAAY,EAAE;AAAEwD,MAAAA,eAAe,EAAElD;AAAnB,KA/BhB;AAgCE,IAAA,mBAAmB,EAAE8B,mBAhCvB;AAiCE,IAAA,kBAAkB,EAAEC,kBAjCtB;AAkCE,IAAA,UAAU,EAAEtB;AAlCd,IADF,CADF;AAwCD;;AAED,eAAe,SAASiD,UAAT,QAAoD;AAAA,MAAhC;AAAErF,IAAAA,UAAF;AAAc,OAAGsF;AAAjB,GAAgC;AACjE,sBACE,oBAAC,sBAAD,qBACE,oBAAC,qBAAD;AAAuB,IAAA,KAAK,EAAE3B,MAAM,CAACC;AAArC,kBACE,oBAAC,cAAD;AAAgB,IAAA,UAAU,EAAE5D;AAA5B,KAA4CsF,IAA5C,EADF,CADF,CADF;AAOD;AAED,MAAM3B,MAAM,GAAGrF,UAAU,CAACiH,MAAX,CAAkB;AAC/B3B,EAAAA,OAAO,EAAE;AACP4B,IAAAA,IAAI,EAAE;AADC;AADsB,CAAlB,CAAf","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Animated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["DrawerView.tsx"],"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","DrawerActions","useTheme","React","BackHandler","I18nManager","Platform","StyleSheet","View","Reanimated","useSafeAreaFrame","DrawerPositionContext","DrawerStatusContext","getDrawerStatusFromState","DrawerContent","DrawerToggleButton","GestureHandlerRootView","MaybeScreen","MaybeScreenContainer","getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","OS","maxWidth","GestureHandlerWrapper","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport * as Reanimated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Reanimated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
|
|
@@ -6,7 +6,7 @@ declare const Overlay: React.ForwardRefExoticComponent<{
|
|
|
6
6
|
onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
|
|
7
7
|
pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
|
|
8
8
|
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
9
|
-
style?: import("react-native").StyleProp<Animated.
|
|
9
|
+
style?: import("react-native").StyleProp<import("react-native").ViewStyle> | Animated.Node<import("react-native").StyleProp<import("react-native").ViewStyle>>;
|
|
10
10
|
testID?: string | Animated.Node<string | undefined> | undefined;
|
|
11
11
|
nativeID?: string | Animated.Node<string | undefined> | undefined;
|
|
12
12
|
collapsable?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
@@ -60,6 +60,8 @@ declare const Overlay: React.ForwardRefExoticComponent<{
|
|
|
60
60
|
onAccessibilityTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
|
|
61
61
|
onMagicTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
|
|
62
62
|
accessibilityIgnoresInvertColors?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
63
|
+
} & {
|
|
64
|
+
style?: import("react-native").StyleProp<Animated.AnimateStyle<import("react-native").StyleProp<import("react-native").ViewStyle>>>;
|
|
63
65
|
} & {
|
|
64
66
|
animatedProps?: Partial<Animated.AnimateProps<import("react-native").ViewProps>> | undefined;
|
|
65
67
|
layout?: import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").LayoutAnimationFunction | typeof import("react-native-reanimated").BaseAnimationBuilder | undefined;
|
|
@@ -6,7 +6,7 @@ declare const Overlay: React.ForwardRefExoticComponent<{
|
|
|
6
6
|
onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
|
|
7
7
|
pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
|
|
8
8
|
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
9
|
-
style?: import("react-native").StyleProp<Animated.
|
|
9
|
+
style?: import("react-native").StyleProp<import("react-native").ViewStyle> | Animated.Node<import("react-native").StyleProp<import("react-native").ViewStyle>>;
|
|
10
10
|
testID?: string | Animated.Node<string | undefined> | undefined;
|
|
11
11
|
nativeID?: string | Animated.Node<string | undefined> | undefined;
|
|
12
12
|
collapsable?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
@@ -60,6 +60,8 @@ declare const Overlay: React.ForwardRefExoticComponent<{
|
|
|
60
60
|
onAccessibilityTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
|
|
61
61
|
onMagicTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
|
|
62
62
|
accessibilityIgnoresInvertColors?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
63
|
+
} & {
|
|
64
|
+
style?: import("react-native").StyleProp<Animated.AnimateStyle<import("react-native").StyleProp<import("react-native").ViewStyle>>>;
|
|
63
65
|
} & {
|
|
64
66
|
animatedProps?: Partial<Animated.AnimateProps<import("react-native").ViewProps>> | undefined;
|
|
65
67
|
layout?: import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").LayoutAnimationFunction | typeof import("react-native-reanimated").BaseAnimationBuilder | undefined;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/drawer",
|
|
3
3
|
"description": "Drawer navigator component with animated transitions and gesturess",
|
|
4
|
-
"version": "6.3.
|
|
4
|
+
"version": "6.3.1",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
]
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "e669a8ada4f0b2de0366962b3c78f7c1b101f834"
|
|
87
87
|
}
|
package/src/views/DrawerView.tsx
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
StyleSheet,
|
|
20
20
|
View,
|
|
21
21
|
} from 'react-native';
|
|
22
|
-
import
|
|
22
|
+
import * as Reanimated from 'react-native-reanimated';
|
|
23
23
|
import { useSafeAreaFrame } from 'react-native-safe-area-context';
|
|
24
24
|
|
|
25
25
|
import type {
|
|
@@ -85,7 +85,7 @@ function DrawerViewBase({
|
|
|
85
85
|
useLegacyImplementation = !global.nativeCallSyncHook ||
|
|
86
86
|
// Reanimated 2 is not configured
|
|
87
87
|
// @ts-expect-error: the type definitions are incomplete
|
|
88
|
-
!
|
|
88
|
+
!Reanimated.isConfigured?.(),
|
|
89
89
|
}: Props) {
|
|
90
90
|
const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation
|
|
91
91
|
? require('./legacy/Drawer').default
|