@react-navigation/drawer 6.5.0 → 6.5.3
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/index.js.map +1 -1
- package/lib/commonjs/navigators/createDrawerNavigator.js +1 -1
- package/lib/commonjs/navigators/createDrawerNavigator.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/DrawerGestureContext.js.map +1 -1
- package/lib/commonjs/utils/DrawerPositionContext.js.map +1 -1
- package/lib/commonjs/utils/DrawerProgressContext.js.map +1 -1
- package/lib/commonjs/utils/DrawerStatusContext.js.map +1 -1
- package/lib/commonjs/utils/getDrawerStatusFromState.js.map +1 -1
- package/lib/commonjs/utils/useDrawerProgress.js.map +1 -1
- package/lib/commonjs/utils/useDrawerStatus.js.map +1 -1
- package/lib/commonjs/views/DrawerContent.js +1 -1
- package/lib/commonjs/views/DrawerContent.js.map +1 -1
- package/lib/commonjs/views/DrawerContentScrollView.js +1 -1
- package/lib/commonjs/views/DrawerContentScrollView.js.map +1 -1
- package/lib/commonjs/views/DrawerItem.js +1 -1
- package/lib/commonjs/views/DrawerItem.js.map +1 -1
- package/lib/commonjs/views/DrawerItemList.js.map +1 -1
- package/lib/commonjs/views/DrawerToggleButton.js +1 -1
- package/lib/commonjs/views/DrawerToggleButton.js.map +1 -1
- package/lib/commonjs/views/DrawerView.js +1 -1
- package/lib/commonjs/views/DrawerView.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.android.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.ios.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.js.map +1 -1
- package/lib/commonjs/views/GestureHandlerNative.js.map +1 -1
- package/lib/commonjs/views/ScreenFallback.js +1 -1
- package/lib/commonjs/views/ScreenFallback.js.map +1 -1
- package/lib/commonjs/views/legacy/Drawer.js +1 -1
- package/lib/commonjs/views/legacy/Drawer.js.map +1 -1
- package/lib/commonjs/views/legacy/Overlay.js +1 -1
- package/lib/commonjs/views/legacy/Overlay.js.map +1 -1
- package/lib/commonjs/views/modern/Drawer.js +10 -3
- package/lib/commonjs/views/modern/Drawer.js.map +1 -1
- package/lib/commonjs/views/modern/Overlay.js +1 -1
- package/lib/commonjs/views/modern/Overlay.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createDrawerNavigator.js +1 -1
- package/lib/module/navigators/createDrawerNavigator.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/DrawerGestureContext.js.map +1 -1
- package/lib/module/utils/DrawerPositionContext.js.map +1 -1
- package/lib/module/utils/DrawerProgressContext.js.map +1 -1
- package/lib/module/utils/DrawerStatusContext.js.map +1 -1
- package/lib/module/utils/getDrawerStatusFromState.js.map +1 -1
- package/lib/module/utils/useDrawerProgress.js.map +1 -1
- package/lib/module/utils/useDrawerStatus.js.map +1 -1
- package/lib/module/views/DrawerContent.js +1 -1
- package/lib/module/views/DrawerContent.js.map +1 -1
- package/lib/module/views/DrawerContentScrollView.js +1 -1
- package/lib/module/views/DrawerContentScrollView.js.map +1 -1
- package/lib/module/views/DrawerItem.js +1 -1
- package/lib/module/views/DrawerItem.js.map +1 -1
- package/lib/module/views/DrawerItemList.js.map +1 -1
- package/lib/module/views/DrawerToggleButton.js +1 -1
- package/lib/module/views/DrawerToggleButton.js.map +1 -1
- package/lib/module/views/DrawerView.js +1 -1
- package/lib/module/views/DrawerView.js.map +1 -1
- package/lib/module/views/GestureHandler.android.js.map +1 -1
- package/lib/module/views/GestureHandler.ios.js.map +1 -1
- package/lib/module/views/GestureHandler.js.map +1 -1
- package/lib/module/views/GestureHandlerNative.js.map +1 -1
- package/lib/module/views/ScreenFallback.js +1 -1
- package/lib/module/views/ScreenFallback.js.map +1 -1
- package/lib/module/views/legacy/Drawer.js +1 -1
- package/lib/module/views/legacy/Drawer.js.map +1 -1
- package/lib/module/views/legacy/Overlay.js +1 -1
- package/lib/module/views/legacy/Overlay.js.map +1 -1
- package/lib/module/views/modern/Drawer.js +10 -3
- package/lib/module/views/modern/Drawer.js.map +1 -1
- package/lib/module/views/modern/Overlay.js +1 -1
- package/lib/module/views/modern/Overlay.js.map +1 -1
- package/package.json +5 -5
- package/src/views/modern/Drawer.tsx +10 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Drawer.tsx"],"names":["Clock","Value","onChange","clockRunning","startClock","stopClock","spring","abs","add","and","block","call","cond","divide","eq","event","greaterThan","lessThan","max","min","multiply","neq","or","set","sub","Animated","TRUE","FALSE","NOOP","UNSET","DIRECTION_LEFT","DIRECTION_RIGHT","SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","SPRING_CONFIG","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","ANIMATED_ZERO","ANIMATED_ONE","DrawerView","React","Component","interactionHandle","undefined","InteractionManager","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","GestureState","UNDETERMINED","initialDrawerWidth","drawerPosition","isDrawerTypeFront","touchX","gestureX","drawerWidth","containerWidth","swipeDistanceThreshold","swipeVelocityThreshold","isOpen","toValue","frameTime","state","position","time","finished","velocity","clock","velocityX","handleStartInteraction","manuallyTriggerSpring","offsetX","value","Boolean","handleEndInteraction","toggleDrawer","currentOpenValue","onOpen","onClose","pendingOpenValue","forceUpdate","nextIsOpen","isSwiping","keyboardDismissMode","Keyboard","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","StatusBar","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","I18nManager","getConstants","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","Platform","OS","handleDrawerLayout","container","opacity","nonPermanent","zIndex","create","backgroundColor","maxWidth","top","bottom","flex","select","web","default","overflow"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n LayoutChangeEvent,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport { GestureState, PanGestureHandler } from '../GestureHandler';\nimport Overlay from './Overlay';\n\nconst {\n Clock,\n Value,\n onChange,\n clockRunning,\n startClock,\n stopClock,\n spring,\n abs,\n add,\n and,\n block,\n call,\n cond,\n divide,\n eq,\n event,\n greaterThan,\n lessThan,\n max,\n min,\n multiply,\n neq,\n or,\n set,\n sub,\n} = Animated;\n\nconst TRUE = 1;\nconst FALSE = 0;\nconst NOOP = 0;\nconst UNSET = -1;\n\nconst DIRECTION_LEFT = 1;\nconst DIRECTION_RIGHT = -1;\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\n\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst SPRING_CONFIG = {\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n};\n\nconst ANIMATED_ZERO = new Animated.Value(0);\nconst ANIMATED_ONE = new Animated.Value(1);\n\ntype Binary = 0 | 1;\n\nexport default class DrawerView extends React.Component<DrawerProps> {\n componentDidUpdate(prevProps: DrawerProps) {\n const {\n open,\n drawerPosition,\n drawerType,\n swipeDistanceThreshold,\n swipeVelocityThreshold,\n hideStatusBarOnOpen: hideStatusBar,\n } = this.props;\n\n if (\n // If we're not in the middle of a transition, sync the drawer's open state\n typeof this.pendingOpenValue !== 'boolean' ||\n open !== this.pendingOpenValue\n ) {\n this.toggleDrawer(open);\n }\n\n this.pendingOpenValue = undefined;\n\n if (open !== prevProps.open && hideStatusBar) {\n this.toggleStatusBar(open);\n }\n\n if (prevProps.drawerPosition !== drawerPosition) {\n this.drawerPosition.setValue(\n drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n }\n\n if (prevProps.drawerType !== drawerType) {\n this.isDrawerTypeFront.setValue(drawerType === 'front' ? TRUE : FALSE);\n }\n\n if (prevProps.swipeDistanceThreshold !== swipeDistanceThreshold) {\n this.swipeDistanceThreshold.setValue(swipeDistanceThreshold);\n }\n\n if (prevProps.swipeVelocityThreshold !== swipeVelocityThreshold) {\n this.swipeVelocityThreshold.setValue(swipeVelocityThreshold);\n }\n }\n\n componentWillUnmount() {\n this.toggleStatusBar(false);\n this.handleEndInteraction();\n }\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private getDrawerWidth = (): number => {\n const { drawerStyle, dimensions } = this.props;\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n private clock = new Clock();\n private interactionHandle: number | undefined;\n\n private isDrawerTypeFront = new Value<Binary>(\n this.props.drawerType === 'front' ? TRUE : FALSE\n );\n\n private isOpen = new Value<Binary>(this.props.open ? TRUE : FALSE);\n private nextIsOpen = new Value<Binary | -1>(UNSET);\n private isSwiping = new Value<Binary>(FALSE);\n\n private initialDrawerWidth = this.getDrawerWidth();\n\n private gestureState = new Value<number>(GestureState.UNDETERMINED);\n private touchX = new Value<number>(0);\n private velocityX = new Value<number>(0);\n private gestureX = new Value<number>(0);\n private offsetX = new Value<number>(0);\n private position = new Value<number>(\n this.props.open\n ? this.initialDrawerWidth *\n (this.props.drawerPosition === 'right'\n ? DIRECTION_RIGHT\n : DIRECTION_LEFT)\n : 0\n );\n\n private containerWidth = new Value<number>(this.props.dimensions.width);\n private drawerWidth = new Value<number>(this.initialDrawerWidth);\n private drawerOpacity = new Value<number>(\n this.props.drawerType === 'permanent' ? 1 : 0\n );\n private drawerPosition = new Value<number>(\n this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the dragX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n private touchDistanceFromDrawer = cond(\n this.isDrawerTypeFront,\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n max(\n // Distance of touch start from left screen edge - Drawer width\n sub(sub(this.touchX, this.gestureX), this.drawerWidth),\n 0\n ),\n min(\n multiply(\n // Distance of drawer from left screen edge - Touch start point\n sub(\n sub(this.containerWidth, this.drawerWidth),\n sub(this.touchX, this.gestureX)\n ),\n DIRECTION_RIGHT\n ),\n 0\n )\n ),\n 0\n );\n\n private swipeDistanceThreshold = new Value<number>(\n this.props.swipeDistanceThreshold\n );\n private swipeVelocityThreshold = new Value<number>(\n this.props.swipeVelocityThreshold\n );\n\n private currentOpenValue: boolean = this.props.open;\n private pendingOpenValue: boolean | undefined;\n\n private isStatusBarHidden: boolean = false;\n\n private manuallyTriggerSpring = new Value<Binary>(FALSE);\n\n private transitionTo = (isOpen: number | Animated.Node<number>) => {\n const toValue = new Value(0);\n const frameTime = new Value(0);\n\n const state = {\n position: this.position,\n time: new Value(0),\n finished: new Value(FALSE),\n velocity: new Value(0),\n };\n\n return block([\n cond(clockRunning(this.clock), NOOP, [\n // Animation wasn't running before\n // Set the initial values and start the clock\n set(toValue, multiply(isOpen, this.drawerWidth, this.drawerPosition)),\n set(frameTime, 0),\n set(state.time, 0),\n set(state.finished, FALSE),\n set(state.velocity, this.velocityX),\n set(this.isOpen, isOpen),\n startClock(this.clock),\n call([], this.handleStartInteraction),\n set(this.manuallyTriggerSpring, FALSE),\n ]),\n spring(this.clock, state, { ...SPRING_CONFIG, toValue }),\n cond(state.finished, [\n // Reset gesture and velocity from previous gesture\n set(this.touchX, 0),\n set(this.gestureX, 0),\n set(this.velocityX, 0),\n set(this.offsetX, 0),\n // When the animation finishes, stop the clock\n stopClock(this.clock),\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n this.handleEndInteraction();\n\n if (open !== this.props.open) {\n // Sync drawer's state after animation finished\n // This shouldn't be necessary, but there seems to be an issue on iOS\n this.toggleDrawer(this.props.open);\n }\n }),\n ]),\n ]);\n };\n\n private dragX = block([\n onChange(\n this.isOpen,\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n\n this.currentOpenValue = open;\n\n // Without this check, the drawer can go to an infinite update <-> animate loop for sync updates\n if (open !== this.props.open) {\n // If the mode changed, update state\n if (open) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n\n this.pendingOpenValue = open;\n\n // Force componentDidUpdate to fire, whether user does a setState or not\n // This allows us to detect when the user drops the update and revert back\n // It's necessary to make sure that the state stays in sync\n this.forceUpdate();\n }\n })\n ),\n onChange(\n this.nextIsOpen,\n cond(neq(this.nextIsOpen, UNSET), [\n // Stop any running animations\n cond(clockRunning(this.clock), stopClock(this.clock)),\n // Update the open value to trigger the transition\n set(this.isOpen, this.nextIsOpen),\n set(this.gestureX, 0),\n set(this.nextIsOpen, UNSET),\n ])\n ),\n // This block must be after the this.isOpen listener since we check for current value\n onChange(\n this.isSwiping,\n // Listen to updates for this value only when it changes\n // Without `onChange`, this will fire even if the value didn't change\n // We don't want to call the listeners if the value didn't change\n call([this.isSwiping], ([value]: readonly Binary[]) => {\n const { keyboardDismissMode } = this.props;\n\n if (value === TRUE) {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n\n this.toggleStatusBar(true);\n } else {\n this.toggleStatusBar(this.currentOpenValue);\n }\n })\n ),\n onChange(\n this.gestureState,\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n call([], this.handleStartInteraction)\n )\n ),\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n [\n cond(this.isSwiping, NOOP, [\n // We weren't dragging before, set it to true\n set(this.isSwiping, TRUE),\n // Also update the drag offset to the last position\n set(this.offsetX, this.position),\n ]),\n // Update position with previous offset + gesture distance\n set(\n this.position,\n add(this.offsetX, this.gestureX, this.touchDistanceFromDrawer)\n ),\n // Stop animations while we're dragging\n stopClock(this.clock),\n ],\n [\n set(this.isSwiping, FALSE),\n set(this.touchX, 0),\n this.transitionTo(\n cond(\n this.manuallyTriggerSpring,\n this.isOpen,\n cond(\n or(\n and(\n greaterThan(abs(this.gestureX), SWIPE_DISTANCE_MINIMUM),\n greaterThan(abs(this.velocityX), this.swipeVelocityThreshold)\n ),\n greaterThan(abs(this.gestureX), this.swipeDistanceThreshold)\n ),\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n // If swiped to right, open the drawer, otherwise close it\n greaterThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n ),\n // If swiped to left, open the drawer, otherwise close it\n lessThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n )\n ),\n this.isOpen\n )\n )\n ),\n ]\n ),\n this.position,\n ]);\n\n private translateX = cond(\n eq(this.drawerPosition, DIRECTION_RIGHT),\n min(max(multiply(this.drawerWidth, -1), this.dragX), 0),\n max(min(this.drawerWidth, this.dragX), 0)\n );\n\n private progress = cond(\n // Check if the drawer width is available to avoid division by zero\n eq(this.drawerWidth, 0),\n 0,\n abs(divide(this.translateX, this.drawerWidth))\n );\n\n private handleGestureEvent = event([\n {\n nativeEvent: {\n x: this.touchX,\n translationX: this.gestureX,\n velocityX: this.velocityX,\n },\n },\n ]);\n\n private handleGestureStateChange = event([\n {\n nativeEvent: {\n state: (s: Animated.Value<number>) => set(this.gestureState, s),\n },\n },\n ]);\n\n private handleContainerLayout = (e: LayoutChangeEvent) =>\n this.containerWidth.setValue(e.nativeEvent.layout.width);\n\n private handleDrawerLayout = (e: LayoutChangeEvent) => {\n this.drawerWidth.setValue(e.nativeEvent.layout.width);\n this.toggleDrawer(this.props.open);\n\n // Until layout is available, drawer is hidden with opacity: 0 by default\n // Show it in the next frame when layout is available\n // If we don't delay it until the next frame, there's a visible flicker\n requestAnimationFrame(() =>\n requestAnimationFrame(() => this.drawerOpacity.setValue(1))\n );\n };\n\n private toggleDrawer = (open: boolean) => {\n if (this.currentOpenValue !== open) {\n this.nextIsOpen.setValue(open ? TRUE : FALSE);\n\n // This value will also be set shortly after as changing this.nextIsOpen changes this.isOpen\n // However, there's a race condition on Android, so we need to set a bit earlier\n this.currentOpenValue = open;\n }\n };\n\n private toggleStatusBar = (hidden: boolean) => {\n const { hideStatusBarOnOpen: hideStatusBar, statusBarAnimation } =\n this.props;\n\n if (hideStatusBar && this.isStatusBarHidden !== hidden) {\n this.isStatusBarHidden = hidden;\n StatusBar.setHidden(hidden, statusBarAnimation);\n }\n };\n\n render() {\n const {\n open,\n swipeEnabled,\n drawerPosition,\n drawerType,\n swipeEdgeWidth,\n drawerStyle,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n gestureHandlerProps,\n } = this.props;\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const contentTranslateX =\n drawerType === 'front' ? ANIMATED_ZERO : this.translateX;\n\n const drawerTranslateX =\n drawerType === 'back'\n ? I18nManager.getConstants().isRTL\n ? multiply(\n sub(this.containerWidth, this.drawerWidth),\n isRight ? 1 : -1\n )\n : ANIMATED_ZERO\n : this.translateX;\n\n const offset =\n drawerType === 'back'\n ? 0\n : I18nManager.getConstants().isRTL\n ? '100%'\n : multiply(this.drawerWidth, -1);\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const progress = drawerType === 'permanent' ? ANIMATED_ONE : this.progress;\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n onGestureEvent={this.handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n {...gestureHandlerProps}\n >\n <Animated.View\n onLayout={this.handleContainerLayout}\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight\n ? 'row-reverse'\n : 'row',\n },\n ]}\n >\n <Animated.View\n style={[\n styles.content,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: contentTranslateX }],\n },\n ]}\n >\n <View\n accessibilityElementsHidden={\n isOpen && drawerType !== 'permanent'\n }\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {\n // Disable overlay if sidebar is permanent\n drawerType === 'permanent' ? null : (\n <Overlay\n progress={progress}\n onPress={() => this.toggleDrawer(false)}\n style={overlayStyle as any}\n accessibilityElementsHidden={!isOpen}\n importantForAccessibility={\n isOpen ? 'auto' : 'no-hide-descendants'\n }\n />\n )\n }\n </Animated.View>\n <Animated.Code\n // This is needed to make sure that container width updates with `setValue`\n // Without this, it won't update when not used in styles\n exec={this.containerWidth}\n />\n {drawerType === 'permanent' ? null : (\n <Animated.Code\n exec={block([\n onChange(this.manuallyTriggerSpring, [\n cond(eq(this.manuallyTriggerSpring, TRUE), [\n set(this.nextIsOpen, FALSE),\n call([], () => (this.currentOpenValue = false)),\n ]),\n ]),\n ])}\n />\n )}\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n onLayout={this.handleDrawerLayout}\n style={[\n styles.container,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: drawerTranslateX }],\n opacity: this.drawerOpacity,\n },\n drawerType === 'permanent'\n ? // Without this, the `left`/`right` values don't get reset\n isRight\n ? { right: 0 }\n : { left: 0 }\n : [\n styles.nonPermanent,\n isRight ? { right: offset } : { left: offset },\n { zIndex: drawerType === 'back' ? -1 : 0 },\n ],\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'white',\n maxWidth: '100%',\n },\n nonPermanent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"]}
|
|
1
|
+
{"version":3,"names":["Clock","Value","onChange","clockRunning","startClock","stopClock","spring","abs","add","and","block","call","cond","divide","eq","event","greaterThan","lessThan","max","min","multiply","neq","or","set","sub","Animated","TRUE","FALSE","NOOP","UNSET","DIRECTION_LEFT","DIRECTION_RIGHT","SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","SPRING_CONFIG","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","ANIMATED_ZERO","ANIMATED_ONE","DrawerView","React","Component","interactionHandle","undefined","InteractionManager","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","GestureState","UNDETERMINED","initialDrawerWidth","drawerPosition","isDrawerTypeFront","touchX","gestureX","drawerWidth","containerWidth","swipeDistanceThreshold","swipeVelocityThreshold","isOpen","toValue","frameTime","state","position","time","finished","velocity","clock","velocityX","handleStartInteraction","manuallyTriggerSpring","offsetX","value","Boolean","handleEndInteraction","toggleDrawer","currentOpenValue","onOpen","onClose","pendingOpenValue","forceUpdate","nextIsOpen","isSwiping","keyboardDismissMode","Keyboard","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","StatusBar","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","I18nManager","getConstants","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","Platform","OS","handleDrawerLayout","container","opacity","nonPermanent","zIndex","create","backgroundColor","maxWidth","top","bottom","flex","select","web","default","overflow"],"sources":["Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n LayoutChangeEvent,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport { GestureState, PanGestureHandler } from '../GestureHandler';\nimport Overlay from './Overlay';\n\nconst {\n Clock,\n Value,\n onChange,\n clockRunning,\n startClock,\n stopClock,\n spring,\n abs,\n add,\n and,\n block,\n call,\n cond,\n divide,\n eq,\n event,\n greaterThan,\n lessThan,\n max,\n min,\n multiply,\n neq,\n or,\n set,\n sub,\n} = Animated;\n\nconst TRUE = 1;\nconst FALSE = 0;\nconst NOOP = 0;\nconst UNSET = -1;\n\nconst DIRECTION_LEFT = 1;\nconst DIRECTION_RIGHT = -1;\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\n\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst SPRING_CONFIG = {\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n};\n\nconst ANIMATED_ZERO = new Animated.Value(0);\nconst ANIMATED_ONE = new Animated.Value(1);\n\ntype Binary = 0 | 1;\n\nexport default class DrawerView extends React.Component<DrawerProps> {\n componentDidUpdate(prevProps: DrawerProps) {\n const {\n open,\n drawerPosition,\n drawerType,\n swipeDistanceThreshold,\n swipeVelocityThreshold,\n hideStatusBarOnOpen: hideStatusBar,\n } = this.props;\n\n if (\n // If we're not in the middle of a transition, sync the drawer's open state\n typeof this.pendingOpenValue !== 'boolean' ||\n open !== this.pendingOpenValue\n ) {\n this.toggleDrawer(open);\n }\n\n this.pendingOpenValue = undefined;\n\n if (open !== prevProps.open && hideStatusBar) {\n this.toggleStatusBar(open);\n }\n\n if (prevProps.drawerPosition !== drawerPosition) {\n this.drawerPosition.setValue(\n drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n }\n\n if (prevProps.drawerType !== drawerType) {\n this.isDrawerTypeFront.setValue(drawerType === 'front' ? TRUE : FALSE);\n }\n\n if (prevProps.swipeDistanceThreshold !== swipeDistanceThreshold) {\n this.swipeDistanceThreshold.setValue(swipeDistanceThreshold);\n }\n\n if (prevProps.swipeVelocityThreshold !== swipeVelocityThreshold) {\n this.swipeVelocityThreshold.setValue(swipeVelocityThreshold);\n }\n }\n\n componentWillUnmount() {\n this.toggleStatusBar(false);\n this.handleEndInteraction();\n }\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private getDrawerWidth = (): number => {\n const { drawerStyle, dimensions } = this.props;\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n private clock = new Clock();\n private interactionHandle: number | undefined;\n\n private isDrawerTypeFront = new Value<Binary>(\n this.props.drawerType === 'front' ? TRUE : FALSE\n );\n\n private isOpen = new Value<Binary>(this.props.open ? TRUE : FALSE);\n private nextIsOpen = new Value<Binary | -1>(UNSET);\n private isSwiping = new Value<Binary>(FALSE);\n\n private initialDrawerWidth = this.getDrawerWidth();\n\n private gestureState = new Value<number>(GestureState.UNDETERMINED);\n private touchX = new Value<number>(0);\n private velocityX = new Value<number>(0);\n private gestureX = new Value<number>(0);\n private offsetX = new Value<number>(0);\n private position = new Value<number>(\n this.props.open\n ? this.initialDrawerWidth *\n (this.props.drawerPosition === 'right'\n ? DIRECTION_RIGHT\n : DIRECTION_LEFT)\n : 0\n );\n\n private containerWidth = new Value<number>(this.props.dimensions.width);\n private drawerWidth = new Value<number>(this.initialDrawerWidth);\n private drawerOpacity = new Value<number>(\n this.props.drawerType === 'permanent' ? 1 : 0\n );\n private drawerPosition = new Value<number>(\n this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the dragX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n private touchDistanceFromDrawer = cond(\n this.isDrawerTypeFront,\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n max(\n // Distance of touch start from left screen edge - Drawer width\n sub(sub(this.touchX, this.gestureX), this.drawerWidth),\n 0\n ),\n min(\n multiply(\n // Distance of drawer from left screen edge - Touch start point\n sub(\n sub(this.containerWidth, this.drawerWidth),\n sub(this.touchX, this.gestureX)\n ),\n DIRECTION_RIGHT\n ),\n 0\n )\n ),\n 0\n );\n\n private swipeDistanceThreshold = new Value<number>(\n this.props.swipeDistanceThreshold\n );\n private swipeVelocityThreshold = new Value<number>(\n this.props.swipeVelocityThreshold\n );\n\n private currentOpenValue: boolean = this.props.open;\n private pendingOpenValue: boolean | undefined;\n\n private isStatusBarHidden: boolean = false;\n\n private manuallyTriggerSpring = new Value<Binary>(FALSE);\n\n private transitionTo = (isOpen: number | Animated.Node<number>) => {\n const toValue = new Value(0);\n const frameTime = new Value(0);\n\n const state = {\n position: this.position,\n time: new Value(0),\n finished: new Value(FALSE),\n velocity: new Value(0),\n };\n\n return block([\n cond(clockRunning(this.clock), NOOP, [\n // Animation wasn't running before\n // Set the initial values and start the clock\n set(toValue, multiply(isOpen, this.drawerWidth, this.drawerPosition)),\n set(frameTime, 0),\n set(state.time, 0),\n set(state.finished, FALSE),\n set(state.velocity, this.velocityX),\n set(this.isOpen, isOpen),\n startClock(this.clock),\n call([], this.handleStartInteraction),\n set(this.manuallyTriggerSpring, FALSE),\n ]),\n spring(this.clock, state, { ...SPRING_CONFIG, toValue }),\n cond(state.finished, [\n // Reset gesture and velocity from previous gesture\n set(this.touchX, 0),\n set(this.gestureX, 0),\n set(this.velocityX, 0),\n set(this.offsetX, 0),\n // When the animation finishes, stop the clock\n stopClock(this.clock),\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n this.handleEndInteraction();\n\n if (open !== this.props.open) {\n // Sync drawer's state after animation finished\n // This shouldn't be necessary, but there seems to be an issue on iOS\n this.toggleDrawer(this.props.open);\n }\n }),\n ]),\n ]);\n };\n\n private dragX = block([\n onChange(\n this.isOpen,\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n\n this.currentOpenValue = open;\n\n // Without this check, the drawer can go to an infinite update <-> animate loop for sync updates\n if (open !== this.props.open) {\n // If the mode changed, update state\n if (open) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n\n this.pendingOpenValue = open;\n\n // Force componentDidUpdate to fire, whether user does a setState or not\n // This allows us to detect when the user drops the update and revert back\n // It's necessary to make sure that the state stays in sync\n this.forceUpdate();\n }\n })\n ),\n onChange(\n this.nextIsOpen,\n cond(neq(this.nextIsOpen, UNSET), [\n // Stop any running animations\n cond(clockRunning(this.clock), stopClock(this.clock)),\n // Update the open value to trigger the transition\n set(this.isOpen, this.nextIsOpen),\n set(this.gestureX, 0),\n set(this.nextIsOpen, UNSET),\n ])\n ),\n // This block must be after the this.isOpen listener since we check for current value\n onChange(\n this.isSwiping,\n // Listen to updates for this value only when it changes\n // Without `onChange`, this will fire even if the value didn't change\n // We don't want to call the listeners if the value didn't change\n call([this.isSwiping], ([value]: readonly Binary[]) => {\n const { keyboardDismissMode } = this.props;\n\n if (value === TRUE) {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n\n this.toggleStatusBar(true);\n } else {\n this.toggleStatusBar(this.currentOpenValue);\n }\n })\n ),\n onChange(\n this.gestureState,\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n call([], this.handleStartInteraction)\n )\n ),\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n [\n cond(this.isSwiping, NOOP, [\n // We weren't dragging before, set it to true\n set(this.isSwiping, TRUE),\n // Also update the drag offset to the last position\n set(this.offsetX, this.position),\n ]),\n // Update position with previous offset + gesture distance\n set(\n this.position,\n add(this.offsetX, this.gestureX, this.touchDistanceFromDrawer)\n ),\n // Stop animations while we're dragging\n stopClock(this.clock),\n ],\n [\n set(this.isSwiping, FALSE),\n set(this.touchX, 0),\n this.transitionTo(\n cond(\n this.manuallyTriggerSpring,\n this.isOpen,\n cond(\n or(\n and(\n greaterThan(abs(this.gestureX), SWIPE_DISTANCE_MINIMUM),\n greaterThan(abs(this.velocityX), this.swipeVelocityThreshold)\n ),\n greaterThan(abs(this.gestureX), this.swipeDistanceThreshold)\n ),\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n // If swiped to right, open the drawer, otherwise close it\n greaterThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n ),\n // If swiped to left, open the drawer, otherwise close it\n lessThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n )\n ),\n this.isOpen\n )\n )\n ),\n ]\n ),\n this.position,\n ]);\n\n private translateX = cond(\n eq(this.drawerPosition, DIRECTION_RIGHT),\n min(max(multiply(this.drawerWidth, -1), this.dragX), 0),\n max(min(this.drawerWidth, this.dragX), 0)\n );\n\n private progress = cond(\n // Check if the drawer width is available to avoid division by zero\n eq(this.drawerWidth, 0),\n 0,\n abs(divide(this.translateX, this.drawerWidth))\n );\n\n private handleGestureEvent = event([\n {\n nativeEvent: {\n x: this.touchX,\n translationX: this.gestureX,\n velocityX: this.velocityX,\n },\n },\n ]);\n\n private handleGestureStateChange = event([\n {\n nativeEvent: {\n state: (s: Animated.Value<number>) => set(this.gestureState, s),\n },\n },\n ]);\n\n private handleContainerLayout = (e: LayoutChangeEvent) =>\n this.containerWidth.setValue(e.nativeEvent.layout.width);\n\n private handleDrawerLayout = (e: LayoutChangeEvent) => {\n this.drawerWidth.setValue(e.nativeEvent.layout.width);\n this.toggleDrawer(this.props.open);\n\n // Until layout is available, drawer is hidden with opacity: 0 by default\n // Show it in the next frame when layout is available\n // If we don't delay it until the next frame, there's a visible flicker\n requestAnimationFrame(() =>\n requestAnimationFrame(() => this.drawerOpacity.setValue(1))\n );\n };\n\n private toggleDrawer = (open: boolean) => {\n if (this.currentOpenValue !== open) {\n this.nextIsOpen.setValue(open ? TRUE : FALSE);\n\n // This value will also be set shortly after as changing this.nextIsOpen changes this.isOpen\n // However, there's a race condition on Android, so we need to set a bit earlier\n this.currentOpenValue = open;\n }\n };\n\n private toggleStatusBar = (hidden: boolean) => {\n const { hideStatusBarOnOpen: hideStatusBar, statusBarAnimation } =\n this.props;\n\n if (hideStatusBar && this.isStatusBarHidden !== hidden) {\n this.isStatusBarHidden = hidden;\n StatusBar.setHidden(hidden, statusBarAnimation);\n }\n };\n\n render() {\n const {\n open,\n swipeEnabled,\n drawerPosition,\n drawerType,\n swipeEdgeWidth,\n drawerStyle,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n gestureHandlerProps,\n } = this.props;\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const contentTranslateX =\n drawerType === 'front' ? ANIMATED_ZERO : this.translateX;\n\n const drawerTranslateX =\n drawerType === 'back'\n ? I18nManager.getConstants().isRTL\n ? multiply(\n sub(this.containerWidth, this.drawerWidth),\n isRight ? 1 : -1\n )\n : ANIMATED_ZERO\n : this.translateX;\n\n const offset =\n drawerType === 'back'\n ? 0\n : I18nManager.getConstants().isRTL\n ? '100%'\n : multiply(this.drawerWidth, -1);\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const progress = drawerType === 'permanent' ? ANIMATED_ONE : this.progress;\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n onGestureEvent={this.handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n {...gestureHandlerProps}\n >\n <Animated.View\n onLayout={this.handleContainerLayout}\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight\n ? 'row-reverse'\n : 'row',\n },\n ]}\n >\n <Animated.View\n style={[\n styles.content,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: contentTranslateX }],\n },\n ]}\n >\n <View\n accessibilityElementsHidden={\n isOpen && drawerType !== 'permanent'\n }\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {\n // Disable overlay if sidebar is permanent\n drawerType === 'permanent' ? null : (\n <Overlay\n progress={progress}\n onPress={() => this.toggleDrawer(false)}\n style={overlayStyle as any}\n accessibilityElementsHidden={!isOpen}\n importantForAccessibility={\n isOpen ? 'auto' : 'no-hide-descendants'\n }\n />\n )\n }\n </Animated.View>\n <Animated.Code\n // This is needed to make sure that container width updates with `setValue`\n // Without this, it won't update when not used in styles\n exec={this.containerWidth}\n />\n {drawerType === 'permanent' ? null : (\n <Animated.Code\n exec={block([\n onChange(this.manuallyTriggerSpring, [\n cond(eq(this.manuallyTriggerSpring, TRUE), [\n set(this.nextIsOpen, FALSE),\n call([], () => (this.currentOpenValue = false)),\n ]),\n ]),\n ])}\n />\n )}\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n onLayout={this.handleDrawerLayout}\n style={[\n styles.container,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: drawerTranslateX }],\n opacity: this.drawerOpacity,\n },\n drawerType === 'permanent'\n ? // Without this, the `left`/`right` values don't get reset\n isRight\n ? { right: 0 }\n : { left: 0 }\n : [\n styles.nonPermanent,\n isRight ? { right: offset } : { left: offset },\n { zIndex: drawerType === 'back' ? -1 : 0 },\n ],\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'white',\n maxWidth: '100%',\n },\n nonPermanent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
19
|
|
|
20
|
-
function _extends() { _extends = Object.assign
|
|
20
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
21
21
|
|
|
22
22
|
const {
|
|
23
23
|
// @ts-expect-error: this is to support reanimated 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["interpolate","interpolateDeprecated","interpolateNode","cond","greaterThan","Animated","PROGRESS_EPSILON","Overlay","React","forwardRef","ref","progress","onPress","style","props","animatedStyle","opacity","inputRange","Platform","OS","outputRange","zIndex","styles","overlay","overlayStyle","pressable","select","web","WebkitTapHighlightColor","default","StyleSheet","create","absoluteFillObject","backgroundColor","flex"],"sources":["Overlay.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Platform, Pressable, StyleSheet } from 'react-native';\nimport Animated from 'react-native-reanimated';\n\nconst {\n // @ts-expect-error: this is to support reanimated 1\n interpolate: interpolateDeprecated,\n interpolateNode,\n cond,\n greaterThan,\n} = Animated;\n\nconst interpolate: typeof interpolateNode =\n interpolateNode ?? interpolateDeprecated;\n\nconst PROGRESS_EPSILON = 0.05;\n\ntype Props = React.ComponentProps<typeof Animated.View> & {\n progress: Animated.Node<number>;\n onPress: () => void;\n};\n\nconst Overlay = React.forwardRef(function Overlay(\n { progress, onPress, style, ...props }: Props,\n ref: React.Ref<Animated.View>\n) {\n const animatedStyle = {\n opacity: interpolate(progress, {\n // Default input range is [PROGRESS_EPSILON, 1]\n // On Windows, the output value is 1 when input value is out of range for some reason\n // The default value 0 will be interpolated to 1 in this case, which is not what we want.\n // Therefore changing input range on Windows to [0,1] instead.\n inputRange:\n Platform.OS === 'windows' || Platform.OS === 'macos'\n ? [0, 1]\n : [PROGRESS_EPSILON, 1],\n outputRange: [0, 1],\n }),\n // We don't want the user to be able to press through the overlay when drawer is open\n // One approach is to adjust the pointerEvents based on the progress\n // But we can also send the overlay behind the screen, which works, and is much less code\n zIndex: cond(greaterThan(progress, PROGRESS_EPSILON), 0, -1),\n };\n\n return (\n <Animated.View\n {...props}\n ref={ref}\n style={[styles.overlay, overlayStyle, animatedStyle, style]}\n >\n <Pressable onPress={onPress} style={styles.pressable} />\n </Animated.View>\n );\n});\n\nconst overlayStyle = Platform.select<Record<string, string>>({\n web: {\n // Disable touch highlight on mobile Safari.\n // WebkitTapHighlightColor must be used outside of StyleSheet.create because react-native-web will omit the property.\n WebkitTapHighlightColor: 'transparent',\n },\n default: {},\n});\n\nconst styles = StyleSheet.create({\n overlay: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n pressable: {\n flex: 1,\n },\n});\n\nexport default Overlay;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEA,MAAM;EACJ;EACAA,WAAW,EAAEC,qBAFT;EAGJC,eAHI;EAIJC,IAJI;EAKJC;AALI,IAMFC,8BANJ;AAQA,MAAML,WAAmC,GACvCE,eADuC,aACvCA,eADuC,cACvCA,eADuC,GACpBD,qBADrB;AAGA,MAAMK,gBAAgB,GAAG,IAAzB;AAOA,MAAMC,OAAO,gBAAGC,KAAK,CAACC,UAAN,CAAiB,SAASF,OAAT,OAE/BG,GAF+B,EAG/B;EAAA,IAFA;IAAEC,QAAF;IAAYC,OAAZ;IAAqBC,KAArB;IAA4B,GAAGC;EAA/B,CAEA;EACA,MAAMC,aAAa,GAAG;IACpBC,OAAO,EAAEhB,WAAW,CAACW,QAAD,EAAW;MAC7B;MACA;MACA;MACA;MACAM,UAAU,EACRC,qBAAA,CAASC,EAAT,KAAgB,SAAhB,IAA6BD,qBAAA,CAASC,EAAT,KAAgB,OAA7C,GACI,CAAC,CAAD,EAAI,CAAJ,CADJ,GAEI,CAACb,gBAAD,EAAmB,CAAnB,CARuB;MAS7Bc,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ;IATgB,CAAX,CADA;IAYpB;IACA;IACA;IACAC,MAAM,EAAElB,IAAI,CAACC,WAAW,CAACO,QAAD,EAAWL,gBAAX,CAAZ,EAA0C,CAA1C,EAA6C,CAAC,CAA9C;EAfQ,CAAtB;EAkBA,oBACE,oBAAC,8BAAD,CAAU,IAAV,eACMQ,KADN;IAEE,GAAG,EAAEJ,GAFP;IAGE,KAAK,EAAE,CAACY,MAAM,CAACC,OAAR,EAAiBC,YAAjB,EAA+BT,aAA/B,EAA8CF,KAA9C;EAHT,iBAKE,oBAAC,sBAAD;IAAW,OAAO,EAAED,OAApB;IAA6B,KAAK,EAAEU,MAAM,CAACG;EAA3C,EALF,CADF;AASD,CA/Be,CAAhB;;AAiCA,MAAMD,YAAY,GAAGN,qBAAA,CAASQ,MAAT,CAAwC;EAC3DC,GAAG,EAAE;IACH;IACA;IACAC,uBAAuB,EAAE;EAHtB,CADsD;EAM3DC,OAAO,EAAE;AANkD,CAAxC,CAArB;;AASA,MAAMP,MAAM,GAAGQ,uBAAA,CAAWC,MAAX,CAAkB;EAC/BR,OAAO,EAAE,EACP,GAAGO,uBAAA,CAAWE,kBADP;IAEPC,eAAe,EAAE;EAFV,CADsB;EAK/BR,SAAS,EAAE;IACTS,IAAI,EAAE;EADG;AALoB,CAAlB,CAAf;;eAUe3B,O"}
|
|
@@ -23,7 +23,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
23
23
|
|
|
24
24
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
25
|
|
|
26
|
-
function _extends() { _extends = Object.assign
|
|
26
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
27
27
|
|
|
28
28
|
const SWIPE_DISTANCE_MINIMUM = 5;
|
|
29
29
|
const DEFAULT_DRAWER_WIDTH = '80%';
|
|
@@ -164,15 +164,22 @@ function Drawer(_ref) {
|
|
|
164
164
|
React.useEffect(() => toggleDrawer(open), [open, toggleDrawer]);
|
|
165
165
|
const onGestureEvent = (0, _reactNativeReanimated.useAnimatedGestureHandler)({
|
|
166
166
|
onStart: (event, ctx) => {
|
|
167
|
+
ctx.hasCalledOnStart = false;
|
|
167
168
|
ctx.startX = translationX.value;
|
|
168
169
|
gestureState.value = event.state;
|
|
169
170
|
touchStartX.value = event.x;
|
|
170
|
-
(0, _reactNativeReanimated.runOnJS)(onGestureStart)();
|
|
171
171
|
},
|
|
172
172
|
onActive: (event, ctx) => {
|
|
173
173
|
touchX.value = event.x;
|
|
174
174
|
translationX.value = ctx.startX + event.translationX;
|
|
175
|
-
gestureState.value = event.state;
|
|
175
|
+
gestureState.value = event.state; // onStart will _always_ be called, even when the activation
|
|
176
|
+
// criteria isn't met yet. This makes sure onGestureStart is only
|
|
177
|
+
// called when the criteria is really met.
|
|
178
|
+
|
|
179
|
+
if (!ctx.hasCalledOnStart) {
|
|
180
|
+
ctx.hasCalledOnStart = true;
|
|
181
|
+
(0, _reactNativeReanimated.runOnJS)(onGestureStart)();
|
|
182
|
+
}
|
|
176
183
|
},
|
|
177
184
|
onEnd: event => {
|
|
178
185
|
gestureState.value = event.state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Drawer.tsx"],"names":["SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","minmax","value","start","end","Math","min","max","Drawer","dimensions","drawerPosition","drawerStyle","drawerType","gestureHandlerProps","hideStatusBarOnOpen","keyboardDismissMode","onClose","onOpen","open","overlayStyle","renderDrawerContent","renderSceneContent","statusBarAnimation","swipeDistanceThreshold","swipeEdgeWidth","swipeEnabled","swipeVelocityThreshold","getDrawerWidth","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerWidth","isOpen","isRight","getDrawerTranslationX","React","useCallback","hideStatusBar","hide","StatusBar","setHidden","useEffect","interactionHandleRef","useRef","startInteraction","current","InteractionManager","createInteractionHandle","endInteraction","clearInteractionHandle","hideKeyboard","Keyboard","dismiss","onGestureStart","onGestureFinish","hitSlop","right","undefined","left","touchStartX","touchX","translationX","gestureState","GestureState","UNDETERMINED","toggleDrawer","velocity","translateX","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","onGestureEvent","onStart","event","ctx","startX","state","x","onActive","onEnd","nextOpen","abs","velocityX","onFinish","touchDistance","ACTIVE","isRTL","I18nManager","getConstants","drawerAnimatedStyle","distanceFromEdge","transform","contentAnimatedStyle","progress","styles","main","flexDirection","content","Platform","OS","container","position","zIndex","create","top","bottom","maxWidth","flex","select","web","default","overflow"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State as GestureState,\n} from 'react-native-gesture-handler';\nimport Animated, {\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport Overlay from './Overlay';\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst minmax = (value: number, start: number, end: number) => {\n 'worklet';\n\n return Math.min(Math.max(value, start), end);\n};\n\nexport default function Drawer({\n dimensions,\n drawerPosition,\n drawerStyle,\n drawerType,\n gestureHandlerProps,\n hideStatusBarOnOpen,\n keyboardDismissMode,\n onClose,\n onOpen,\n open,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n statusBarAnimation,\n swipeDistanceThreshold,\n swipeEdgeWidth,\n swipeEnabled,\n swipeVelocityThreshold,\n}: DrawerProps) {\n const getDrawerWidth = (): number => {\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n const drawerWidth = getDrawerWidth();\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const getDrawerTranslationX = React.useCallback(\n (open: boolean) => {\n 'worklet';\n\n if (drawerPosition === 'left') {\n return open ? 0 : -drawerWidth;\n }\n\n return open ? 0 : drawerWidth;\n },\n [drawerPosition, drawerWidth]\n );\n\n const hideStatusBar = React.useCallback(\n (hide: boolean) => {\n if (hideStatusBarOnOpen) {\n StatusBar.setHidden(hide, statusBarAnimation);\n }\n },\n [hideStatusBarOnOpen, statusBarAnimation]\n );\n\n React.useEffect(() => {\n hideStatusBar(isOpen);\n\n return () => hideStatusBar(false);\n }, [isOpen, hideStatusBarOnOpen, statusBarAnimation, hideStatusBar]);\n\n const interactionHandleRef = React.useRef<number | null>(null);\n\n const startInteraction = () => {\n interactionHandleRef.current = InteractionManager.createInteractionHandle();\n };\n\n const endInteraction = () => {\n if (interactionHandleRef.current != null) {\n InteractionManager.clearInteractionHandle(interactionHandleRef.current);\n interactionHandleRef.current = null;\n }\n };\n\n const hideKeyboard = () => {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n };\n\n const onGestureStart = () => {\n startInteraction();\n hideKeyboard();\n hideStatusBar(true);\n };\n\n const onGestureFinish = () => {\n endInteraction();\n };\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const touchStartX = useSharedValue(0);\n const touchX = useSharedValue(0);\n const translationX = useSharedValue(getDrawerTranslationX(open));\n const gestureState = useSharedValue<GestureState>(GestureState.UNDETERMINED);\n\n const toggleDrawer = React.useCallback(\n (open: boolean, velocity?: number) => {\n 'worklet';\n\n const translateX = getDrawerTranslationX(open);\n\n touchStartX.value = 0;\n touchX.value = 0;\n translationX.value = withSpring(translateX, {\n velocity,\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n });\n\n if (open) {\n runOnJS(onOpen)();\n } else {\n runOnJS(onClose)();\n }\n },\n [getDrawerTranslationX, onClose, onOpen, touchStartX, touchX, translationX]\n );\n\n React.useEffect(() => toggleDrawer(open), [open, toggleDrawer]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startX: number }\n >({\n onStart: (event, ctx) => {\n ctx.startX = translationX.value;\n gestureState.value = event.state;\n touchStartX.value = event.x;\n\n runOnJS(onGestureStart)();\n },\n onActive: (event, ctx) => {\n touchX.value = event.x;\n translationX.value = ctx.startX + event.translationX;\n gestureState.value = event.state;\n },\n onEnd: (event) => {\n gestureState.value = event.state;\n\n const nextOpen =\n (Math.abs(event.translationX) > SWIPE_DISTANCE_MINIMUM &&\n Math.abs(event.translationX) > swipeVelocityThreshold) ||\n Math.abs(event.translationX) > swipeDistanceThreshold\n ? drawerPosition === 'left'\n ? // If swiped to right, open the drawer, otherwise close it\n (event.velocityX === 0 ? event.translationX : event.velocityX) > 0\n : // If swiped to left, open the drawer, otherwise close it\n (event.velocityX === 0 ? event.translationX : event.velocityX) < 0\n : open;\n\n toggleDrawer(nextOpen, event.velocityX);\n },\n onFinish: () => {\n runOnJS(onGestureFinish)();\n },\n });\n\n const translateX = useDerivedValue(() => {\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the translationX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n const touchDistance =\n drawerType === 'front' && gestureState.value === GestureState.ACTIVE\n ? minmax(\n drawerPosition === 'left'\n ? touchStartX.value - drawerWidth\n : dimensions.width - drawerWidth - touchStartX.value,\n 0,\n dimensions.width\n )\n : 0;\n\n const translateX =\n drawerPosition === 'left'\n ? minmax(translationX.value + touchDistance, -drawerWidth, 0)\n : minmax(translationX.value - touchDistance, 0, drawerWidth);\n\n return translateX;\n });\n\n const isRTL = I18nManager.getConstants().isRTL;\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const distanceFromEdge = dimensions.width - drawerWidth;\n\n return {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [\n {\n translateX:\n // The drawer stays in place when `drawerType` is `back`\n (drawerType === 'back' ? 0 : translateX.value) +\n (drawerPosition === 'left'\n ? isRTL\n ? -distanceFromEdge\n : 0\n : isRTL\n ? 0\n : distanceFromEdge),\n },\n ],\n };\n });\n\n const contentAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [\n {\n translateX:\n // The screen content stays in place when `drawerType` is `front`\n drawerType === 'front'\n ? 0\n : translateX.value +\n drawerWidth * (drawerPosition === 'left' ? 1 : -1),\n },\n ],\n };\n });\n\n const progress = useDerivedValue(() => {\n return drawerType === 'permanent'\n ? 1\n : interpolate(\n translateX.value,\n [getDrawerTranslationX(false), getDrawerTranslationX(true)],\n [0, 1]\n );\n });\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n onGestureEvent={onGestureEvent}\n {...gestureHandlerProps}\n >\n {/* Immediate child of gesture handler needs to be an Animated.View */}\n <Animated.View\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight ? 'row-reverse' : 'row',\n },\n ]}\n >\n <Animated.View style={[styles.content, contentAnimatedStyle]}>\n <View\n accessibilityElementsHidden={isOpen && drawerType !== 'permanent'}\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {drawerType !== 'permanent' ? (\n <Overlay\n progress={progress}\n onPress={() => toggleDrawer(false)}\n style={overlayStyle}\n />\n ) : null}\n </Animated.View>\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n style={[\n styles.container,\n {\n position: drawerType === 'permanent' ? 'relative' : 'absolute',\n zIndex: drawerType === 'back' ? -1 : 0,\n },\n drawerAnimatedStyle,\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n top: 0,\n bottom: 0,\n maxWidth: '100%',\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"]}
|
|
1
|
+
{"version":3,"names":["SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","minmax","value","start","end","Math","min","max","Drawer","dimensions","drawerPosition","drawerStyle","drawerType","gestureHandlerProps","hideStatusBarOnOpen","keyboardDismissMode","onClose","onOpen","open","overlayStyle","renderDrawerContent","renderSceneContent","statusBarAnimation","swipeDistanceThreshold","swipeEdgeWidth","swipeEnabled","swipeVelocityThreshold","getDrawerWidth","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerWidth","isOpen","isRight","getDrawerTranslationX","React","useCallback","hideStatusBar","hide","StatusBar","setHidden","useEffect","interactionHandleRef","useRef","startInteraction","current","InteractionManager","createInteractionHandle","endInteraction","clearInteractionHandle","hideKeyboard","Keyboard","dismiss","onGestureStart","onGestureFinish","hitSlop","right","undefined","left","touchStartX","useSharedValue","touchX","translationX","gestureState","GestureState","UNDETERMINED","toggleDrawer","velocity","translateX","withSpring","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","runOnJS","onGestureEvent","useAnimatedGestureHandler","onStart","event","ctx","hasCalledOnStart","startX","state","x","onActive","onEnd","nextOpen","abs","velocityX","onFinish","useDerivedValue","touchDistance","ACTIVE","isRTL","I18nManager","getConstants","drawerAnimatedStyle","useAnimatedStyle","distanceFromEdge","transform","contentAnimatedStyle","progress","interpolate","styles","main","flexDirection","content","Platform","OS","container","position","zIndex","create","top","bottom","maxWidth","flex","select","web","default","overflow"],"sources":["Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State as GestureState,\n} from 'react-native-gesture-handler';\nimport Animated, {\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport Overlay from './Overlay';\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst minmax = (value: number, start: number, end: number) => {\n 'worklet';\n\n return Math.min(Math.max(value, start), end);\n};\n\nexport default function Drawer({\n dimensions,\n drawerPosition,\n drawerStyle,\n drawerType,\n gestureHandlerProps,\n hideStatusBarOnOpen,\n keyboardDismissMode,\n onClose,\n onOpen,\n open,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n statusBarAnimation,\n swipeDistanceThreshold,\n swipeEdgeWidth,\n swipeEnabled,\n swipeVelocityThreshold,\n}: DrawerProps) {\n const getDrawerWidth = (): number => {\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n const drawerWidth = getDrawerWidth();\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const getDrawerTranslationX = React.useCallback(\n (open: boolean) => {\n 'worklet';\n\n if (drawerPosition === 'left') {\n return open ? 0 : -drawerWidth;\n }\n\n return open ? 0 : drawerWidth;\n },\n [drawerPosition, drawerWidth]\n );\n\n const hideStatusBar = React.useCallback(\n (hide: boolean) => {\n if (hideStatusBarOnOpen) {\n StatusBar.setHidden(hide, statusBarAnimation);\n }\n },\n [hideStatusBarOnOpen, statusBarAnimation]\n );\n\n React.useEffect(() => {\n hideStatusBar(isOpen);\n\n return () => hideStatusBar(false);\n }, [isOpen, hideStatusBarOnOpen, statusBarAnimation, hideStatusBar]);\n\n const interactionHandleRef = React.useRef<number | null>(null);\n\n const startInteraction = () => {\n interactionHandleRef.current = InteractionManager.createInteractionHandle();\n };\n\n const endInteraction = () => {\n if (interactionHandleRef.current != null) {\n InteractionManager.clearInteractionHandle(interactionHandleRef.current);\n interactionHandleRef.current = null;\n }\n };\n\n const hideKeyboard = () => {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n };\n\n const onGestureStart = () => {\n startInteraction();\n hideKeyboard();\n hideStatusBar(true);\n };\n\n const onGestureFinish = () => {\n endInteraction();\n };\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const touchStartX = useSharedValue(0);\n const touchX = useSharedValue(0);\n const translationX = useSharedValue(getDrawerTranslationX(open));\n const gestureState = useSharedValue<GestureState>(GestureState.UNDETERMINED);\n\n const toggleDrawer = React.useCallback(\n (open: boolean, velocity?: number) => {\n 'worklet';\n\n const translateX = getDrawerTranslationX(open);\n\n touchStartX.value = 0;\n touchX.value = 0;\n translationX.value = withSpring(translateX, {\n velocity,\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n });\n\n if (open) {\n runOnJS(onOpen)();\n } else {\n runOnJS(onClose)();\n }\n },\n [getDrawerTranslationX, onClose, onOpen, touchStartX, touchX, translationX]\n );\n\n React.useEffect(() => toggleDrawer(open), [open, toggleDrawer]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startX: number; hasCalledOnStart: boolean }\n >({\n onStart: (event, ctx) => {\n ctx.hasCalledOnStart = false;\n ctx.startX = translationX.value;\n gestureState.value = event.state;\n touchStartX.value = event.x;\n },\n onActive: (event, ctx) => {\n touchX.value = event.x;\n translationX.value = ctx.startX + event.translationX;\n gestureState.value = event.state;\n\n // onStart will _always_ be called, even when the activation\n // criteria isn't met yet. This makes sure onGestureStart is only\n // called when the criteria is really met.\n if (!ctx.hasCalledOnStart) {\n ctx.hasCalledOnStart = true;\n runOnJS(onGestureStart)();\n }\n },\n onEnd: (event) => {\n gestureState.value = event.state;\n\n const nextOpen =\n (Math.abs(event.translationX) > SWIPE_DISTANCE_MINIMUM &&\n Math.abs(event.translationX) > swipeVelocityThreshold) ||\n Math.abs(event.translationX) > swipeDistanceThreshold\n ? drawerPosition === 'left'\n ? // If swiped to right, open the drawer, otherwise close it\n (event.velocityX === 0 ? event.translationX : event.velocityX) > 0\n : // If swiped to left, open the drawer, otherwise close it\n (event.velocityX === 0 ? event.translationX : event.velocityX) < 0\n : open;\n\n toggleDrawer(nextOpen, event.velocityX);\n },\n onFinish: () => {\n runOnJS(onGestureFinish)();\n },\n });\n\n const translateX = useDerivedValue(() => {\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the translationX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n const touchDistance =\n drawerType === 'front' && gestureState.value === GestureState.ACTIVE\n ? minmax(\n drawerPosition === 'left'\n ? touchStartX.value - drawerWidth\n : dimensions.width - drawerWidth - touchStartX.value,\n 0,\n dimensions.width\n )\n : 0;\n\n const translateX =\n drawerPosition === 'left'\n ? minmax(translationX.value + touchDistance, -drawerWidth, 0)\n : minmax(translationX.value - touchDistance, 0, drawerWidth);\n\n return translateX;\n });\n\n const isRTL = I18nManager.getConstants().isRTL;\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const distanceFromEdge = dimensions.width - drawerWidth;\n\n return {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [\n {\n translateX:\n // The drawer stays in place when `drawerType` is `back`\n (drawerType === 'back' ? 0 : translateX.value) +\n (drawerPosition === 'left'\n ? isRTL\n ? -distanceFromEdge\n : 0\n : isRTL\n ? 0\n : distanceFromEdge),\n },\n ],\n };\n });\n\n const contentAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [\n {\n translateX:\n // The screen content stays in place when `drawerType` is `front`\n drawerType === 'front'\n ? 0\n : translateX.value +\n drawerWidth * (drawerPosition === 'left' ? 1 : -1),\n },\n ],\n };\n });\n\n const progress = useDerivedValue(() => {\n return drawerType === 'permanent'\n ? 1\n : interpolate(\n translateX.value,\n [getDrawerTranslationX(false), getDrawerTranslationX(true)],\n [0, 1]\n );\n });\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n onGestureEvent={onGestureEvent}\n {...gestureHandlerProps}\n >\n {/* Immediate child of gesture handler needs to be an Animated.View */}\n <Animated.View\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight ? 'row-reverse' : 'row',\n },\n ]}\n >\n <Animated.View style={[styles.content, contentAnimatedStyle]}>\n <View\n accessibilityElementsHidden={isOpen && drawerType !== 'permanent'}\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {drawerType !== 'permanent' ? (\n <Overlay\n progress={progress}\n onPress={() => toggleDrawer(false)}\n style={overlayStyle}\n />\n ) : null}\n </Animated.View>\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n style={[\n styles.container,\n {\n position: drawerType === 'permanent' ? 'relative' : 'absolute',\n zIndex: drawerType === 'back' ? -1 : 0,\n },\n drawerAnimatedStyle,\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n top: 0,\n bottom: 0,\n maxWidth: '100%',\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
15
15
|
|
|
16
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
17
|
|
|
18
|
-
function _extends() { _extends = Object.assign
|
|
18
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
19
19
|
|
|
20
20
|
const PROGRESS_EPSILON = 0.05;
|
|
21
21
|
const Overlay = /*#__PURE__*/React.forwardRef(function Overlay(_ref, ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["PROGRESS_EPSILON","Overlay","React","forwardRef","ref","progress","onPress","style","props","animatedStyle","useAnimatedStyle","opacity","value","zIndex","animatedProps","useAnimatedProps","active","pointerEvents","accessibilityElementsHidden","importantForAccessibility","styles","overlay","overlayStyle","pressable","Platform","select","web","WebkitTapHighlightColor","default","StyleSheet","create","absoluteFillObject","backgroundColor","flex"],"sources":["Overlay.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Platform, Pressable, StyleSheet } from 'react-native';\nimport Animated, {\n useAnimatedProps,\n useAnimatedStyle,\n} from 'react-native-reanimated';\n\nconst PROGRESS_EPSILON = 0.05;\n\ntype Props = React.ComponentProps<typeof Animated.View> & {\n progress: Animated.SharedValue<number>;\n onPress: () => void;\n};\n\nconst Overlay = React.forwardRef(function Overlay(\n { progress, onPress, style, ...props }: Props,\n ref: React.Ref<Animated.View>\n) {\n const animatedStyle = useAnimatedStyle(() => {\n return {\n opacity: progress.value,\n // We don't want the user to be able to press through the overlay when drawer is open\n // We can send the overlay behind the screen to avoid it\n zIndex: progress.value > PROGRESS_EPSILON ? 0 : -1,\n };\n });\n\n const animatedProps = useAnimatedProps(() => {\n const active = progress.value > PROGRESS_EPSILON;\n\n return {\n pointerEvents: active ? 'auto' : 'none',\n accessibilityElementsHidden: !active,\n importantForAccessibility: active ? 'auto' : 'no-hide-descendants',\n } as const;\n });\n\n return (\n <Animated.View\n {...props}\n ref={ref}\n style={[styles.overlay, overlayStyle, animatedStyle, style]}\n animatedProps={animatedProps}\n >\n <Pressable onPress={onPress} style={styles.pressable} />\n </Animated.View>\n );\n});\n\nconst overlayStyle = Platform.select<Record<string, string>>({\n web: {\n // Disable touch highlight on mobile Safari.\n // WebkitTapHighlightColor must be used outside of StyleSheet.create because react-native-web will omit the property.\n WebkitTapHighlightColor: 'transparent',\n },\n default: {},\n});\n\nconst styles = StyleSheet.create({\n overlay: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n pressable: {\n flex: 1,\n },\n});\n\nexport default Overlay;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAKA,MAAMA,gBAAgB,GAAG,IAAzB;AAOA,MAAMC,OAAO,gBAAGC,KAAK,CAACC,UAAN,CAAiB,SAASF,OAAT,OAE/BG,GAF+B,EAG/B;EAAA,IAFA;IAAEC,QAAF;IAAYC,OAAZ;IAAqBC,KAArB;IAA4B,GAAGC;EAA/B,CAEA;EACA,MAAMC,aAAa,GAAG,IAAAC,uCAAA,EAAiB,MAAM;IAC3C,OAAO;MACLC,OAAO,EAAEN,QAAQ,CAACO,KADb;MAEL;MACA;MACAC,MAAM,EAAER,QAAQ,CAACO,KAAT,GAAiBZ,gBAAjB,GAAoC,CAApC,GAAwC,CAAC;IAJ5C,CAAP;EAMD,CAPqB,CAAtB;EASA,MAAMc,aAAa,GAAG,IAAAC,uCAAA,EAAiB,MAAM;IAC3C,MAAMC,MAAM,GAAGX,QAAQ,CAACO,KAAT,GAAiBZ,gBAAhC;IAEA,OAAO;MACLiB,aAAa,EAAED,MAAM,GAAG,MAAH,GAAY,MAD5B;MAELE,2BAA2B,EAAE,CAACF,MAFzB;MAGLG,yBAAyB,EAAEH,MAAM,GAAG,MAAH,GAAY;IAHxC,CAAP;EAKD,CARqB,CAAtB;EAUA,oBACE,oBAAC,8BAAD,CAAU,IAAV,eACMR,KADN;IAEE,GAAG,EAAEJ,GAFP;IAGE,KAAK,EAAE,CAACgB,MAAM,CAACC,OAAR,EAAiBC,YAAjB,EAA+Bb,aAA/B,EAA8CF,KAA9C,CAHT;IAIE,aAAa,EAAEO;EAJjB,iBAME,oBAAC,sBAAD;IAAW,OAAO,EAAER,OAApB;IAA6B,KAAK,EAAEc,MAAM,CAACG;EAA3C,EANF,CADF;AAUD,CAjCe,CAAhB;;AAmCA,MAAMD,YAAY,GAAGE,qBAAA,CAASC,MAAT,CAAwC;EAC3DC,GAAG,EAAE;IACH;IACA;IACAC,uBAAuB,EAAE;EAHtB,CADsD;EAM3DC,OAAO,EAAE;AANkD,CAAxC,CAArB;;AASA,MAAMR,MAAM,GAAGS,uBAAA,CAAWC,MAAX,CAAkB;EAC/BT,OAAO,EAAE,EACP,GAAGQ,uBAAA,CAAWE,kBADP;IAEPC,eAAe,EAAE;EAFV,CADsB;EAK/BT,SAAS,EAAE;IACTU,IAAI,EAAE;EADG;AALoB,CAAlB,CAAf;;eAUehC,O"}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["default","createDrawerNavigator","DrawerContent","DrawerContentScrollView","DrawerItem","DrawerItemList","DrawerToggleButton","DrawerView","DrawerGestureContext","DrawerProgressContext","getDrawerStatusFromState","useDrawerProgress","useDrawerStatus"],"sources":["index.tsx"],"sourcesContent":["/**\n * Navigators\n */\nexport { default as createDrawerNavigator } from './navigators/createDrawerNavigator';\n\n/**\n * Views\n */\nexport { default as DrawerContent } from './views/DrawerContent';\nexport { default as DrawerContentScrollView } from './views/DrawerContentScrollView';\nexport { default as DrawerItem } from './views/DrawerItem';\nexport { default as DrawerItemList } from './views/DrawerItemList';\nexport { default as DrawerToggleButton } from './views/DrawerToggleButton';\nexport { default as DrawerView } from './views/DrawerView';\n\n/**\n * Utilities\n */\nexport { default as DrawerGestureContext } from './utils/DrawerGestureContext';\nexport { default as DrawerProgressContext } from './utils/DrawerProgressContext';\nexport { default as getDrawerStatusFromState } from './utils/getDrawerStatusFromState';\nexport { default as useDrawerProgress } from './utils/useDrawerProgress';\nexport { default as useDrawerStatus } from './utils/useDrawerStatus';\n\n/**\n * Types\n */\nexport type {\n DrawerContentComponentProps,\n DrawerHeaderProps,\n DrawerNavigationEventMap,\n DrawerNavigationOptions,\n DrawerNavigationProp,\n DrawerScreenProps,\n} from './types';\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,qBAApB,QAAiD,oCAAjD;AAEA;AACA;AACA;;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,uBAAzC;AACA,SAASF,OAAO,IAAIG,uBAApB,QAAmD,iCAAnD;AACA,SAASH,OAAO,IAAII,UAApB,QAAsC,oBAAtC;AACA,SAASJ,OAAO,IAAIK,cAApB,QAA0C,wBAA1C;AACA,SAASL,OAAO,IAAIM,kBAApB,QAA8C,4BAA9C;AACA,SAASN,OAAO,IAAIO,UAApB,QAAsC,oBAAtC;AAEA;AACA;AACA;;AACA,SAASP,OAAO,IAAIQ,oBAApB,QAAgD,8BAAhD;AACA,SAASR,OAAO,IAAIS,qBAApB,QAAiD,+BAAjD;AACA,SAAST,OAAO,IAAIU,wBAApB,QAAoD,kCAApD;AACA,SAASV,OAAO,IAAIW,iBAApB,QAA6C,2BAA7C;AACA,SAASX,OAAO,IAAIY,eAApB,QAA2C,yBAA3C;AAEA;AACA;AACA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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
2
|
|
|
3
3
|
import { createNavigatorFactory, DrawerRouter, useNavigationBuilder } from '@react-navigation/native';
|
|
4
4
|
import * as React from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["createNavigatorFactory","DrawerRouter","useNavigationBuilder","React","warnOnce","DrawerView","DrawerNavigator","id","initialRouteName","defaultStatus","customDefaultStatus","backBehavior","children","screenListeners","screenOptions","restWithDeprecated","openByDefault","lazy","drawerContentOptions","rest","defaultScreenOptions","Object","assign","drawerPosition","drawerType","swipeEdgeWidth","edgeWidth","drawerHideStatusBarOnOpen","hideStatusBar","keyboardDismissMode","swipeMinDistance","minSwipeDistance","overlayColor","drawerStatusBarAnimation","statusBarAnimation","gestureHandlerProps","keys","forEach","key","undefined","JSON","stringify","state","descriptors","navigation","NavigationContent"],"sources":["createDrawerNavigator.tsx"],"sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n DrawerActionHelpers,\n DrawerNavigationState,\n DrawerRouter,\n DrawerRouterOptions,\n DrawerStatus,\n ParamListBase,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n DrawerNavigationConfig,\n DrawerNavigationEventMap,\n DrawerNavigationOptions,\n} from '../types';\nimport DrawerView from '../views/DrawerView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n DrawerNavigationState<ParamListBase>,\n DrawerNavigationOptions,\n DrawerNavigationEventMap\n> &\n DrawerRouterOptions &\n DrawerNavigationConfig;\n\nfunction DrawerNavigator({\n id,\n initialRouteName,\n defaultStatus: customDefaultStatus,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: openByDefault is deprecated\n openByDefault,\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: drawerContentOptions is deprecated\n drawerContentOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: DrawerNavigationOptions = {};\n\n if (drawerContentOptions) {\n Object.assign(defaultScreenOptions, {\n drawerPosition: drawerContentOptions.drawerPosition,\n drawerType: drawerContentOptions.drawerType,\n swipeEdgeWidth: drawerContentOptions.edgeWidth,\n drawerHideStatusBarOnOpen: drawerContentOptions.hideStatusBar,\n keyboardDismissMode: drawerContentOptions.keyboardDismissMode,\n swipeMinDistance: drawerContentOptions.minSwipeDistance,\n overlayColor: drawerContentOptions.overlayColor,\n drawerStatusBarAnimation: drawerContentOptions.statusBarAnimation,\n gestureHandlerProps: drawerContentOptions.gestureHandlerProps,\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof DrawerNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n drawerContentOptions,\n `Drawer Navigator: 'drawerContentOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/drawer-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Drawer Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/drawer-navigator/#lazy for more details.`\n );\n }\n\n if (typeof openByDefault === 'boolean') {\n warnOnce(\n true,\n `Drawer Navigator: 'openByDefault' is deprecated. Use 'defaultStatus' and set it to 'open' or 'closed' instead.\\n\\nSee https://reactnavigation.org/docs/drawer-navigator/#defaultstatus for more details.`\n );\n }\n\n const defaultStatus: DrawerStatus =\n customDefaultStatus !== undefined\n ? customDefaultStatus\n : openByDefault\n ? 'open'\n : 'closed';\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n DrawerNavigationState<ParamListBase>,\n DrawerRouterOptions,\n DrawerActionHelpers<ParamListBase>,\n DrawerNavigationOptions,\n DrawerNavigationEventMap\n >(DrawerRouter, {\n id,\n initialRouteName,\n defaultStatus,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <DrawerView\n {...rest}\n defaultStatus={defaultStatus}\n state={state}\n descriptors={descriptors}\n navigation={navigation}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n DrawerNavigationState<ParamListBase>,\n DrawerNavigationOptions,\n DrawerNavigationEventMap,\n typeof DrawerNavigator\n>(DrawerNavigator);\n"],"mappings":";;AAAA,SACEA,sBADF,EAKEC,YALF,EASEC,oBATF,QAUO,0BAVP;AAWA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,WAArB;AAOA,OAAOC,UAAP,MAAuB,qBAAvB;;AAWA,SAASC,eAAT,OASU;EAAA,IATe;IACvBC,EADuB;IAEvBC,gBAFuB;IAGvBC,aAAa,EAAEC,mBAHQ;IAIvBC,YAJuB;IAKvBC,QALuB;IAMvBC,eANuB;IAOvBC,aAPuB;IAQvB,GAAGC;EARoB,CASf;EACR,MAAM;IACJ;IACAC,aAFI;IAGJ;IACAC,IAJI;IAKJ;IACAC,oBANI;IAOJ,GAAGC;EAPC,IAQFJ,kBARJ;EAUA,IAAIK,oBAA6C,GAAG,EAApD;;EAEA,IAAIF,oBAAJ,EAA0B;IACxBG,MAAM,CAACC,MAAP,CAAcF,oBAAd,EAAoC;MAClCG,cAAc,EAAEL,oBAAoB,CAACK,cADH;MAElCC,UAAU,EAAEN,oBAAoB,CAACM,UAFC;MAGlCC,cAAc,EAAEP,oBAAoB,CAACQ,SAHH;MAIlCC,yBAAyB,EAAET,oBAAoB,CAACU,aAJd;MAKlCC,mBAAmB,EAAEX,oBAAoB,CAACW,mBALR;MAMlCC,gBAAgB,EAAEZ,oBAAoB,CAACa,gBANL;MAOlCC,YAAY,EAAEd,oBAAoB,CAACc,YAPD;MAQlCC,wBAAwB,EAAEf,oBAAoB,CAACgB,kBARb;MASlCC,mBAAmB,EAAEjB,oBAAoB,CAACiB;IATR,CAApC;IAaEd,MAAM,CAACe,IAAP,CAAYhB,oBAAZ,CADF,CAEEiB,OAFF,CAEWC,GAAD,IAAS;MACjB,IAAIlB,oBAAoB,CAACkB,GAAD,CAApB,KAA8BC,SAAlC,EAA6C;QAC3C;QACA,OAAOnB,oBAAoB,CAACkB,GAAD,CAA3B;MACD;IACF,CAPD;IASAlC,QAAQ,CACNc,oBADM,EAEL,+LAA8LsB,IAAI,CAACC,SAAL,CAC7LrB,oBAD6L,EAE7L,IAF6L,EAG7L,CAH6L,CAI7L,qFANI,CAAR;EAQD;;EAED,IAAI,OAAOH,IAAP,KAAgB,SAApB,EAA+B;IAC7BG,oBAAoB,CAACH,IAArB,GAA4BA,IAA5B;IAEAb,QAAQ,CACN,IADM,EAEL,uKAFK,CAAR;EAID;;EAED,IAAI,OAAOY,aAAP,KAAyB,SAA7B,EAAwC;IACtCZ,QAAQ,CACN,IADM,EAEL,0MAFK,CAAR;EAID;;EAED,MAAMK,aAA2B,GAC/BC,mBAAmB,KAAK6B,SAAxB,GACI7B,mBADJ,GAEIM,aAAa,GACb,MADa,GAEb,QALN;EAOA,MAAM;IAAE0B,KAAF;IAASC,WAAT;IAAsBC,UAAtB;IAAkCC;EAAlC,IACJ3C,oBAAoB,CAMlBD,YANkB,EAMJ;IACdM,EADc;IAEdC,gBAFc;IAGdC,aAHc;IAIdE,YAJc;IAKdC,QALc;IAMdC,eANc;IAOdC,aAPc;IAQdM;EARc,CANI,CADtB;EAkBA,oBACE,oBAAC,iBAAD,qBACE,oBAAC,UAAD,eACMD,IADN;IAEE,aAAa,EAAEV,aAFjB;IAGE,KAAK,EAAEiC,KAHT;IAIE,WAAW,EAAEC,WAJf;IAKE,UAAU,EAAEC;EALd,GADF,CADF;AAWD;;AAED,eAAe5C,sBAAsB,CAKnCM,eALmC,CAArC"}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["types.tsx"],"sourcesContent":["import type { HeaderOptions } from '@react-navigation/elements';\nimport type {\n Descriptor,\n DrawerActionHelpers,\n DrawerNavigationState,\n NavigationHelpers,\n NavigationProp,\n ParamListBase,\n Route,\n RouteProp,\n} from '@react-navigation/native';\nimport type { StyleProp, TextStyle, ViewStyle } from 'react-native';\nimport type {\n PanGestureHandler,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nexport type Scene = {\n route: Route<string>;\n focused: boolean;\n color?: string;\n};\n\nexport type Layout = { width: number; height: number };\n\nexport type DrawerNavigationConfig = {\n /**\n * Function that returns React element to render as the content of the drawer, for example, navigation items.\n * Defaults to `DrawerContent`.\n */\n drawerContent?: (props: DrawerContentComponentProps) => React.ReactNode;\n /**\n * Whether inactive screens should be detached from the view hierarchy to save memory.\n * Make sure to call `enableScreens` from `react-native-screens` to make it work.\n * Defaults to `true`.\n */\n detachInactiveScreens?: boolean;\n /**\n * Whether to use the legacy implementation based on Reanimated 1.\n * The new implementation based on Reanimated 2 will perform better,\n * but you need additional configuration and need to use Hermes with Flipper to debug.\n *\n * This defaults to `true` if Reanimated 2 is not configured.\n *\n * Otherwise, it defaults to `false`\n */\n useLegacyImplementation?: boolean;\n};\n\nexport type DrawerNavigationOptions = HeaderOptions & {\n /**\n * Title text for the screen.\n */\n title?: string;\n\n /**\n * Whether this screens should render the first time it's accessed. Defaults to `true`.\n * Set it to `false` if you want to render the screen on initial render.\n */\n lazy?: boolean;\n\n /**\n * Function that returns a React Element to display as a header.\n */\n header?: (props: DrawerHeaderProps) => React.ReactNode;\n\n /**\n * Whether to show the header. Setting this to `false` hides the header.\n * Defaults to `true`.\n */\n headerShown?: boolean;\n\n /**\n * Title string of a screen displayed in the drawer\n * or a function that given { focused: boolean, color: string } returns a React.Node\n * When undefined, scene title is used.\n */\n drawerLabel?:\n | string\n | ((props: { color: string; focused: boolean }) => React.ReactNode);\n\n /**\n * A function that given { focused: boolean, color: string } returns a React.Node to display an icon the drawer.\n */\n drawerIcon?: (props: {\n color: string;\n size: number;\n focused: boolean;\n }) => React.ReactNode;\n\n /**\n * Color for the icon and label in the active item in the drawer.\n */\n drawerActiveTintColor?: string;\n\n /**\n * Background color for the active item in the drawer.\n */\n drawerActiveBackgroundColor?: string;\n\n /**\n * Color for the icon and label in the inactive items in the drawer.\n */\n drawerInactiveTintColor?: string;\n\n /**\n * Background color for the inactive items in the drawer.\n */\n drawerInactiveBackgroundColor?: string;\n\n /**\n * Whether label font should scale to respect Text Size accessibility settings.\n */\n drawerAllowFontScaling?: boolean;\n\n /**\n * Style object for the single item, which can contain an icon and/or a label.\n */\n drawerItemStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object to apply to the `Text` inside content section which renders a label.\n */\n drawerLabelStyle?: StyleProp<TextStyle>;\n\n /**\n * Style object for the content section.\n */\n drawerContentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the wrapper view.\n */\n drawerContentStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the drawer component.\n * You can pass a custom background color for a drawer or a custom width here.\n */\n drawerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Position of the drawer on the screen. Defaults to `left`.\n */\n drawerPosition?: 'left' | 'right';\n\n /**\n * Type of the drawer. It determines how the drawer looks and animates.\n * - `front`: Traditional drawer which covers the screen with a overlay behind it.\n * - `back`: The drawer is revealed behind the screen on swipe.\n * - `slide`: Both the screen and the drawer slide on swipe to reveal the drawer.\n * - `permanent`: A permanent drawer is shown as a sidebar.\n *\n * Defaults to `slide` on iOS and `front` on other platforms.\n */\n drawerType?: 'front' | 'back' | 'slide' | 'permanent';\n\n /**\n * Whether the statusbar should be hidden when the drawer is pulled or opens,\n */\n drawerHideStatusBarOnOpen?: boolean;\n\n /**\n * Animation of the statusbar when hiding it. use in combination with `drawerHideStatusBarOnOpen`.\n */\n drawerStatusBarAnimation?: 'slide' | 'none' | 'fade';\n\n /**\n * Color of the overlay to be displayed on top of the content view when drawer gets open.\n * The opacity is animated from `0` to `1` when the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style object for the component wrapping the screen content.\n */\n sceneContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Props to pass to the underlying pan gesture handler.\n * Not supported on Web.\n */\n gestureHandlerProps?: PanGestureHandlerProperties;\n\n /**\n * Whether you can use swipe gestures to open or close the drawer.\n * Defaults to `true`.\n * Not supported on Web.\n */\n swipeEnabled?: boolean;\n\n /**\n * How far from the edge of the screen the swipe gesture should activate.\n * Not supported on Web.\n */\n swipeEdgeWidth?: number;\n\n /**\n * Minimum swipe distance threshold that should activate opening the drawer.\n */\n swipeMinDistance?: number;\n\n /**\n * Whether the keyboard should be dismissed when the swipe gesture begins.\n * Defaults to `'on-drag'`. Set to `'none'` to disable keyboard handling.\n */\n keyboardDismissMode?: 'on-drag' | 'none';\n\n /**\n * Whether this screen should be unmounted when navigating away from it.\n * Defaults to `false`.\n */\n unmountOnBlur?: boolean;\n\n /**\n * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.\n * Defaults to `true` when `enableFreeze()` is run at the top of the application.\n * Requires `react-native-screens` version >=3.16.0.\n *\n * Only supported on iOS and Android.\n */\n freezeOnBlur?: boolean;\n};\n\nexport type DrawerContentComponentProps = {\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nexport type DrawerHeaderProps = {\n /**\n * Layout of the screen.\n */\n layout: Layout;\n /**\n * Options for the current screen.\n */\n options: DrawerNavigationOptions;\n /**\n * Route object for the current screen.\n */\n route: RouteProp<ParamListBase>;\n /**\n * Navigation prop for the header.\n */\n navigation: DrawerNavigationProp<ParamListBase>;\n};\n\nexport type DrawerNavigationEventMap = {\n /**\n * Event which fires on tapping on the item in the drawer menu.\n */\n drawerItemPress: { data: undefined; canPreventDefault: true };\n};\n\nexport type DrawerNavigationHelpers = NavigationHelpers<\n ParamListBase,\n DrawerNavigationEventMap\n> &\n DrawerActionHelpers<ParamListBase>;\n\nexport type DrawerNavigationProp<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList = keyof ParamList,\n NavigatorID extends string | undefined = undefined\n> = NavigationProp<\n ParamList,\n RouteName,\n NavigatorID,\n DrawerNavigationState<ParamList>,\n DrawerNavigationOptions,\n DrawerNavigationEventMap\n> &\n DrawerActionHelpers<ParamList>;\n\nexport type DrawerScreenProps<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList = keyof ParamList,\n NavigatorID extends string | undefined = undefined\n> = {\n navigation: DrawerNavigationProp<ParamList, RouteName, NavigatorID>;\n route: RouteProp<ParamList, RouteName>;\n};\n\nexport type DrawerDescriptor = Descriptor<\n DrawerNavigationOptions,\n DrawerNavigationProp<ParamListBase>,\n RouteProp<ParamListBase>\n>;\n\nexport type DrawerDescriptorMap = Record<string, DrawerDescriptor>;\n\nexport type DrawerProps = {\n dimensions: { width: number; height: number };\n drawerPosition: 'left' | 'right';\n drawerStyle?: StyleProp<ViewStyle>;\n drawerType: 'front' | 'back' | 'slide' | 'permanent';\n gestureHandlerProps?: React.ComponentProps<typeof PanGestureHandler>;\n hideStatusBarOnOpen: boolean;\n keyboardDismissMode: 'none' | 'on-drag';\n onClose: () => void;\n onOpen: () => void;\n open: boolean;\n overlayStyle?: StyleProp<ViewStyle>;\n renderDrawerContent: () => React.ReactNode;\n renderSceneContent: () => React.ReactNode;\n statusBarAnimation: 'slide' | 'none' | 'fade';\n swipeDistanceThreshold: number;\n swipeEdgeWidth: number;\n swipeEnabled: boolean;\n swipeVelocityThreshold: number;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","createContext"],"sources":["DrawerGestureContext.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport default React.createContext<React.RefObject<any> | null>(null);\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,4BAAeA,KAAK,CAACC,aAAN,CAAiD,IAAjD,CAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","createContext","undefined"],"sources":["DrawerPositionContext.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport default React.createContext<'left' | 'right' | undefined>(undefined);\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,4BAAeA,KAAK,CAACC,aAAN,CAAkDC,SAAlD,CAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","createContext","undefined"],"sources":["DrawerProgressContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport type Animated from 'react-native-reanimated';\n\nexport default React.createContext<\n Readonly<Animated.SharedValue<number>> | Animated.Node<number> | undefined\n>(undefined);\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAGA,4BAAeA,KAAK,CAACC,aAAN,CAEbC,SAFa,CAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","DrawerStatusContext","createContext","undefined"],"sources":["DrawerStatusContext.tsx"],"sourcesContent":["import type { DrawerStatus } from '@react-navigation/native';\nimport * as React from 'react';\n\nconst DrawerStatusContext = React.createContext<DrawerStatus | undefined>(\n undefined\n);\n\nexport default DrawerStatusContext;\n"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,MAAMC,mBAAmB,gBAAGD,KAAK,CAACE,aAAN,CAC1BC,SAD0B,CAA5B;AAIA,eAAeF,mBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["getDrawerStatusFromState","state","history","Error","entry","find","it","type","status","default"],"sources":["getDrawerStatusFromState.tsx"],"sourcesContent":["import type {\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n} from '@react-navigation/native';\n\nexport default function getDrawerStatusFromState(\n state: DrawerNavigationState<ParamListBase>\n): DrawerStatus {\n if (state.history == null) {\n throw new Error(\n \"Couldn't find the drawer status in the state object. Is it a valid state object of drawer navigator?\"\n );\n }\n\n const entry = state.history.find((it) => it.type === 'drawer') as\n | { type: 'drawer'; status: DrawerStatus }\n | undefined;\n\n return entry?.status ?? state.default ?? 'closed';\n}\n"],"mappings":"AAMA,eAAe,SAASA,wBAAT,CACbC,KADa,EAEC;EAAA;;EACd,IAAIA,KAAK,CAACC,OAAN,IAAiB,IAArB,EAA2B;IACzB,MAAM,IAAIC,KAAJ,CACJ,sGADI,CAAN;EAGD;;EAED,MAAMC,KAAK,GAAGH,KAAK,CAACC,OAAN,CAAcG,IAAd,CAAoBC,EAAD,IAAQA,EAAE,CAACC,IAAH,KAAY,QAAvC,CAAd;EAIA,gCAAOH,KAAP,aAAOA,KAAP,uBAAOA,KAAK,CAAEI,MAAd,yDAAwBP,KAAK,CAACQ,OAA9B,uCAAyC,QAAzC;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","DrawerProgressContext","useDrawerProgress","progress","useContext","undefined","Error"],"sources":["useDrawerProgress.tsx"],"sourcesContent":["import * as React from 'react';\nimport type Animated from 'react-native-reanimated';\n\nimport DrawerProgressContext from './DrawerProgressContext';\n\nexport default function useDrawerProgress():\n | Readonly<Animated.SharedValue<number>>\n | Animated.Node<number> {\n const progress = React.useContext(DrawerProgressContext);\n\n if (progress === undefined) {\n throw new Error(\n \"Couldn't find a drawer. Is your component inside a drawer navigator?\"\n );\n }\n\n return progress;\n}\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAGA,OAAOC,qBAAP,MAAkC,yBAAlC;AAEA,eAAe,SAASC,iBAAT,GAEW;EACxB,MAAMC,QAAQ,GAAGH,KAAK,CAACI,UAAN,CAAiBH,qBAAjB,CAAjB;;EAEA,IAAIE,QAAQ,KAAKE,SAAjB,EAA4B;IAC1B,MAAM,IAAIC,KAAJ,CACJ,sEADI,CAAN;EAGD;;EAED,OAAOH,QAAP;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["React","DrawerStatusContext","useDrawerStatus","drawerStatus","useContext","undefined","Error"],"sources":["useDrawerStatus.tsx"],"sourcesContent":["import type { DrawerStatus } from '@react-navigation/native';\nimport * as React from 'react';\n\nimport DrawerStatusContext from './DrawerStatusContext';\n\n/**\n * Hook to detect if the drawer's status in a parent navigator.\n * Returns 'open' if the drawer is open, 'closed' if the drawer is closed.\n */\nexport default function useDrawerStatus(): DrawerStatus {\n const drawerStatus = React.useContext(DrawerStatusContext);\n\n if (drawerStatus === undefined) {\n throw new Error(\n \"Couldn't find a drawer. Is your component inside a drawer navigator?\"\n );\n }\n\n return drawerStatus;\n}\n"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,mBAAP,MAAgC,uBAAhC;AAEA;AACA;AACA;AACA;;AACA,eAAe,SAASC,eAAT,GAAyC;EACtD,MAAMC,YAAY,GAAGH,KAAK,CAACI,UAAN,CAAiBH,mBAAjB,CAArB;;EAEA,IAAIE,YAAY,KAAKE,SAArB,EAAgC;IAC9B,MAAM,IAAIC,KAAJ,CACJ,sEADI,CAAN;EAGD;;EAED,OAAOH,YAAP;AACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import DrawerContentScrollView from './DrawerContentScrollView';
|