@react-navigation/drawer 6.1.5
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/LICENSE +21 -0
- package/README.md +5 -0
- package/lib/commonjs/index.js +104 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/navigators/createDrawerNavigator.js +95 -0
- package/lib/commonjs/navigators/createDrawerNavigator.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/DrawerGestureContext.js +17 -0
- package/lib/commonjs/utils/DrawerGestureContext.js.map +1 -0
- package/lib/commonjs/utils/DrawerPositionContext.js +17 -0
- package/lib/commonjs/utils/DrawerPositionContext.js.map +1 -0
- package/lib/commonjs/utils/DrawerProgressContext.js +17 -0
- package/lib/commonjs/utils/DrawerProgressContext.js.map +1 -0
- package/lib/commonjs/utils/DrawerStatusContext.js +17 -0
- package/lib/commonjs/utils/DrawerStatusContext.js.map +1 -0
- package/lib/commonjs/utils/getDrawerStatusFromState.js +18 -0
- package/lib/commonjs/utils/getDrawerStatusFromState.js.map +1 -0
- package/lib/commonjs/utils/useDrawerProgress.js +27 -0
- package/lib/commonjs/utils/useDrawerProgress.js.map +1 -0
- package/lib/commonjs/utils/useDrawerStatus.js +31 -0
- package/lib/commonjs/utils/useDrawerStatus.js.map +1 -0
- package/lib/commonjs/views/DrawerContent.js +42 -0
- package/lib/commonjs/views/DrawerContent.js.map +1 -0
- package/lib/commonjs/views/DrawerContentScrollView.js +53 -0
- package/lib/commonjs/views/DrawerContentScrollView.js.map +1 -0
- package/lib/commonjs/views/DrawerItem.js +152 -0
- package/lib/commonjs/views/DrawerItem.js.map +1 -0
- package/lib/commonjs/views/DrawerItemList.js +70 -0
- package/lib/commonjs/views/DrawerItemList.js.map +1 -0
- package/lib/commonjs/views/DrawerToggleButton.js +64 -0
- package/lib/commonjs/views/DrawerToggleButton.js.map +1 -0
- package/lib/commonjs/views/DrawerView.js +282 -0
- package/lib/commonjs/views/DrawerView.js.map +1 -0
- package/lib/commonjs/views/GestureHandler.android.js +19 -0
- package/lib/commonjs/views/GestureHandler.android.js.map +1 -0
- package/lib/commonjs/views/GestureHandler.ios.js +19 -0
- package/lib/commonjs/views/GestureHandler.ios.js.map +1 -0
- package/lib/commonjs/views/GestureHandler.js +35 -0
- package/lib/commonjs/views/GestureHandler.js.map +1 -0
- package/lib/commonjs/views/GestureHandlerNative.js +50 -0
- package/lib/commonjs/views/GestureHandlerNative.js.map +1 -0
- package/lib/commonjs/views/ScreenFallback.js +62 -0
- package/lib/commonjs/views/ScreenFallback.js.map +1 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@1.5x.android.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@1.5x.ios.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@1x.android.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@1x.ios.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@2x.android.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@2x.ios.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@3x.android.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@3x.ios.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@4x.android.png +0 -0
- package/lib/commonjs/views/assets/toggle-drawer-icon@4x.ios.png +0 -0
- package/lib/commonjs/views/legacy/Drawer.js +455 -0
- package/lib/commonjs/views/legacy/Drawer.js.map +1 -0
- package/lib/commonjs/views/legacy/Overlay.js +79 -0
- package/lib/commonjs/views/legacy/Overlay.js.map +1 -0
- package/lib/commonjs/views/modern/Drawer.js +293 -0
- package/lib/commonjs/views/modern/Drawer.js.map +1 -0
- package/lib/commonjs/views/modern/Overlay.js +65 -0
- package/lib/commonjs/views/modern/Overlay.js.map +1 -0
- package/lib/module/index.js +27 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/navigators/createDrawerNavigator.js +77 -0
- package/lib/module/navigators/createDrawerNavigator.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/DrawerGestureContext.js +3 -0
- package/lib/module/utils/DrawerGestureContext.js.map +1 -0
- package/lib/module/utils/DrawerPositionContext.js +3 -0
- package/lib/module/utils/DrawerPositionContext.js.map +1 -0
- package/lib/module/utils/DrawerProgressContext.js +3 -0
- package/lib/module/utils/DrawerProgressContext.js.map +1 -0
- package/lib/module/utils/DrawerStatusContext.js +4 -0
- package/lib/module/utils/DrawerStatusContext.js.map +1 -0
- package/lib/module/utils/getDrawerStatusFromState.js +11 -0
- package/lib/module/utils/getDrawerStatusFromState.js.map +1 -0
- package/lib/module/utils/useDrawerProgress.js +12 -0
- package/lib/module/utils/useDrawerProgress.js.map +1 -0
- package/lib/module/utils/useDrawerStatus.js +17 -0
- package/lib/module/utils/useDrawerStatus.js.map +1 -0
- package/lib/module/views/DrawerContent.js +26 -0
- package/lib/module/views/DrawerContent.js.map +1 -0
- package/lib/module/views/DrawerContentScrollView.js +34 -0
- package/lib/module/views/DrawerContentScrollView.js.map +1 -0
- package/lib/module/views/DrawerItem.js +132 -0
- package/lib/module/views/DrawerItem.js.map +1 -0
- package/lib/module/views/DrawerItemList.js +55 -0
- package/lib/module/views/DrawerItemList.js.map +1 -0
- package/lib/module/views/DrawerToggleButton.js +48 -0
- package/lib/module/views/DrawerToggleButton.js.map +1 -0
- package/lib/module/views/DrawerView.js +256 -0
- package/lib/module/views/DrawerView.js.map +1 -0
- package/lib/module/views/GestureHandler.android.js +2 -0
- package/lib/module/views/GestureHandler.android.js.map +1 -0
- package/lib/module/views/GestureHandler.ios.js +2 -0
- package/lib/module/views/GestureHandler.ios.js.map +1 -0
- package/lib/module/views/GestureHandler.js +19 -0
- package/lib/module/views/GestureHandler.js.map +1 -0
- package/lib/module/views/GestureHandlerNative.js +11 -0
- package/lib/module/views/GestureHandlerNative.js.map +1 -0
- package/lib/module/views/ScreenFallback.js +44 -0
- package/lib/module/views/ScreenFallback.js.map +1 -0
- package/lib/module/views/assets/toggle-drawer-icon.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@1.5x.android.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@1.5x.ios.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@1x.android.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@1x.ios.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@2x.android.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@2x.ios.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@3x.android.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@3x.ios.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@4x.android.png +0 -0
- package/lib/module/views/assets/toggle-drawer-icon@4x.ios.png +0 -0
- package/lib/module/views/legacy/Drawer.js +430 -0
- package/lib/module/views/legacy/Drawer.js.map +1 -0
- package/lib/module/views/legacy/Overlay.js +59 -0
- package/lib/module/views/legacy/Overlay.js.map +1 -0
- package/lib/module/views/modern/Drawer.js +272 -0
- package/lib/module/views/modern/Drawer.js.map +1 -0
- package/lib/module/views/modern/Overlay.js +47 -0
- package/lib/module/views/modern/Overlay.js.map +1 -0
- package/lib/typescript/src/index.d.ts +25 -0
- package/lib/typescript/src/navigators/createDrawerNavigator.d.ts +7 -0
- package/lib/typescript/src/types.d.ts +235 -0
- package/lib/typescript/src/utils/DrawerGestureContext.d.ts +3 -0
- package/lib/typescript/src/utils/DrawerPositionContext.d.ts +3 -0
- package/lib/typescript/src/utils/DrawerProgressContext.d.ts +4 -0
- package/lib/typescript/src/utils/DrawerStatusContext.d.ts +3 -0
- package/lib/typescript/src/utils/getDrawerStatusFromState.d.ts +2 -0
- package/lib/typescript/src/utils/useDrawerProgress.d.ts +2 -0
- package/lib/typescript/src/utils/useDrawerStatus.d.ts +5 -0
- package/lib/typescript/src/views/DrawerContent.d.ts +3 -0
- package/lib/typescript/src/views/DrawerContentScrollView.d.ts +6 -0
- package/lib/typescript/src/views/DrawerItem.d.ts +74 -0
- package/lib/typescript/src/views/DrawerItemList.d.ts +13 -0
- package/lib/typescript/src/views/DrawerToggleButton.d.ts +9 -0
- package/lib/typescript/src/views/DrawerView.d.ts +10 -0
- package/lib/typescript/src/views/GestureHandler.android.d.ts +1 -0
- package/lib/typescript/src/views/GestureHandler.d.ts +14 -0
- package/lib/typescript/src/views/GestureHandler.ios.d.ts +1 -0
- package/lib/typescript/src/views/GestureHandlerNative.d.ts +4 -0
- package/lib/typescript/src/views/ScreenFallback.d.ts +14 -0
- package/lib/typescript/src/views/legacy/Drawer.d.ts +44 -0
- package/lib/typescript/src/views/legacy/Overlay.d.ts +68 -0
- package/lib/typescript/src/views/modern/Drawer.d.ts +3 -0
- package/lib/typescript/src/views/modern/Overlay.d.ts +68 -0
- package/package.json +87 -0
- package/src/index.tsx +34 -0
- package/src/navigators/createDrawerNavigator.tsx +134 -0
- package/src/types.tsx +300 -0
- package/src/utils/DrawerGestureContext.tsx +3 -0
- package/src/utils/DrawerPositionContext.tsx +3 -0
- package/src/utils/DrawerProgressContext.tsx +6 -0
- package/src/utils/DrawerStatusContext.tsx +6 -0
- package/src/utils/getDrawerStatusFromState.tsx +20 -0
- package/src/utils/useDrawerProgress.tsx +18 -0
- package/src/utils/useDrawerStatus.tsx +19 -0
- package/src/views/DrawerContent.tsx +27 -0
- package/src/views/DrawerContentScrollView.tsx +52 -0
- package/src/views/DrawerItem.tsx +227 -0
- package/src/views/DrawerItemList.tsx +80 -0
- package/src/views/DrawerToggleButton.tsx +54 -0
- package/src/views/DrawerView.tsx +313 -0
- package/src/views/GestureHandler.android.tsx +1 -0
- package/src/views/GestureHandler.ios.tsx +1 -0
- package/src/views/GestureHandler.tsx +29 -0
- package/src/views/GestureHandlerNative.tsx +24 -0
- package/src/views/ScreenFallback.tsx +48 -0
- package/src/views/assets/toggle-drawer-icon.png +0 -0
- package/src/views/assets/toggle-drawer-icon@1.5x.android.png +0 -0
- package/src/views/assets/toggle-drawer-icon@1.5x.ios.png +0 -0
- package/src/views/assets/toggle-drawer-icon@1x.android.png +0 -0
- package/src/views/assets/toggle-drawer-icon@1x.ios.png +0 -0
- package/src/views/assets/toggle-drawer-icon@2x.android.png +0 -0
- package/src/views/assets/toggle-drawer-icon@2x.ios.png +0 -0
- package/src/views/assets/toggle-drawer-icon@3x.android.png +0 -0
- package/src/views/assets/toggle-drawer-icon@3x.ios.png +0 -0
- package/src/views/assets/toggle-drawer-icon@4x.android.png +0 -0
- package/src/views/assets/toggle-drawer-icon@4x.ios.png +0 -0
- package/src/views/legacy/Drawer.tsx +659 -0
- package/src/views/legacy/Overlay.tsx +74 -0
- package/src/views/modern/Drawer.tsx +385 -0
- package/src/views/modern/Overlay.tsx +56 -0
|
@@ -0,0 +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","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","handleClose","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 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 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 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 !== 'open' || drawerType === 'permanent') {\n return;\n }\n\n const handleClose = () => {\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 handleDrawerClose();\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleClose();\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 handleClose\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 }, [drawerStatus, drawerType, handleDrawerClose, navigation]);\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 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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["GestureHandler.android.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAd","sourcesContent":["export * from './GestureHandlerNative';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["GestureHandler.ios.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAd","sourcesContent":["export * from './GestureHandlerNative';\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
const Dummy = ({
|
|
5
|
+
children
|
|
6
|
+
}) => /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
7
|
+
|
|
8
|
+
export const PanGestureHandler = Dummy;
|
|
9
|
+
export const TapGestureHandler = Dummy;
|
|
10
|
+
export const GestureHandlerRootView = View;
|
|
11
|
+
export const GestureState = {
|
|
12
|
+
UNDETERMINED: 0,
|
|
13
|
+
FAILED: 1,
|
|
14
|
+
BEGAN: 2,
|
|
15
|
+
CANCELLED: 3,
|
|
16
|
+
ACTIVE: 4,
|
|
17
|
+
END: 5
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=GestureHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["GestureHandler.tsx"],"names":["React","View","Dummy","children","PanGestureHandler","TapGestureHandler","GestureHandlerRootView","GestureState","UNDETERMINED","FAILED","BEGAN","CANCELLED","ACTIVE","END"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT,QAAqB,cAArB;;AAMA,MAAMC,KAAU,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,kBACjB,0CAAGA,QAAH,CADF;;AAIA,OAAO,MAAMC,iBAAiB,GAC5BF,KADK;AAGP,OAAO,MAAMG,iBAAiB,GAC5BH,KADK;AAGP,OAAO,MAAMI,sBAAsB,GAAGL,IAA/B;AAEP,OAAO,MAAMM,YAAY,GAAG;AAC1BC,EAAAA,YAAY,EAAE,CADY;AAE1BC,EAAAA,MAAM,EAAE,CAFkB;AAG1BC,EAAAA,KAAK,EAAE,CAHmB;AAI1BC,EAAAA,SAAS,EAAE,CAJe;AAK1BC,EAAAA,MAAM,EAAE,CALkB;AAM1BC,EAAAA,GAAG,EAAE;AANqB,CAArB","sourcesContent":["import * as React from 'react';\nimport { View } from 'react-native';\nimport type {\n PanGestureHandlerProperties,\n TapGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nconst Dummy: any = ({ children }: { children: React.ReactNode }) => (\n <>{children}</>\n);\n\nexport const PanGestureHandler =\n Dummy as React.ComponentType<PanGestureHandlerProperties>;\n\nexport const TapGestureHandler =\n Dummy as React.ComponentType<TapGestureHandlerProperties>;\n\nexport const GestureHandlerRootView = View;\n\nexport const GestureState = {\n UNDETERMINED: 0,\n FAILED: 1,\n BEGAN: 2,\n CANCELLED: 3,\n ACTIVE: 4,\n END: 5,\n};\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PanGestureHandler as PanGestureHandlerNative } from 'react-native-gesture-handler';
|
|
3
|
+
import DrawerGestureContext from '../utils/DrawerGestureContext';
|
|
4
|
+
export function PanGestureHandler(props) {
|
|
5
|
+
const gestureRef = React.useRef(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(DrawerGestureContext.Provider, {
|
|
7
|
+
value: gestureRef
|
|
8
|
+
}, /*#__PURE__*/React.createElement(PanGestureHandlerNative, props));
|
|
9
|
+
}
|
|
10
|
+
export { GestureHandlerRootView, State as GestureState, PanGestureHandlerGestureEvent, TapGestureHandler } from 'react-native-gesture-handler';
|
|
11
|
+
//# sourceMappingURL=GestureHandlerNative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["React","PanGestureHandler","PanGestureHandlerNative","DrawerGestureContext","props","gestureRef","useRef","GestureHandlerRootView","State","GestureState","PanGestureHandlerGestureEvent","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;AAED,SACEG,sBADF,EAEEC,KAAK,IAAIC,YAFX,EAGEC,6BAHF,EAIEC,iBAJF,QAKO,8BALP","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 {\n GestureHandlerRootView,\n State as GestureState,\n PanGestureHandlerGestureEvent,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
import { ResourceSavingView } from '@react-navigation/elements';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { View } from 'react-native';
|
|
6
|
+
let Screens;
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
Screens = require('react-native-screens');
|
|
10
|
+
} catch (e) {// Ignore
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const MaybeScreenContainer = ({
|
|
14
|
+
enabled,
|
|
15
|
+
...rest
|
|
16
|
+
}) => {
|
|
17
|
+
var _Screens, _Screens$screensEnabl;
|
|
18
|
+
|
|
19
|
+
if ((_Screens = Screens) !== null && _Screens !== void 0 && (_Screens$screensEnabl = _Screens.screensEnabled) !== null && _Screens$screensEnabl !== void 0 && _Screens$screensEnabl.call(_Screens)) {
|
|
20
|
+
return /*#__PURE__*/React.createElement(Screens.ScreenContainer, _extends({
|
|
21
|
+
enabled: enabled
|
|
22
|
+
}, rest));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return /*#__PURE__*/React.createElement(View, rest);
|
|
26
|
+
};
|
|
27
|
+
export function MaybeScreen({
|
|
28
|
+
visible,
|
|
29
|
+
children,
|
|
30
|
+
...rest
|
|
31
|
+
}) {
|
|
32
|
+
var _Screens2, _Screens2$screensEnab;
|
|
33
|
+
|
|
34
|
+
if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
|
|
35
|
+
return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
|
|
36
|
+
activityState: visible ? 2 : 0
|
|
37
|
+
}, rest), children);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return /*#__PURE__*/React.createElement(ResourceSavingView, _extends({
|
|
41
|
+
visible: visible
|
|
42
|
+
}, rest), children);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ScreenFallback.js.map
|
|
@@ -0,0 +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;AASA,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,CAAC;AACnCC,EAAAA,OADmC;AAEnC,KAAGC;AAFgC,CAAD,KAM9B;AAAA;;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,CAZM;AAcP,OAAO,SAASE,WAAT,CAAqB;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,QAAX;AAAqB,KAAGJ;AAAxB,CAArB,EAA4D;AAAA;;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 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 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"]}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { I18nManager, InteractionManager, Keyboard, Platform, StatusBar, StyleSheet, View } from 'react-native';
|
|
7
|
+
import Animated from 'react-native-reanimated';
|
|
8
|
+
import DrawerProgressContext from '../../utils/DrawerProgressContext';
|
|
9
|
+
import { GestureState, PanGestureHandler } from '../GestureHandler';
|
|
10
|
+
import Overlay from './Overlay';
|
|
11
|
+
const {
|
|
12
|
+
Clock,
|
|
13
|
+
Value,
|
|
14
|
+
onChange,
|
|
15
|
+
clockRunning,
|
|
16
|
+
startClock,
|
|
17
|
+
stopClock,
|
|
18
|
+
spring,
|
|
19
|
+
abs,
|
|
20
|
+
add,
|
|
21
|
+
and,
|
|
22
|
+
block,
|
|
23
|
+
call,
|
|
24
|
+
cond,
|
|
25
|
+
divide,
|
|
26
|
+
eq,
|
|
27
|
+
event,
|
|
28
|
+
greaterThan,
|
|
29
|
+
lessThan,
|
|
30
|
+
max,
|
|
31
|
+
min,
|
|
32
|
+
multiply,
|
|
33
|
+
neq,
|
|
34
|
+
or,
|
|
35
|
+
set,
|
|
36
|
+
sub
|
|
37
|
+
} = Animated;
|
|
38
|
+
const TRUE = 1;
|
|
39
|
+
const FALSE = 0;
|
|
40
|
+
const NOOP = 0;
|
|
41
|
+
const UNSET = -1;
|
|
42
|
+
const DIRECTION_LEFT = 1;
|
|
43
|
+
const DIRECTION_RIGHT = -1;
|
|
44
|
+
const SWIPE_DISTANCE_MINIMUM = 5;
|
|
45
|
+
const DEFAULT_DRAWER_WIDTH = '80%';
|
|
46
|
+
const SPRING_CONFIG = {
|
|
47
|
+
stiffness: 1000,
|
|
48
|
+
damping: 500,
|
|
49
|
+
mass: 3,
|
|
50
|
+
overshootClamping: true,
|
|
51
|
+
restDisplacementThreshold: 0.01,
|
|
52
|
+
restSpeedThreshold: 0.01
|
|
53
|
+
};
|
|
54
|
+
const ANIMATED_ZERO = new Animated.Value(0);
|
|
55
|
+
const ANIMATED_ONE = new Animated.Value(1);
|
|
56
|
+
export default class DrawerView extends React.Component {
|
|
57
|
+
constructor(...args) {
|
|
58
|
+
super(...args);
|
|
59
|
+
|
|
60
|
+
_defineProperty(this, "handleEndInteraction", () => {
|
|
61
|
+
if (this.interactionHandle !== undefined) {
|
|
62
|
+
InteractionManager.clearInteractionHandle(this.interactionHandle);
|
|
63
|
+
this.interactionHandle = undefined;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
_defineProperty(this, "handleStartInteraction", () => {
|
|
68
|
+
if (this.interactionHandle === undefined) {
|
|
69
|
+
this.interactionHandle = InteractionManager.createInteractionHandle();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
_defineProperty(this, "getDrawerWidth", () => {
|
|
74
|
+
const {
|
|
75
|
+
drawerStyle,
|
|
76
|
+
dimensions
|
|
77
|
+
} = this.props;
|
|
78
|
+
const {
|
|
79
|
+
width = DEFAULT_DRAWER_WIDTH
|
|
80
|
+
} = StyleSheet.flatten(drawerStyle) || {};
|
|
81
|
+
|
|
82
|
+
if (typeof width === 'string' && width.endsWith('%')) {
|
|
83
|
+
// Try to calculate width if a percentage is given
|
|
84
|
+
const percentage = Number(width.replace(/%$/, ''));
|
|
85
|
+
|
|
86
|
+
if (Number.isFinite(percentage)) {
|
|
87
|
+
return dimensions.width * (percentage / 100);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return typeof width === 'number' ? width : 0;
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
_defineProperty(this, "clock", new Clock());
|
|
95
|
+
|
|
96
|
+
_defineProperty(this, "interactionHandle", void 0);
|
|
97
|
+
|
|
98
|
+
_defineProperty(this, "isDrawerTypeFront", new Value(this.props.drawerType === 'front' ? TRUE : FALSE));
|
|
99
|
+
|
|
100
|
+
_defineProperty(this, "isOpen", new Value(this.props.open ? TRUE : FALSE));
|
|
101
|
+
|
|
102
|
+
_defineProperty(this, "nextIsOpen", new Value(UNSET));
|
|
103
|
+
|
|
104
|
+
_defineProperty(this, "isSwiping", new Value(FALSE));
|
|
105
|
+
|
|
106
|
+
_defineProperty(this, "initialDrawerWidth", this.getDrawerWidth());
|
|
107
|
+
|
|
108
|
+
_defineProperty(this, "gestureState", new Value(GestureState.UNDETERMINED));
|
|
109
|
+
|
|
110
|
+
_defineProperty(this, "touchX", new Value(0));
|
|
111
|
+
|
|
112
|
+
_defineProperty(this, "velocityX", new Value(0));
|
|
113
|
+
|
|
114
|
+
_defineProperty(this, "gestureX", new Value(0));
|
|
115
|
+
|
|
116
|
+
_defineProperty(this, "offsetX", new Value(0));
|
|
117
|
+
|
|
118
|
+
_defineProperty(this, "position", new Value(this.props.open ? this.initialDrawerWidth * (this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT) : 0));
|
|
119
|
+
|
|
120
|
+
_defineProperty(this, "containerWidth", new Value(this.props.dimensions.width));
|
|
121
|
+
|
|
122
|
+
_defineProperty(this, "drawerWidth", new Value(this.initialDrawerWidth));
|
|
123
|
+
|
|
124
|
+
_defineProperty(this, "drawerOpacity", new Value(this.props.drawerType === 'permanent' ? 1 : 0));
|
|
125
|
+
|
|
126
|
+
_defineProperty(this, "drawerPosition", new Value(this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT));
|
|
127
|
+
|
|
128
|
+
_defineProperty(this, "touchDistanceFromDrawer", cond(this.isDrawerTypeFront, cond(eq(this.drawerPosition, DIRECTION_LEFT), max( // Distance of touch start from left screen edge - Drawer width
|
|
129
|
+
sub(sub(this.touchX, this.gestureX), this.drawerWidth), 0), min(multiply( // Distance of drawer from left screen edge - Touch start point
|
|
130
|
+
sub(sub(this.containerWidth, this.drawerWidth), sub(this.touchX, this.gestureX)), DIRECTION_RIGHT), 0)), 0));
|
|
131
|
+
|
|
132
|
+
_defineProperty(this, "swipeDistanceThreshold", new Value(this.props.swipeDistanceThreshold));
|
|
133
|
+
|
|
134
|
+
_defineProperty(this, "swipeVelocityThreshold", new Value(this.props.swipeVelocityThreshold));
|
|
135
|
+
|
|
136
|
+
_defineProperty(this, "currentOpenValue", this.props.open);
|
|
137
|
+
|
|
138
|
+
_defineProperty(this, "pendingOpenValue", void 0);
|
|
139
|
+
|
|
140
|
+
_defineProperty(this, "isStatusBarHidden", false);
|
|
141
|
+
|
|
142
|
+
_defineProperty(this, "manuallyTriggerSpring", new Value(FALSE));
|
|
143
|
+
|
|
144
|
+
_defineProperty(this, "transitionTo", isOpen => {
|
|
145
|
+
const toValue = new Value(0);
|
|
146
|
+
const frameTime = new Value(0);
|
|
147
|
+
const state = {
|
|
148
|
+
position: this.position,
|
|
149
|
+
time: new Value(0),
|
|
150
|
+
finished: new Value(FALSE),
|
|
151
|
+
velocity: new Value(0)
|
|
152
|
+
};
|
|
153
|
+
return block([cond(clockRunning(this.clock), NOOP, [// Animation wasn't running before
|
|
154
|
+
// Set the initial values and start the clock
|
|
155
|
+
set(toValue, multiply(isOpen, this.drawerWidth, this.drawerPosition)), set(frameTime, 0), set(state.time, 0), set(state.finished, FALSE), set(state.velocity, this.velocityX), set(this.isOpen, isOpen), startClock(this.clock), call([], this.handleStartInteraction), set(this.manuallyTriggerSpring, FALSE)]), spring(this.clock, state, { ...SPRING_CONFIG,
|
|
156
|
+
toValue
|
|
157
|
+
}), cond(state.finished, [// Reset gesture and velocity from previous gesture
|
|
158
|
+
set(this.touchX, 0), set(this.gestureX, 0), set(this.velocityX, 0), set(this.offsetX, 0), // When the animation finishes, stop the clock
|
|
159
|
+
stopClock(this.clock), call([this.isOpen], ([value]) => {
|
|
160
|
+
const open = Boolean(value);
|
|
161
|
+
this.handleEndInteraction();
|
|
162
|
+
|
|
163
|
+
if (open !== this.props.open) {
|
|
164
|
+
// Sync drawer's state after animation finished
|
|
165
|
+
// This shouldn't be necessary, but there seems to be an issue on iOS
|
|
166
|
+
this.toggleDrawer(this.props.open);
|
|
167
|
+
}
|
|
168
|
+
})])]);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
_defineProperty(this, "dragX", block([onChange(this.isOpen, call([this.isOpen], ([value]) => {
|
|
172
|
+
const open = Boolean(value);
|
|
173
|
+
this.currentOpenValue = open; // Without this check, the drawer can go to an infinite update <-> animate loop for sync updates
|
|
174
|
+
|
|
175
|
+
if (open !== this.props.open) {
|
|
176
|
+
// If the mode changed, update state
|
|
177
|
+
if (open) {
|
|
178
|
+
this.props.onOpen();
|
|
179
|
+
} else {
|
|
180
|
+
this.props.onClose();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
this.pendingOpenValue = open; // Force componentDidUpdate to fire, whether user does a setState or not
|
|
184
|
+
// This allows us to detect when the user drops the update and revert back
|
|
185
|
+
// It's necessary to make sure that the state stays in sync
|
|
186
|
+
|
|
187
|
+
this.forceUpdate();
|
|
188
|
+
}
|
|
189
|
+
})), onChange(this.nextIsOpen, cond(neq(this.nextIsOpen, UNSET), [// Stop any running animations
|
|
190
|
+
cond(clockRunning(this.clock), stopClock(this.clock)), // Update the open value to trigger the transition
|
|
191
|
+
set(this.isOpen, this.nextIsOpen), set(this.gestureX, 0), set(this.nextIsOpen, UNSET)])), // This block must be after the this.isOpen listener since we check for current value
|
|
192
|
+
onChange(this.isSwiping, // Listen to updates for this value only when it changes
|
|
193
|
+
// Without `onChange`, this will fire even if the value didn't change
|
|
194
|
+
// We don't want to call the listeners if the value didn't change
|
|
195
|
+
call([this.isSwiping], ([value]) => {
|
|
196
|
+
const {
|
|
197
|
+
keyboardDismissMode
|
|
198
|
+
} = this.props;
|
|
199
|
+
|
|
200
|
+
if (value === TRUE) {
|
|
201
|
+
if (keyboardDismissMode === 'on-drag') {
|
|
202
|
+
Keyboard.dismiss();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
this.toggleStatusBar(true);
|
|
206
|
+
} else {
|
|
207
|
+
this.toggleStatusBar(this.currentOpenValue);
|
|
208
|
+
}
|
|
209
|
+
})), onChange(this.gestureState, cond(eq(this.gestureState, GestureState.ACTIVE), call([], this.handleStartInteraction))), cond(eq(this.gestureState, GestureState.ACTIVE), [cond(this.isSwiping, NOOP, [// We weren't dragging before, set it to true
|
|
210
|
+
set(this.isSwiping, TRUE), // Also update the drag offset to the last position
|
|
211
|
+
set(this.offsetX, this.position)]), // Update position with previous offset + gesture distance
|
|
212
|
+
set(this.position, add(this.offsetX, this.gestureX, this.touchDistanceFromDrawer)), // Stop animations while we're dragging
|
|
213
|
+
stopClock(this.clock)], [set(this.isSwiping, FALSE), set(this.touchX, 0), this.transitionTo(cond(this.manuallyTriggerSpring, this.isOpen, cond(or(and(greaterThan(abs(this.gestureX), SWIPE_DISTANCE_MINIMUM), greaterThan(abs(this.velocityX), this.swipeVelocityThreshold)), greaterThan(abs(this.gestureX), this.swipeDistanceThreshold)), cond(eq(this.drawerPosition, DIRECTION_LEFT), // If swiped to right, open the drawer, otherwise close it
|
|
214
|
+
greaterThan(cond(eq(this.velocityX, 0), this.gestureX, this.velocityX), 0), // If swiped to left, open the drawer, otherwise close it
|
|
215
|
+
lessThan(cond(eq(this.velocityX, 0), this.gestureX, this.velocityX), 0)), this.isOpen)))]), this.position]));
|
|
216
|
+
|
|
217
|
+
_defineProperty(this, "translateX", cond(eq(this.drawerPosition, DIRECTION_RIGHT), min(max(multiply(this.drawerWidth, -1), this.dragX), 0), max(min(this.drawerWidth, this.dragX), 0)));
|
|
218
|
+
|
|
219
|
+
_defineProperty(this, "progress", cond( // Check if the drawer width is available to avoid division by zero
|
|
220
|
+
eq(this.drawerWidth, 0), 0, abs(divide(this.translateX, this.drawerWidth))));
|
|
221
|
+
|
|
222
|
+
_defineProperty(this, "handleGestureEvent", event([{
|
|
223
|
+
nativeEvent: {
|
|
224
|
+
x: this.touchX,
|
|
225
|
+
translationX: this.gestureX,
|
|
226
|
+
velocityX: this.velocityX
|
|
227
|
+
}
|
|
228
|
+
}]));
|
|
229
|
+
|
|
230
|
+
_defineProperty(this, "handleGestureStateChange", event([{
|
|
231
|
+
nativeEvent: {
|
|
232
|
+
state: s => set(this.gestureState, s)
|
|
233
|
+
}
|
|
234
|
+
}]));
|
|
235
|
+
|
|
236
|
+
_defineProperty(this, "handleContainerLayout", e => this.containerWidth.setValue(e.nativeEvent.layout.width));
|
|
237
|
+
|
|
238
|
+
_defineProperty(this, "handleDrawerLayout", e => {
|
|
239
|
+
this.drawerWidth.setValue(e.nativeEvent.layout.width);
|
|
240
|
+
this.toggleDrawer(this.props.open); // Until layout is available, drawer is hidden with opacity: 0 by default
|
|
241
|
+
// Show it in the next frame when layout is available
|
|
242
|
+
// If we don't delay it until the next frame, there's a visible flicker
|
|
243
|
+
|
|
244
|
+
requestAnimationFrame(() => requestAnimationFrame(() => this.drawerOpacity.setValue(1)));
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
_defineProperty(this, "toggleDrawer", open => {
|
|
248
|
+
if (this.currentOpenValue !== open) {
|
|
249
|
+
this.nextIsOpen.setValue(open ? TRUE : FALSE); // This value will also be set shortly after as changing this.nextIsOpen changes this.isOpen
|
|
250
|
+
// However, there's a race condition on Android, so we need to set a bit earlier
|
|
251
|
+
|
|
252
|
+
this.currentOpenValue = open;
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
_defineProperty(this, "toggleStatusBar", hidden => {
|
|
257
|
+
const {
|
|
258
|
+
hideStatusBarOnOpen: hideStatusBar,
|
|
259
|
+
statusBarAnimation
|
|
260
|
+
} = this.props;
|
|
261
|
+
|
|
262
|
+
if (hideStatusBar && this.isStatusBarHidden !== hidden) {
|
|
263
|
+
this.isStatusBarHidden = hidden;
|
|
264
|
+
StatusBar.setHidden(hidden, statusBarAnimation);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
componentDidUpdate(prevProps) {
|
|
270
|
+
const {
|
|
271
|
+
open,
|
|
272
|
+
drawerPosition,
|
|
273
|
+
drawerType,
|
|
274
|
+
swipeDistanceThreshold,
|
|
275
|
+
swipeVelocityThreshold,
|
|
276
|
+
hideStatusBarOnOpen: hideStatusBar
|
|
277
|
+
} = this.props;
|
|
278
|
+
|
|
279
|
+
if ( // If we're not in the middle of a transition, sync the drawer's open state
|
|
280
|
+
typeof this.pendingOpenValue !== 'boolean' || open !== this.pendingOpenValue) {
|
|
281
|
+
this.toggleDrawer(open);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
this.pendingOpenValue = undefined;
|
|
285
|
+
|
|
286
|
+
if (open !== prevProps.open && hideStatusBar) {
|
|
287
|
+
this.toggleStatusBar(open);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (prevProps.drawerPosition !== drawerPosition) {
|
|
291
|
+
this.drawerPosition.setValue(drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (prevProps.drawerType !== drawerType) {
|
|
295
|
+
this.isDrawerTypeFront.setValue(drawerType === 'front' ? TRUE : FALSE);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (prevProps.swipeDistanceThreshold !== swipeDistanceThreshold) {
|
|
299
|
+
this.swipeDistanceThreshold.setValue(swipeDistanceThreshold);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (prevProps.swipeVelocityThreshold !== swipeVelocityThreshold) {
|
|
303
|
+
this.swipeVelocityThreshold.setValue(swipeVelocityThreshold);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
componentWillUnmount() {
|
|
308
|
+
this.toggleStatusBar(false);
|
|
309
|
+
this.handleEndInteraction();
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
render() {
|
|
313
|
+
const {
|
|
314
|
+
open,
|
|
315
|
+
swipeEnabled,
|
|
316
|
+
drawerPosition,
|
|
317
|
+
drawerType,
|
|
318
|
+
swipeEdgeWidth,
|
|
319
|
+
drawerStyle,
|
|
320
|
+
overlayStyle,
|
|
321
|
+
renderDrawerContent,
|
|
322
|
+
renderSceneContent,
|
|
323
|
+
gestureHandlerProps
|
|
324
|
+
} = this.props;
|
|
325
|
+
const isOpen = drawerType === 'permanent' ? true : open;
|
|
326
|
+
const isRight = drawerPosition === 'right';
|
|
327
|
+
const contentTranslateX = drawerType === 'front' ? ANIMATED_ZERO : this.translateX;
|
|
328
|
+
const drawerTranslateX = drawerType === 'back' ? I18nManager.isRTL ? multiply(sub(this.containerWidth, this.drawerWidth), isRight ? 1 : -1) : ANIMATED_ZERO : this.translateX;
|
|
329
|
+
const offset = drawerType === 'back' ? 0 : I18nManager.isRTL ? '100%' : multiply(this.drawerWidth, -1); // FIXME: Currently hitSlop is broken when on Android when drawer is on right
|
|
330
|
+
// https://github.com/software-mansion/react-native-gesture-handler/issues/569
|
|
331
|
+
|
|
332
|
+
const hitSlop = isRight ? // Extend hitSlop to the side of the screen when drawer is closed
|
|
333
|
+
// This lets the user drag the drawer from the side of the screen
|
|
334
|
+
{
|
|
335
|
+
right: 0,
|
|
336
|
+
width: isOpen ? undefined : swipeEdgeWidth
|
|
337
|
+
} : {
|
|
338
|
+
left: 0,
|
|
339
|
+
width: isOpen ? undefined : swipeEdgeWidth
|
|
340
|
+
};
|
|
341
|
+
const progress = drawerType === 'permanent' ? ANIMATED_ONE : this.progress;
|
|
342
|
+
return /*#__PURE__*/React.createElement(DrawerProgressContext.Provider, {
|
|
343
|
+
value: progress
|
|
344
|
+
}, /*#__PURE__*/React.createElement(PanGestureHandler, _extends({
|
|
345
|
+
activeOffsetX: [-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM],
|
|
346
|
+
failOffsetY: [-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM],
|
|
347
|
+
onGestureEvent: this.handleGestureEvent,
|
|
348
|
+
onHandlerStateChange: this.handleGestureStateChange,
|
|
349
|
+
hitSlop: hitSlop,
|
|
350
|
+
enabled: drawerType !== 'permanent' && swipeEnabled
|
|
351
|
+
}, gestureHandlerProps), /*#__PURE__*/React.createElement(Animated.View, {
|
|
352
|
+
onLayout: this.handleContainerLayout,
|
|
353
|
+
style: [styles.main, {
|
|
354
|
+
flexDirection: drawerType === 'permanent' && !isRight ? 'row-reverse' : 'row'
|
|
355
|
+
}]
|
|
356
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
357
|
+
style: [styles.content, drawerType !== 'permanent' ? {
|
|
358
|
+
transform: [{
|
|
359
|
+
translateX: contentTranslateX
|
|
360
|
+
}]
|
|
361
|
+
} : undefined]
|
|
362
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
363
|
+
accessibilityElementsHidden: isOpen && drawerType !== 'permanent',
|
|
364
|
+
importantForAccessibility: isOpen && drawerType !== 'permanent' ? 'no-hide-descendants' : 'auto',
|
|
365
|
+
style: styles.content
|
|
366
|
+
}, renderSceneContent()), // Disable overlay if sidebar is permanent
|
|
367
|
+
drawerType === 'permanent' ? null : /*#__PURE__*/React.createElement(Overlay, {
|
|
368
|
+
progress: progress,
|
|
369
|
+
onPress: () => this.toggleDrawer(false),
|
|
370
|
+
style: overlayStyle
|
|
371
|
+
})), /*#__PURE__*/React.createElement(Animated.Code, {
|
|
372
|
+
// This is needed to make sure that container width updates with `setValue`
|
|
373
|
+
// Without this, it won't update when not used in styles
|
|
374
|
+
exec: this.containerWidth
|
|
375
|
+
}), drawerType === 'permanent' ? null : /*#__PURE__*/React.createElement(Animated.Code, {
|
|
376
|
+
exec: block([onChange(this.manuallyTriggerSpring, [cond(eq(this.manuallyTriggerSpring, TRUE), [set(this.nextIsOpen, FALSE), call([], () => this.currentOpenValue = false)])])])
|
|
377
|
+
}), /*#__PURE__*/React.createElement(Animated.View, {
|
|
378
|
+
accessibilityViewIsModal: isOpen && drawerType !== 'permanent',
|
|
379
|
+
removeClippedSubviews: Platform.OS !== 'ios',
|
|
380
|
+
onLayout: this.handleDrawerLayout,
|
|
381
|
+
style: [styles.container, drawerType === 'permanent' ? {
|
|
382
|
+
opacity: 1
|
|
383
|
+
} : {
|
|
384
|
+
transform: [{
|
|
385
|
+
translateX: drawerTranslateX
|
|
386
|
+
}],
|
|
387
|
+
opacity: this.drawerOpacity
|
|
388
|
+
}, drawerType === 'permanent' ? // Without this, the `left`/`right` values don't get reset
|
|
389
|
+
isRight ? {
|
|
390
|
+
right: 0
|
|
391
|
+
} : {
|
|
392
|
+
left: 0
|
|
393
|
+
} : [styles.nonPermanent, isRight ? {
|
|
394
|
+
right: offset
|
|
395
|
+
} : {
|
|
396
|
+
left: offset
|
|
397
|
+
}, {
|
|
398
|
+
zIndex: drawerType === 'back' ? -1 : 0
|
|
399
|
+
}], drawerStyle]
|
|
400
|
+
}, renderDrawerContent()))));
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
}
|
|
404
|
+
const styles = StyleSheet.create({
|
|
405
|
+
container: {
|
|
406
|
+
backgroundColor: 'white',
|
|
407
|
+
maxWidth: '100%'
|
|
408
|
+
},
|
|
409
|
+
nonPermanent: {
|
|
410
|
+
position: 'absolute',
|
|
411
|
+
top: 0,
|
|
412
|
+
bottom: 0,
|
|
413
|
+
width: DEFAULT_DRAWER_WIDTH
|
|
414
|
+
},
|
|
415
|
+
content: {
|
|
416
|
+
flex: 1
|
|
417
|
+
},
|
|
418
|
+
main: {
|
|
419
|
+
flex: 1,
|
|
420
|
+
...Platform.select({
|
|
421
|
+
// FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.
|
|
422
|
+
// But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.
|
|
423
|
+
web: null,
|
|
424
|
+
default: {
|
|
425
|
+
overflow: 'hidden'
|
|
426
|
+
}
|
|
427
|
+
})
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
//# sourceMappingURL=Drawer.js.map
|