@react-navigation/stack 6.0.11 → 6.1.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 +8 -7
- 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 +19 -11
- 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 +8 -7
- 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 +19 -11
- 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/types.d.ts +6 -2
- package/package.json +9 -9
- package/src/index.tsx +1 -0
- package/src/types.tsx +6 -1
- 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 +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Header.tsx"],"names":["getHeaderTitle","HeaderShownContext","StackActions","React","useSafeAreaInsets","debounce","ModalPresentationContext","HeaderSegment","memo","Header","back","layout","progress","options","route","navigation","styleInterpolator","insets","previousTitle","headerBackTitle","undefined","title","goBack","useCallback","isFocused","canGoBack","dispatch","pop","source","key","isModal","useContext","isParentHeaderShown","statusBarHeight","headerStatusBarHeight","top","name"],"mappings":";;AAAA,SAASA,cAAT,EAAyBC,kBAAzB,QAAmD,4BAAnD;AACA,SAASC,YAAT,QAA6B,0BAA7B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AAGA,OAAOC,QAAP,MAAqB,sBAArB;AACA,OAAOC,wBAAP,MAAqC,sCAArC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AAEA,4BAAeJ,KAAK,CAACK,IAAN,CAAW,SAASC,MAAT,
|
|
1
|
+
{"version":3,"sources":["Header.tsx"],"names":["getHeaderTitle","HeaderShownContext","StackActions","React","useSafeAreaInsets","debounce","ModalPresentationContext","HeaderSegment","memo","Header","back","layout","progress","options","route","navigation","styleInterpolator","insets","previousTitle","headerBackTitle","undefined","title","goBack","useCallback","isFocused","canGoBack","dispatch","pop","source","key","isModal","useContext","isParentHeaderShown","statusBarHeight","headerStatusBarHeight","top","name"],"mappings":";;AAAA,SAASA,cAAT,EAAyBC,kBAAzB,QAAmD,4BAAnD;AACA,SAASC,YAAT,QAA6B,0BAA7B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AAGA,OAAOC,QAAP,MAAqB,sBAArB;AACA,OAAOC,wBAAP,MAAqC,sCAArC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AAEA,4BAAeJ,KAAK,CAACK,IAAN,CAAW,SAASC,MAAT,OAQL;AAAA,MARqB;AACxCC,IAAAA,IADwC;AAExCC,IAAAA,MAFwC;AAGxCC,IAAAA,QAHwC;AAIxCC,IAAAA,OAJwC;AAKxCC,IAAAA,KALwC;AAMxCC,IAAAA,UANwC;AAOxCC,IAAAA;AAPwC,GAQrB;AACnB,QAAMC,MAAM,GAAGb,iBAAiB,EAAhC;AAEA,MAAIc,aAAJ,CAHmB,CAKnB;AACA;;AACA,MAAIL,OAAO,CAACM,eAAR,KAA4BC,SAAhC,EAA2C;AACzCF,IAAAA,aAAa,GAAGL,OAAO,CAACM,eAAxB;AACD,GAFD,MAEO,IAAIT,IAAJ,EAAU;AACfQ,IAAAA,aAAa,GAAGR,IAAI,CAACW,KAArB;AACD,GAXkB,CAanB;;;AACA,QAAMC,MAAM,GAAGnB,KAAK,CAACoB,WAAN,CACblB,QAAQ,CAAC,MAAM;AACb,QAAIU,UAAU,CAACS,SAAX,MAA0BT,UAAU,CAACU,SAAX,EAA9B,EAAsD;AACpDV,MAAAA,UAAU,CAACW,QAAX,CAAoB,EAClB,GAAGxB,YAAY,CAACyB,GAAb,EADe;AAElBC,QAAAA,MAAM,EAAEd,KAAK,CAACe;AAFI,OAApB;AAID;AACF,GAPO,EAOL,EAPK,CADK,EASb,CAACd,UAAD,EAAaD,KAAK,CAACe,GAAnB,CATa,CAAf;AAYA,QAAMC,OAAO,GAAG3B,KAAK,CAAC4B,UAAN,CAAiBzB,wBAAjB,CAAhB;AACA,QAAM0B,mBAAmB,GAAG7B,KAAK,CAAC4B,UAAN,CAAiB9B,kBAAjB,CAA5B;AAEA,QAAMgC,eAAe,GACnBpB,OAAO,CAACqB,qBAAR,KAAkCd,SAAlC,GACIP,OAAO,CAACqB,qBADZ,GAEIJ,OAAO,IAAIE,mBAAX,GACA,CADA,GAEAf,MAAM,CAACkB,GALb;AAOA,sBACE,oBAAC,aAAD,eACMtB,OADN;AAEE,IAAA,KAAK,EAAEb,cAAc,CAACa,OAAD,EAAUC,KAAK,CAACsB,IAAhB,CAFvB;AAGE,IAAA,QAAQ,EAAExB,QAHZ;AAIE,IAAA,MAAM,EAAED,MAJV;AAKE,IAAA,KAAK,EAAEmB,OALT;AAME,IAAA,eAAe,EACbjB,OAAO,CAACM,eAAR,KAA4BC,SAA5B,GACIP,OAAO,CAACM,eADZ,GAEID,aATR;AAWE,IAAA,qBAAqB,EAAEe,eAXzB;AAYE,IAAA,QAAQ,EAAEvB,IAAI,GAAGY,MAAH,GAAYF,SAZ5B;AAaE,IAAA,iBAAiB,EAAEJ;AAbrB,KADF;AAiBD,CA7Dc,CAAf","sourcesContent":["import { getHeaderTitle, HeaderShownContext } from '@react-navigation/elements';\nimport { StackActions } from '@react-navigation/native';\nimport * as React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { StackHeaderProps } from '../../types';\nimport debounce from '../../utils/debounce';\nimport ModalPresentationContext from '../../utils/ModalPresentationContext';\nimport HeaderSegment from './HeaderSegment';\n\nexport default React.memo(function Header({\n back,\n layout,\n progress,\n options,\n route,\n navigation,\n styleInterpolator,\n}: StackHeaderProps) {\n const insets = useSafeAreaInsets();\n\n let previousTitle;\n\n // The label for the left back button shows the title of the previous screen\n // If a custom label is specified, we use it, otherwise use previous screen's title\n if (options.headerBackTitle !== undefined) {\n previousTitle = options.headerBackTitle;\n } else if (back) {\n previousTitle = back.title;\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const goBack = React.useCallback(\n debounce(() => {\n if (navigation.isFocused() && navigation.canGoBack()) {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n });\n }\n }, 50),\n [navigation, route.key]\n );\n\n const isModal = React.useContext(ModalPresentationContext);\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n\n const statusBarHeight =\n options.headerStatusBarHeight !== undefined\n ? options.headerStatusBarHeight\n : isModal || isParentHeaderShown\n ? 0\n : insets.top;\n\n return (\n <HeaderSegment\n {...options}\n title={getHeaderTitle(options, route.name)}\n progress={progress}\n layout={layout}\n modal={isModal}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : previousTitle\n }\n headerStatusBarHeight={statusBarHeight}\n onGoBack={back ? goBack : undefined}\n styleInterpolator={styleInterpolator}\n />\n );\n});\n"]}
|
|
@@ -4,15 +4,16 @@ import * as React from 'react';
|
|
|
4
4
|
import { Animated, StyleSheet, View } from 'react-native';
|
|
5
5
|
import { forNoAnimation, forSlideLeft, forSlideRight, forSlideUp } from '../../TransitionConfigs/HeaderStyleInterpolators';
|
|
6
6
|
import Header from './Header';
|
|
7
|
-
export default function HeaderContainer({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
export default function HeaderContainer(_ref) {
|
|
8
|
+
let {
|
|
9
|
+
mode,
|
|
10
|
+
scenes,
|
|
11
|
+
layout,
|
|
12
|
+
getPreviousScene,
|
|
13
|
+
getFocusedRoute,
|
|
14
|
+
onContentHeightChange,
|
|
15
|
+
style
|
|
16
|
+
} = _ref;
|
|
16
17
|
const focusedRoute = getFocusedRoute();
|
|
17
18
|
const parentHeaderBack = React.useContext(HeaderBackContext);
|
|
18
19
|
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["HeaderContainer.tsx"],"names":["getHeaderTitle","HeaderBackContext","NavigationContext","NavigationRouteContext","React","Animated","StyleSheet","View","forNoAnimation","forSlideLeft","forSlideRight","forSlideUp","Header","HeaderContainer","mode","scenes","layout","getPreviousScene","getFocusedRoute","onContentHeightChange","style","focusedRoute","parentHeaderBack","useContext","slice","map","scene","i","self","length","header","headerMode","headerShown","headerTransparent","headerStyleInterpolator","descriptor","options","isFocused","key","route","previousScene","headerBack","title","name","previousDescriptor","nextDescriptor","previousHeaderShown","previousHeaderMode","nextHeaderlessScene","find","currentHeaderShown","currentHeaderMode","gestureDirection","nextHeaderlessGestureDirection","isHeaderStatic","props","back","progress","navigation","styleInterpolator","e","height","nativeEvent","undefined","styles","create","position","top","left","right"],"mappings":"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","sourcesContent":["import { getHeaderTitle, HeaderBackContext } from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport {\n forNoAnimation,\n forSlideLeft,\n forSlideRight,\n forSlideUp,\n} from '../../TransitionConfigs/HeaderStyleInterpolators';\nimport type {\n Layout,\n Scene,\n StackHeaderMode,\n StackHeaderProps,\n StackNavigationProp,\n} from '../../types';\nimport Header from './Header';\n\nexport type Props = {\n mode: StackHeaderMode;\n layout: Layout;\n scenes: (Scene | undefined)[];\n getPreviousScene: (props: { route: Route<string> }) => Scene | undefined;\n getFocusedRoute: () => Route<string>;\n onContentHeightChange?: (props: {\n route: Route<string>;\n height: number;\n }) => void;\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nexport default function HeaderContainer({\n mode,\n scenes,\n layout,\n getPreviousScene,\n getFocusedRoute,\n onContentHeightChange,\n style,\n}: Props) {\n const focusedRoute = getFocusedRoute();\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n return (\n <Animated.View pointerEvents=\"box-none\" style={style}>\n {scenes.slice(-3).map((scene, i, self) => {\n if ((mode === 'screen' && i !== self.length - 1) || !scene) {\n return null;\n }\n\n const {\n header,\n headerMode,\n headerShown = true,\n headerTransparent,\n headerStyleInterpolator,\n } = scene.descriptor.options;\n\n if (headerMode !== mode || !headerShown) {\n return null;\n }\n\n const isFocused = focusedRoute.key === scene.descriptor.route.key;\n const previousScene = getPreviousScene({\n route: scene.descriptor.route,\n });\n\n let headerBack = parentHeaderBack;\n\n if (previousScene) {\n const { options, route } = previousScene.descriptor;\n\n headerBack = previousScene\n ? { title: getHeaderTitle(options, route.name) }\n : parentHeaderBack;\n }\n\n // If the screen is next to a headerless screen, we need to make the header appear static\n // This makes the header look like it's moving with the screen\n const previousDescriptor = self[i - 1]?.descriptor;\n const nextDescriptor = self[i + 1]?.descriptor;\n\n const {\n headerShown: previousHeaderShown = true,\n headerMode: previousHeaderMode,\n } = previousDescriptor?.options || {};\n\n // If any of the next screens don't have a header or header is part of the screen\n // Then we need to move this header offscreen so that it doesn't cover it\n const nextHeaderlessScene = self.slice(i + 1).find((scene) => {\n const {\n headerShown: currentHeaderShown = true,\n headerMode: currentHeaderMode,\n } = scene?.descriptor.options || {};\n\n return currentHeaderShown === false || currentHeaderMode === 'screen';\n });\n\n const { gestureDirection: nextHeaderlessGestureDirection } =\n nextHeaderlessScene?.descriptor.options || {};\n\n const isHeaderStatic =\n ((previousHeaderShown === false || previousHeaderMode === 'screen') &&\n // We still need to animate when coming back from next scene\n // A hacky way to check this is if the next scene exists\n !nextDescriptor) ||\n nextHeaderlessScene;\n\n const props: StackHeaderProps = {\n layout,\n back: headerBack,\n progress: scene.progress,\n options: scene.descriptor.options,\n route: scene.descriptor.route,\n navigation: scene.descriptor\n .navigation as StackNavigationProp<ParamListBase>,\n styleInterpolator:\n mode === 'float'\n ? isHeaderStatic\n ? nextHeaderlessGestureDirection === 'vertical' ||\n nextHeaderlessGestureDirection === 'vertical-inverted'\n ? forSlideUp\n : nextHeaderlessGestureDirection === 'horizontal-inverted'\n ? forSlideRight\n : forSlideLeft\n : headerStyleInterpolator\n : forNoAnimation,\n };\n\n return (\n <NavigationContext.Provider\n key={scene.descriptor.route.key}\n value={scene.descriptor.navigation}\n >\n <NavigationRouteContext.Provider value={scene.descriptor.route}>\n <View\n onLayout={\n onContentHeightChange\n ? (e) => {\n const { height } = e.nativeEvent.layout;\n\n onContentHeightChange({\n route: scene.descriptor.route,\n height,\n });\n }\n : undefined\n }\n pointerEvents={isFocused ? 'box-none' : 'none'}\n accessibilityElementsHidden={!isFocused}\n importantForAccessibility={\n isFocused ? 'auto' : 'no-hide-descendants'\n }\n style={\n // Avoid positioning the focused header absolutely\n // Otherwise accessibility tools don't seem to be able to find it\n (mode === 'float' && !isFocused) || headerTransparent\n ? styles.header\n : null\n }\n >\n {header !== undefined ? header(props) : <Header {...props} />}\n </View>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n header: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["HeaderContainer.tsx"],"names":["getHeaderTitle","HeaderBackContext","NavigationContext","NavigationRouteContext","React","Animated","StyleSheet","View","forNoAnimation","forSlideLeft","forSlideRight","forSlideUp","Header","HeaderContainer","mode","scenes","layout","getPreviousScene","getFocusedRoute","onContentHeightChange","style","focusedRoute","parentHeaderBack","useContext","slice","map","scene","i","self","length","header","headerMode","headerShown","headerTransparent","headerStyleInterpolator","descriptor","options","isFocused","key","route","previousScene","headerBack","title","name","previousDescriptor","nextDescriptor","previousHeaderShown","previousHeaderMode","nextHeaderlessScene","find","currentHeaderShown","currentHeaderMode","gestureDirection","nextHeaderlessGestureDirection","isHeaderStatic","props","back","progress","navigation","styleInterpolator","e","height","nativeEvent","undefined","styles","create","position","top","left","right"],"mappings":"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","sourcesContent":["import { getHeaderTitle, HeaderBackContext } from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport {\n forNoAnimation,\n forSlideLeft,\n forSlideRight,\n forSlideUp,\n} from '../../TransitionConfigs/HeaderStyleInterpolators';\nimport type {\n Layout,\n Scene,\n StackHeaderMode,\n StackHeaderProps,\n StackNavigationProp,\n} from '../../types';\nimport Header from './Header';\n\nexport type Props = {\n mode: StackHeaderMode;\n layout: Layout;\n scenes: (Scene | undefined)[];\n getPreviousScene: (props: { route: Route<string> }) => Scene | undefined;\n getFocusedRoute: () => Route<string>;\n onContentHeightChange?: (props: {\n route: Route<string>;\n height: number;\n }) => void;\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nexport default function HeaderContainer({\n mode,\n scenes,\n layout,\n getPreviousScene,\n getFocusedRoute,\n onContentHeightChange,\n style,\n}: Props) {\n const focusedRoute = getFocusedRoute();\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n return (\n <Animated.View pointerEvents=\"box-none\" style={style}>\n {scenes.slice(-3).map((scene, i, self) => {\n if ((mode === 'screen' && i !== self.length - 1) || !scene) {\n return null;\n }\n\n const {\n header,\n headerMode,\n headerShown = true,\n headerTransparent,\n headerStyleInterpolator,\n } = scene.descriptor.options;\n\n if (headerMode !== mode || !headerShown) {\n return null;\n }\n\n const isFocused = focusedRoute.key === scene.descriptor.route.key;\n const previousScene = getPreviousScene({\n route: scene.descriptor.route,\n });\n\n let headerBack = parentHeaderBack;\n\n if (previousScene) {\n const { options, route } = previousScene.descriptor;\n\n headerBack = previousScene\n ? { title: getHeaderTitle(options, route.name) }\n : parentHeaderBack;\n }\n\n // If the screen is next to a headerless screen, we need to make the header appear static\n // This makes the header look like it's moving with the screen\n const previousDescriptor = self[i - 1]?.descriptor;\n const nextDescriptor = self[i + 1]?.descriptor;\n\n const {\n headerShown: previousHeaderShown = true,\n headerMode: previousHeaderMode,\n } = previousDescriptor?.options || {};\n\n // If any of the next screens don't have a header or header is part of the screen\n // Then we need to move this header offscreen so that it doesn't cover it\n const nextHeaderlessScene = self.slice(i + 1).find((scene) => {\n const {\n headerShown: currentHeaderShown = true,\n headerMode: currentHeaderMode,\n } = scene?.descriptor.options || {};\n\n return currentHeaderShown === false || currentHeaderMode === 'screen';\n });\n\n const { gestureDirection: nextHeaderlessGestureDirection } =\n nextHeaderlessScene?.descriptor.options || {};\n\n const isHeaderStatic =\n ((previousHeaderShown === false || previousHeaderMode === 'screen') &&\n // We still need to animate when coming back from next scene\n // A hacky way to check this is if the next scene exists\n !nextDescriptor) ||\n nextHeaderlessScene;\n\n const props: StackHeaderProps = {\n layout,\n back: headerBack,\n progress: scene.progress,\n options: scene.descriptor.options,\n route: scene.descriptor.route,\n navigation: scene.descriptor\n .navigation as StackNavigationProp<ParamListBase>,\n styleInterpolator:\n mode === 'float'\n ? isHeaderStatic\n ? nextHeaderlessGestureDirection === 'vertical' ||\n nextHeaderlessGestureDirection === 'vertical-inverted'\n ? forSlideUp\n : nextHeaderlessGestureDirection === 'horizontal-inverted'\n ? forSlideRight\n : forSlideLeft\n : headerStyleInterpolator\n : forNoAnimation,\n };\n\n return (\n <NavigationContext.Provider\n key={scene.descriptor.route.key}\n value={scene.descriptor.navigation}\n >\n <NavigationRouteContext.Provider value={scene.descriptor.route}>\n <View\n onLayout={\n onContentHeightChange\n ? (e) => {\n const { height } = e.nativeEvent.layout;\n\n onContentHeightChange({\n route: scene.descriptor.route,\n height,\n });\n }\n : undefined\n }\n pointerEvents={isFocused ? 'box-none' : 'none'}\n accessibilityElementsHidden={!isFocused}\n importantForAccessibility={\n isFocused ? 'auto' : 'no-hide-descendants'\n }\n style={\n // Avoid positioning the focused header absolutely\n // Otherwise accessibility tools don't seem to be able to find it\n (mode === 'float' && !isFocused) || headerTransparent\n ? styles.header\n : null\n }\n >\n {header !== undefined ? header(props) : <Header {...props} />}\n </View>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n header: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n});\n"]}
|
|
@@ -65,6 +65,7 @@ export default function HeaderSegment(props) {
|
|
|
65
65
|
onGoBack,
|
|
66
66
|
headerTitle: title,
|
|
67
67
|
headerLeft: left = onGoBack ? props => /*#__PURE__*/React.createElement(HeaderBackButton, props) : undefined,
|
|
68
|
+
headerRight: right,
|
|
68
69
|
headerBackImage,
|
|
69
70
|
headerBackTitle,
|
|
70
71
|
headerBackTitleVisible = Platform.OS === 'ios',
|
|
@@ -107,6 +108,9 @@ export default function HeaderSegment(props) {
|
|
|
107
108
|
titleLayout,
|
|
108
109
|
canGoBack: Boolean(onGoBack)
|
|
109
110
|
}) : undefined;
|
|
111
|
+
const headerRight = right ? props => right({ ...props,
|
|
112
|
+
canGoBack: Boolean(onGoBack)
|
|
113
|
+
}) : undefined;
|
|
110
114
|
const headerTitle = typeof title !== 'function' ? props => /*#__PURE__*/React.createElement(HeaderTitle, _extends({}, props, {
|
|
111
115
|
onLayout: handleTitleLayout
|
|
112
116
|
})) : props => title({ ...props,
|
|
@@ -118,6 +122,7 @@ export default function HeaderSegment(props) {
|
|
|
118
122
|
headerTitle: headerTitle,
|
|
119
123
|
headerLeft: headerLeft,
|
|
120
124
|
headerLeftLabelVisible: headerBackTitleVisible,
|
|
125
|
+
headerRight: headerRight,
|
|
121
126
|
headerTitleContainerStyle: [titleStyle, headerTitleContainerStyle],
|
|
122
127
|
headerLeftContainerStyle: [leftButtonStyle, headerLeftContainerStyle],
|
|
123
128
|
headerRightContainerStyle: [rightButtonStyle, headerRightContainerStyle],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["HeaderSegment.tsx"],"names":["getDefaultHeaderHeight","Header","HeaderBackButton","HeaderTitle","React","Platform","StyleSheet","memoize","HeaderSegment","props","leftLabelLayout","setLeftLabelLayout","useState","undefined","titleLayout","setTitleLayout","handleTitleLayout","e","height","width","nativeEvent","layout","handleLeftLabelLayout","getInterpolatedStyle","styleInterpolator","current","next","headerHeight","progress","layouts","header","screen","title","leftLabel","modal","onGoBack","headerTitle","headerLeft","left","headerBackImage","headerBackTitle","headerBackTitleVisible","OS","headerTruncatedBackTitle","headerBackAccessibilityLabel","headerBackTestID","headerBackAllowFontScaling","headerBackTitleStyle","headerTitleContainerStyle","headerLeftContainerStyle","headerRightContainerStyle","headerBackgroundContainerStyle","headerStyle","customHeaderStyle","headerStatusBarHeight","rest","defaultHeight","flatten","titleStyle","leftButtonStyle","leftLabelStyle","rightButtonStyle","backgroundStyle","backImage","accessibilityLabel","testID","allowFontScaling","onPress","label","truncatedLabel","labelStyle","onLabelLayout","screenLayout","canGoBack","Boolean","onLayout"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n Header,\n HeaderBackButton,\n HeaderBackButtonProps,\n HeaderTitle,\n} from '@react-navigation/elements';\nimport * as React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport type {\n Layout,\n SceneProgress,\n StackHeaderOptions,\n StackHeaderStyleInterpolator,\n} from '../../types';\nimport memoize from '../../utils/memoize';\n\ntype Props = Omit<StackHeaderOptions, 'headerStatusBarHeight'> & {\n headerStatusBarHeight: number;\n layout: Layout;\n title: string;\n modal: boolean;\n onGoBack?: () => void;\n progress: SceneProgress;\n styleInterpolator: StackHeaderStyleInterpolator;\n};\n\nexport default function HeaderSegment(props: Props) {\n const [leftLabelLayout, setLeftLabelLayout] =\n React.useState<Layout | undefined>(undefined);\n\n const [titleLayout, setTitleLayout] =\n React.useState<Layout | undefined>(undefined);\n\n const handleTitleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n setTitleLayout((titleLayout) => {\n if (\n titleLayout &&\n height === titleLayout.height &&\n width === titleLayout.width\n ) {\n return titleLayout;\n }\n\n return { height, width };\n });\n };\n\n const handleLeftLabelLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n if (\n leftLabelLayout &&\n height === leftLabelLayout.height &&\n width === leftLabelLayout.width\n ) {\n return;\n }\n\n setLeftLabelLayout({ height, width });\n };\n\n const getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackHeaderStyleInterpolator,\n layout: Layout,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n titleLayout: Layout | undefined,\n leftLabelLayout: Layout | undefined,\n headerHeight: number\n ) =>\n styleInterpolator({\n current: { progress: current },\n next: next && { progress: next },\n layouts: {\n header: {\n height: headerHeight,\n width: layout.width,\n },\n screen: layout,\n title: titleLayout,\n leftLabel: leftLabelLayout,\n },\n })\n );\n\n const {\n progress,\n layout,\n modal,\n onGoBack,\n headerTitle: title,\n headerLeft: left = onGoBack\n ? (props: HeaderBackButtonProps) => <HeaderBackButton {...props} />\n : undefined,\n headerBackImage,\n headerBackTitle,\n headerBackTitleVisible = Platform.OS === 'ios',\n headerTruncatedBackTitle,\n headerBackAccessibilityLabel,\n headerBackTestID,\n headerBackAllowFontScaling,\n headerBackTitleStyle,\n headerTitleContainerStyle,\n headerLeftContainerStyle,\n headerRightContainerStyle,\n headerBackgroundContainerStyle,\n headerStyle: customHeaderStyle,\n headerStatusBarHeight,\n styleInterpolator,\n ...rest\n } = props;\n\n const defaultHeight = getDefaultHeaderHeight(\n layout,\n modal,\n headerStatusBarHeight\n );\n\n const { height = defaultHeight } = StyleSheet.flatten(\n customHeaderStyle || {}\n ) as ViewStyle;\n\n const {\n titleStyle,\n leftButtonStyle,\n leftLabelStyle,\n rightButtonStyle,\n backgroundStyle,\n } = getInterpolatedStyle(\n styleInterpolator,\n layout,\n progress.current,\n progress.next,\n titleLayout,\n headerBackTitle ? leftLabelLayout : undefined,\n typeof height === 'number' ? height : defaultHeight\n );\n\n const headerLeft: StackHeaderOptions['headerLeft'] = left\n ? (props) =>\n left({\n ...props,\n backImage: headerBackImage,\n accessibilityLabel: headerBackAccessibilityLabel,\n testID: headerBackTestID,\n allowFontScaling: headerBackAllowFontScaling,\n onPress: onGoBack,\n label: headerBackTitle,\n truncatedLabel: headerTruncatedBackTitle,\n labelStyle: [leftLabelStyle, headerBackTitleStyle],\n onLabelLayout: handleLeftLabelLayout,\n screenLayout: layout,\n titleLayout,\n canGoBack: Boolean(onGoBack),\n })\n : undefined;\n\n const headerTitle: StackHeaderOptions['headerTitle'] =\n typeof title !== 'function'\n ? (props) => <HeaderTitle {...props} onLayout={handleTitleLayout} />\n : (props) => title({ ...props, onLayout: handleTitleLayout });\n\n return (\n <Header\n modal={modal}\n layout={layout}\n headerTitle={headerTitle}\n headerLeft={headerLeft}\n headerLeftLabelVisible={headerBackTitleVisible}\n headerTitleContainerStyle={[titleStyle, headerTitleContainerStyle]}\n headerLeftContainerStyle={[leftButtonStyle, headerLeftContainerStyle]}\n headerRightContainerStyle={[rightButtonStyle, headerRightContainerStyle]}\n headerBackgroundContainerStyle={[\n backgroundStyle,\n headerBackgroundContainerStyle,\n ]}\n headerStyle={customHeaderStyle}\n headerStatusBarHeight={headerStatusBarHeight}\n {...rest}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["HeaderSegment.tsx"],"names":["getDefaultHeaderHeight","Header","HeaderBackButton","HeaderTitle","React","Platform","StyleSheet","memoize","HeaderSegment","props","leftLabelLayout","setLeftLabelLayout","useState","undefined","titleLayout","setTitleLayout","handleTitleLayout","e","height","width","nativeEvent","layout","handleLeftLabelLayout","getInterpolatedStyle","styleInterpolator","current","next","headerHeight","progress","layouts","header","screen","title","leftLabel","modal","onGoBack","headerTitle","headerLeft","left","headerRight","right","headerBackImage","headerBackTitle","headerBackTitleVisible","OS","headerTruncatedBackTitle","headerBackAccessibilityLabel","headerBackTestID","headerBackAllowFontScaling","headerBackTitleStyle","headerTitleContainerStyle","headerLeftContainerStyle","headerRightContainerStyle","headerBackgroundContainerStyle","headerStyle","customHeaderStyle","headerStatusBarHeight","rest","defaultHeight","flatten","titleStyle","leftButtonStyle","leftLabelStyle","rightButtonStyle","backgroundStyle","backImage","accessibilityLabel","testID","allowFontScaling","onPress","label","truncatedLabel","labelStyle","onLabelLayout","screenLayout","canGoBack","Boolean","onLayout"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n Header,\n HeaderBackButton,\n HeaderBackButtonProps,\n HeaderTitle,\n} from '@react-navigation/elements';\nimport * as React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport type {\n Layout,\n SceneProgress,\n StackHeaderOptions,\n StackHeaderStyleInterpolator,\n} from '../../types';\nimport memoize from '../../utils/memoize';\n\ntype Props = Omit<StackHeaderOptions, 'headerStatusBarHeight'> & {\n headerStatusBarHeight: number;\n layout: Layout;\n title: string;\n modal: boolean;\n onGoBack?: () => void;\n progress: SceneProgress;\n styleInterpolator: StackHeaderStyleInterpolator;\n};\n\nexport default function HeaderSegment(props: Props) {\n const [leftLabelLayout, setLeftLabelLayout] = React.useState<\n Layout | undefined\n >(undefined);\n\n const [titleLayout, setTitleLayout] = React.useState<Layout | undefined>(\n undefined\n );\n\n const handleTitleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n setTitleLayout((titleLayout) => {\n if (\n titleLayout &&\n height === titleLayout.height &&\n width === titleLayout.width\n ) {\n return titleLayout;\n }\n\n return { height, width };\n });\n };\n\n const handleLeftLabelLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n if (\n leftLabelLayout &&\n height === leftLabelLayout.height &&\n width === leftLabelLayout.width\n ) {\n return;\n }\n\n setLeftLabelLayout({ height, width });\n };\n\n const getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackHeaderStyleInterpolator,\n layout: Layout,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n titleLayout: Layout | undefined,\n leftLabelLayout: Layout | undefined,\n headerHeight: number\n ) =>\n styleInterpolator({\n current: { progress: current },\n next: next && { progress: next },\n layouts: {\n header: {\n height: headerHeight,\n width: layout.width,\n },\n screen: layout,\n title: titleLayout,\n leftLabel: leftLabelLayout,\n },\n })\n );\n\n const {\n progress,\n layout,\n modal,\n onGoBack,\n headerTitle: title,\n headerLeft: left = onGoBack\n ? (props: HeaderBackButtonProps) => <HeaderBackButton {...props} />\n : undefined,\n headerRight: right,\n headerBackImage,\n headerBackTitle,\n headerBackTitleVisible = Platform.OS === 'ios',\n headerTruncatedBackTitle,\n headerBackAccessibilityLabel,\n headerBackTestID,\n headerBackAllowFontScaling,\n headerBackTitleStyle,\n headerTitleContainerStyle,\n headerLeftContainerStyle,\n headerRightContainerStyle,\n headerBackgroundContainerStyle,\n headerStyle: customHeaderStyle,\n headerStatusBarHeight,\n styleInterpolator,\n ...rest\n } = props;\n\n const defaultHeight = getDefaultHeaderHeight(\n layout,\n modal,\n headerStatusBarHeight\n );\n\n const { height = defaultHeight } = StyleSheet.flatten(\n customHeaderStyle || {}\n ) as ViewStyle;\n\n const {\n titleStyle,\n leftButtonStyle,\n leftLabelStyle,\n rightButtonStyle,\n backgroundStyle,\n } = getInterpolatedStyle(\n styleInterpolator,\n layout,\n progress.current,\n progress.next,\n titleLayout,\n headerBackTitle ? leftLabelLayout : undefined,\n typeof height === 'number' ? height : defaultHeight\n );\n\n const headerLeft: StackHeaderOptions['headerLeft'] = left\n ? (props) =>\n left({\n ...props,\n backImage: headerBackImage,\n accessibilityLabel: headerBackAccessibilityLabel,\n testID: headerBackTestID,\n allowFontScaling: headerBackAllowFontScaling,\n onPress: onGoBack,\n label: headerBackTitle,\n truncatedLabel: headerTruncatedBackTitle,\n labelStyle: [leftLabelStyle, headerBackTitleStyle],\n onLabelLayout: handleLeftLabelLayout,\n screenLayout: layout,\n titleLayout,\n canGoBack: Boolean(onGoBack),\n })\n : undefined;\n\n const headerRight: StackHeaderOptions['headerRight'] = right\n ? (props) =>\n right({\n ...props,\n canGoBack: Boolean(onGoBack),\n })\n : undefined;\n\n const headerTitle: StackHeaderOptions['headerTitle'] =\n typeof title !== 'function'\n ? (props) => <HeaderTitle {...props} onLayout={handleTitleLayout} />\n : (props) => title({ ...props, onLayout: handleTitleLayout });\n\n return (\n <Header\n modal={modal}\n layout={layout}\n headerTitle={headerTitle}\n headerLeft={headerLeft}\n headerLeftLabelVisible={headerBackTitleVisible}\n headerRight={headerRight}\n headerTitleContainerStyle={[titleStyle, headerTitleContainerStyle]}\n headerLeftContainerStyle={[leftButtonStyle, headerLeftContainerStyle]}\n headerRightContainerStyle={[rightButtonStyle, headerRightContainerStyle]}\n headerBackgroundContainerStyle={[\n backgroundStyle,\n headerBackgroundContainerStyle,\n ]}\n headerStyle={customHeaderStyle}\n headerStatusBarHeight={headerStatusBarHeight}\n {...rest}\n />\n );\n}\n"]}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { useTheme } from '@react-navigation/native';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { StatusBar, StyleSheet } from 'react-native';
|
|
4
|
-
export default function ModalStatusBarManager({
|
|
5
|
-
dark,
|
|
6
|
-
layout,
|
|
7
|
-
insets,
|
|
8
|
-
style
|
|
9
|
-
}) {
|
|
4
|
+
export default function ModalStatusBarManager(_ref) {
|
|
10
5
|
var _flattenedStyle$trans, _flattenedStyle$trans2;
|
|
11
6
|
|
|
7
|
+
let {
|
|
8
|
+
dark,
|
|
9
|
+
layout,
|
|
10
|
+
insets,
|
|
11
|
+
style
|
|
12
|
+
} = _ref;
|
|
12
13
|
const {
|
|
13
14
|
dark: darkTheme
|
|
14
15
|
} = useTheme();
|
|
@@ -18,9 +19,10 @@ export default function ModalStatusBarManager({
|
|
|
18
19
|
const flattenedStyle = StyleSheet.flatten(style);
|
|
19
20
|
const translateY = flattenedStyle === null || flattenedStyle === void 0 ? void 0 : (_flattenedStyle$trans = flattenedStyle.transform) === null || _flattenedStyle$trans === void 0 ? void 0 : (_flattenedStyle$trans2 = _flattenedStyle$trans.find(s => s.translateY !== undefined)) === null || _flattenedStyle$trans2 === void 0 ? void 0 : _flattenedStyle$trans2.translateY;
|
|
20
21
|
React.useEffect(() => {
|
|
21
|
-
const listener =
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const listener = _ref2 => {
|
|
23
|
+
let {
|
|
24
|
+
value
|
|
25
|
+
} = _ref2;
|
|
24
26
|
setOverlapping(value < offset);
|
|
25
27
|
};
|
|
26
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ModalStatusBarManager.tsx"],"names":["useTheme","React","StatusBar","StyleSheet","ModalStatusBarManager","dark","layout","insets","style","darkTheme","overlapping","setOverlapping","useState","scale","width","offset","top","flattenedStyle","flatten","translateY","transform","find","s","undefined","useEffect","listener","value","sub","addListener","removeListener","darkContent"],"mappings":"AAAA,SAASA,QAAT,QAAyB,0BAAzB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,cAAtC;AAYA,eAAe,SAASC,qBAAT,
|
|
1
|
+
{"version":3,"sources":["ModalStatusBarManager.tsx"],"names":["useTheme","React","StatusBar","StyleSheet","ModalStatusBarManager","dark","layout","insets","style","darkTheme","overlapping","setOverlapping","useState","scale","width","offset","top","flattenedStyle","flatten","translateY","transform","find","s","undefined","useEffect","listener","value","sub","addListener","removeListener","darkContent"],"mappings":"AAAA,SAASA,QAAT,QAAyB,0BAAzB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,cAAtC;AAYA,eAAe,SAASC,qBAAT,OAKL;AAAA;;AAAA,MALoC;AAC5CC,IAAAA,IAD4C;AAE5CC,IAAAA,MAF4C;AAG5CC,IAAAA,MAH4C;AAI5CC,IAAAA;AAJ4C,GAKpC;AACR,QAAM;AAAEH,IAAAA,IAAI,EAAEI;AAAR,MAAsBT,QAAQ,EAApC;AACA,QAAM,CAACU,WAAD,EAAcC,cAAd,IAAgCV,KAAK,CAACW,QAAN,CAAe,IAAf,CAAtC;AAEA,QAAMC,KAAK,GAAG,IAAI,KAAKP,MAAM,CAACQ,KAA9B;AACA,QAAMC,MAAM,GAAG,CAACR,MAAM,CAACS,GAAP,GAAa,EAAd,IAAoBH,KAAnC;AAEA,QAAMI,cAAc,GAAGd,UAAU,CAACe,OAAX,CAAmBV,KAAnB,CAAvB;AACA,QAAMW,UAAU,GAAGF,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,SAAnB,oFAAG,sBAA2BC,IAA3B,CAChBC,CAAD,IAAYA,CAAC,CAACH,UAAF,KAAiBI,SADZ,CAAH,2DAAG,uBAEhBJ,UAFH;AAIAlB,EAAAA,KAAK,CAACuB,SAAN,CAAgB,MAAM;AACpB,UAAMC,QAAQ,GAAG,SAAkC;AAAA,UAAjC;AAAEC,QAAAA;AAAF,OAAiC;AACjDf,MAAAA,cAAc,CAACe,KAAK,GAAGX,MAAT,CAAd;AACD,KAFD;;AAIA,UAAMY,GAAG,GAAGR,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAES,WAAZ,CAAwBH,QAAxB,CAAZ;AAEA,WAAO,MAAMN,UAAN,aAAMA,UAAN,uBAAMA,UAAU,CAAEU,cAAZ,CAA2BF,GAA3B,CAAb;AACD,GARD,EAQG,CAACZ,MAAD,EAASI,UAAT,CARH;AAUA,QAAMW,WAAW,GAAGzB,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAW,CAACI,SAA7B;AAEA,sBACE,oBAAC,SAAD;AACE,IAAA,QAAQ,MADV;AAEE,IAAA,QAAQ,EAAEC,WAAW,IAAIoB,WAAf,GAA6B,cAA7B,GAA8C;AAF1D,IADF;AAMD","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { StatusBar, StyleSheet } from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport type { Layout } from '../types';\n\ntype Props = {\n dark: boolean | undefined;\n layout: Layout;\n insets: EdgeInsets;\n style: any;\n};\n\nexport default function ModalStatusBarManager({\n dark,\n layout,\n insets,\n style,\n}: Props) {\n const { dark: darkTheme } = useTheme();\n const [overlapping, setOverlapping] = React.useState(true);\n\n const scale = 1 - 20 / layout.width;\n const offset = (insets.top - 34) * scale;\n\n const flattenedStyle = StyleSheet.flatten(style);\n const translateY = flattenedStyle?.transform?.find(\n (s: any) => s.translateY !== undefined\n )?.translateY;\n\n React.useEffect(() => {\n const listener = ({ value }: { value: number }) => {\n setOverlapping(value < offset);\n };\n\n const sub = translateY?.addListener(listener);\n\n return () => translateY?.removeListener(sub);\n }, [offset, translateY]);\n\n const darkContent = dark ?? !darkTheme;\n\n return (\n <StatusBar\n animated\n barStyle={overlapping && darkContent ? 'dark-content' : 'light-content'}\n />\n );\n}\n"]}
|
|
@@ -9,10 +9,12 @@ try {
|
|
|
9
9
|
} catch (e) {// Ignore
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export const MaybeScreenContainer =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
export const MaybeScreenContainer = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
enabled,
|
|
15
|
+
...rest
|
|
16
|
+
} = _ref;
|
|
17
|
+
|
|
16
18
|
if (Screens != null) {
|
|
17
19
|
return /*#__PURE__*/React.createElement(Screens.ScreenContainer, _extends({
|
|
18
20
|
enabled: enabled
|
|
@@ -21,11 +23,13 @@ export const MaybeScreenContainer = ({
|
|
|
21
23
|
|
|
22
24
|
return /*#__PURE__*/React.createElement(View, rest);
|
|
23
25
|
};
|
|
24
|
-
export const MaybeScreen =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
export const MaybeScreen = _ref2 => {
|
|
27
|
+
let {
|
|
28
|
+
enabled,
|
|
29
|
+
active,
|
|
30
|
+
...rest
|
|
31
|
+
} = _ref2;
|
|
32
|
+
|
|
29
33
|
if (Screens != null) {
|
|
30
34
|
return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
|
|
31
35
|
enabled: enabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Screens.tsx"],"names":["React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAmBC,IAAnB,QAA0C,cAA1C;AAEA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"sources":["Screens.tsx"],"names":["React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAmBC,IAAnB,QAA0C,cAA1C;AAEA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAZM;AAcP,OAAO,MAAMC,WAAW,GAAG,SAQrB;AAAA,MARsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAQtB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAhBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
|
|
@@ -34,8 +34,8 @@ const hasOpacityStyle = style => {
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
export default class Card extends React.Component {
|
|
37
|
-
constructor(
|
|
38
|
-
super(...
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
39
|
|
|
40
40
|
_defineProperty(this, "isCurrentlyMounted", false);
|
|
41
41
|
|
|
@@ -56,10 +56,11 @@ export default class Card extends React.Component {
|
|
|
56
56
|
|
|
57
57
|
_defineProperty(this, "lastToValue", void 0);
|
|
58
58
|
|
|
59
|
-
_defineProperty(this, "animate",
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
_defineProperty(this, "animate", _ref => {
|
|
60
|
+
let {
|
|
61
|
+
closing,
|
|
62
|
+
velocity
|
|
63
|
+
} = _ref;
|
|
63
64
|
const {
|
|
64
65
|
gesture,
|
|
65
66
|
transitionSpec,
|
|
@@ -86,9 +87,10 @@ export default class Card extends React.Component {
|
|
|
86
87
|
toValue,
|
|
87
88
|
useNativeDriver,
|
|
88
89
|
isInteraction: false
|
|
89
|
-
}).start(
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
}).start(_ref2 => {
|
|
91
|
+
let {
|
|
92
|
+
finished
|
|
93
|
+
} = _ref2;
|
|
92
94
|
this.handleEndInteraction();
|
|
93
95
|
clearTimeout(this.pendingGestureCallback);
|
|
94
96
|
|
|
@@ -107,11 +109,13 @@ export default class Card extends React.Component {
|
|
|
107
109
|
});
|
|
108
110
|
});
|
|
109
111
|
|
|
110
|
-
_defineProperty(this, "getAnimateToValue",
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
_defineProperty(this, "getAnimateToValue", _ref3 => {
|
|
113
|
+
let {
|
|
114
|
+
closing,
|
|
115
|
+
layout,
|
|
116
|
+
gestureDirection
|
|
117
|
+
} = _ref3;
|
|
118
|
+
|
|
115
119
|
if (!closing) {
|
|
116
120
|
return 0;
|
|
117
121
|
}
|
|
@@ -141,9 +145,10 @@ export default class Card extends React.Component {
|
|
|
141
145
|
}
|
|
142
146
|
});
|
|
143
147
|
|
|
144
|
-
_defineProperty(this, "handleGestureStateChange",
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
_defineProperty(this, "handleGestureStateChange", _ref4 => {
|
|
149
|
+
let {
|
|
150
|
+
nativeEvent
|
|
151
|
+
} = _ref4;
|
|
147
152
|
const {
|
|
148
153
|
layout,
|
|
149
154
|
onClose,
|
|
@@ -155,7 +160,7 @@ export default class Card extends React.Component {
|
|
|
155
160
|
} = this.props;
|
|
156
161
|
|
|
157
162
|
switch (nativeEvent.state) {
|
|
158
|
-
case GestureState.
|
|
163
|
+
case GestureState.ACTIVE:
|
|
159
164
|
this.isSwiping.setValue(TRUE);
|
|
160
165
|
this.handleStartInteraction();
|
|
161
166
|
onGestureBegin === null || onGestureBegin === void 0 ? void 0 : onGestureBegin();
|
|
@@ -441,12 +446,15 @@ _defineProperty(Card, "defaultProps", {
|
|
|
441
446
|
shadowEnabled: false,
|
|
442
447
|
gestureEnabled: true,
|
|
443
448
|
gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,
|
|
444
|
-
overlay:
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
style
|
|
449
|
-
|
|
449
|
+
overlay: _ref5 => {
|
|
450
|
+
let {
|
|
451
|
+
style
|
|
452
|
+
} = _ref5;
|
|
453
|
+
return style ? /*#__PURE__*/React.createElement(Animated.View, {
|
|
454
|
+
pointerEvents: "none",
|
|
455
|
+
style: [styles.overlay, style]
|
|
456
|
+
}) : null;
|
|
457
|
+
}
|
|
450
458
|
});
|
|
451
459
|
|
|
452
460
|
export const getIsModalPresentation = cardStyleInterpolator => {
|
|
@@ -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"]}
|