@react-navigation/drawer 6.4.4 → 6.5.0
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 +9 -4
- package/lib/commonjs/views/DrawerView.js.map +1 -1
- package/lib/commonjs/views/GestureHandlerNative.js +0 -6
- package/lib/commonjs/views/GestureHandlerNative.js.map +1 -1
- package/lib/commonjs/views/ScreenFallback.js.map +1 -1
- package/lib/module/views/DrawerView.js +9 -4
- package/lib/module/views/DrawerView.js.map +1 -1
- package/lib/module/views/GestureHandlerNative.js +1 -1
- package/lib/module/views/GestureHandlerNative.js.map +1 -1
- package/lib/module/views/ScreenFallback.js.map +1 -1
- package/lib/typescript/src/types.d.ts +8 -0
- package/lib/typescript/src/views/GestureHandlerNative.d.ts +2 -1
- package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
- package/lib/typescript/src/views/legacy/Overlay.d.ts +1 -2
- package/lib/typescript/src/views/modern/Overlay.d.ts +1 -2
- package/package.json +12 -12
- package/src/types.tsx +9 -0
- package/src/views/DrawerView.tsx +8 -3
- package/src/views/GestureHandlerNative.tsx +1 -1
- package/src/views/ScreenFallback.tsx +1 -0
|
@@ -202,6 +202,7 @@ function DrawerViewBase(_ref2) {
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
const {
|
|
205
|
+
freezeOnBlur,
|
|
205
206
|
header = _ref3 => {
|
|
206
207
|
var _options$headerLeft;
|
|
207
208
|
|
|
@@ -215,6 +216,9 @@ function DrawerViewBase(_ref2) {
|
|
|
215
216
|
headerLeft: (_options$headerLeft = options.headerLeft) !== null && _options$headerLeft !== void 0 ? _options$headerLeft : props => /*#__PURE__*/React.createElement(_DrawerToggleButton.default, props)
|
|
216
217
|
}));
|
|
217
218
|
},
|
|
219
|
+
headerShown,
|
|
220
|
+
headerStatusBarHeight,
|
|
221
|
+
headerTransparent,
|
|
218
222
|
sceneContainerStyle
|
|
219
223
|
} = descriptor.options;
|
|
220
224
|
return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
|
|
@@ -223,14 +227,15 @@ function DrawerViewBase(_ref2) {
|
|
|
223
227
|
zIndex: isFocused ? 0 : -1
|
|
224
228
|
}],
|
|
225
229
|
visible: isFocused,
|
|
226
|
-
enabled: detachInactiveScreens
|
|
230
|
+
enabled: detachInactiveScreens,
|
|
231
|
+
freezeOnBlur: freezeOnBlur
|
|
227
232
|
}, /*#__PURE__*/React.createElement(_elements.Screen, {
|
|
228
233
|
focused: isFocused,
|
|
229
234
|
route: descriptor.route,
|
|
230
235
|
navigation: descriptor.navigation,
|
|
231
|
-
headerShown:
|
|
232
|
-
|
|
233
|
-
|
|
236
|
+
headerShown: headerShown,
|
|
237
|
+
headerStatusBarHeight: headerStatusBarHeight,
|
|
238
|
+
headerTransparent: headerTransparent,
|
|
234
239
|
header: header({
|
|
235
240
|
layout: dimensions,
|
|
236
241
|
route: descriptor.route,
|
|
@@ -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","Reanimated","isConfigured","legacyImplemenationNotAvailable","require","abs","undefined","Error","Drawer","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","getConstants","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 // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n useLegacyImplementation = !Reanimated.isConfigured?.(),\n}: Props) {\n // Reanimated v3 dropped legacy v1 syntax\n const legacyImplemenationNotAvailable =\n require('react-native-reanimated').abs === undefined;\n\n if (useLegacyImplementation && legacyImplemenationNotAvailable) {\n throw new Error(\n 'The `useLegacyImplementation` prop is not available with Reanimated 3 as it no longer includes support for Reanimated 1 legacy API. Remove the `useLegacyImplementation` prop from `Drawer.Navigator` to be able to use it.'\n );\n }\n\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.getConstants().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","Reanimated","isConfigured","legacyImplemenationNotAvailable","require","abs","undefined","Error","Drawer","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","getConstants","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","freezeOnBlur","header","layout","name","headerLeft","headerShown","headerStatusBarHeight","headerTransparent","sceneContainerStyle","StyleSheet","absoluteFill","zIndex","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 // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n useLegacyImplementation = !Reanimated.isConfigured?.(),\n}: Props) {\n // Reanimated v3 dropped legacy v1 syntax\n const legacyImplemenationNotAvailable =\n require('react-native-reanimated').abs === undefined;\n\n if (useLegacyImplementation && legacyImplemenationNotAvailable) {\n throw new Error(\n 'The `useLegacyImplementation` prop is not available with Reanimated 3 as it no longer includes support for Reanimated 1 legacy API. Remove the `useLegacyImplementation` prop from `Drawer.Navigator` to be able to use it.'\n );\n }\n\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.getConstants().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 freezeOnBlur,\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 headerShown,\n headerStatusBarHeight,\n headerTransparent,\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 freezeOnBlur={freezeOnBlur}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={headerShown}\n headerStatusBarHeight={headerStatusBarHeight}\n headerTransparent={headerTransparent}\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"]}
|
|
@@ -16,12 +16,6 @@ Object.defineProperty(exports, "GestureState", {
|
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
exports.PanGestureHandler = PanGestureHandler;
|
|
19
|
-
Object.defineProperty(exports, "PanGestureHandlerGestureEvent", {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () {
|
|
22
|
-
return _reactNativeGestureHandler.PanGestureHandlerGestureEvent;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
19
|
Object.defineProperty(exports, "TapGestureHandler", {
|
|
26
20
|
enumerable: true,
|
|
27
21
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;;;;;;;AAEO,SAASA,iBAAT,CAA2BC,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGC,KAAK,CAACC,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,6BAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAEF;AAAtC,kBACE,oBAAC,4CAAD,EAA6BD,KAA7B,CADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport DrawerGestureContext from '../utils/DrawerGestureContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <DrawerGestureContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} />\n </DrawerGestureContext.Provider>\n );\n}\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nexport {\n GestureHandlerRootView,\n State as GestureState,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAUA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAO9B;AAAA;;AAAA,MAP+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAO/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAbM;;;;AAeA,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,4BAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n freezeOnBlur?: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n hasTwoStates: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
|
|
@@ -177,6 +177,7 @@ function DrawerViewBase(_ref2) {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
const {
|
|
180
|
+
freezeOnBlur,
|
|
180
181
|
header = _ref3 => {
|
|
181
182
|
var _options$headerLeft;
|
|
182
183
|
|
|
@@ -190,6 +191,9 @@ function DrawerViewBase(_ref2) {
|
|
|
190
191
|
headerLeft: (_options$headerLeft = options.headerLeft) !== null && _options$headerLeft !== void 0 ? _options$headerLeft : props => /*#__PURE__*/React.createElement(DrawerToggleButton, props)
|
|
191
192
|
}));
|
|
192
193
|
},
|
|
194
|
+
headerShown,
|
|
195
|
+
headerStatusBarHeight,
|
|
196
|
+
headerTransparent,
|
|
193
197
|
sceneContainerStyle
|
|
194
198
|
} = descriptor.options;
|
|
195
199
|
return /*#__PURE__*/React.createElement(MaybeScreen, {
|
|
@@ -198,14 +202,15 @@ function DrawerViewBase(_ref2) {
|
|
|
198
202
|
zIndex: isFocused ? 0 : -1
|
|
199
203
|
}],
|
|
200
204
|
visible: isFocused,
|
|
201
|
-
enabled: detachInactiveScreens
|
|
205
|
+
enabled: detachInactiveScreens,
|
|
206
|
+
freezeOnBlur: freezeOnBlur
|
|
202
207
|
}, /*#__PURE__*/React.createElement(Screen, {
|
|
203
208
|
focused: isFocused,
|
|
204
209
|
route: descriptor.route,
|
|
205
210
|
navigation: descriptor.navigation,
|
|
206
|
-
headerShown:
|
|
207
|
-
|
|
208
|
-
|
|
211
|
+
headerShown: headerShown,
|
|
212
|
+
headerStatusBarHeight: headerStatusBarHeight,
|
|
213
|
+
headerTransparent: headerTransparent,
|
|
209
214
|
header: header({
|
|
210
215
|
layout: dimensions,
|
|
211
216
|
route: descriptor.route,
|
|
@@ -1 +1 @@
|
|
|
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","isConfigured","legacyImplemenationNotAvailable","require","abs","undefined","Error","Drawer","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","getConstants","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 // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n useLegacyImplementation = !Reanimated.isConfigured?.(),\n}: Props) {\n // Reanimated v3 dropped legacy v1 syntax\n const legacyImplemenationNotAvailable =\n require('react-native-reanimated').abs === undefined;\n\n if (useLegacyImplementation && legacyImplemenationNotAvailable) {\n throw new Error(\n 'The `useLegacyImplementation` prop is not available with Reanimated 3 as it no longer includes support for Reanimated 1 legacy API. Remove the `useLegacyImplementation` prop from `Drawer.Navigator` to be able to use it.'\n );\n }\n\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.getConstants().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","isConfigured","legacyImplemenationNotAvailable","require","abs","undefined","Error","Drawer","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","getConstants","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","freezeOnBlur","header","layout","name","headerLeft","headerShown","headerStatusBarHeight","headerTransparent","sceneContainerStyle","absoluteFill","zIndex","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 // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n useLegacyImplementation = !Reanimated.isConfigured?.(),\n}: Props) {\n // Reanimated v3 dropped legacy v1 syntax\n const legacyImplemenationNotAvailable =\n require('react-native-reanimated').abs === undefined;\n\n if (useLegacyImplementation && legacyImplemenationNotAvailable) {\n throw new Error(\n 'The `useLegacyImplementation` prop is not available with Reanimated 3 as it no longer includes support for Reanimated 1 legacy API. Remove the `useLegacyImplementation` prop from `Drawer.Navigator` to be able to use it.'\n );\n }\n\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.getConstants().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 freezeOnBlur,\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 headerShown,\n headerStatusBarHeight,\n headerTransparent,\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 freezeOnBlur={freezeOnBlur}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={headerShown}\n headerStatusBarHeight={headerStatusBarHeight}\n headerTransparent={headerTransparent}\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"]}
|
|
@@ -7,5 +7,5 @@ export function PanGestureHandler(props) {
|
|
|
7
7
|
value: gestureRef
|
|
8
8
|
}, /*#__PURE__*/React.createElement(PanGestureHandlerNative, props));
|
|
9
9
|
}
|
|
10
|
-
export { GestureHandlerRootView, State as GestureState,
|
|
10
|
+
export { GestureHandlerRootView, State as GestureState, TapGestureHandler } from 'react-native-gesture-handler';
|
|
11
11
|
//# sourceMappingURL=GestureHandlerNative.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["React","PanGestureHandler","PanGestureHandlerNative","DrawerGestureContext","props","gestureRef","useRef","GestureHandlerRootView","State","GestureState","
|
|
1
|
+
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["React","PanGestureHandler","PanGestureHandlerNative","DrawerGestureContext","props","gestureRef","useRef","GestureHandlerRootView","State","GestureState","TapGestureHandler"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,iBAAiB,IAAIC,uBADvB,QAGO,8BAHP;AAKA,OAAOC,oBAAP,MAAiC,+BAAjC;AAEA,OAAO,SAASF,iBAAT,CAA2BG,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGL,KAAK,CAACM,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAED;AAAtC,kBACE,oBAAC,uBAAD,EAA6BD,KAA7B,CADF,CADF;AAKD;AAGD,SACEG,sBADF,EAEEC,KAAK,IAAIC,YAFX,EAGEC,iBAHF,QAIO,8BAJP","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport DrawerGestureContext from '../utils/DrawerGestureContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <DrawerGestureContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} />\n </DrawerGestureContext.Provider>\n );\n}\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nexport {\n GestureHandlerRootView,\n State as GestureState,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScreenFallback.tsx"],"names":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;AAAA,SAASA,kBAAT,QAAmC,4BAAnC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAAoBC,IAApB,QAAsD,cAAtD;
|
|
1
|
+
{"version":3,"sources":["ScreenFallback.tsx"],"names":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;AAAA,SAASA,kBAAT,QAAmC,4BAAnC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAAoBC,IAApB,QAAsD,cAAtD;AAUA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAO9B;AAAA;;AAAA,MAP+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAO/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAbM;AAeP,OAAO,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,kBAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n freezeOnBlur?: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n hasTwoStates: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
|
|
@@ -173,6 +173,14 @@ export declare type DrawerNavigationOptions = HeaderOptions & {
|
|
|
173
173
|
* Defaults to `false`.
|
|
174
174
|
*/
|
|
175
175
|
unmountOnBlur?: boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
|
|
178
|
+
* Defaults to `true` when `enableFreeze()` is run at the top of the application.
|
|
179
|
+
* Requires `react-native-screens` version >=3.16.0.
|
|
180
|
+
*
|
|
181
|
+
* Only supported on iOS and Android.
|
|
182
|
+
*/
|
|
183
|
+
freezeOnBlur?: boolean;
|
|
176
184
|
};
|
|
177
185
|
export declare type DrawerContentComponentProps = {
|
|
178
186
|
state: DrawerNavigationState<ParamListBase>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { PanGestureHandlerProperties } from 'react-native-gesture-handler';
|
|
3
3
|
export declare function PanGestureHandler(props: PanGestureHandlerProperties): JSX.Element;
|
|
4
|
-
export {
|
|
4
|
+
export type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';
|
|
5
|
+
export { GestureHandlerRootView, State as GestureState, TapGestureHandler, } from 'react-native-gesture-handler';
|
|
@@ -2,11 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
import Animated from 'react-native-reanimated';
|
|
3
3
|
declare const Overlay: React.ForwardRefExoticComponent<{
|
|
4
4
|
children?: React.ReactNode | Animated.Node<React.ReactNode>;
|
|
5
|
+
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
5
6
|
hitSlop?: import("react-native").Insets | Animated.Node<import("react-native").Insets | undefined> | undefined;
|
|
6
7
|
onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
|
|
7
8
|
pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
|
|
8
|
-
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
9
|
-
style?: import("react-native").StyleProp<import("react-native").ViewStyle> | Animated.Node<import("react-native").StyleProp<import("react-native").ViewStyle>>;
|
|
10
9
|
testID?: string | Animated.Node<string | undefined> | undefined;
|
|
11
10
|
nativeID?: string | Animated.Node<string | undefined> | undefined;
|
|
12
11
|
collapsable?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
@@ -2,11 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
import Animated from 'react-native-reanimated';
|
|
3
3
|
declare const Overlay: React.ForwardRefExoticComponent<{
|
|
4
4
|
children?: React.ReactNode | Animated.Node<React.ReactNode>;
|
|
5
|
+
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
5
6
|
hitSlop?: import("react-native").Insets | Animated.Node<import("react-native").Insets | undefined> | undefined;
|
|
6
7
|
onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
|
|
7
8
|
pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
|
|
8
|
-
removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
|
|
9
|
-
style?: import("react-native").StyleProp<import("react-native").ViewStyle> | Animated.Node<import("react-native").StyleProp<import("react-native").ViewStyle>>;
|
|
10
9
|
testID?: string | Animated.Node<string | undefined> | undefined;
|
|
11
10
|
nativeID?: string | Animated.Node<string | undefined> | undefined;
|
|
12
11
|
collapsable?: boolean | Animated.Node<boolean | undefined> | 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.
|
|
4
|
+
"version": "6.5.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -41,23 +41,23 @@
|
|
|
41
41
|
"clean": "del lib"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@react-navigation/elements": "^1.3.
|
|
44
|
+
"@react-navigation/elements": "^1.3.6",
|
|
45
45
|
"color": "^4.2.3",
|
|
46
46
|
"warn-once": "^0.1.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@react-navigation/native": "^6.0.
|
|
49
|
+
"@react-navigation/native": "^6.0.13",
|
|
50
50
|
"@testing-library/react-native": "^7.2.0",
|
|
51
|
-
"@types/react": "
|
|
52
|
-
"@types/react-native": "~0.
|
|
51
|
+
"@types/react": "~18.0.0",
|
|
52
|
+
"@types/react-native": "~0.69.1",
|
|
53
53
|
"del-cli": "^3.0.1",
|
|
54
|
-
"react": "
|
|
55
|
-
"react-native": "
|
|
54
|
+
"react": "18.0.0",
|
|
55
|
+
"react-native": "0.69.5",
|
|
56
56
|
"react-native-builder-bob": "^0.18.1",
|
|
57
|
-
"react-native-gesture-handler": "~2.
|
|
58
|
-
"react-native-reanimated": "~2.
|
|
59
|
-
"react-native-safe-area-context": "4.
|
|
60
|
-
"react-native-screens": "~3.
|
|
57
|
+
"react-native-gesture-handler": "~2.5.0",
|
|
58
|
+
"react-native-reanimated": "~2.9.1",
|
|
59
|
+
"react-native-safe-area-context": "4.3.1",
|
|
60
|
+
"react-native-screens": "~3.15.0",
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
]
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "fc4c3a63ab156e17db7ba0cbd32ada319f78714e"
|
|
87
87
|
}
|
package/src/types.tsx
CHANGED
|
@@ -211,6 +211,15 @@ export type DrawerNavigationOptions = HeaderOptions & {
|
|
|
211
211
|
* Defaults to `false`.
|
|
212
212
|
*/
|
|
213
213
|
unmountOnBlur?: boolean;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
|
|
217
|
+
* Defaults to `true` when `enableFreeze()` is run at the top of the application.
|
|
218
|
+
* Requires `react-native-screens` version >=3.16.0.
|
|
219
|
+
*
|
|
220
|
+
* Only supported on iOS and Android.
|
|
221
|
+
*/
|
|
222
|
+
freezeOnBlur?: boolean;
|
|
214
223
|
};
|
|
215
224
|
|
|
216
225
|
export type DrawerContentComponentProps = {
|
package/src/views/DrawerView.tsx
CHANGED
|
@@ -230,6 +230,7 @@ function DrawerViewBase({
|
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
const {
|
|
233
|
+
freezeOnBlur,
|
|
233
234
|
header = ({ layout, options }: DrawerHeaderProps) => (
|
|
234
235
|
<Header
|
|
235
236
|
{...options}
|
|
@@ -241,6 +242,9 @@ function DrawerViewBase({
|
|
|
241
242
|
}
|
|
242
243
|
/>
|
|
243
244
|
),
|
|
245
|
+
headerShown,
|
|
246
|
+
headerStatusBarHeight,
|
|
247
|
+
headerTransparent,
|
|
244
248
|
sceneContainerStyle,
|
|
245
249
|
} = descriptor.options;
|
|
246
250
|
|
|
@@ -250,14 +254,15 @@ function DrawerViewBase({
|
|
|
250
254
|
style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}
|
|
251
255
|
visible={isFocused}
|
|
252
256
|
enabled={detachInactiveScreens}
|
|
257
|
+
freezeOnBlur={freezeOnBlur}
|
|
253
258
|
>
|
|
254
259
|
<Screen
|
|
255
260
|
focused={isFocused}
|
|
256
261
|
route={descriptor.route}
|
|
257
262
|
navigation={descriptor.navigation}
|
|
258
|
-
headerShown={
|
|
259
|
-
|
|
260
|
-
|
|
263
|
+
headerShown={headerShown}
|
|
264
|
+
headerStatusBarHeight={headerStatusBarHeight}
|
|
265
|
+
headerTransparent={headerTransparent}
|
|
261
266
|
header={header({
|
|
262
267
|
layout: dimensions,
|
|
263
268
|
route: descriptor.route,
|
|
@@ -16,9 +16,9 @@ export function PanGestureHandler(props: PanGestureHandlerProperties) {
|
|
|
16
16
|
);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
export type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';
|
|
19
20
|
export {
|
|
20
21
|
GestureHandlerRootView,
|
|
21
22
|
State as GestureState,
|
|
22
|
-
PanGestureHandlerGestureEvent,
|
|
23
23
|
TapGestureHandler,
|
|
24
24
|
} from 'react-native-gesture-handler';
|