@react-navigation/drawer 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/commonjs/views/DrawerItem.js +2 -0
  2. package/lib/commonjs/views/DrawerItem.js.map +1 -1
  3. package/lib/commonjs/views/DrawerItemList.js +22 -9
  4. package/lib/commonjs/views/DrawerItemList.js.map +1 -1
  5. package/lib/commonjs/views/DrawerView.js +1 -0
  6. package/lib/commonjs/views/DrawerView.js.map +1 -1
  7. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  8. package/lib/commonjs/views/legacy/Drawer.js +2 -2
  9. package/lib/commonjs/views/legacy/Drawer.js.map +1 -1
  10. package/lib/commonjs/views/modern/Drawer.js +2 -2
  11. package/lib/commonjs/views/modern/Drawer.js.map +1 -1
  12. package/lib/module/views/DrawerItem.js +2 -0
  13. package/lib/module/views/DrawerItem.js.map +1 -1
  14. package/lib/module/views/DrawerItemList.js +22 -9
  15. package/lib/module/views/DrawerItemList.js.map +1 -1
  16. package/lib/module/views/DrawerView.js +1 -0
  17. package/lib/module/views/DrawerView.js.map +1 -1
  18. package/lib/module/views/ScreenFallback.js.map +1 -1
  19. package/lib/module/views/legacy/Drawer.js +2 -2
  20. package/lib/module/views/legacy/Drawer.js.map +1 -1
  21. package/lib/module/views/modern/Drawer.js +2 -2
  22. package/lib/module/views/modern/Drawer.js.map +1 -1
  23. package/lib/typescript/src/types.d.ts +13 -1
  24. package/lib/typescript/src/views/DrawerItem.d.ts +4 -0
  25. package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
  26. package/package.json +5 -5
  27. package/src/types.tsx +11 -1
  28. package/src/views/DrawerItem.tsx +6 -0
  29. package/src/views/DrawerItemList.tsx +21 -8
  30. package/src/views/DrawerView.tsx +1 -0
  31. package/src/views/ScreenFallback.tsx +1 -0
  32. package/src/views/legacy/Drawer.tsx +2 -2
  33. package/src/views/modern/Drawer.tsx +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Drawer.tsx"],"names":["React","I18nManager","InteractionManager","Keyboard","Platform","StatusBar","StyleSheet","View","Animated","DrawerProgressContext","GestureState","PanGestureHandler","Overlay","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","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","Component","interactionHandle","undefined","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","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","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","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.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.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 undefined\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 undefined\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,"sources":["Drawer.tsx"],"names":["React","I18nManager","InteractionManager","Keyboard","Platform","StatusBar","StyleSheet","View","Animated","DrawerProgressContext","GestureState","PanGestureHandler","Overlay","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","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","Component","interactionHandle","undefined","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","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","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","OS","handleDrawerLayout","container","opacity","nonPermanent","zIndex","create","backgroundColor","maxWidth","top","bottom","flex","select","web","default","overflow"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,WADF,EAEEC,kBAFF,EAGEC,QAHF,EAKEC,QALF,EAMEC,SANF,EAOEC,UAPF,EAQEC,IARF,QASO,cATP;AAUA,OAAOC,QAAP,MAAqB,yBAArB;AAGA,OAAOC,qBAAP,MAAkC,mCAAlC;AACA,SAASC,YAAT,EAAuBC,iBAAvB,QAAgD,mBAAhD;AACA,OAAOC,OAAP,MAAoB,WAApB;AAEA,MAAM;AACJC,EAAAA,KADI;AAEJC,EAAAA,KAFI;AAGJC,EAAAA,QAHI;AAIJC,EAAAA,YAJI;AAKJC,EAAAA,UALI;AAMJC,EAAAA,SANI;AAOJC,EAAAA,MAPI;AAQJC,EAAAA,GARI;AASJC,EAAAA,GATI;AAUJC,EAAAA,GAVI;AAWJC,EAAAA,KAXI;AAYJC,EAAAA,IAZI;AAaJC,EAAAA,IAbI;AAcJC,EAAAA,MAdI;AAeJC,EAAAA,EAfI;AAgBJC,EAAAA,KAhBI;AAiBJC,EAAAA,WAjBI;AAkBJC,EAAAA,QAlBI;AAmBJC,EAAAA,GAnBI;AAoBJC,EAAAA,GApBI;AAqBJC,EAAAA,QArBI;AAsBJC,EAAAA,GAtBI;AAuBJC,EAAAA,EAvBI;AAwBJC,EAAAA,GAxBI;AAyBJC,EAAAA;AAzBI,IA0BF7B,QA1BJ;AA4BA,MAAM8B,IAAI,GAAG,CAAb;AACA,MAAMC,KAAK,GAAG,CAAd;AACA,MAAMC,IAAI,GAAG,CAAb;AACA,MAAMC,KAAK,GAAG,CAAC,CAAf;AAEA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,eAAe,GAAG,CAAC,CAAzB;AAEA,MAAMC,sBAAsB,GAAG,CAA/B;AAEA,MAAMC,oBAAoB,GAAG,KAA7B;AAEA,MAAMC,aAAa,GAAG;AACpBC,EAAAA,SAAS,EAAE,IADS;AAEpBC,EAAAA,OAAO,EAAE,GAFW;AAGpBC,EAAAA,IAAI,EAAE,CAHc;AAIpBC,EAAAA,iBAAiB,EAAE,IAJC;AAKpBC,EAAAA,yBAAyB,EAAE,IALP;AAMpBC,EAAAA,kBAAkB,EAAE;AANA,CAAtB;AASA,MAAMC,aAAa,GAAG,IAAI7C,QAAQ,CAACM,KAAb,CAAmB,CAAnB,CAAtB;AACA,MAAMwC,YAAY,GAAG,IAAI9C,QAAQ,CAACM,KAAb,CAAmB,CAAnB,CAArB;AAIA,eAAe,MAAMyC,UAAN,SAAyBvD,KAAK,CAACwD,SAA/B,CAAsD;AAAA;AAAA;;AAAA,kDAiDpC,MAAM;AACnC,UAAI,KAAKC,iBAAL,KAA2BC,SAA/B,EAA0C;AACxCxD,QAAAA,kBAAkB,CAACyD,sBAAnB,CAA0C,KAAKF,iBAA/C;AACA,aAAKA,iBAAL,GAAyBC,SAAzB;AACD;AACF,KAtDkE;;AAAA,oDAwDlC,MAAM;AACrC,UAAI,KAAKD,iBAAL,KAA2BC,SAA/B,EAA0C;AACxC,aAAKD,iBAAL,GAAyBvD,kBAAkB,CAAC0D,uBAAnB,EAAzB;AACD;AACF,KA5DkE;;AAAA,4CA8D1C,MAAc;AACrC,YAAM;AAAEC,QAAAA,WAAF;AAAeC,QAAAA;AAAf,UAA8B,KAAKC,KAAzC;AACA,YAAM;AAAEC,QAAAA,KAAK,GAAGnB;AAAV,UACJvC,UAAU,CAAC2D,OAAX,CAAmBJ,WAAnB,KAAmC,EADrC;;AAGA,UAAI,OAAOG,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACE,QAAN,CAAe,GAAf,CAAjC,EAAsD;AACpD;AACA,cAAMC,UAAU,GAAGC,MAAM,CAACJ,KAAK,CAACK,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAD,CAAzB;;AAEA,YAAID,MAAM,CAACE,QAAP,CAAgBH,UAAhB,CAAJ,EAAiC;AAC/B,iBAAOL,UAAU,CAACE,KAAX,IAAoBG,UAAU,GAAG,GAAjC,CAAP;AACD;AACF;;AAED,aAAO,OAAOH,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,CAA3C;AACD,KA7EkE;;AAAA,mCA+EnD,IAAInD,KAAJ,EA/EmD;;AAAA;;AAAA,+CAkFvC,IAAIC,KAAJ,CAC1B,KAAKiD,KAAL,CAAWQ,UAAX,KAA0B,OAA1B,GAAoCjC,IAApC,GAA2CC,KADjB,CAlFuC;;AAAA,oCAsFlD,IAAIzB,KAAJ,CAAkB,KAAKiD,KAAL,CAAWS,IAAX,GAAkBlC,IAAlB,GAAyBC,KAA3C,CAtFkD;;AAAA,wCAuF9C,IAAIzB,KAAJ,CAAuB2B,KAAvB,CAvF8C;;AAAA,uCAwF/C,IAAI3B,KAAJ,CAAkByB,KAAlB,CAxF+C;;AAAA,gDA0FtC,KAAKkC,cAAL,EA1FsC;;AAAA,0CA4F5C,IAAI3D,KAAJ,CAAkBJ,YAAY,CAACgE,YAA/B,CA5F4C;;AAAA,oCA6FlD,IAAI5D,KAAJ,CAAkB,CAAlB,CA7FkD;;AAAA,uCA8F/C,IAAIA,KAAJ,CAAkB,CAAlB,CA9F+C;;AAAA,sCA+FhD,IAAIA,KAAJ,CAAkB,CAAlB,CA/FgD;;AAAA,qCAgGjD,IAAIA,KAAJ,CAAkB,CAAlB,CAhGiD;;AAAA,sCAiGhD,IAAIA,KAAJ,CACjB,KAAKiD,KAAL,CAAWS,IAAX,GACI,KAAKG,kBAAL,IACC,KAAKZ,KAAL,CAAWa,cAAX,KAA8B,OAA9B,GACGjC,eADH,GAEGD,cAHJ,CADJ,GAKI,CANa,CAjGgD;;AAAA,4CA0G1C,IAAI5B,KAAJ,CAAkB,KAAKiD,KAAL,CAAWD,UAAX,CAAsBE,KAAxC,CA1G0C;;AAAA,yCA2G7C,IAAIlD,KAAJ,CAAkB,KAAK6D,kBAAvB,CA3G6C;;AAAA,2CA4G3C,IAAI7D,KAAJ,CACtB,KAAKiD,KAAL,CAAWQ,UAAX,KAA0B,WAA1B,GAAwC,CAAxC,GAA4C,CADtB,CA5G2C;;AAAA,4CA+G1C,IAAIzD,KAAJ,CACvB,KAAKiD,KAAL,CAAWa,cAAX,KAA8B,OAA9B,GAAwCjC,eAAxC,GAA0DD,cADnC,CA/G0C;;AAAA,qDA4IjCjB,IAAI,CACpC,KAAKoD,iBAD+B,EAEpCpD,IAAI,CACFE,EAAE,CAAC,KAAKiD,cAAN,EAAsBlC,cAAtB,CADA,EAEFX,GAAG,EACD;AACAM,IAAAA,GAAG,CAACA,GAAG,CAAC,KAAKyC,MAAN,EAAc,KAAKC,QAAnB,CAAJ,EAAkC,KAAKC,WAAvC,CAFF,EAGD,CAHC,CAFD,EAOFhD,GAAG,CACDC,QAAQ,EACN;AACAI,IAAAA,GAAG,CACDA,GAAG,CAAC,KAAK4C,cAAN,EAAsB,KAAKD,WAA3B,CADF,EAED3C,GAAG,CAAC,KAAKyC,MAAN,EAAc,KAAKC,QAAnB,CAFF,CAFG,EAMNpC,eANM,CADP,EASD,CATC,CAPD,CAFgC,EAqBpC,CArBoC,CA5I6B;;AAAA,oDAoKlC,IAAI7B,KAAJ,CAC/B,KAAKiD,KAAL,CAAWmB,sBADoB,CApKkC;;AAAA,oDAuKlC,IAAIpE,KAAJ,CAC/B,KAAKiD,KAAL,CAAWoB,sBADoB,CAvKkC;;AAAA,8CA2K/B,KAAKpB,KAAL,CAAWS,IA3KoB;;AAAA;;AAAA,+CA8K9B,KA9K8B;;AAAA,mDAgLnC,IAAI1D,KAAJ,CAAkByB,KAAlB,CAhLmC;;AAAA,0CAkL3C6C,MAAD,IAA4C;AACjE,YAAMC,OAAO,GAAG,IAAIvE,KAAJ,CAAU,CAAV,CAAhB;AACA,YAAMwE,SAAS,GAAG,IAAIxE,KAAJ,CAAU,CAAV,CAAlB;AAEA,YAAMyE,KAAK,GAAG;AACZC,QAAAA,QAAQ,EAAE,KAAKA,QADH;AAEZC,QAAAA,IAAI,EAAE,IAAI3E,KAAJ,CAAU,CAAV,CAFM;AAGZ4E,QAAAA,QAAQ,EAAE,IAAI5E,KAAJ,CAAUyB,KAAV,CAHE;AAIZoD,QAAAA,QAAQ,EAAE,IAAI7E,KAAJ,CAAU,CAAV;AAJE,OAAd;AAOA,aAAOS,KAAK,CAAC,CACXE,IAAI,CAACT,YAAY,CAAC,KAAK4E,KAAN,CAAb,EAA2BpD,IAA3B,EAAiC,CACnC;AACA;AACAJ,MAAAA,GAAG,CAACiD,OAAD,EAAUpD,QAAQ,CAACmD,MAAD,EAAS,KAAKJ,WAAd,EAA2B,KAAKJ,cAAhC,CAAlB,CAHgC,EAInCxC,GAAG,CAACkD,SAAD,EAAY,CAAZ,CAJgC,EAKnClD,GAAG,CAACmD,KAAK,CAACE,IAAP,EAAa,CAAb,CALgC,EAMnCrD,GAAG,CAACmD,KAAK,CAACG,QAAP,EAAiBnD,KAAjB,CANgC,EAOnCH,GAAG,CAACmD,KAAK,CAACI,QAAP,EAAiB,KAAKE,SAAtB,CAPgC,EAQnCzD,GAAG,CAAC,KAAKgD,MAAN,EAAcA,MAAd,CARgC,EASnCnE,UAAU,CAAC,KAAK2E,KAAN,CATyB,EAUnCpE,IAAI,CAAC,EAAD,EAAK,KAAKsE,sBAAV,CAV+B,EAWnC1D,GAAG,CAAC,KAAK2D,qBAAN,EAA6BxD,KAA7B,CAXgC,CAAjC,CADO,EAcXpB,MAAM,CAAC,KAAKyE,KAAN,EAAaL,KAAb,EAAoB,EAAE,GAAGzC,aAAL;AAAoBuC,QAAAA;AAApB,OAApB,CAdK,EAeX5D,IAAI,CAAC8D,KAAK,CAACG,QAAP,EAAiB,CACnB;AACAtD,MAAAA,GAAG,CAAC,KAAK0C,MAAN,EAAc,CAAd,CAFgB,EAGnB1C,GAAG,CAAC,KAAK2C,QAAN,EAAgB,CAAhB,CAHgB,EAInB3C,GAAG,CAAC,KAAKyD,SAAN,EAAiB,CAAjB,CAJgB,EAKnBzD,GAAG,CAAC,KAAK4D,OAAN,EAAe,CAAf,CALgB,EAMnB;AACA9E,MAAAA,SAAS,CAAC,KAAK0E,KAAN,CAPU,EAQnBpE,IAAI,CAAC,CAAC,KAAK4D,MAAN,CAAD,EAAgB,QAAgC;AAAA,YAA/B,CAACa,KAAD,CAA+B;AAClD,cAAMzB,IAAI,GAAG0B,OAAO,CAACD,KAAD,CAApB;AACA,aAAKE,oBAAL;;AAEA,YAAI3B,IAAI,KAAK,KAAKT,KAAL,CAAWS,IAAxB,EAA8B;AAC5B;AACA;AACA,eAAK4B,YAAL,CAAkB,KAAKrC,KAAL,CAAWS,IAA7B;AACD;AACF,OATG,CARe,CAAjB,CAfO,CAAD,CAAZ;AAmCD,KAhOkE;;AAAA,mCAkOnDjD,KAAK,CAAC,CACpBR,QAAQ,CACN,KAAKqE,MADC,EAEN5D,IAAI,CAAC,CAAC,KAAK4D,MAAN,CAAD,EAAgB,SAAgC;AAAA,UAA/B,CAACa,KAAD,CAA+B;AAClD,YAAMzB,IAAI,GAAG0B,OAAO,CAACD,KAAD,CAApB;AAEA,WAAKI,gBAAL,GAAwB7B,IAAxB,CAHkD,CAKlD;;AACA,UAAIA,IAAI,KAAK,KAAKT,KAAL,CAAWS,IAAxB,EAA8B;AAC5B;AACA,YAAIA,IAAJ,EAAU;AACR,eAAKT,KAAL,CAAWuC,MAAX;AACD,SAFD,MAEO;AACL,eAAKvC,KAAL,CAAWwC,OAAX;AACD;;AAED,aAAKC,gBAAL,GAAwBhC,IAAxB,CAR4B,CAU5B;AACA;AACA;;AACA,aAAKiC,WAAL;AACD;AACF,KArBG,CAFE,CADY,EA0BpB1F,QAAQ,CACN,KAAK2F,UADC,EAENjF,IAAI,CAACS,GAAG,CAAC,KAAKwE,UAAN,EAAkBjE,KAAlB,CAAJ,EAA8B,CAChC;AACAhB,IAAAA,IAAI,CAACT,YAAY,CAAC,KAAK4E,KAAN,CAAb,EAA2B1E,SAAS,CAAC,KAAK0E,KAAN,CAApC,CAF4B,EAGhC;AACAxD,IAAAA,GAAG,CAAC,KAAKgD,MAAN,EAAc,KAAKsB,UAAnB,CAJ6B,EAKhCtE,GAAG,CAAC,KAAK2C,QAAN,EAAgB,CAAhB,CAL6B,EAMhC3C,GAAG,CAAC,KAAKsE,UAAN,EAAkBjE,KAAlB,CAN6B,CAA9B,CAFE,CA1BY,EAqCpB;AACA1B,IAAAA,QAAQ,CACN,KAAK4F,SADC,EAEN;AACA;AACA;AACAnF,IAAAA,IAAI,CAAC,CAAC,KAAKmF,SAAN,CAAD,EAAmB,SAAgC;AAAA,UAA/B,CAACV,KAAD,CAA+B;AACrD,YAAM;AAAEW,QAAAA;AAAF,UAA0B,KAAK7C,KAArC;;AAEA,UAAIkC,KAAK,KAAK3D,IAAd,EAAoB;AAClB,YAAIsE,mBAAmB,KAAK,SAA5B,EAAuC;AACrCzG,UAAAA,QAAQ,CAAC0G,OAAT;AACD;;AAED,aAAKC,eAAL,CAAqB,IAArB;AACD,OAND,MAMO;AACL,aAAKA,eAAL,CAAqB,KAAKT,gBAA1B;AACD;AACF,KAZG,CALE,CAtCY,EAyDpBtF,QAAQ,CACN,KAAKgG,YADC,EAENtF,IAAI,CACFE,EAAE,CAAC,KAAKoF,YAAN,EAAoBrG,YAAY,CAACsG,MAAjC,CADA,EAEFxF,IAAI,CAAC,EAAD,EAAK,KAAKsE,sBAAV,CAFF,CAFE,CAzDY,EAgEpBrE,IAAI,CACFE,EAAE,CAAC,KAAKoF,YAAN,EAAoBrG,YAAY,CAACsG,MAAjC,CADA,EAEF,CACEvF,IAAI,CAAC,KAAKkF,SAAN,EAAiBnE,IAAjB,EAAuB,CACzB;AACAJ,IAAAA,GAAG,CAAC,KAAKuE,SAAN,EAAiBrE,IAAjB,CAFsB,EAGzB;AACAF,IAAAA,GAAG,CAAC,KAAK4D,OAAN,EAAe,KAAKR,QAApB,CAJsB,CAAvB,CADN,EAOE;AACApD,IAAAA,GAAG,CACD,KAAKoD,QADJ,EAEDnE,GAAG,CAAC,KAAK2E,OAAN,EAAe,KAAKjB,QAApB,EAA8B,KAAKkC,uBAAnC,CAFF,CARL,EAYE;AACA/F,IAAAA,SAAS,CAAC,KAAK0E,KAAN,CAbX,CAFE,EAiBF,CACExD,GAAG,CAAC,KAAKuE,SAAN,EAAiBpE,KAAjB,CADL,EAEEH,GAAG,CAAC,KAAK0C,MAAN,EAAc,CAAd,CAFL,EAGE,KAAKoC,YAAL,CACEzF,IAAI,CACF,KAAKsE,qBADH,EAEF,KAAKX,MAFH,EAGF3D,IAAI,CACFU,EAAE,CACAb,GAAG,CACDO,WAAW,CAACT,GAAG,CAAC,KAAK2D,QAAN,CAAJ,EAAqBnC,sBAArB,CADV,EAEDf,WAAW,CAACT,GAAG,CAAC,KAAKyE,SAAN,CAAJ,EAAsB,KAAKV,sBAA3B,CAFV,CADH,EAKAtD,WAAW,CAACT,GAAG,CAAC,KAAK2D,QAAN,CAAJ,EAAqB,KAAKG,sBAA1B,CALX,CADA,EAQFzD,IAAI,CACFE,EAAE,CAAC,KAAKiD,cAAN,EAAsBlC,cAAtB,CADA,EAEF;AACAb,IAAAA,WAAW,CACTJ,IAAI,CAACE,EAAE,CAAC,KAAKkE,SAAN,EAAiB,CAAjB,CAAH,EAAwB,KAAKd,QAA7B,EAAuC,KAAKc,SAA5C,CADK,EAET,CAFS,CAHT,EAOF;AACA/D,IAAAA,QAAQ,CACNL,IAAI,CAACE,EAAE,CAAC,KAAKkE,SAAN,EAAiB,CAAjB,CAAH,EAAwB,KAAKd,QAA7B,EAAuC,KAAKc,SAA5C,CADE,EAEN,CAFM,CARN,CARF,EAqBF,KAAKT,MArBH,CAHF,CADN,CAHF,CAjBE,CAhEgB,EAmHpB,KAAKI,QAnHe,CAAD,CAlO8C;;AAAA,wCAwV9C/D,IAAI,CACvBE,EAAE,CAAC,KAAKiD,cAAN,EAAsBjC,eAAtB,CADqB,EAEvBX,GAAG,CAACD,GAAG,CAACE,QAAQ,CAAC,KAAK+C,WAAN,EAAmB,CAAC,CAApB,CAAT,EAAiC,KAAKmC,KAAtC,CAAJ,EAAkD,CAAlD,CAFoB,EAGvBpF,GAAG,CAACC,GAAG,CAAC,KAAKgD,WAAN,EAAmB,KAAKmC,KAAxB,CAAJ,EAAoC,CAApC,CAHoB,CAxV0C;;AAAA,sCA8VhD1F,IAAI,EACrB;AACAE,IAAAA,EAAE,CAAC,KAAKqD,WAAN,EAAmB,CAAnB,CAFmB,EAGrB,CAHqB,EAIrB5D,GAAG,CAACM,MAAM,CAAC,KAAK0F,UAAN,EAAkB,KAAKpC,WAAvB,CAAP,CAJkB,CA9V4C;;AAAA,gDAqWtCpD,KAAK,CAAC,CACjC;AACEyF,MAAAA,WAAW,EAAE;AACXC,QAAAA,CAAC,EAAE,KAAKxC,MADG;AAEXyC,QAAAA,YAAY,EAAE,KAAKxC,QAFR;AAGXc,QAAAA,SAAS,EAAE,KAAKA;AAHL;AADf,KADiC,CAAD,CArWiC;;AAAA,sDA+WhCjE,KAAK,CAAC,CACvC;AACEyF,MAAAA,WAAW,EAAE;AACX9B,QAAAA,KAAK,EAAGiC,CAAD,IAA+BpF,GAAG,CAAC,KAAK2E,YAAN,EAAoBS,CAApB;AAD9B;AADf,KADuC,CAAD,CA/W2B;;AAAA,mDAuXlCC,CAAD,IAC9B,KAAKxC,cAAL,CAAoByC,QAApB,CAA6BD,CAAC,CAACJ,WAAF,CAAcM,MAAd,CAAqB3D,KAAlD,CAxXiE;;AAAA,gDA0XrCyD,CAAD,IAA0B;AACrD,WAAKzC,WAAL,CAAiB0C,QAAjB,CAA0BD,CAAC,CAACJ,WAAF,CAAcM,MAAd,CAAqB3D,KAA/C;AACA,WAAKoC,YAAL,CAAkB,KAAKrC,KAAL,CAAWS,IAA7B,EAFqD,CAIrD;AACA;AACA;;AACAoD,MAAAA,qBAAqB,CAAC,MACpBA,qBAAqB,CAAC,MAAM,KAAKC,aAAL,CAAmBH,QAAnB,CAA4B,CAA5B,CAAP,CADF,CAArB;AAGD,KApYkE;;AAAA,0CAsY3ClD,IAAD,IAAmB;AACxC,UAAI,KAAK6B,gBAAL,KAA0B7B,IAA9B,EAAoC;AAClC,aAAKkC,UAAL,CAAgBgB,QAAhB,CAAyBlD,IAAI,GAAGlC,IAAH,GAAUC,KAAvC,EADkC,CAGlC;AACA;;AACA,aAAK8D,gBAAL,GAAwB7B,IAAxB;AACD;AACF,KA9YkE;;AAAA,6CAgZxCsD,MAAD,IAAqB;AAC7C,YAAM;AAAEC,QAAAA,mBAAmB,EAAEC,aAAvB;AAAsCC,QAAAA;AAAtC,UACJ,KAAKlE,KADP;;AAGA,UAAIiE,aAAa,IAAI,KAAKE,iBAAL,KAA2BJ,MAAhD,EAAwD;AACtD,aAAKI,iBAAL,GAAyBJ,MAAzB;AACAzH,QAAAA,SAAS,CAAC8H,SAAV,CAAoBL,MAApB,EAA4BG,kBAA5B;AACD;AACF,KAxZkE;AAAA;;AACnEG,EAAAA,kBAAkB,CAACC,SAAD,EAAyB;AACzC,UAAM;AACJ7D,MAAAA,IADI;AAEJI,MAAAA,cAFI;AAGJL,MAAAA,UAHI;AAIJW,MAAAA,sBAJI;AAKJC,MAAAA,sBALI;AAMJ4C,MAAAA,mBAAmB,EAAEC;AANjB,QAOF,KAAKjE,KAPT;;AASA,SACE;AACA,WAAO,KAAKyC,gBAAZ,KAAiC,SAAjC,IACAhC,IAAI,KAAK,KAAKgC,gBAHhB,EAIE;AACA,WAAKJ,YAAL,CAAkB5B,IAAlB;AACD;;AAED,SAAKgC,gBAAL,GAAwB9C,SAAxB;;AAEA,QAAIc,IAAI,KAAK6D,SAAS,CAAC7D,IAAnB,IAA2BwD,aAA/B,EAA8C;AAC5C,WAAKlB,eAAL,CAAqBtC,IAArB;AACD;;AAED,QAAI6D,SAAS,CAACzD,cAAV,KAA6BA,cAAjC,EAAiD;AAC/C,WAAKA,cAAL,CAAoB8C,QAApB,CACE9C,cAAc,KAAK,OAAnB,GAA6BjC,eAA7B,GAA+CD,cADjD;AAGD;;AAED,QAAI2F,SAAS,CAAC9D,UAAV,KAAyBA,UAA7B,EAAyC;AACvC,WAAKM,iBAAL,CAAuB6C,QAAvB,CAAgCnD,UAAU,KAAK,OAAf,GAAyBjC,IAAzB,GAAgCC,KAAhE;AACD;;AAED,QAAI8F,SAAS,CAACnD,sBAAV,KAAqCA,sBAAzC,EAAiE;AAC/D,WAAKA,sBAAL,CAA4BwC,QAA5B,CAAqCxC,sBAArC;AACD;;AAED,QAAImD,SAAS,CAAClD,sBAAV,KAAqCA,sBAAzC,EAAiE;AAC/D,WAAKA,sBAAL,CAA4BuC,QAA5B,CAAqCvC,sBAArC;AACD;AACF;;AAEDmD,EAAAA,oBAAoB,GAAG;AACrB,SAAKxB,eAAL,CAAqB,KAArB;AACA,SAAKX,oBAAL;AACD;;AA2WDoC,EAAAA,MAAM,GAAG;AACP,UAAM;AACJ/D,MAAAA,IADI;AAEJgE,MAAAA,YAFI;AAGJ5D,MAAAA,cAHI;AAIJL,MAAAA,UAJI;AAKJkE,MAAAA,cALI;AAMJ5E,MAAAA,WANI;AAOJ6E,MAAAA,YAPI;AAQJC,MAAAA,mBARI;AASJC,MAAAA,kBATI;AAUJC,MAAAA;AAVI,QAWF,KAAK9E,KAXT;AAaA,UAAMqB,MAAM,GAAGb,UAAU,KAAK,WAAf,GAA6B,IAA7B,GAAoCC,IAAnD;AACA,UAAMsE,OAAO,GAAGlE,cAAc,KAAK,OAAnC;AAEA,UAAMmE,iBAAiB,GACrBxE,UAAU,KAAK,OAAf,GAAyBlB,aAAzB,GAAyC,KAAK+D,UADhD;AAGA,UAAM4B,gBAAgB,GACpBzE,UAAU,KAAK,MAAf,GACItE,WAAW,CAACgJ,KAAZ,GACEhH,QAAQ,CACNI,GAAG,CAAC,KAAK4C,cAAN,EAAsB,KAAKD,WAA3B,CADG,EAEN8D,OAAO,GAAG,CAAH,GAAO,CAAC,CAFT,CADV,GAKEzF,aANN,GAOI,KAAK+D,UARX;AAUA,UAAM8B,MAAM,GACV3E,UAAU,KAAK,MAAf,GACI,CADJ,GAEItE,WAAW,CAACgJ,KAAZ,GACA,MADA,GAEAhH,QAAQ,CAAC,KAAK+C,WAAN,EAAmB,CAAC,CAApB,CALd,CA9BO,CAqCP;AACA;;AACA,UAAMmE,OAAO,GAAGL,OAAO,GACnB;AACA;AACA;AAAEM,MAAAA,KAAK,EAAE,CAAT;AAAYpF,MAAAA,KAAK,EAAEoB,MAAM,GAAG1B,SAAH,GAAe+E;AAAxC,KAHmB,GAInB;AAAEY,MAAAA,IAAI,EAAE,CAAR;AAAWrF,MAAAA,KAAK,EAAEoB,MAAM,GAAG1B,SAAH,GAAe+E;AAAvC,KAJJ;AAMA,UAAMa,QAAQ,GAAG/E,UAAU,KAAK,WAAf,GAA6BjB,YAA7B,GAA4C,KAAKgG,QAAlE;AAEA,wBACE,oBAAC,qBAAD,CAAuB,QAAvB;AAAgC,MAAA,KAAK,EAAEA;AAAvC,oBACE,oBAAC,iBAAD;AACE,MAAA,aAAa,EAAE,CAAC,CAAC1G,sBAAF,EAA0BA,sBAA1B,CADjB;AAEE,MAAA,WAAW,EAAE,CAAC,CAACA,sBAAF,EAA0BA,sBAA1B,CAFf;AAGE,MAAA,cAAc,EAAE,KAAK2G,kBAHvB;AAIE,MAAA,oBAAoB,EAAE,KAAKC,wBAJ7B;AAKE,MAAA,OAAO,EAAEL,OALX;AAME,MAAA,OAAO,EAAE5E,UAAU,KAAK,WAAf,IAA8BiE;AANzC,OAOMK,mBAPN,gBASE,oBAAC,QAAD,CAAU,IAAV;AACE,MAAA,QAAQ,EAAE,KAAKY,qBADjB;AAEE,MAAA,KAAK,EAAE,CACLC,MAAM,CAACC,IADF,EAEL;AACEC,QAAAA,aAAa,EACXrF,UAAU,KAAK,WAAf,IAA8B,CAACuE,OAA/B,GACI,aADJ,GAEI;AAJR,OAFK;AAFT,oBAYE,oBAAC,QAAD,CAAU,IAAV;AACE,MAAA,KAAK,EAAE,CACLY,MAAM,CAACG,OADF,EAEL;AACEC,QAAAA,SAAS,EACPvF,UAAU,KAAK,WAAf,GACI;AACA;AACA,UAHJ,GAII,CAAC;AAAE6C,UAAAA,UAAU,EAAE2B;AAAd,SAAD;AANR,OAFK;AADT,oBAaE,oBAAC,IAAD;AACE,MAAA,2BAA2B,EACzB3D,MAAM,IAAIb,UAAU,KAAK,WAF7B;AAIE,MAAA,yBAAyB,EACvBa,MAAM,IAAIb,UAAU,KAAK,WAAzB,GACI,qBADJ,GAEI,MAPR;AASE,MAAA,KAAK,EAAEmF,MAAM,CAACG;AAThB,OAWGjB,kBAAkB,EAXrB,CAbF,EA2BI;AACArE,IAAAA,UAAU,KAAK,WAAf,GAA6B,IAA7B,gBACE,oBAAC,OAAD;AACE,MAAA,QAAQ,EAAE+E,QADZ;AAEE,MAAA,OAAO,EAAE,MAAM,KAAKlD,YAAL,CAAkB,KAAlB,CAFjB;AAGE,MAAA,KAAK,EAAEsC,YAHT;AAIE,MAAA,2BAA2B,EAAE,CAACtD,MAJhC;AAKE,MAAA,yBAAyB,EACvBA,MAAM,GAAG,MAAH,GAAY;AANtB,MA7BN,CAZF,eAqDE,oBAAC,QAAD,CAAU,IAAV;AACE;AACA;AACA,MAAA,IAAI,EAAE,KAAKH;AAHb,MArDF,EA0DGV,UAAU,KAAK,WAAf,GAA6B,IAA7B,gBACC,oBAAC,QAAD,CAAU,IAAV;AACE,MAAA,IAAI,EAAEhD,KAAK,CAAC,CACVR,QAAQ,CAAC,KAAKgF,qBAAN,EAA6B,CACnCtE,IAAI,CAACE,EAAE,CAAC,KAAKoE,qBAAN,EAA6BzD,IAA7B,CAAH,EAAuC,CACzCF,GAAG,CAAC,KAAKsE,UAAN,EAAkBnE,KAAlB,CADsC,EAEzCf,IAAI,CAAC,EAAD,EAAK,MAAO,KAAK6E,gBAAL,GAAwB,KAApC,CAFqC,CAAvC,CAD+B,CAA7B,CADE,CAAD;AADb,MA3DJ,eAsEE,oBAAC,QAAD,CAAU,IAAV;AACE,MAAA,wBAAwB,EAAEjB,MAAM,IAAIb,UAAU,KAAK,WADrD;AAEE,MAAA,qBAAqB,EAAEnE,QAAQ,CAAC2J,EAAT,KAAgB,KAFzC;AAGE,MAAA,QAAQ,EAAE,KAAKC,kBAHjB;AAIE,MAAA,KAAK,EAAE,CACLN,MAAM,CAACO,SADF,EAEL;AACEH,QAAAA,SAAS,EACPvF,UAAU,KAAK,WAAf,GACI;AACA;AACA,UAHJ,GAII,CAAC;AAAE6C,UAAAA,UAAU,EAAE4B;AAAd,SAAD,CANR;AAOEkB,QAAAA,OAAO,EAAE,KAAKrC;AAPhB,OAFK,EAWLtD,UAAU,KAAK,WAAf,GACI;AACAuE,MAAAA,OAAO,GACL;AAAEM,QAAAA,KAAK,EAAE;AAAT,OADK,GAEL;AAAEC,QAAAA,IAAI,EAAE;AAAR,OAJN,GAKI,CACEK,MAAM,CAACS,YADT,EAEErB,OAAO,GAAG;AAAEM,QAAAA,KAAK,EAAEF;AAAT,OAAH,GAAuB;AAAEG,QAAAA,IAAI,EAAEH;AAAR,OAFhC,EAGE;AAAEkB,QAAAA,MAAM,EAAE7F,UAAU,KAAK,MAAf,GAAwB,CAAC,CAAzB,GAA6B;AAAvC,OAHF,CAhBC,EAqBLV,WArBK;AAJT,OA4BG8E,mBAAmB,EA5BtB,CAtEF,CATF,CADF,CADF;AAmHD;;AA5jBkE;AA+jBrE,MAAMe,MAAM,GAAGpJ,UAAU,CAAC+J,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE;AACTK,IAAAA,eAAe,EAAE,OADR;AAETC,IAAAA,QAAQ,EAAE;AAFD,GADoB;AAK/BJ,EAAAA,YAAY,EAAE;AACZ3E,IAAAA,QAAQ,EAAE,UADE;AAEZgF,IAAAA,GAAG,EAAE,CAFO;AAGZC,IAAAA,MAAM,EAAE,CAHI;AAIZzG,IAAAA,KAAK,EAAEnB;AAJK,GALiB;AAW/BgH,EAAAA,OAAO,EAAE;AACPa,IAAAA,IAAI,EAAE;AADC,GAXsB;AAc/Bf,EAAAA,IAAI,EAAE;AACJe,IAAAA,IAAI,EAAE,CADF;AAEJ,OAAGtK,QAAQ,CAACuK,MAAT,CAAgB;AACjB;AACA;AACAC,MAAAA,GAAG,EAAE,IAHY;AAIjBC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ;AAJQ,KAAhB;AAFC;AAdyB,CAAlB,CAAf","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.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.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"]}
@@ -197,7 +197,7 @@ export default function Drawer(_ref) {
197
197
  return {
198
198
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
199
199
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
200
- undefined : [{
200
+ [] : [{
201
201
  translateX: drawerType === 'back' ? 0 : translateX.value
202
202
  }]
203
203
  };
@@ -206,7 +206,7 @@ export default function Drawer(_ref) {
206
206
  return {
207
207
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
208
208
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
209
- undefined : [{
209
+ [] : [{
210
210
  translateX: drawerType === 'front' ? 0 : drawerPosition === 'left' ? drawerWidth + translateX.value : translateX.value - drawerWidth
211
211
  }]
212
212
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["Drawer.tsx"],"names":["React","InteractionManager","Keyboard","Platform","StatusBar","StyleSheet","View","PanGestureHandler","State","GestureState","Animated","interpolate","runOnJS","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","DrawerProgressContext","Overlay","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","flatten","endsWith","percentage","Number","replace","isFinite","drawerWidth","isOpen","isRight","getDrawerTranslationX","useCallback","hideStatusBar","hide","setHidden","useEffect","interactionHandleRef","useRef","startInteraction","current","createInteractionHandle","endInteraction","clearInteractionHandle","hideKeyboard","dismiss","onGestureStart","onGestureEnd","hitSlop","right","undefined","left","touchStartX","touchX","translationX","gestureState","UNDETERMINED","toggleDrawer","velocity","translateX","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","onGestureEvent","onStart","event","ctx","startX","state","x","onActive","onEnd","nextOpen","abs","velocityX","touchDistance","ACTIVE","drawerAnimatedStyle","transform","contentAnimatedStyle","progress","styles","main","flexDirection","content","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 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 onGestureEnd = () => {\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(\n translateX,\n {\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 (translationX.value === getDrawerTranslationX(true)) {\n runOnJS(onOpen)();\n } else if (translationX.value === getDrawerTranslationX(false)) {\n runOnJS(onClose)();\n }\n }\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 runOnJS(onGestureEnd)();\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 drawerAnimatedStyle = 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 undefined\n : [\n {\n translateX: drawerType === 'back' ? 0 : translateX.value,\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 undefined\n : [\n {\n translateX:\n drawerType === 'front'\n ? 0\n : drawerPosition === 'left'\n ? drawerWidth + translateX.value\n : translateX.value - drawerWidth,\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,"sources":["Drawer.tsx"],"names":["React","InteractionManager","Keyboard","Platform","StatusBar","StyleSheet","View","PanGestureHandler","State","GestureState","Animated","interpolate","runOnJS","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","DrawerProgressContext","Overlay","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","flatten","endsWith","percentage","Number","replace","isFinite","drawerWidth","isOpen","isRight","getDrawerTranslationX","useCallback","hideStatusBar","hide","setHidden","useEffect","interactionHandleRef","useRef","startInteraction","current","createInteractionHandle","endInteraction","clearInteractionHandle","hideKeyboard","dismiss","onGestureStart","onGestureEnd","hitSlop","right","undefined","left","touchStartX","touchX","translationX","gestureState","UNDETERMINED","toggleDrawer","velocity","translateX","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","onGestureEvent","onStart","event","ctx","startX","state","x","onActive","onEnd","nextOpen","abs","velocityX","touchDistance","ACTIVE","drawerAnimatedStyle","transform","contentAnimatedStyle","progress","styles","main","flexDirection","content","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 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 onGestureEnd = () => {\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(\n translateX,\n {\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 (translationX.value === getDrawerTranslationX(true)) {\n runOnJS(onOpen)();\n } else if (translationX.value === getDrawerTranslationX(false)) {\n runOnJS(onClose)();\n }\n }\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 runOnJS(onGestureEnd)();\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 drawerAnimatedStyle = 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: drawerType === 'back' ? 0 : translateX.value,\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 drawerType === 'front'\n ? 0\n : drawerPosition === 'left'\n ? drawerWidth + translateX.value\n : translateX.value - drawerWidth,\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"]}
@@ -89,6 +89,10 @@ export declare type DrawerNavigationOptions = HeaderOptions & {
89
89
  * Background color for the inactive items in the drawer.
90
90
  */
91
91
  drawerInactiveBackgroundColor?: string;
92
+ /**
93
+ * Whether label font should scale to respect Text Size accessibility settings.
94
+ */
95
+ drawerAllowFontScaling?: boolean;
92
96
  /**
93
97
  * Style object for the single item, which can contain an icon and/or a label.
94
98
  */
@@ -201,7 +205,15 @@ export declare type DrawerHeaderProps = {
201
205
  */
202
206
  navigation: DrawerNavigationProp<ParamListBase>;
203
207
  };
204
- export declare type DrawerNavigationEventMap = {};
208
+ export declare type DrawerNavigationEventMap = {
209
+ /**
210
+ * Event which fires on tapping on the item in the drawer menu.
211
+ */
212
+ drawerItemPress: {
213
+ data: undefined;
214
+ canPreventDefault: true;
215
+ };
216
+ };
205
217
  export declare type DrawerNavigationHelpers = NavigationHelpers<ParamListBase, DrawerNavigationEventMap> & DrawerActionHelpers<ParamListBase>;
206
218
  export declare type DrawerNavigationProp<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList> = NavigationProp<ParamList, RouteName, DrawerNavigationState<ParamList>, DrawerNavigationOptions, DrawerNavigationEventMap> & DrawerActionHelpers<ParamList>;
207
219
  export declare type DrawerScreenProps<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList> = {
@@ -66,6 +66,10 @@ declare type Props = {
66
66
  * Style object for the wrapper element.
67
67
  */
68
68
  style?: StyleProp<ViewStyle>;
69
+ /**
70
+ * Whether label font should scale to respect Text Size accessibility settings.
71
+ */
72
+ allowFontScaling?: boolean;
69
73
  };
70
74
  /**
71
75
  * A component used to show an action item with an icon and a label in a navigation drawer.
@@ -8,6 +8,7 @@ declare type Props = {
8
8
  };
9
9
  export declare const MaybeScreenContainer: ({ enabled, ...rest }: ViewProps & {
10
10
  enabled: boolean;
11
+ hasTwoStates: boolean;
11
12
  children: React.ReactNode;
12
13
  }) => JSX.Element;
13
14
  export declare function MaybeScreen({ visible, children, ...rest }: Props): JSX.Element;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/drawer",
3
3
  "description": "Drawer navigator component with animated transitions and gesturess",
4
- "version": "6.2.0",
4
+ "version": "6.3.0",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -41,12 +41,12 @@
41
41
  "clean": "del lib"
42
42
  },
43
43
  "dependencies": {
44
- "@react-navigation/elements": "^1.3.0",
44
+ "@react-navigation/elements": "^1.3.1",
45
45
  "color": "^3.1.3",
46
46
  "warn-once": "^0.1.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@react-navigation/native": "^6.0.7",
49
+ "@react-navigation/native": "^6.0.8",
50
50
  "@testing-library/react-native": "^7.2.0",
51
51
  "@types/react": "^17.0.9",
52
52
  "@types/react-native": "~0.64.9",
@@ -54,7 +54,7 @@
54
54
  "react": "17.0.1",
55
55
  "react-native": "~0.64.3",
56
56
  "react-native-builder-bob": "^0.18.1",
57
- "react-native-gesture-handler": "~2.1.0",
57
+ "react-native-gesture-handler": "~2.2.0",
58
58
  "react-native-reanimated": "~2.3.1",
59
59
  "react-native-safe-area-context": "3.3.2",
60
60
  "react-native-screens": "~3.10.1",
@@ -83,5 +83,5 @@
83
83
  ]
84
84
  ]
85
85
  },
86
- "gitHead": "4c5805867ce946d99ba17f71b4d6086bb8751262"
86
+ "gitHead": "4cddbce150413c15db93897c76b813f436f5186d"
87
87
  }
package/src/types.tsx CHANGED
@@ -110,6 +110,11 @@ export type DrawerNavigationOptions = HeaderOptions & {
110
110
  */
111
111
  drawerInactiveBackgroundColor?: string;
112
112
 
113
+ /**
114
+ * Whether label font should scale to respect Text Size accessibility settings.
115
+ */
116
+ drawerAllowFontScaling?: boolean;
117
+
113
118
  /**
114
119
  * Style object for the single item, which can contain an icon and/or a label.
115
120
  */
@@ -242,7 +247,12 @@ export type DrawerHeaderProps = {
242
247
  navigation: DrawerNavigationProp<ParamListBase>;
243
248
  };
244
249
 
245
- export type DrawerNavigationEventMap = {};
250
+ export type DrawerNavigationEventMap = {
251
+ /**
252
+ * Event which fires on tapping on the item in the drawer menu.
253
+ */
254
+ drawerItemPress: { data: undefined; canPreventDefault: true };
255
+ };
246
256
 
247
257
  export type DrawerNavigationHelpers = NavigationHelpers<
248
258
  ParamListBase,
@@ -77,6 +77,10 @@ type Props = {
77
77
  * Style object for the wrapper element.
78
78
  */
79
79
  style?: StyleProp<ViewStyle>;
80
+ /**
81
+ * Whether label font should scale to respect Text Size accessibility settings.
82
+ */
83
+ allowFontScaling?: boolean;
80
84
  };
81
85
 
82
86
  const LinkPressable = ({
@@ -141,6 +145,7 @@ export default function DrawerItem(props: Props) {
141
145
  labelStyle,
142
146
  to,
143
147
  focused = false,
148
+ allowFontScaling,
144
149
  activeTintColor = colors.primary,
145
150
  inactiveTintColor = Color(colors.text).alpha(0.68).rgb().string(),
146
151
  activeBackgroundColor = Color(activeTintColor).alpha(0.12).rgb().string(),
@@ -186,6 +191,7 @@ export default function DrawerItem(props: Props) {
186
191
  {typeof label === 'string' ? (
187
192
  <Text
188
193
  numberOfLines={1}
194
+ allowFontScaling={allowFontScaling}
189
195
  style={[
190
196
  {
191
197
  color,
@@ -39,12 +39,31 @@ export default function DrawerItemList({
39
39
 
40
40
  return state.routes.map((route, i) => {
41
41
  const focused = i === state.index;
42
+
43
+ const onPress = () => {
44
+ const event = navigation.emit({
45
+ type: 'drawerItemPress',
46
+ target: route.key,
47
+ canPreventDefault: true,
48
+ });
49
+
50
+ if (!event.defaultPrevented) {
51
+ navigation.dispatch({
52
+ ...(focused
53
+ ? DrawerActions.closeDrawer()
54
+ : CommonActions.navigate({ name: route.name, merge: true })),
55
+ target: state.key,
56
+ });
57
+ }
58
+ };
59
+
42
60
  const {
43
61
  title,
44
62
  drawerLabel,
45
63
  drawerIcon,
46
64
  drawerLabelStyle,
47
65
  drawerItemStyle,
66
+ drawerAllowFontScaling,
48
67
  } = descriptors[route.key].options;
49
68
 
50
69
  return (
@@ -63,17 +82,11 @@ export default function DrawerItemList({
63
82
  inactiveTintColor={drawerInactiveTintColor}
64
83
  activeBackgroundColor={drawerActiveBackgroundColor}
65
84
  inactiveBackgroundColor={drawerInactiveBackgroundColor}
85
+ allowFontScaling={drawerAllowFontScaling}
66
86
  labelStyle={drawerLabelStyle}
67
87
  style={drawerItemStyle}
68
88
  to={buildLink(route.name, route.params)}
69
- onPress={() => {
70
- navigation.dispatch({
71
- ...(focused
72
- ? DrawerActions.closeDrawer()
73
- : CommonActions.navigate({ name: route.name, merge: true })),
74
- target: state.key,
75
- });
76
- }}
89
+ onPress={onPress}
77
90
  />
78
91
  );
79
92
  }) as React.ReactNode as React.ReactElement;
@@ -205,6 +205,7 @@ function DrawerViewBase({
205
205
  return (
206
206
  <MaybeScreenContainer
207
207
  enabled={detachInactiveScreens}
208
+ hasTwoStates
208
209
  style={styles.content}
209
210
  >
210
211
  {state.routes.map((route, index) => {
@@ -22,6 +22,7 @@ export const MaybeScreenContainer = ({
22
22
  ...rest
23
23
  }: ViewProps & {
24
24
  enabled: boolean;
25
+ hasTwoStates: boolean;
25
26
  children: React.ReactNode;
26
27
  }) => {
27
28
  if (Screens?.screensEnabled?.()) {
@@ -558,7 +558,7 @@ export default class DrawerView extends React.Component<DrawerProps> {
558
558
  drawerType === 'permanent'
559
559
  ? // Reanimated needs the property to be present, but it results in Browser bug
560
560
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
561
- undefined
561
+ []
562
562
  : [{ translateX: contentTranslateX }],
563
563
  },
564
564
  ]}
@@ -619,7 +619,7 @@ export default class DrawerView extends React.Component<DrawerProps> {
619
619
  drawerType === 'permanent'
620
620
  ? // Reanimated needs the property to be present, but it results in Browser bug
621
621
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
622
- undefined
622
+ []
623
623
  : [{ translateX: drawerTranslateX }],
624
624
  opacity: this.drawerOpacity,
625
625
  },
@@ -265,7 +265,7 @@ export default function Drawer({
265
265
  drawerType === 'permanent'
266
266
  ? // Reanimated needs the property to be present, but it results in Browser bug
267
267
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
268
- undefined
268
+ []
269
269
  : [
270
270
  {
271
271
  translateX: drawerType === 'back' ? 0 : translateX.value,
@@ -280,7 +280,7 @@ export default function Drawer({
280
280
  drawerType === 'permanent'
281
281
  ? // Reanimated needs the property to be present, but it results in Browser bug
282
282
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
283
- undefined
283
+ []
284
284
  : [
285
285
  {
286
286
  translateX: