@react-navigation/stack 6.0.11 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js +72 -64
- package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
- package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +37 -32
- package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/commonjs/TransitionConfigs/TransitionPresets.js +1 -1
- package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +1 -1
- package/lib/commonjs/index.js +13 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/navigators/createStackNavigator.js +26 -21
- package/lib/commonjs/navigators/createStackNavigator.js.map +1 -1
- package/lib/commonjs/utils/debounce.js +5 -1
- package/lib/commonjs/utils/debounce.js.map +1 -1
- package/lib/commonjs/utils/memoize.js +5 -1
- package/lib/commonjs/utils/memoize.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.js +7 -4
- package/lib/commonjs/views/GestureHandler.js.map +1 -1
- package/lib/commonjs/views/GestureHandlerNative.js +1 -1
- package/lib/commonjs/views/Header/Header.js +10 -9
- package/lib/commonjs/views/Header/Header.js.map +1 -1
- package/lib/commonjs/views/Header/HeaderContainer.js +10 -9
- package/lib/commonjs/views/Header/HeaderContainer.js.map +1 -1
- package/lib/commonjs/views/Header/HeaderSegment.js +5 -0
- package/lib/commonjs/views/Header/HeaderSegment.js.map +1 -1
- package/lib/commonjs/views/ModalStatusBarManager.js +11 -9
- package/lib/commonjs/views/ModalStatusBarManager.js.map +1 -1
- package/lib/commonjs/views/Screens.js +14 -10
- package/lib/commonjs/views/Screens.js.map +1 -1
- package/lib/commonjs/views/Stack/Card.js +32 -24
- package/lib/commonjs/views/Stack/Card.js.map +1 -1
- package/lib/commonjs/views/Stack/CardContainer.js +43 -40
- package/lib/commonjs/views/Stack/CardContainer.js.map +1 -1
- package/lib/commonjs/views/Stack/CardSheet.js +7 -6
- package/lib/commonjs/views/Stack/CardSheet.js.map +1 -1
- package/lib/commonjs/views/Stack/CardStack.js +26 -17
- package/lib/commonjs/views/Stack/CardStack.js.map +1 -1
- package/lib/commonjs/views/Stack/StackView.js +62 -46
- package/lib/commonjs/views/Stack/StackView.js.map +1 -1
- package/lib/module/TransitionConfigs/CardStyleInterpolators.js +67 -59
- package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +35 -30
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createStackNavigator.js +25 -20
- package/lib/module/navigators/createStackNavigator.js.map +1 -1
- package/lib/module/utils/debounce.js +5 -1
- package/lib/module/utils/debounce.js.map +1 -1
- package/lib/module/utils/memoize.js +5 -1
- package/lib/module/utils/memoize.js.map +1 -1
- package/lib/module/views/GestureHandler.js +6 -3
- package/lib/module/views/GestureHandler.js.map +1 -1
- package/lib/module/views/Header/Header.js +10 -9
- package/lib/module/views/Header/Header.js.map +1 -1
- package/lib/module/views/Header/HeaderContainer.js +10 -9
- package/lib/module/views/Header/HeaderContainer.js.map +1 -1
- package/lib/module/views/Header/HeaderSegment.js +5 -0
- package/lib/module/views/Header/HeaderSegment.js.map +1 -1
- package/lib/module/views/ModalStatusBarManager.js +11 -9
- package/lib/module/views/ModalStatusBarManager.js.map +1 -1
- package/lib/module/views/Screens.js +13 -9
- package/lib/module/views/Screens.js.map +1 -1
- package/lib/module/views/Stack/Card.js +32 -24
- package/lib/module/views/Stack/Card.js.map +1 -1
- package/lib/module/views/Stack/CardContainer.js +43 -40
- package/lib/module/views/Stack/CardContainer.js.map +1 -1
- package/lib/module/views/Stack/CardSheet.js +7 -6
- package/lib/module/views/Stack/CardSheet.js.map +1 -1
- package/lib/module/views/Stack/CardStack.js +26 -17
- package/lib/module/views/Stack/CardStack.js.map +1 -1
- package/lib/module/views/Stack/StackView.js +62 -46
- package/lib/module/views/Stack/StackView.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/navigators/createStackNavigator.d.ts +1 -1
- package/lib/typescript/src/types.d.ts +9 -5
- package/package.json +9 -9
- package/src/index.tsx +1 -0
- package/src/navigators/createStackNavigator.tsx +4 -1
- package/src/types.tsx +12 -4
- package/src/views/Header/HeaderSegment.tsx +16 -4
- package/src/views/Stack/Card.tsx +1 -1
- package/src/views/Stack/CardContainer.tsx +3 -2
- package/src/views/Stack/CardStack.tsx +19 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Card.tsx"],"names":["Color","React","Animated","InteractionManager","Platform","StyleSheet","View","forModalPresentationIOS","CardAnimationContext","getDistanceForDirection","getInvertedMultiplier","memoize","GestureState","PanGestureHandler","ModalStatusBarManager","CardSheet","GESTURE_VELOCITY_IMPACT","TRUE","FALSE","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","useNativeDriver","OS","hasOpacityStyle","style","flattenedStyle","flatten","opacity","Card","Component","Value","props","gestureDirection","width","layout","height","closing","velocity","gesture","transitionSpec","onOpen","onClose","onTransition","toValue","getAnimateToValue","lastToValue","isClosing","setValue","spec","close","open","animation","spring","timing","setPointerEventsEnabled","handleStartInteraction","clearTimeout","pendingGestureCallback","undefined","config","isInteraction","start","finished","handleEndInteraction","isCurrentlyMounted","forceUpdate","enabled","pointerEvents","contentRef","current","setNativeProps","interactionHandle","createInteractionHandle","clearInteractionHandle","nativeEvent","onGestureBegin","onGestureCanceled","onGestureEnd","gestureVelocityImpact","state","BEGAN","isSwiping","CANCELLED","velocityY","velocityX","animate","END","distance","translation","translationY","translationX","setTimeout","styleInterpolator","interpolationIndex","next","insetTop","insetRight","insetBottom","insetLeft","index","progress","swiping","inverted","layouts","screen","insets","top","right","bottom","left","createRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","stopAnimation","gestureActivationCriteria","gestureResponseDistance","enableTrackpadTwoFingerGesture","maxDeltaX","minOffsetY","hitSlop","invertedMultiplier","minOffsetX","maxDeltaY","render","overlay","overlayEnabled","shadowEnabled","gestureEnabled","pageOverflowEnabled","headerDarkContent","children","containerStyle","customContainerStyle","contentStyle","rest","interpolationProps","getCardAnimation","interpolatedStyle","getInterpolatedStyle","cardStyle","overlayStyle","shadowStyle","handleGestureEvent","event","backgroundColor","isTransparent","alpha","getIsModalPresentation","absoluteFill","styles","container","handleGestureStateChange","shadow","shadowHorizontal","shadowLeft","shadowRight","shadowVertical","shadowTop","shadowBottom","cardStyleInterpolator","name","create","flex","position","shadowRadius","shadowColor","shadowOpacity","shadowOffset"],"mappings":"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","sourcesContent":["import Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n InteractionManager,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport { forModalPresentationIOS } from '../../TransitionConfigs/CardStyleInterpolators';\nimport type {\n GestureDirection,\n Layout,\n StackCardInterpolationProps,\n StackCardStyleInterpolator,\n TransitionSpec,\n} from '../../types';\nimport CardAnimationContext from '../../utils/CardAnimationContext';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport getInvertedMultiplier from '../../utils/getInvertedMultiplier';\nimport memoize from '../../utils/memoize';\nimport {\n GestureState,\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from '../GestureHandler';\nimport ModalStatusBarManager from '../ModalStatusBarManager';\nimport CardSheet from './CardSheet';\n\ntype Props = ViewProps & {\n interpolationIndex: number;\n closing: boolean;\n next?: Animated.AnimatedInterpolation;\n current: Animated.AnimatedInterpolation;\n gesture: Animated.Value;\n layout: Layout;\n insets: EdgeInsets;\n headerDarkContent: boolean | undefined;\n pageOverflowEnabled: boolean;\n gestureDirection: GestureDirection;\n onOpen: () => void;\n onClose: () => void;\n onTransition: (props: { closing: boolean; gesture: boolean }) => void;\n onGestureBegin: () => void;\n onGestureCanceled: () => void;\n onGestureEnd: () => void;\n children: React.ReactNode;\n overlay: (props: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) => React.ReactNode;\n overlayEnabled: boolean;\n shadowEnabled: boolean;\n gestureEnabled: boolean;\n gestureResponseDistance?: number;\n gestureVelocityImpact: number;\n transitionSpec: {\n open: TransitionSpec;\n close: TransitionSpec;\n };\n styleInterpolator: StackCardStyleInterpolator;\n containerStyle?: StyleProp<ViewStyle>;\n contentStyle?: StyleProp<ViewStyle>;\n};\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\n\nconst TRUE = 1;\nconst FALSE = 0;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 50;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nconst hasOpacityStyle = (style: any) => {\n if (style) {\n const flattenedStyle = StyleSheet.flatten(style);\n return flattenedStyle.opacity != null;\n }\n\n return false;\n};\n\nexport default class Card extends React.Component<Props> {\n static defaultProps = {\n shadowEnabled: false,\n gestureEnabled: true,\n gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,\n overlay: ({\n style,\n }: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) =>\n style ? (\n <Animated.View pointerEvents=\"none\" style={[styles.overlay, style]} />\n ) : null,\n };\n\n componentDidMount() {\n this.animate({ closing: this.props.closing });\n this.isCurrentlyMounted = true;\n }\n\n componentDidUpdate(prevProps: Props) {\n const { layout, gestureDirection, closing } = this.props;\n const { width, height } = layout;\n\n if (width !== prevProps.layout.width) {\n this.layout.width.setValue(width);\n }\n\n if (height !== prevProps.layout.height) {\n this.layout.height.setValue(height);\n }\n\n if (gestureDirection !== prevProps.gestureDirection) {\n this.inverted.setValue(getInvertedMultiplier(gestureDirection));\n }\n\n const toValue = this.getAnimateToValue(this.props);\n\n if (\n this.getAnimateToValue(prevProps) !== toValue ||\n this.lastToValue !== toValue\n ) {\n // We need to trigger the animation when route was closed\n // Thr route might have been closed by a `POP` action or by a gesture\n // When route was closed due to a gesture, the animation would've happened already\n // It's still important to trigger the animation so that `onClose` is called\n // If `onClose` is not called, cleanup step won't be performed for gestures\n this.animate({ closing });\n }\n }\n\n componentWillUnmount() {\n this.props.gesture.stopAnimation();\n this.isCurrentlyMounted = false;\n this.handleEndInteraction();\n }\n\n private isCurrentlyMounted = false;\n\n private isClosing = new Animated.Value(FALSE);\n\n private inverted = new Animated.Value(\n getInvertedMultiplier(this.props.gestureDirection)\n );\n\n private layout = {\n width: new Animated.Value(this.props.layout.width),\n height: new Animated.Value(this.props.layout.height),\n };\n\n private isSwiping = new Animated.Value(FALSE);\n\n private interactionHandle: number | undefined;\n\n private pendingGestureCallback: number | undefined;\n\n private lastToValue: number | undefined;\n\n private animate = ({\n closing,\n velocity,\n }: {\n closing: boolean;\n velocity?: number;\n }) => {\n const { gesture, transitionSpec, onOpen, onClose, onTransition } =\n this.props;\n\n const toValue = this.getAnimateToValue({\n ...this.props,\n closing,\n });\n\n this.lastToValue = toValue;\n\n this.isClosing.setValue(closing ? TRUE : FALSE);\n\n const spec = closing ? transitionSpec.close : transitionSpec.open;\n\n const animation =\n spec.animation === 'spring' ? Animated.spring : Animated.timing;\n\n this.setPointerEventsEnabled(!closing);\n this.handleStartInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n onTransition?.({ closing, gesture: velocity !== undefined });\n animation(gesture, {\n ...spec.config,\n velocity,\n toValue,\n useNativeDriver,\n isInteraction: false,\n }).start(({ finished }) => {\n this.handleEndInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n if (finished) {\n if (closing) {\n onClose();\n } else {\n onOpen();\n }\n\n if (this.isCurrentlyMounted) {\n // Make sure to re-open screen if it wasn't removed\n this.forceUpdate();\n }\n }\n });\n };\n\n private getAnimateToValue = ({\n closing,\n layout,\n gestureDirection,\n }: {\n closing?: boolean;\n layout: Layout;\n gestureDirection: GestureDirection;\n }) => {\n if (!closing) {\n return 0;\n }\n\n return getDistanceForDirection(layout, gestureDirection);\n };\n\n private setPointerEventsEnabled = (enabled: boolean) => {\n const pointerEvents = enabled ? 'box-none' : 'none';\n\n this.contentRef.current?.setNativeProps({ pointerEvents });\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleGestureStateChange = ({\n nativeEvent,\n }: PanGestureHandlerGestureEvent) => {\n const {\n layout,\n onClose,\n onGestureBegin,\n onGestureCanceled,\n onGestureEnd,\n gestureDirection,\n gestureVelocityImpact,\n } = this.props;\n\n switch (nativeEvent.state) {\n case GestureState.BEGAN:\n this.isSwiping.setValue(TRUE);\n this.handleStartInteraction();\n onGestureBegin?.();\n break;\n case GestureState.CANCELLED: {\n this.isSwiping.setValue(FALSE);\n this.handleEndInteraction();\n\n const velocity =\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? nativeEvent.velocityY\n : nativeEvent.velocityX;\n\n this.animate({ closing: this.props.closing, velocity });\n\n onGestureCanceled?.();\n break;\n }\n case GestureState.END: {\n this.isSwiping.setValue(FALSE);\n\n let distance;\n let translation;\n let velocity;\n\n if (\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ) {\n distance = layout.height;\n translation = nativeEvent.translationY;\n velocity = nativeEvent.velocityY;\n } else {\n distance = layout.width;\n translation = nativeEvent.translationX;\n velocity = nativeEvent.velocityX;\n }\n\n const closing =\n (translation + velocity * gestureVelocityImpact) *\n getInvertedMultiplier(gestureDirection) >\n distance / 2\n ? velocity !== 0 || translation !== 0\n : this.props.closing;\n\n this.animate({ closing, velocity });\n\n if (closing) {\n // We call onClose with a delay to make sure that the animation has already started\n // This will make sure that the state update caused by this doesn't affect start of animation\n this.pendingGestureCallback = setTimeout(() => {\n onClose();\n\n // Trigger an update after we dispatch the action to remove the screen\n // This will make sure that we check if the screen didn't get removed so we can cancel the animation\n this.forceUpdate();\n }, 32) as any as number;\n }\n\n onGestureEnd?.();\n break;\n }\n }\n };\n\n // Memoize this to avoid extra work on re-render\n private getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackCardStyleInterpolator,\n animation: StackCardInterpolationProps\n ) => styleInterpolator(animation)\n );\n\n // Keep track of the animation context when deps changes.\n private getCardAnimation = memoize(\n (\n interpolationIndex: number,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n layout: Layout,\n insetTop: number,\n insetRight: number,\n insetBottom: number,\n insetLeft: number\n ) => ({\n index: interpolationIndex,\n current: { progress: current },\n next: next && { progress: next },\n closing: this.isClosing,\n swiping: this.isSwiping,\n inverted: this.inverted,\n layouts: {\n screen: layout,\n },\n insets: {\n top: insetTop,\n right: insetRight,\n bottom: insetBottom,\n left: insetLeft,\n },\n })\n );\n\n private gestureActivationCriteria() {\n const { layout, gestureDirection, gestureResponseDistance } = this.props;\n const enableTrackpadTwoFingerGesture = true;\n\n const distance =\n gestureResponseDistance !== undefined\n ? gestureResponseDistance\n : gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? GESTURE_RESPONSE_DISTANCE_VERTICAL\n : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n\n if (gestureDirection === 'vertical') {\n return {\n maxDeltaX: 15,\n minOffsetY: 5,\n hitSlop: { bottom: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else if (gestureDirection === 'vertical-inverted') {\n return {\n maxDeltaX: 15,\n minOffsetY: -5,\n hitSlop: { top: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n const hitSlop = -layout.width + distance;\n const invertedMultiplier = getInvertedMultiplier(gestureDirection);\n\n if (invertedMultiplier === 1) {\n return {\n minOffsetX: 5,\n maxDeltaY: 20,\n hitSlop: { right: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n return {\n minOffsetX: -5,\n maxDeltaY: 20,\n hitSlop: { left: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n }\n }\n }\n\n private contentRef = React.createRef<View>();\n\n render() {\n const {\n styleInterpolator,\n interpolationIndex,\n current,\n gesture,\n next,\n layout,\n insets,\n overlay,\n overlayEnabled,\n shadowEnabled,\n gestureEnabled,\n gestureDirection,\n pageOverflowEnabled,\n headerDarkContent,\n children,\n containerStyle: customContainerStyle,\n contentStyle,\n ...rest\n } = this.props;\n\n const interpolationProps = this.getCardAnimation(\n interpolationIndex,\n current,\n next,\n layout,\n insets.top,\n insets.right,\n insets.bottom,\n insets.left\n );\n\n const interpolatedStyle = this.getInterpolatedStyle(\n styleInterpolator,\n interpolationProps\n );\n\n const { containerStyle, cardStyle, overlayStyle, shadowStyle } =\n interpolatedStyle;\n\n const handleGestureEvent = gestureEnabled\n ? Animated.event(\n [\n {\n nativeEvent:\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? { translationY: gesture }\n : { translationX: gesture },\n },\n ],\n { useNativeDriver }\n )\n : undefined;\n\n const { backgroundColor } = StyleSheet.flatten(contentStyle || {});\n const isTransparent =\n typeof backgroundColor === 'string'\n ? Color(backgroundColor).alpha() === 0\n : false;\n\n return (\n <CardAnimationContext.Provider value={interpolationProps}>\n {\n // StatusBar messes with translucent status bar on Android\n // So we should only enable it on iOS\n Platform.OS === 'ios' &&\n overlayEnabled &&\n next &&\n getIsModalPresentation(styleInterpolator) ? (\n <ModalStatusBarManager\n dark={headerDarkContent}\n layout={layout}\n insets={insets}\n style={cardStyle}\n />\n ) : null\n }\n <Animated.View\n style={{\n // This is a dummy style that doesn't actually change anything visually.\n // Animated needs the animated value to be used somewhere, otherwise things don't update properly.\n // If we disable animations and hide header, it could end up making the value unused.\n // So we have this dummy style that will always be used regardless of what else changed.\n opacity: current,\n }}\n // Make sure that this view isn't removed. If this view is removed, our style with animated value won't apply\n collapsable={false}\n />\n <View pointerEvents=\"box-none\" {...rest}>\n {overlayEnabled ? (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {overlay({ style: overlayStyle })}\n </View>\n ) : null}\n <Animated.View\n style={[styles.container, containerStyle, customContainerStyle]}\n pointerEvents=\"box-none\"\n >\n <PanGestureHandler\n enabled={layout.width !== 0 && gestureEnabled}\n onGestureEvent={handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n {...this.gestureActivationCriteria()}\n >\n <Animated.View\n needsOffscreenAlphaCompositing={hasOpacityStyle(cardStyle)}\n style={[styles.container, cardStyle]}\n >\n {shadowEnabled && shadowStyle && !isTransparent ? (\n <Animated.View\n style={[\n styles.shadow,\n gestureDirection === 'horizontal'\n ? [styles.shadowHorizontal, styles.shadowLeft]\n : gestureDirection === 'horizontal-inverted'\n ? [styles.shadowHorizontal, styles.shadowRight]\n : gestureDirection === 'vertical'\n ? [styles.shadowVertical, styles.shadowTop]\n : [styles.shadowVertical, styles.shadowBottom],\n { backgroundColor },\n shadowStyle,\n ]}\n pointerEvents=\"none\"\n />\n ) : null}\n <CardSheet\n ref={this.contentRef}\n enabled={pageOverflowEnabled}\n layout={layout}\n style={contentStyle}\n >\n {children}\n </CardSheet>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </View>\n </CardAnimationContext.Provider>\n );\n }\n}\n\nexport const getIsModalPresentation = (\n cardStyleInterpolator: StackCardStyleInterpolator\n) => {\n return (\n cardStyleInterpolator === forModalPresentationIOS ||\n // Handle custom modal presentation interpolators as well\n cardStyleInterpolator.name === 'forModalPresentationIOS'\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: '#000',\n },\n shadow: {\n position: 'absolute',\n shadowRadius: 5,\n shadowColor: '#000',\n shadowOpacity: 0.3,\n },\n shadowHorizontal: {\n top: 0,\n bottom: 0,\n width: 3,\n shadowOffset: { width: -1, height: 1 },\n },\n shadowLeft: {\n left: 0,\n },\n shadowRight: {\n right: 0,\n },\n shadowVertical: {\n left: 0,\n right: 0,\n height: 3,\n shadowOffset: { width: 1, height: -1 },\n },\n shadowTop: {\n top: 0,\n },\n shadowBottom: {\n bottom: 0,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Card.tsx"],"names":["Color","React","Animated","InteractionManager","Platform","StyleSheet","View","forModalPresentationIOS","CardAnimationContext","getDistanceForDirection","getInvertedMultiplier","memoize","GestureState","PanGestureHandler","ModalStatusBarManager","CardSheet","GESTURE_VELOCITY_IMPACT","TRUE","FALSE","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","useNativeDriver","OS","hasOpacityStyle","style","flattenedStyle","flatten","opacity","Card","Component","Value","props","gestureDirection","width","layout","height","closing","velocity","gesture","transitionSpec","onOpen","onClose","onTransition","toValue","getAnimateToValue","lastToValue","isClosing","setValue","spec","close","open","animation","spring","timing","setPointerEventsEnabled","handleStartInteraction","clearTimeout","pendingGestureCallback","undefined","config","isInteraction","start","finished","handleEndInteraction","isCurrentlyMounted","forceUpdate","enabled","pointerEvents","contentRef","current","setNativeProps","interactionHandle","createInteractionHandle","clearInteractionHandle","nativeEvent","onGestureBegin","onGestureCanceled","onGestureEnd","gestureVelocityImpact","state","ACTIVE","isSwiping","CANCELLED","velocityY","velocityX","animate","END","distance","translation","translationY","translationX","setTimeout","styleInterpolator","interpolationIndex","next","insetTop","insetRight","insetBottom","insetLeft","index","progress","swiping","inverted","layouts","screen","insets","top","right","bottom","left","createRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","stopAnimation","gestureActivationCriteria","gestureResponseDistance","enableTrackpadTwoFingerGesture","maxDeltaX","minOffsetY","hitSlop","invertedMultiplier","minOffsetX","maxDeltaY","render","overlay","overlayEnabled","shadowEnabled","gestureEnabled","pageOverflowEnabled","headerDarkContent","children","containerStyle","customContainerStyle","contentStyle","rest","interpolationProps","getCardAnimation","interpolatedStyle","getInterpolatedStyle","cardStyle","overlayStyle","shadowStyle","handleGestureEvent","event","backgroundColor","isTransparent","alpha","getIsModalPresentation","absoluteFill","styles","container","handleGestureStateChange","shadow","shadowHorizontal","shadowLeft","shadowRight","shadowVertical","shadowTop","shadowBottom","cardStyleInterpolator","name","create","flex","position","shadowRadius","shadowColor","shadowOpacity","shadowOffset"],"mappings":"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","sourcesContent":["import Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n InteractionManager,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport { forModalPresentationIOS } from '../../TransitionConfigs/CardStyleInterpolators';\nimport type {\n GestureDirection,\n Layout,\n StackCardInterpolationProps,\n StackCardStyleInterpolator,\n TransitionSpec,\n} from '../../types';\nimport CardAnimationContext from '../../utils/CardAnimationContext';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport getInvertedMultiplier from '../../utils/getInvertedMultiplier';\nimport memoize from '../../utils/memoize';\nimport {\n GestureState,\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from '../GestureHandler';\nimport ModalStatusBarManager from '../ModalStatusBarManager';\nimport CardSheet from './CardSheet';\n\ntype Props = ViewProps & {\n interpolationIndex: number;\n closing: boolean;\n next?: Animated.AnimatedInterpolation;\n current: Animated.AnimatedInterpolation;\n gesture: Animated.Value;\n layout: Layout;\n insets: EdgeInsets;\n headerDarkContent: boolean | undefined;\n pageOverflowEnabled: boolean;\n gestureDirection: GestureDirection;\n onOpen: () => void;\n onClose: () => void;\n onTransition: (props: { closing: boolean; gesture: boolean }) => void;\n onGestureBegin: () => void;\n onGestureCanceled: () => void;\n onGestureEnd: () => void;\n children: React.ReactNode;\n overlay: (props: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) => React.ReactNode;\n overlayEnabled: boolean;\n shadowEnabled: boolean;\n gestureEnabled: boolean;\n gestureResponseDistance?: number;\n gestureVelocityImpact: number;\n transitionSpec: {\n open: TransitionSpec;\n close: TransitionSpec;\n };\n styleInterpolator: StackCardStyleInterpolator;\n containerStyle?: StyleProp<ViewStyle>;\n contentStyle?: StyleProp<ViewStyle>;\n};\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\n\nconst TRUE = 1;\nconst FALSE = 0;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 50;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nconst hasOpacityStyle = (style: any) => {\n if (style) {\n const flattenedStyle = StyleSheet.flatten(style);\n return flattenedStyle.opacity != null;\n }\n\n return false;\n};\n\nexport default class Card extends React.Component<Props> {\n static defaultProps = {\n shadowEnabled: false,\n gestureEnabled: true,\n gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,\n overlay: ({\n style,\n }: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) =>\n style ? (\n <Animated.View pointerEvents=\"none\" style={[styles.overlay, style]} />\n ) : null,\n };\n\n componentDidMount() {\n this.animate({ closing: this.props.closing });\n this.isCurrentlyMounted = true;\n }\n\n componentDidUpdate(prevProps: Props) {\n const { layout, gestureDirection, closing } = this.props;\n const { width, height } = layout;\n\n if (width !== prevProps.layout.width) {\n this.layout.width.setValue(width);\n }\n\n if (height !== prevProps.layout.height) {\n this.layout.height.setValue(height);\n }\n\n if (gestureDirection !== prevProps.gestureDirection) {\n this.inverted.setValue(getInvertedMultiplier(gestureDirection));\n }\n\n const toValue = this.getAnimateToValue(this.props);\n\n if (\n this.getAnimateToValue(prevProps) !== toValue ||\n this.lastToValue !== toValue\n ) {\n // We need to trigger the animation when route was closed\n // Thr route might have been closed by a `POP` action or by a gesture\n // When route was closed due to a gesture, the animation would've happened already\n // It's still important to trigger the animation so that `onClose` is called\n // If `onClose` is not called, cleanup step won't be performed for gestures\n this.animate({ closing });\n }\n }\n\n componentWillUnmount() {\n this.props.gesture.stopAnimation();\n this.isCurrentlyMounted = false;\n this.handleEndInteraction();\n }\n\n private isCurrentlyMounted = false;\n\n private isClosing = new Animated.Value(FALSE);\n\n private inverted = new Animated.Value(\n getInvertedMultiplier(this.props.gestureDirection)\n );\n\n private layout = {\n width: new Animated.Value(this.props.layout.width),\n height: new Animated.Value(this.props.layout.height),\n };\n\n private isSwiping = new Animated.Value(FALSE);\n\n private interactionHandle: number | undefined;\n\n private pendingGestureCallback: number | undefined;\n\n private lastToValue: number | undefined;\n\n private animate = ({\n closing,\n velocity,\n }: {\n closing: boolean;\n velocity?: number;\n }) => {\n const { gesture, transitionSpec, onOpen, onClose, onTransition } =\n this.props;\n\n const toValue = this.getAnimateToValue({\n ...this.props,\n closing,\n });\n\n this.lastToValue = toValue;\n\n this.isClosing.setValue(closing ? TRUE : FALSE);\n\n const spec = closing ? transitionSpec.close : transitionSpec.open;\n\n const animation =\n spec.animation === 'spring' ? Animated.spring : Animated.timing;\n\n this.setPointerEventsEnabled(!closing);\n this.handleStartInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n onTransition?.({ closing, gesture: velocity !== undefined });\n animation(gesture, {\n ...spec.config,\n velocity,\n toValue,\n useNativeDriver,\n isInteraction: false,\n }).start(({ finished }) => {\n this.handleEndInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n if (finished) {\n if (closing) {\n onClose();\n } else {\n onOpen();\n }\n\n if (this.isCurrentlyMounted) {\n // Make sure to re-open screen if it wasn't removed\n this.forceUpdate();\n }\n }\n });\n };\n\n private getAnimateToValue = ({\n closing,\n layout,\n gestureDirection,\n }: {\n closing?: boolean;\n layout: Layout;\n gestureDirection: GestureDirection;\n }) => {\n if (!closing) {\n return 0;\n }\n\n return getDistanceForDirection(layout, gestureDirection);\n };\n\n private setPointerEventsEnabled = (enabled: boolean) => {\n const pointerEvents = enabled ? 'box-none' : 'none';\n\n this.contentRef.current?.setNativeProps({ pointerEvents });\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleGestureStateChange = ({\n nativeEvent,\n }: PanGestureHandlerGestureEvent) => {\n const {\n layout,\n onClose,\n onGestureBegin,\n onGestureCanceled,\n onGestureEnd,\n gestureDirection,\n gestureVelocityImpact,\n } = this.props;\n\n switch (nativeEvent.state) {\n case GestureState.ACTIVE:\n this.isSwiping.setValue(TRUE);\n this.handleStartInteraction();\n onGestureBegin?.();\n break;\n case GestureState.CANCELLED: {\n this.isSwiping.setValue(FALSE);\n this.handleEndInteraction();\n\n const velocity =\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? nativeEvent.velocityY\n : nativeEvent.velocityX;\n\n this.animate({ closing: this.props.closing, velocity });\n\n onGestureCanceled?.();\n break;\n }\n case GestureState.END: {\n this.isSwiping.setValue(FALSE);\n\n let distance;\n let translation;\n let velocity;\n\n if (\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ) {\n distance = layout.height;\n translation = nativeEvent.translationY;\n velocity = nativeEvent.velocityY;\n } else {\n distance = layout.width;\n translation = nativeEvent.translationX;\n velocity = nativeEvent.velocityX;\n }\n\n const closing =\n (translation + velocity * gestureVelocityImpact) *\n getInvertedMultiplier(gestureDirection) >\n distance / 2\n ? velocity !== 0 || translation !== 0\n : this.props.closing;\n\n this.animate({ closing, velocity });\n\n if (closing) {\n // We call onClose with a delay to make sure that the animation has already started\n // This will make sure that the state update caused by this doesn't affect start of animation\n this.pendingGestureCallback = setTimeout(() => {\n onClose();\n\n // Trigger an update after we dispatch the action to remove the screen\n // This will make sure that we check if the screen didn't get removed so we can cancel the animation\n this.forceUpdate();\n }, 32) as any as number;\n }\n\n onGestureEnd?.();\n break;\n }\n }\n };\n\n // Memoize this to avoid extra work on re-render\n private getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackCardStyleInterpolator,\n animation: StackCardInterpolationProps\n ) => styleInterpolator(animation)\n );\n\n // Keep track of the animation context when deps changes.\n private getCardAnimation = memoize(\n (\n interpolationIndex: number,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n layout: Layout,\n insetTop: number,\n insetRight: number,\n insetBottom: number,\n insetLeft: number\n ) => ({\n index: interpolationIndex,\n current: { progress: current },\n next: next && { progress: next },\n closing: this.isClosing,\n swiping: this.isSwiping,\n inverted: this.inverted,\n layouts: {\n screen: layout,\n },\n insets: {\n top: insetTop,\n right: insetRight,\n bottom: insetBottom,\n left: insetLeft,\n },\n })\n );\n\n private gestureActivationCriteria() {\n const { layout, gestureDirection, gestureResponseDistance } = this.props;\n const enableTrackpadTwoFingerGesture = true;\n\n const distance =\n gestureResponseDistance !== undefined\n ? gestureResponseDistance\n : gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? GESTURE_RESPONSE_DISTANCE_VERTICAL\n : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n\n if (gestureDirection === 'vertical') {\n return {\n maxDeltaX: 15,\n minOffsetY: 5,\n hitSlop: { bottom: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else if (gestureDirection === 'vertical-inverted') {\n return {\n maxDeltaX: 15,\n minOffsetY: -5,\n hitSlop: { top: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n const hitSlop = -layout.width + distance;\n const invertedMultiplier = getInvertedMultiplier(gestureDirection);\n\n if (invertedMultiplier === 1) {\n return {\n minOffsetX: 5,\n maxDeltaY: 20,\n hitSlop: { right: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n return {\n minOffsetX: -5,\n maxDeltaY: 20,\n hitSlop: { left: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n }\n }\n }\n\n private contentRef = React.createRef<View>();\n\n render() {\n const {\n styleInterpolator,\n interpolationIndex,\n current,\n gesture,\n next,\n layout,\n insets,\n overlay,\n overlayEnabled,\n shadowEnabled,\n gestureEnabled,\n gestureDirection,\n pageOverflowEnabled,\n headerDarkContent,\n children,\n containerStyle: customContainerStyle,\n contentStyle,\n ...rest\n } = this.props;\n\n const interpolationProps = this.getCardAnimation(\n interpolationIndex,\n current,\n next,\n layout,\n insets.top,\n insets.right,\n insets.bottom,\n insets.left\n );\n\n const interpolatedStyle = this.getInterpolatedStyle(\n styleInterpolator,\n interpolationProps\n );\n\n const { containerStyle, cardStyle, overlayStyle, shadowStyle } =\n interpolatedStyle;\n\n const handleGestureEvent = gestureEnabled\n ? Animated.event(\n [\n {\n nativeEvent:\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? { translationY: gesture }\n : { translationX: gesture },\n },\n ],\n { useNativeDriver }\n )\n : undefined;\n\n const { backgroundColor } = StyleSheet.flatten(contentStyle || {});\n const isTransparent =\n typeof backgroundColor === 'string'\n ? Color(backgroundColor).alpha() === 0\n : false;\n\n return (\n <CardAnimationContext.Provider value={interpolationProps}>\n {\n // StatusBar messes with translucent status bar on Android\n // So we should only enable it on iOS\n Platform.OS === 'ios' &&\n overlayEnabled &&\n next &&\n getIsModalPresentation(styleInterpolator) ? (\n <ModalStatusBarManager\n dark={headerDarkContent}\n layout={layout}\n insets={insets}\n style={cardStyle}\n />\n ) : null\n }\n <Animated.View\n style={{\n // This is a dummy style that doesn't actually change anything visually.\n // Animated needs the animated value to be used somewhere, otherwise things don't update properly.\n // If we disable animations and hide header, it could end up making the value unused.\n // So we have this dummy style that will always be used regardless of what else changed.\n opacity: current,\n }}\n // Make sure that this view isn't removed. If this view is removed, our style with animated value won't apply\n collapsable={false}\n />\n <View pointerEvents=\"box-none\" {...rest}>\n {overlayEnabled ? (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {overlay({ style: overlayStyle })}\n </View>\n ) : null}\n <Animated.View\n style={[styles.container, containerStyle, customContainerStyle]}\n pointerEvents=\"box-none\"\n >\n <PanGestureHandler\n enabled={layout.width !== 0 && gestureEnabled}\n onGestureEvent={handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n {...this.gestureActivationCriteria()}\n >\n <Animated.View\n needsOffscreenAlphaCompositing={hasOpacityStyle(cardStyle)}\n style={[styles.container, cardStyle]}\n >\n {shadowEnabled && shadowStyle && !isTransparent ? (\n <Animated.View\n style={[\n styles.shadow,\n gestureDirection === 'horizontal'\n ? [styles.shadowHorizontal, styles.shadowLeft]\n : gestureDirection === 'horizontal-inverted'\n ? [styles.shadowHorizontal, styles.shadowRight]\n : gestureDirection === 'vertical'\n ? [styles.shadowVertical, styles.shadowTop]\n : [styles.shadowVertical, styles.shadowBottom],\n { backgroundColor },\n shadowStyle,\n ]}\n pointerEvents=\"none\"\n />\n ) : null}\n <CardSheet\n ref={this.contentRef}\n enabled={pageOverflowEnabled}\n layout={layout}\n style={contentStyle}\n >\n {children}\n </CardSheet>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </View>\n </CardAnimationContext.Provider>\n );\n }\n}\n\nexport const getIsModalPresentation = (\n cardStyleInterpolator: StackCardStyleInterpolator\n) => {\n return (\n cardStyleInterpolator === forModalPresentationIOS ||\n // Handle custom modal presentation interpolators as well\n cardStyleInterpolator.name === 'forModalPresentationIOS'\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: '#000',\n },\n shadow: {\n position: 'absolute',\n shadowRadius: 5,\n shadowColor: '#000',\n shadowOpacity: 0.3,\n },\n shadowHorizontal: {\n top: 0,\n bottom: 0,\n width: 3,\n shadowOffset: { width: -1, height: 1 },\n },\n shadowLeft: {\n left: 0,\n },\n shadowRight: {\n right: 0,\n },\n shadowVertical: {\n left: 0,\n right: 0,\n height: 3,\n shadowOffset: { width: 1, height: -1 },\n },\n shadowTop: {\n top: 0,\n },\n shadowBottom: {\n bottom: 0,\n },\n});\n"]}
|
|
@@ -7,39 +7,40 @@ import useKeyboardManager from '../../utils/useKeyboardManager';
|
|
|
7
7
|
import Card from './Card';
|
|
8
8
|
const EPSILON = 0.1;
|
|
9
9
|
|
|
10
|
-
function CardContainer({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
10
|
+
function CardContainer(_ref) {
|
|
11
|
+
let {
|
|
12
|
+
interpolationIndex,
|
|
13
|
+
index,
|
|
14
|
+
active,
|
|
15
|
+
closing,
|
|
16
|
+
gesture,
|
|
17
|
+
focused,
|
|
18
|
+
modal,
|
|
19
|
+
getPreviousScene,
|
|
20
|
+
getFocusedRoute,
|
|
21
|
+
headerDarkContent,
|
|
22
|
+
hasAbsoluteFloatHeader,
|
|
23
|
+
headerHeight,
|
|
24
|
+
onHeaderHeightChange,
|
|
25
|
+
isParentHeaderShown,
|
|
26
|
+
isNextScreenTransparent,
|
|
27
|
+
detachCurrentScreen,
|
|
28
|
+
layout,
|
|
29
|
+
onCloseRoute,
|
|
30
|
+
onOpenRoute,
|
|
31
|
+
onGestureCancel,
|
|
32
|
+
onGestureEnd,
|
|
33
|
+
onGestureStart,
|
|
34
|
+
onTransitionEnd,
|
|
35
|
+
onTransitionStart,
|
|
36
|
+
renderHeader,
|
|
37
|
+
renderScene,
|
|
38
|
+
safeAreaInsetBottom,
|
|
39
|
+
safeAreaInsetLeft,
|
|
40
|
+
safeAreaInsetRight,
|
|
41
|
+
safeAreaInsetTop,
|
|
42
|
+
scene
|
|
43
|
+
} = _ref;
|
|
43
44
|
const parentHeaderHeight = React.useContext(HeaderHeightContext);
|
|
44
45
|
const {
|
|
45
46
|
onPageChangeStart,
|
|
@@ -106,10 +107,11 @@ function CardContainer({
|
|
|
106
107
|
});
|
|
107
108
|
};
|
|
108
109
|
|
|
109
|
-
const handleTransition =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
const handleTransition = _ref2 => {
|
|
111
|
+
let {
|
|
112
|
+
closing,
|
|
113
|
+
gesture
|
|
114
|
+
} = _ref2;
|
|
113
115
|
const {
|
|
114
116
|
route
|
|
115
117
|
} = scene.descriptor;
|
|
@@ -140,9 +142,10 @@ function CardContainer({
|
|
|
140
142
|
React.useEffect(() => {
|
|
141
143
|
var _scene$progress$next, _scene$progress$next$;
|
|
142
144
|
|
|
143
|
-
const listener = (_scene$progress$next = scene.progress.next) === null || _scene$progress$next === void 0 ? void 0 : (_scene$progress$next$ = _scene$progress$next.addListener) === null || _scene$progress$next$ === void 0 ? void 0 : _scene$progress$next$.call(_scene$progress$next,
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
const listener = (_scene$progress$next = scene.progress.next) === null || _scene$progress$next === void 0 ? void 0 : (_scene$progress$next$ = _scene$progress$next.addListener) === null || _scene$progress$next$ === void 0 ? void 0 : _scene$progress$next$.call(_scene$progress$next, _ref3 => {
|
|
146
|
+
let {
|
|
147
|
+
value
|
|
148
|
+
} = _ref3;
|
|
146
149
|
setPointerEvents(value <= EPSILON ? 'box-none' : 'none');
|
|
147
150
|
});
|
|
148
151
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CardContainer.tsx"],"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","EPSILON","CardContainer","interpolationIndex","index","active","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","headerDarkContent","hasAbsoluteFloatHeader","headerHeight","onHeaderHeightChange","isParentHeaderShown","isNextScreenTransparent","detachCurrentScreen","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","renderHeader","renderScene","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","parentHeaderHeight","useContext","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","useCallback","options","navigation","descriptor","isFocused","keyboardHandlingEnabled","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","insets","top","right","bottom","left","colors","pointerEvents","setPointerEvents","useState","useEffect","listener","progress","next","addListener","value","removeListener","presentation","animationEnabled","cardOverlay","cardOverlayEnabled","cardShadowEnabled","cardStyle","cardStyleInterpolator","gestureDirection","gestureEnabled","gestureResponseDistance","gestureVelocityImpact","headerMode","headerShown","transitionSpec","previousScene","backTitle","name","headerBack","useMemo","undefined","title","current","marginTop","backgroundColor","background","overflow","display","absoluteFill","styles","container","mode","scenes","onContentHeightChange","memo","create","flex","flexDirection"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n} from '@react-navigation/elements';\nimport { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, StyleSheet, View } from 'react-native';\n\nimport type { Layout, Scene } from '../../types';\nimport ModalPresentationContext from '../../utils/ModalPresentationContext';\nimport useKeyboardManager from '../../utils/useKeyboardManager';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport Card from './Card';\n\ntype Props = {\n interpolationIndex: number;\n index: number;\n active: boolean;\n focused: boolean;\n closing: boolean;\n modal: boolean;\n layout: Layout;\n gesture: Animated.Value;\n scene: Scene;\n headerDarkContent: boolean | undefined;\n safeAreaInsetTop: number;\n safeAreaInsetRight: number;\n safeAreaInsetBottom: number;\n safeAreaInsetLeft: number;\n getPreviousScene: (props: { route: Route<string> }) => Scene | undefined;\n getFocusedRoute: () => Route<string>;\n renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n renderScene: (props: { route: Route<string> }) => React.ReactNode;\n onOpenRoute: (props: { route: Route<string> }) => void;\n onCloseRoute: (props: { route: Route<string> }) => void;\n onTransitionStart: (\n props: { route: Route<string> },\n closing: boolean\n ) => void;\n onTransitionEnd: (props: { route: Route<string> }, closing: boolean) => void;\n onGestureStart: (props: { route: Route<string> }) => void;\n onGestureEnd: (props: { route: Route<string> }) => void;\n onGestureCancel: (props: { route: Route<string> }) => void;\n hasAbsoluteFloatHeader: boolean;\n headerHeight: number;\n onHeaderHeightChange: (props: {\n route: Route<string>;\n height: number;\n }) => void;\n isParentHeaderShown: boolean;\n isNextScreenTransparent: boolean;\n detachCurrentScreen: boolean;\n};\n\nconst EPSILON = 0.1;\n\nfunction CardContainer({\n interpolationIndex,\n index,\n active,\n closing,\n gesture,\n focused,\n modal,\n getPreviousScene,\n getFocusedRoute,\n headerDarkContent,\n hasAbsoluteFloatHeader,\n headerHeight,\n onHeaderHeightChange,\n isParentHeaderShown,\n isNextScreenTransparent,\n detachCurrentScreen,\n layout,\n onCloseRoute,\n onOpenRoute,\n onGestureCancel,\n onGestureEnd,\n onGestureStart,\n onTransitionEnd,\n onTransitionStart,\n renderHeader,\n renderScene,\n safeAreaInsetBottom,\n safeAreaInsetLeft,\n safeAreaInsetRight,\n safeAreaInsetTop,\n scene,\n}: Props) {\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n\n const { onPageChangeStart, onPageChangeCancel, onPageChangeConfirm } =\n useKeyboardManager(\n React.useCallback(() => {\n const { options, navigation } = scene.descriptor;\n\n return (\n navigation.isFocused() && options.keyboardHandlingEnabled !== false\n );\n }, [scene.descriptor])\n );\n\n const handleOpen = () => {\n const { route } = scene.descriptor;\n\n onTransitionEnd({ route }, false);\n onOpenRoute({ route });\n };\n\n const handleClose = () => {\n const { route } = scene.descriptor;\n\n onTransitionEnd({ route }, true);\n onCloseRoute({ route });\n };\n\n const handleGestureBegin = () => {\n const { route } = scene.descriptor;\n\n onPageChangeStart();\n onGestureStart({ route });\n };\n\n const handleGestureCanceled = () => {\n const { route } = scene.descriptor;\n\n onPageChangeCancel();\n onGestureCancel({ route });\n };\n\n const handleGestureEnd = () => {\n const { route } = scene.descriptor;\n\n onGestureEnd({ route });\n };\n\n const handleTransition = ({\n closing,\n gesture,\n }: {\n closing: boolean;\n gesture: boolean;\n }) => {\n const { route } = scene.descriptor;\n\n if (!gesture) {\n onPageChangeConfirm?.(true);\n } else if (active && closing) {\n onPageChangeConfirm?.(false);\n } else {\n onPageChangeCancel?.();\n }\n\n onTransitionStart?.({ route }, closing);\n };\n\n const insets = {\n top: safeAreaInsetTop,\n right: safeAreaInsetRight,\n bottom: safeAreaInsetBottom,\n left: safeAreaInsetLeft,\n };\n\n const { colors } = useTheme();\n\n const [pointerEvents, setPointerEvents] =\n React.useState<'box-none' | 'none'>('box-none');\n\n React.useEffect(() => {\n const listener = scene.progress.next?.addListener?.(\n ({ value }: { value: number }) => {\n setPointerEvents(value <= EPSILON ? 'box-none' : 'none');\n }\n );\n\n return () => {\n if (listener) {\n scene.progress.next?.removeListener?.(listener);\n }\n };\n }, [pointerEvents, scene.progress.next]);\n\n const {\n presentation,\n animationEnabled,\n cardOverlay,\n cardOverlayEnabled,\n cardShadowEnabled,\n cardStyle,\n cardStyleInterpolator,\n gestureDirection,\n gestureEnabled,\n gestureResponseDistance,\n gestureVelocityImpact,\n headerMode,\n headerShown,\n transitionSpec,\n } = scene.descriptor.options;\n\n const previousScene = getPreviousScene({ route: scene.descriptor.route });\n\n let backTitle: string | undefined;\n\n if (previousScene) {\n const { options, route } = previousScene.descriptor;\n\n backTitle = getHeaderTitle(options, route.name);\n }\n\n const headerBack = React.useMemo(\n () => (backTitle !== undefined ? { title: backTitle } : undefined),\n [backTitle]\n );\n\n return (\n <Card\n interpolationIndex={interpolationIndex}\n gestureDirection={gestureDirection}\n layout={layout}\n insets={insets}\n gesture={gesture}\n current={scene.progress.current}\n next={scene.progress.next}\n closing={closing}\n onOpen={handleOpen}\n onClose={handleClose}\n overlay={cardOverlay}\n overlayEnabled={cardOverlayEnabled}\n shadowEnabled={cardShadowEnabled}\n onTransition={handleTransition}\n onGestureBegin={handleGestureBegin}\n onGestureCanceled={handleGestureCanceled}\n onGestureEnd={handleGestureEnd}\n gestureEnabled={index === 0 ? false : gestureEnabled}\n gestureResponseDistance={gestureResponseDistance}\n gestureVelocityImpact={gestureVelocityImpact}\n transitionSpec={transitionSpec}\n styleInterpolator={cardStyleInterpolator}\n accessibilityElementsHidden={!focused}\n importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}\n pointerEvents={active ? 'box-none' : pointerEvents}\n pageOverflowEnabled={headerMode !== 'float' && presentation !== 'modal'}\n headerDarkContent={headerDarkContent}\n containerStyle={\n hasAbsoluteFloatHeader && headerMode !== 'screen'\n ? { marginTop: headerHeight }\n : null\n }\n contentStyle={[\n {\n backgroundColor:\n presentation === 'transparentModal'\n ? 'transparent'\n : colors.background,\n },\n cardStyle,\n ]}\n style={[\n {\n // This is necessary to avoid unfocused larger pages increasing scroll area\n // The issue can be seen on the web when a smaller screen is pushed over a larger one\n overflow: active ? undefined : 'hidden',\n display:\n // Hide unfocused screens when animation isn't enabled\n // This is also necessary for a11y on web\n animationEnabled === false &&\n isNextScreenTransparent === false &&\n detachCurrentScreen !== false &&\n !focused\n ? 'none'\n : 'flex',\n },\n StyleSheet.absoluteFill,\n ]}\n >\n <View style={styles.container}>\n <ModalPresentationContext.Provider value={modal}>\n <View style={styles.scene}>\n <HeaderBackContext.Provider value={headerBack}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={headerShown ? headerHeight : parentHeaderHeight ?? 0}\n >\n {renderScene({ route: scene.descriptor.route })}\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </HeaderBackContext.Provider>\n </View>\n {headerMode !== 'float'\n ? renderHeader({\n mode: 'screen',\n layout,\n scenes: [previousScene, scene],\n getPreviousScene,\n getFocusedRoute,\n onContentHeightChange: onHeaderHeightChange,\n })\n : null}\n </ModalPresentationContext.Provider>\n </View>\n </Card>\n );\n}\n\nexport default React.memo(CardContainer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'column-reverse',\n },\n scene: {\n flex: 1,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["CardContainer.tsx"],"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","EPSILON","CardContainer","interpolationIndex","index","active","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","headerDarkContent","hasAbsoluteFloatHeader","headerHeight","onHeaderHeightChange","isParentHeaderShown","isNextScreenTransparent","detachCurrentScreen","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","renderHeader","renderScene","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","parentHeaderHeight","useContext","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","useCallback","options","navigation","descriptor","isFocused","keyboardHandlingEnabled","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","insets","top","right","bottom","left","colors","pointerEvents","setPointerEvents","useState","useEffect","listener","progress","next","addListener","value","removeListener","presentation","animationEnabled","cardOverlay","cardOverlayEnabled","cardShadowEnabled","cardStyle","cardStyleInterpolator","gestureDirection","gestureEnabled","gestureResponseDistance","gestureVelocityImpact","headerMode","headerShown","transitionSpec","previousScene","backTitle","name","headerBack","useMemo","undefined","title","current","marginTop","backgroundColor","background","overflow","display","absoluteFill","styles","container","mode","scenes","onContentHeightChange","memo","create","flex","flexDirection"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n} from '@react-navigation/elements';\nimport { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, StyleSheet, View } from 'react-native';\n\nimport type { Layout, Scene } from '../../types';\nimport ModalPresentationContext from '../../utils/ModalPresentationContext';\nimport useKeyboardManager from '../../utils/useKeyboardManager';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport Card from './Card';\n\ntype Props = {\n interpolationIndex: number;\n index: number;\n active: boolean;\n focused: boolean;\n closing: boolean;\n modal: boolean;\n layout: Layout;\n gesture: Animated.Value;\n scene: Scene;\n headerDarkContent: boolean | undefined;\n safeAreaInsetTop: number;\n safeAreaInsetRight: number;\n safeAreaInsetBottom: number;\n safeAreaInsetLeft: number;\n getPreviousScene: (props: { route: Route<string> }) => Scene | undefined;\n getFocusedRoute: () => Route<string>;\n renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n renderScene: (props: { route: Route<string> }) => React.ReactNode;\n onOpenRoute: (props: { route: Route<string> }) => void;\n onCloseRoute: (props: { route: Route<string> }) => void;\n onTransitionStart: (\n props: { route: Route<string> },\n closing: boolean\n ) => void;\n onTransitionEnd: (props: { route: Route<string> }, closing: boolean) => void;\n onGestureStart: (props: { route: Route<string> }) => void;\n onGestureEnd: (props: { route: Route<string> }) => void;\n onGestureCancel: (props: { route: Route<string> }) => void;\n hasAbsoluteFloatHeader: boolean;\n headerHeight: number;\n onHeaderHeightChange: (props: {\n route: Route<string>;\n height: number;\n }) => void;\n isParentHeaderShown: boolean;\n isNextScreenTransparent: boolean;\n detachCurrentScreen: boolean;\n};\n\nconst EPSILON = 0.1;\n\nfunction CardContainer({\n interpolationIndex,\n index,\n active,\n closing,\n gesture,\n focused,\n modal,\n getPreviousScene,\n getFocusedRoute,\n headerDarkContent,\n hasAbsoluteFloatHeader,\n headerHeight,\n onHeaderHeightChange,\n isParentHeaderShown,\n isNextScreenTransparent,\n detachCurrentScreen,\n layout,\n onCloseRoute,\n onOpenRoute,\n onGestureCancel,\n onGestureEnd,\n onGestureStart,\n onTransitionEnd,\n onTransitionStart,\n renderHeader,\n renderScene,\n safeAreaInsetBottom,\n safeAreaInsetLeft,\n safeAreaInsetRight,\n safeAreaInsetTop,\n scene,\n}: Props) {\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n\n const { onPageChangeStart, onPageChangeCancel, onPageChangeConfirm } =\n useKeyboardManager(\n React.useCallback(() => {\n const { options, navigation } = scene.descriptor;\n\n return (\n navigation.isFocused() && options.keyboardHandlingEnabled !== false\n );\n }, [scene.descriptor])\n );\n\n const handleOpen = () => {\n const { route } = scene.descriptor;\n\n onTransitionEnd({ route }, false);\n onOpenRoute({ route });\n };\n\n const handleClose = () => {\n const { route } = scene.descriptor;\n\n onTransitionEnd({ route }, true);\n onCloseRoute({ route });\n };\n\n const handleGestureBegin = () => {\n const { route } = scene.descriptor;\n\n onPageChangeStart();\n onGestureStart({ route });\n };\n\n const handleGestureCanceled = () => {\n const { route } = scene.descriptor;\n\n onPageChangeCancel();\n onGestureCancel({ route });\n };\n\n const handleGestureEnd = () => {\n const { route } = scene.descriptor;\n\n onGestureEnd({ route });\n };\n\n const handleTransition = ({\n closing,\n gesture,\n }: {\n closing: boolean;\n gesture: boolean;\n }) => {\n const { route } = scene.descriptor;\n\n if (!gesture) {\n onPageChangeConfirm?.(true);\n } else if (active && closing) {\n onPageChangeConfirm?.(false);\n } else {\n onPageChangeCancel?.();\n }\n\n onTransitionStart?.({ route }, closing);\n };\n\n const insets = {\n top: safeAreaInsetTop,\n right: safeAreaInsetRight,\n bottom: safeAreaInsetBottom,\n left: safeAreaInsetLeft,\n };\n\n const { colors } = useTheme();\n\n const [pointerEvents, setPointerEvents] = React.useState<'box-none' | 'none'>(\n 'box-none'\n );\n\n React.useEffect(() => {\n const listener = scene.progress.next?.addListener?.(\n ({ value }: { value: number }) => {\n setPointerEvents(value <= EPSILON ? 'box-none' : 'none');\n }\n );\n\n return () => {\n if (listener) {\n scene.progress.next?.removeListener?.(listener);\n }\n };\n }, [pointerEvents, scene.progress.next]);\n\n const {\n presentation,\n animationEnabled,\n cardOverlay,\n cardOverlayEnabled,\n cardShadowEnabled,\n cardStyle,\n cardStyleInterpolator,\n gestureDirection,\n gestureEnabled,\n gestureResponseDistance,\n gestureVelocityImpact,\n headerMode,\n headerShown,\n transitionSpec,\n } = scene.descriptor.options;\n\n const previousScene = getPreviousScene({ route: scene.descriptor.route });\n\n let backTitle: string | undefined;\n\n if (previousScene) {\n const { options, route } = previousScene.descriptor;\n\n backTitle = getHeaderTitle(options, route.name);\n }\n\n const headerBack = React.useMemo(\n () => (backTitle !== undefined ? { title: backTitle } : undefined),\n [backTitle]\n );\n\n return (\n <Card\n interpolationIndex={interpolationIndex}\n gestureDirection={gestureDirection}\n layout={layout}\n insets={insets}\n gesture={gesture}\n current={scene.progress.current}\n next={scene.progress.next}\n closing={closing}\n onOpen={handleOpen}\n onClose={handleClose}\n overlay={cardOverlay}\n overlayEnabled={cardOverlayEnabled}\n shadowEnabled={cardShadowEnabled}\n onTransition={handleTransition}\n onGestureBegin={handleGestureBegin}\n onGestureCanceled={handleGestureCanceled}\n onGestureEnd={handleGestureEnd}\n gestureEnabled={index === 0 ? false : gestureEnabled}\n gestureResponseDistance={gestureResponseDistance}\n gestureVelocityImpact={gestureVelocityImpact}\n transitionSpec={transitionSpec}\n styleInterpolator={cardStyleInterpolator}\n accessibilityElementsHidden={!focused}\n importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}\n pointerEvents={active ? 'box-none' : pointerEvents}\n pageOverflowEnabled={headerMode !== 'float' && presentation !== 'modal'}\n headerDarkContent={headerDarkContent}\n containerStyle={\n hasAbsoluteFloatHeader && headerMode !== 'screen'\n ? { marginTop: headerHeight }\n : null\n }\n contentStyle={[\n {\n backgroundColor:\n presentation === 'transparentModal'\n ? 'transparent'\n : colors.background,\n },\n cardStyle,\n ]}\n style={[\n {\n // This is necessary to avoid unfocused larger pages increasing scroll area\n // The issue can be seen on the web when a smaller screen is pushed over a larger one\n overflow: active ? undefined : 'hidden',\n display:\n // Hide unfocused screens when animation isn't enabled\n // This is also necessary for a11y on web\n animationEnabled === false &&\n isNextScreenTransparent === false &&\n detachCurrentScreen !== false &&\n !focused\n ? 'none'\n : 'flex',\n },\n StyleSheet.absoluteFill,\n ]}\n >\n <View style={styles.container}>\n <ModalPresentationContext.Provider value={modal}>\n <View style={styles.scene}>\n <HeaderBackContext.Provider value={headerBack}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={headerShown ? headerHeight : parentHeaderHeight ?? 0}\n >\n {renderScene({ route: scene.descriptor.route })}\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </HeaderBackContext.Provider>\n </View>\n {headerMode !== 'float'\n ? renderHeader({\n mode: 'screen',\n layout,\n scenes: [previousScene, scene],\n getPreviousScene,\n getFocusedRoute,\n onContentHeightChange: onHeaderHeightChange,\n })\n : null}\n </ModalPresentationContext.Provider>\n </View>\n </Card>\n );\n}\n\nexport default React.memo(CardContainer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'column-reverse',\n },\n scene: {\n flex: 1,\n },\n});\n"]}
|
|
@@ -6,12 +6,13 @@ import { StyleSheet, View } from 'react-native';
|
|
|
6
6
|
// if the container fills the body by comparing the size
|
|
7
7
|
// This lets the document.body handle scrolling of the content
|
|
8
8
|
// It's necessary for mobile browsers to be able to hide address bar on scroll
|
|
9
|
-
export default /*#__PURE__*/React.forwardRef(function CardSheet({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
export default /*#__PURE__*/React.forwardRef(function CardSheet(_ref, ref) {
|
|
10
|
+
let {
|
|
11
|
+
enabled,
|
|
12
|
+
layout,
|
|
13
|
+
style,
|
|
14
|
+
...rest
|
|
15
|
+
} = _ref;
|
|
15
16
|
const [fill, setFill] = React.useState(false);
|
|
16
17
|
React.useEffect(() => {
|
|
17
18
|
if (typeof document === 'undefined' || !document.body) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CardSheet.tsx"],"names":["React","StyleSheet","View","forwardRef","CardSheet","enabled","layout","style","rest","
|
|
1
|
+
{"version":3,"sources":["CardSheet.tsx"],"names":["React","StyleSheet","View","forwardRef","CardSheet","ref","enabled","layout","style","rest","fill","setFill","useState","useEffect","document","body","width","clientWidth","height","clientHeight","styles","page","card","create","minHeight","flex","overflow"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAA4C,cAA5C;AAQA;AACA;AACA;AACA;AACA,4BAAeF,KAAK,CAACG,UAAN,CAA8B,SAASC,SAAT,OAE3CC,GAF2C,EAG3C;AAAA,MAFA;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,MAAX;AAAmBC,IAAAA,KAAnB;AAA0B,OAAGC;AAA7B,GAEA;AACA,QAAM,CAACC,IAAD,EAAOC,OAAP,IAAkBX,KAAK,CAACY,QAAN,CAAe,KAAf,CAAxB;AAEAZ,EAAAA,KAAK,CAACa,SAAN,CAAgB,MAAM;AACpB,QAAI,OAAOC,QAAP,KAAoB,WAApB,IAAmC,CAACA,QAAQ,CAACC,IAAjD,EAAuD;AACrD;AACA;AACD;;AAED,UAAMC,KAAK,GAAGF,QAAQ,CAACC,IAAT,CAAcE,WAA5B;AACA,UAAMC,MAAM,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,YAA7B;AAEAR,IAAAA,OAAO,CAACK,KAAK,KAAKT,MAAM,CAACS,KAAjB,IAA0BE,MAAM,KAAKX,MAAM,CAACW,MAA7C,CAAP;AACD,GAVD,EAUG,CAACX,MAAM,CAACW,MAAR,EAAgBX,MAAM,CAACS,KAAvB,CAVH;AAYA,sBACE,oBAAC,IAAD,eACMP,IADN;AAEE,IAAA,GAAG,EAAEJ,GAFP;AAGE,IAAA,KAAK,EAAE,CAACC,OAAO,IAAII,IAAX,GAAkBU,MAAM,CAACC,IAAzB,GAAgCD,MAAM,CAACE,IAAxC,EAA8Cd,KAA9C;AAHT,KADF;AAOD,CAzBc,CAAf;AA2BA,MAAMY,MAAM,GAAGnB,UAAU,CAACsB,MAAX,CAAkB;AAC/BF,EAAAA,IAAI,EAAE;AACJG,IAAAA,SAAS,EAAE;AADP,GADyB;AAI/BF,EAAAA,IAAI,EAAE;AACJG,IAAAA,IAAI,EAAE,CADF;AAEJC,IAAAA,QAAQ,EAAE;AAFN;AAJyB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\ntype Props = ViewProps & {\n enabled: boolean;\n layout: { width: number; height: number };\n children: React.ReactNode;\n};\n\n// This component will render a page which overflows the screen\n// if the container fills the body by comparing the size\n// This lets the document.body handle scrolling of the content\n// It's necessary for mobile browsers to be able to hide address bar on scroll\nexport default React.forwardRef<View, Props>(function CardSheet(\n { enabled, layout, style, ...rest },\n ref\n) {\n const [fill, setFill] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof document === 'undefined' || !document.body) {\n // Only run when DOM is available\n return;\n }\n\n const width = document.body.clientWidth;\n const height = document.body.clientHeight;\n\n setFill(width === layout.width && height === layout.height);\n }, [layout.height, layout.width]);\n\n return (\n <View\n {...rest}\n ref={ref}\n style={[enabled && fill ? styles.page : styles.card, style]}\n />\n );\n});\n\nconst styles = StyleSheet.create({\n page: {\n minHeight: '100%',\n },\n card: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n"]}
|
|
@@ -60,7 +60,7 @@ const getHeaderHeights = (scenes, insets, isParentHeaderShown, isParentModal, la
|
|
|
60
60
|
headerStyle
|
|
61
61
|
} = curr.descriptor.options;
|
|
62
62
|
const style = StyleSheet.flatten(headerStyle || {});
|
|
63
|
-
const height = typeof style.height === 'number' ? style.height : previous[curr.route.key];
|
|
63
|
+
const height = 'height' in style && typeof style.height === 'number' ? style.height : previous[curr.route.key];
|
|
64
64
|
const interpolationIndex = getInterpolationIndex(scenes, index);
|
|
65
65
|
const isModal = getIsModal(curr, interpolationIndex, isParentModal);
|
|
66
66
|
acc[curr.route.key] = typeof height === 'number' ? height : getDefaultHeaderHeight(layout, isModal, headerStatusBarHeight);
|
|
@@ -205,13 +205,15 @@ export default class CardStack extends React.Component {
|
|
|
205
205
|
});
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
_defineProperty(this, "handleHeaderLayout",
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
208
|
+
_defineProperty(this, "handleHeaderLayout", _ref => {
|
|
209
|
+
let {
|
|
210
|
+
route,
|
|
211
|
+
height
|
|
212
|
+
} = _ref;
|
|
213
|
+
this.setState(_ref2 => {
|
|
214
|
+
let {
|
|
215
|
+
headerHeights
|
|
216
|
+
} = _ref2;
|
|
215
217
|
const previousHeight = headerHeights[route.key];
|
|
216
218
|
|
|
217
219
|
if (previousHeight === height) {
|
|
@@ -233,9 +235,10 @@ export default class CardStack extends React.Component {
|
|
|
233
235
|
return state.routes[state.index];
|
|
234
236
|
});
|
|
235
237
|
|
|
236
|
-
_defineProperty(this, "getPreviousScene",
|
|
237
|
-
|
|
238
|
-
|
|
238
|
+
_defineProperty(this, "getPreviousScene", _ref3 => {
|
|
239
|
+
let {
|
|
240
|
+
route
|
|
241
|
+
} = _ref3;
|
|
239
242
|
const {
|
|
240
243
|
getPreviousRoute
|
|
241
244
|
} = this.props;
|
|
@@ -326,7 +329,12 @@ export default class CardStack extends React.Component {
|
|
|
326
329
|
if (detachPreviousScreen === false) {
|
|
327
330
|
activeScreensLimit++;
|
|
328
331
|
} else {
|
|
329
|
-
|
|
332
|
+
// Check at least last 2 screens before stopping
|
|
333
|
+
// This will make sure that screen isn't detached when another screen is animating on top of the transparent one
|
|
334
|
+
// For example, (Opaque -> Transparent -> Opaque)
|
|
335
|
+
if (i <= scenes.length - 2) {
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
330
338
|
}
|
|
331
339
|
}
|
|
332
340
|
|
|
@@ -387,16 +395,17 @@ export default class CardStack extends React.Component {
|
|
|
387
395
|
const safeAreaInsetBottom = insets.bottom;
|
|
388
396
|
const safeAreaInsetLeft = insets.left;
|
|
389
397
|
const headerHeight = headerShown !== false ? headerHeights[route.key] : 0;
|
|
390
|
-
const {
|
|
391
|
-
backgroundColor: headerBackgroundColor
|
|
392
|
-
} = StyleSheet.flatten(headerStyle) || {};
|
|
393
398
|
let headerDarkContent;
|
|
394
399
|
|
|
395
400
|
if (headerShown) {
|
|
396
401
|
if (typeof headerTintColor === 'string') {
|
|
397
402
|
headerDarkContent = Color(headerTintColor).isDark();
|
|
398
|
-
} else
|
|
399
|
-
|
|
403
|
+
} else {
|
|
404
|
+
const flattenedHeaderStyle = StyleSheet.flatten(headerStyle);
|
|
405
|
+
|
|
406
|
+
if (flattenedHeaderStyle && 'backgroundColor' in flattenedHeaderStyle && typeof flattenedHeaderStyle.backgroundColor === 'string') {
|
|
407
|
+
headerDarkContent = !Color(flattenedHeaderStyle.backgroundColor).isDark();
|
|
408
|
+
}
|
|
400
409
|
}
|
|
401
410
|
} // Start from current card and count backwards the number of cards with same interpolation
|
|
402
411
|
|