@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.
Files changed (79) hide show
  1. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js +72 -64
  2. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
  3. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +37 -32
  4. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
  5. package/lib/commonjs/TransitionConfigs/TransitionPresets.js +1 -1
  6. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +1 -1
  7. package/lib/commonjs/index.js +13 -11
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/navigators/createStackNavigator.js +8 -7
  10. package/lib/commonjs/navigators/createStackNavigator.js.map +1 -1
  11. package/lib/commonjs/utils/debounce.js +5 -1
  12. package/lib/commonjs/utils/debounce.js.map +1 -1
  13. package/lib/commonjs/utils/memoize.js +5 -1
  14. package/lib/commonjs/utils/memoize.js.map +1 -1
  15. package/lib/commonjs/views/GestureHandler.js +7 -4
  16. package/lib/commonjs/views/GestureHandler.js.map +1 -1
  17. package/lib/commonjs/views/GestureHandlerNative.js +1 -1
  18. package/lib/commonjs/views/Header/Header.js +10 -9
  19. package/lib/commonjs/views/Header/Header.js.map +1 -1
  20. package/lib/commonjs/views/Header/HeaderContainer.js +10 -9
  21. package/lib/commonjs/views/Header/HeaderContainer.js.map +1 -1
  22. package/lib/commonjs/views/Header/HeaderSegment.js +5 -0
  23. package/lib/commonjs/views/Header/HeaderSegment.js.map +1 -1
  24. package/lib/commonjs/views/ModalStatusBarManager.js +11 -9
  25. package/lib/commonjs/views/ModalStatusBarManager.js.map +1 -1
  26. package/lib/commonjs/views/Screens.js +14 -10
  27. package/lib/commonjs/views/Screens.js.map +1 -1
  28. package/lib/commonjs/views/Stack/Card.js +32 -24
  29. package/lib/commonjs/views/Stack/Card.js.map +1 -1
  30. package/lib/commonjs/views/Stack/CardContainer.js +43 -40
  31. package/lib/commonjs/views/Stack/CardContainer.js.map +1 -1
  32. package/lib/commonjs/views/Stack/CardSheet.js +7 -6
  33. package/lib/commonjs/views/Stack/CardSheet.js.map +1 -1
  34. package/lib/commonjs/views/Stack/CardStack.js +19 -11
  35. package/lib/commonjs/views/Stack/CardStack.js.map +1 -1
  36. package/lib/commonjs/views/Stack/StackView.js +62 -46
  37. package/lib/commonjs/views/Stack/StackView.js.map +1 -1
  38. package/lib/module/TransitionConfigs/CardStyleInterpolators.js +67 -59
  39. package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
  40. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +35 -30
  41. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
  42. package/lib/module/index.js.map +1 -1
  43. package/lib/module/navigators/createStackNavigator.js +8 -7
  44. package/lib/module/navigators/createStackNavigator.js.map +1 -1
  45. package/lib/module/utils/debounce.js +5 -1
  46. package/lib/module/utils/debounce.js.map +1 -1
  47. package/lib/module/utils/memoize.js +5 -1
  48. package/lib/module/utils/memoize.js.map +1 -1
  49. package/lib/module/views/GestureHandler.js +6 -3
  50. package/lib/module/views/GestureHandler.js.map +1 -1
  51. package/lib/module/views/Header/Header.js +10 -9
  52. package/lib/module/views/Header/Header.js.map +1 -1
  53. package/lib/module/views/Header/HeaderContainer.js +10 -9
  54. package/lib/module/views/Header/HeaderContainer.js.map +1 -1
  55. package/lib/module/views/Header/HeaderSegment.js +5 -0
  56. package/lib/module/views/Header/HeaderSegment.js.map +1 -1
  57. package/lib/module/views/ModalStatusBarManager.js +11 -9
  58. package/lib/module/views/ModalStatusBarManager.js.map +1 -1
  59. package/lib/module/views/Screens.js +13 -9
  60. package/lib/module/views/Screens.js.map +1 -1
  61. package/lib/module/views/Stack/Card.js +32 -24
  62. package/lib/module/views/Stack/Card.js.map +1 -1
  63. package/lib/module/views/Stack/CardContainer.js +43 -40
  64. package/lib/module/views/Stack/CardContainer.js.map +1 -1
  65. package/lib/module/views/Stack/CardSheet.js +7 -6
  66. package/lib/module/views/Stack/CardSheet.js.map +1 -1
  67. package/lib/module/views/Stack/CardStack.js +19 -11
  68. package/lib/module/views/Stack/CardStack.js.map +1 -1
  69. package/lib/module/views/Stack/StackView.js +62 -46
  70. package/lib/module/views/Stack/StackView.js.map +1 -1
  71. package/lib/typescript/src/index.d.ts +1 -1
  72. package/lib/typescript/src/types.d.ts +6 -2
  73. package/package.json +9 -9
  74. package/src/index.tsx +1 -0
  75. package/src/types.tsx +6 -1
  76. package/src/views/Header/HeaderSegment.tsx +16 -4
  77. package/src/views/Stack/Card.tsx +1 -1
  78. package/src/views/Stack/CardContainer.tsx +3 -2
  79. package/src/views/Stack/CardStack.tsx +6 -1
@@ -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
- interpolationIndex,
12
- index,
13
- active,
14
- closing,
15
- gesture,
16
- focused,
17
- modal,
18
- getPreviousScene,
19
- getFocusedRoute,
20
- headerDarkContent,
21
- hasAbsoluteFloatHeader,
22
- headerHeight,
23
- onHeaderHeightChange,
24
- isParentHeaderShown,
25
- isNextScreenTransparent,
26
- detachCurrentScreen,
27
- layout,
28
- onCloseRoute,
29
- onOpenRoute,
30
- onGestureCancel,
31
- onGestureEnd,
32
- onGestureStart,
33
- onTransitionEnd,
34
- onTransitionStart,
35
- renderHeader,
36
- renderScene,
37
- safeAreaInsetBottom,
38
- safeAreaInsetLeft,
39
- safeAreaInsetRight,
40
- safeAreaInsetTop,
41
- scene
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
- closing,
111
- gesture
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
- value
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
- enabled,
11
- layout,
12
- style,
13
- ...rest
14
- }, ref) {
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","ref","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,CAC3C;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,MAAX;AAAmBC,EAAAA,KAAnB;AAA0B,KAAGC;AAA7B,CAD2C,EAE3CC,GAF2C,EAG3C;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,KAAKV,MAAM,CAACU,KAAjB,IAA0BE,MAAM,KAAKZ,MAAM,CAACY,MAA7C,CAAP;AACD,GAVD,EAUG,CAACZ,MAAM,CAACY,MAAR,EAAgBZ,MAAM,CAACU,KAAvB,CAVH;AAYA,sBACE,oBAAC,IAAD,eACMR,IADN;AAEE,IAAA,GAAG,EAAEC,GAFP;AAGE,IAAA,KAAK,EAAE,CAACJ,OAAO,IAAIK,IAAX,GAAkBU,MAAM,CAACC,IAAzB,GAAgCD,MAAM,CAACE,IAAxC,EAA8Cf,KAA9C;AAHT,KADF;AAOD,CAzBc,CAAf;AA2BA,MAAMa,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"]}
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"]}
@@ -205,13 +205,15 @@ export default class CardStack extends React.Component {
205
205
  });
206
206
  });
207
207
 
208
- _defineProperty(this, "handleHeaderLayout", ({
209
- route,
210
- height
211
- }) => {
212
- this.setState(({
213
- headerHeights
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
- route
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
- break;
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
 
@@ -1 +1 @@
1
- {"version":3,"sources":["CardStack.tsx"],"names":["Background","getDefaultHeaderHeight","SafeAreaProviderCompat","Color","React","Animated","Platform","StyleSheet","forModalPresentationIOS","forNoAnimation","forNoAnimationCard","DefaultTransition","ModalFadeTransition","ModalTransition","getDistanceForDirection","MaybeScreen","MaybeScreenContainer","getIsModalPresentation","CardContainer","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","FALLBACK_DESCRIPTOR","Object","freeze","options","getInterpolationIndex","scenes","index","cardStyleInterpolator","descriptor","interpolationIndex","i","cardStyleInterpolatorCurrent","getIsModal","scene","isParentModal","isModalPresentation","isModal","getHeaderHeights","insets","isParentHeaderShown","layout","previous","reduce","acc","curr","headerStatusBarHeight","top","headerStyle","style","flatten","height","route","key","getDistanceFromOptions","presentation","gestureDirection","getProgressFromGesture","gesture","distance","width","Math","max","interpolate","inputRange","outputRange","CardStack","Component","getDerivedStateFromProps","props","state","routes","descriptors","gestures","animationEnabled","Value","openingRouteKeys","includes","map","self","previousRoute","nextRoute","oldScene","currentGesture","previousGesture","undefined","nextGesture","nextDescriptor","previousDescriptor","optionsForTransitionConfig","length","defaultTransitionPreset","OS","gestureEnabled","transitionSpec","headerStyleInterpolator","cardOverlayEnabled","headerMode","header","progress","current","next","__memo","every","it","headerHeights","constructor","e","nativeEvent","setState","previousHeight","getPreviousRoute","previousScene","find","initialMetrics","frame","render","closingRouteKeys","onOpenRoute","onCloseRoute","renderHeader","renderScene","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","detachInactiveScreens","focusedRoute","focusedHeaderHeight","isFloatHeaderAbsolute","slice","some","headerTransparent","headerShown","activeScreensLimit","detachPreviousScreen","lastIndexOf","floatingHeader","mode","getPreviousScene","getFocusedRoute","onContentHeightChange","handleHeaderLayout","styles","floating","absolute","container","handleLayout","focused","isScreenActive","sceneForActivity","outputValue","extrapolate","headerTintColor","safeAreaInsetTop","safeAreaInsetRight","right","safeAreaInsetBottom","bottom","safeAreaInsetLeft","left","headerHeight","backgroundColor","headerBackgroundColor","headerDarkContent","isDark","isNextScreenTransparent","detachCurrentScreen","absoluteFill","create","flex","position","zIndex"],"mappings":";;AAAA,SACEA,UADF,EAEEC,sBAFF,EAGEC,sBAHF,QAIO,4BAJP;AAUA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SACEC,QADF,EAGEC,QAHF,EAIEC,UAJF,QAKO,cALP;AAQA,SACEC,uBADF,EAEEC,cAAc,IAAIC,kBAFpB,QAGO,gDAHP;AAIA,SACEC,iBADF,EAEEC,mBAFF,EAGEC,eAHF,QAIO,2CAJP;AAaA,OAAOC,uBAAP,MAAoC,qCAApC;AAEA,SAASC,WAAT,EAAsBC,oBAAtB,QAAkD,YAAlD;AACA,SAASC,sBAAT,QAAuC,QAAvC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AA0CA,MAAMC,OAAO,GAAG,IAAhB;AAEA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,gCAAgC,GAAG,CAAzC;AACA,MAAMC,YAAY,GAAG,CAArB;AAEA,MAAMC,mBAAmB,GAAGC,MAAM,CAACC,MAAP,CAAc;AAAEC,EAAAA,OAAO,EAAE;AAAX,CAAd,CAA5B;;AAEA,MAAMC,qBAAqB,GAAG,CAACC,MAAD,EAAkBC,KAAlB,KAAoC;AAChE,QAAM;AAAEC,IAAAA;AAAF,MAA4BF,MAAM,CAACC,KAAD,CAAN,CAAcE,UAAd,CAAyBL,OAA3D,CADgE,CAGhE;;AACA,MAAIM,kBAAkB,GAAG,CAAzB;;AAEA,OAAK,IAAIC,CAAC,GAAGJ,KAAK,GAAG,CAArB,EAAwBI,CAAC,IAAI,CAA7B,EAAgCA,CAAC,EAAjC,EAAqC;AAAA;;AACnC,UAAMC,4BAA4B,gBAChCN,MAAM,CAACK,CAAD,CAD0B,8CAChC,UAAWF,UAAX,CAAsBL,OAAtB,CAA8BI,qBADhC;;AAGA,QAAII,4BAA4B,KAAKJ,qBAArC,EAA4D;AAC1D;AACD;;AAEDE,IAAAA,kBAAkB;AACnB;;AAED,SAAOA,kBAAP;AACD,CAlBD;;AAoBA,MAAMG,UAAU,GAAG,CACjBC,KADiB,EAEjBJ,kBAFiB,EAGjBK,aAHiB,KAId;AACH,MAAIA,aAAJ,EAAmB;AACjB,WAAO,IAAP;AACD;;AAED,QAAM;AAAEP,IAAAA;AAAF,MAA4BM,KAAK,CAACL,UAAN,CAAiBL,OAAnD;AACA,QAAMY,mBAAmB,GAAGrB,sBAAsB,CAACa,qBAAD,CAAlD;AACA,QAAMS,OAAO,GAAGD,mBAAmB,IAAIN,kBAAkB,KAAK,CAA9D;AAEA,SAAOO,OAAP;AACD,CAdD;;AAgBA,MAAMC,gBAAgB,GAAG,CACvBZ,MADuB,EAEvBa,MAFuB,EAGvBC,mBAHuB,EAIvBL,aAJuB,EAKvBM,MALuB,EAMvBC,QANuB,KAOpB;AACH,SAAOhB,MAAM,CAACiB,MAAP,CAAsC,CAACC,GAAD,EAAMC,IAAN,EAAYlB,KAAZ,KAAsB;AACjE,UAAM;AACJmB,MAAAA,qBAAqB,GAAGN,mBAAmB,GAAG,CAAH,GAAOD,MAAM,CAACQ,GADrD;AAEJC,MAAAA;AAFI,QAGFH,IAAI,CAAChB,UAAL,CAAgBL,OAHpB;AAKA,UAAMyB,KAAK,GAAG5C,UAAU,CAAC6C,OAAX,CAAmBF,WAAW,IAAI,EAAlC,CAAd;AAEA,UAAMG,MAAM,GACV,OAAOF,KAAK,CAACE,MAAb,KAAwB,QAAxB,GACIF,KAAK,CAACE,MADV,GAEIT,QAAQ,CAACG,IAAI,CAACO,KAAL,CAAWC,GAAZ,CAHd;AAKA,UAAMvB,kBAAkB,GAAGL,qBAAqB,CAACC,MAAD,EAASC,KAAT,CAAhD;AACA,UAAMU,OAAO,GAAGJ,UAAU,CAACY,IAAD,EAAOf,kBAAP,EAA2BK,aAA3B,CAA1B;AAEAS,IAAAA,GAAG,CAACC,IAAI,CAACO,KAAL,CAAWC,GAAZ,CAAH,GACE,OAAOF,MAAP,KAAkB,QAAlB,GACIA,MADJ,GAEIpD,sBAAsB,CAAC0C,MAAD,EAASJ,OAAT,EAAkBS,qBAAlB,CAH5B;AAKA,WAAOF,GAAP;AACD,GAtBM,EAsBJ,EAtBI,CAAP;AAuBD,CA/BD;;AAiCA,MAAMU,sBAAsB,GAAG,CAC7Bb,MAD6B,EAE7BZ,UAF6B,KAG1B;AACH,QAAM;AACJ0B,IAAAA,YADI;AAEJC,IAAAA,gBAAgB,GAAGD,YAAY,KAAK,OAAjB,GACf5C,eAAe,CAAC6C,gBADD,GAEf/C,iBAAiB,CAAC+C;AAJlB,MAKD,CAAA3B,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEL,OAAZ,KAAuB,EAL5B;AAOA,SAAOZ,uBAAuB,CAAC6B,MAAD,EAASe,gBAAT,CAA9B;AACD,CAZD;;AAcA,MAAMC,sBAAsB,GAAG,CAC7BC,OAD6B,EAE7BjB,MAF6B,EAG7BZ,UAH6B,KAI1B;AACH,QAAM8B,QAAQ,GAAGL,sBAAsB,CACrC;AACE;AACA;AACAM,IAAAA,KAAK,EAAEC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYrB,MAAM,CAACmB,KAAnB,CAHT;AAIET,IAAAA,MAAM,EAAEU,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYrB,MAAM,CAACU,MAAnB;AAJV,GADqC,EAOrCtB,UAPqC,CAAvC;;AAUA,MAAI8B,QAAQ,GAAG,CAAf,EAAkB;AAChB,WAAOD,OAAO,CAACK,WAAR,CAAoB;AACzBC,MAAAA,UAAU,EAAE,CAAC,CAAD,EAAIL,QAAJ,CADa;AAEzBM,MAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,KAApB,CAAP;AAID;;AAED,SAAOP,OAAO,CAACK,WAAR,CAAoB;AACzBC,IAAAA,UAAU,EAAE,CAACL,QAAD,EAAW,CAAX,CADa;AAEzBM,IAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,GAApB,CAAP;AAID,CA1BD;;AA4BA,eAAe,MAAMC,SAAN,SAAwBhE,KAAK,CAACiE,SAA9B,CAAsD;AACpC,SAAxBC,wBAAwB,CAC7BC,KAD6B,EAE7BC,KAF6B,EAGN;AACvB,QACED,KAAK,CAACE,MAAN,KAAiBD,KAAK,CAACC,MAAvB,IACAF,KAAK,CAACG,WAAN,KAAsBF,KAAK,CAACE,WAF9B,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAMC,QAAQ,GAAGJ,KAAK,CAACE,MAAN,CAAa5B,MAAb,CAAmC,CAACC,GAAD,EAAMC,IAAN,KAAe;AACjE,YAAMhB,UAAU,GAAGwC,KAAK,CAACG,WAAN,CAAkB3B,IAAI,CAACQ,GAAvB,CAAnB;AACA,YAAM;AAAEqB,QAAAA;AAAF,UAAuB,CAAA7C,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEL,OAAZ,KAAuB,EAApD;AAEAoB,MAAAA,GAAG,CAACC,IAAI,CAACQ,GAAN,CAAH,GACEiB,KAAK,CAACG,QAAN,CAAe5B,IAAI,CAACQ,GAApB,KACA,IAAIlD,QAAQ,CAACwE,KAAb,CACEN,KAAK,CAACO,gBAAN,CAAuBC,QAAvB,CAAgChC,IAAI,CAACQ,GAArC,KACAqB,gBAAgB,KAAK,KADrB,GAEIpB,sBAAsB,CAACgB,KAAK,CAAC7B,MAAP,EAAeZ,UAAf,CAF1B,GAGI,CAJN,CAFF;AASA,aAAOe,GAAP;AACD,KAdgB,EAcd,EAdc,CAAjB;AAgBA,UAAMlB,MAAM,GAAG2C,KAAK,CAACE,MAAN,CAAaO,GAAb,CAAiB,CAAC1B,KAAD,EAAQzB,KAAR,EAAeoD,IAAf,KAAwB;AAAA;;AACtD,YAAMC,aAAa,GAAGD,IAAI,CAACpD,KAAK,GAAG,CAAT,CAA1B;AACA,YAAMsD,SAAS,GAAGF,IAAI,CAACpD,KAAK,GAAG,CAAT,CAAtB;AAEA,YAAMuD,QAAQ,GAAGZ,KAAK,CAAC5C,MAAN,CAAaC,KAAb,CAAjB;AAEA,YAAMwD,cAAc,GAAGV,QAAQ,CAACrB,KAAK,CAACC,GAAP,CAA/B;AACA,YAAM+B,eAAe,GAAGJ,aAAa,GACjCP,QAAQ,CAACO,aAAa,CAAC3B,GAAf,CADyB,GAEjCgC,SAFJ;AAGA,YAAMC,WAAW,GAAGL,SAAS,GAAGR,QAAQ,CAACQ,SAAS,CAAC5B,GAAX,CAAX,GAA6BgC,SAA1D;AAEA,YAAMxD,UAAU,GACdwC,KAAK,CAACG,WAAN,CAAkBpB,KAAK,CAACC,GAAxB,KACAiB,KAAK,CAACE,WAAN,CAAkBpB,KAAK,CAACC,GAAxB,CADA,KAEC6B,QAAQ,GAAGA,QAAQ,CAACrD,UAAZ,GAAyBR,mBAFlC,CADF;AAKA,YAAMkE,cAAc,GAClBlB,KAAK,CAACG,WAAN,CAAkBS,SAAlB,aAAkBA,SAAlB,uBAAkBA,SAAS,CAAE5B,GAA7B,KAAqCiB,KAAK,CAACE,WAAN,CAAkBS,SAAlB,aAAkBA,SAAlB,uBAAkBA,SAAS,CAAE5B,GAA7B,CADvC;AAGA,YAAMmC,kBAAkB,GACtBnB,KAAK,CAACG,WAAN,CAAkBQ,aAAlB,aAAkBA,aAAlB,uBAAkBA,aAAa,CAAE3B,GAAjC,KACAiB,KAAK,CAACE,WAAN,CAAkBQ,aAAlB,aAAkBA,aAAlB,uBAAkBA,aAAa,CAAE3B,GAAjC,CAFF,CApBsD,CAwBtD;AACA;AACA;AACA;AACA;AACA;;AACA,YAAMoC,0BAA0B,GAC9B9D,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAAxB,IACAH,cADA,IAEAA,cAAc,CAAC/D,OAAf,CAAuB+B,YAAvB,KAAwC,kBAFxC,GAGIgC,cAAc,CAAC/D,OAHnB,GAIIK,UAAU,CAACL,OALjB;AAOA,UAAImE,uBAAuB,GACzBF,0BAA0B,CAAClC,YAA3B,KAA4C,OAA5C,GACI5C,eADJ,GAEI8E,0BAA0B,CAAClC,YAA3B,KAA4C,kBAA5C,GACA7C,mBADA,GAEAD,iBALN;AAOA,YAAM;AACJiE,QAAAA,gBAAgB,GAAGtE,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACjBxF,QAAQ,CAACwF,EAAT,KAAgB,SADC,IAEjBxF,QAAQ,CAACwF,EAAT,KAAgB,OAHd;AAIJC,QAAAA,cAAc,GAAGzF,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IAAyBlB,gBAJtC;AAKJlB,QAAAA,gBAAgB,GAAGmC,uBAAuB,CAACnC,gBALvC;AAMJsC,QAAAA,cAAc,GAAGH,uBAAuB,CAACG,cANrC;AAOJlE,QAAAA,qBAAqB,GAAG8C,gBAAgB,KAAK,KAArB,GACpBlE,kBADoB,GAEpBmF,uBAAuB,CAAC/D,qBATxB;AAUJmE,QAAAA,uBAAuB,GAAGJ,uBAAuB,CAACI,uBAV9C;AAWJC,QAAAA,kBAAkB,GAAI5F,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACpBH,0BAA0B,CAAClC,YAA3B,KAA4C,kBADzB,IAEnBxC,sBAAsB,CAACa,qBAAD;AAbpB,UAcF6D,0BAdJ;AAgBA,YAAMQ,UAA2B,4BAC/BpE,UAAU,CAACL,OAAX,CAAmByE,UADY,yEAE9B,EACCR,0BAA0B,CAAClC,YAA3B,KAA4C,OAA5C,IACAkC,0BAA0B,CAAClC,YAA3B,KAA4C,kBAD5C,IAEA,CAAAgC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,OAFzC,IAGA,CAAAgC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,kBAHzC,IAIAxC,sBAAsB,CAACa,qBAAD,CALvB,KAODxB,QAAQ,CAACwF,EAAT,KAAgB,KAPf,IAQD/D,UAAU,CAACL,OAAX,CAAmB0E,MAAnB,KAA8Bb,SAR7B,GASG,OATH,GAUG,QAZN;AAcA,YAAMnD,KAAK,GAAG;AACZkB,QAAAA,KADY;AAEZvB,QAAAA,UAAU,EAAE,EACV,GAAGA,UADO;AAEVL,UAAAA,OAAO,EAAE,EACP,GAAGK,UAAU,CAACL,OADP;AAEPkD,YAAAA,gBAFO;AAGPsB,YAAAA,kBAHO;AAIPpE,YAAAA,qBAJO;AAKP4B,YAAAA,gBALO;AAMPqC,YAAAA,cANO;AAOPE,YAAAA,uBAPO;AAQPD,YAAAA,cARO;AASPG,YAAAA;AATO;AAFC,SAFA;AAgBZE,QAAAA,QAAQ,EAAE;AACRC,UAAAA,OAAO,EAAE3C,sBAAsB,CAC7B0B,cAD6B,EAE7Bb,KAAK,CAAC7B,MAFuB,EAG7BZ,UAH6B,CADvB;AAMRwE,UAAAA,IAAI,EACFf,WAAW,IACX,CAAAC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,kBADzC,GAEIE,sBAAsB,CACpB6B,WADoB,EAEpBhB,KAAK,CAAC7B,MAFc,EAGpB8C,cAHoB,CAF1B,GAOIF,SAdE;AAeR3C,UAAAA,QAAQ,EAAE0C,eAAe,GACrB3B,sBAAsB,CACpB2B,eADoB,EAEpBd,KAAK,CAAC7B,MAFc,EAGpB+C,kBAHoB,CADD,GAMrBH;AArBI,SAhBE;AAuCZiB,QAAAA,MAAM,EAAE,CACNhC,KAAK,CAAC7B,MADA,EAENZ,UAFM,EAGN0D,cAHM,EAINC,kBAJM,EAKNL,cALM,EAMNG,WANM,EAONF,eAPM;AAvCI,OAAd;;AAkDA,UACEF,QAAQ,IACRhD,KAAK,CAACoE,MAAN,CAAaC,KAAb,CAAmB,CAACC,EAAD,EAAKzE,CAAL,KAAW;AAC5B;AACA,eAAOmD,QAAQ,CAACoB,MAAT,CAAgBvE,CAAhB,MAAuByE,EAA9B;AACD,OAHD,CAFF,EAME;AACA,eAAOtB,QAAP;AACD;;AAED,aAAOhD,KAAP;AACD,KAvIc,CAAf;AAyIA,WAAO;AACLqC,MAAAA,MAAM,EAAEF,KAAK,CAACE,MADT;AAEL7C,MAAAA,MAFK;AAGL+C,MAAAA,QAHK;AAILD,MAAAA,WAAW,EAAEH,KAAK,CAACG,WAJd;AAKLiC,MAAAA,aAAa,EAAEnE,gBAAgB,CAC7BZ,MAD6B,EAE7B2C,KAAK,CAAC9B,MAFuB,EAG7B8B,KAAK,CAAC7B,mBAHuB,EAI7B6B,KAAK,CAAClC,aAJuB,EAK7BmC,KAAK,CAAC7B,MALuB,EAM7B6B,KAAK,CAACmC,aANuB;AAL1B,KAAP;AAcD;;AAEDC,EAAAA,WAAW,CAACrC,MAAD,EAAe;AACxB,UAAMA,MAAN;;AADwB,0CAkBFsC,CAAD,IAA0B;AAC/C,YAAM;AAAExD,QAAAA,MAAF;AAAUS,QAAAA;AAAV,UAAoB+C,CAAC,CAACC,WAAF,CAAcnE,MAAxC;AAEA,YAAMA,MAAM,GAAG;AAAEmB,QAAAA,KAAF;AAAST,QAAAA;AAAT,OAAf;AAEA,WAAK0D,QAAL,CAAc,CAACvC,KAAD,EAAQD,KAAR,KAAkB;AAC9B,YAAIlB,MAAM,KAAKmB,KAAK,CAAC7B,MAAN,CAAaU,MAAxB,IAAkCS,KAAK,KAAKU,KAAK,CAAC7B,MAAN,CAAamB,KAA7D,EAAoE;AAClE,iBAAO,IAAP;AACD;;AAED,eAAO;AACLnB,UAAAA,MADK;AAELgE,UAAAA,aAAa,EAAEnE,gBAAgB,CAC7BgC,KAAK,CAAC5C,MADuB,EAE7B2C,KAAK,CAAC9B,MAFuB,EAG7B8B,KAAK,CAAC7B,mBAHuB,EAI7B6B,KAAK,CAAClC,aAJuB,EAK7BM,MAL6B,EAM7B6B,KAAK,CAACmC,aANuB;AAF1B,SAAP;AAWD,OAhBD;AAiBD,KAxCyB;;AAAA,gDA0CG,CAAC;AAC5BrD,MAAAA,KAD4B;AAE5BD,MAAAA;AAF4B,KAAD,KAMvB;AACJ,WAAK0D,QAAL,CAAc,CAAC;AAAEJ,QAAAA;AAAF,OAAD,KAAuB;AACnC,cAAMK,cAAc,GAAGL,aAAa,CAACrD,KAAK,CAACC,GAAP,CAApC;;AAEA,YAAIyD,cAAc,KAAK3D,MAAvB,EAA+B;AAC7B,iBAAO,IAAP;AACD;;AAED,eAAO;AACLsD,UAAAA,aAAa,EAAE,EACb,GAAGA,aADU;AAEb,aAACrD,KAAK,CAACC,GAAP,GAAaF;AAFA;AADV,SAAP;AAMD,OAbD;AAcD,KA/DyB;;AAAA,6CAiEA,MAAM;AAC9B,YAAM;AAAEmB,QAAAA;AAAF,UAAY,KAAKD,KAAvB;AAEA,aAAOC,KAAK,CAACC,MAAN,CAAaD,KAAK,CAAC3C,KAAnB,CAAP;AACD,KArEyB;;AAAA,8CAuEC,CAAC;AAAEyB,MAAAA;AAAF,KAAD,KAAyC;AAClE,YAAM;AAAE2D,QAAAA;AAAF,UAAuB,KAAK1C,KAAlC;AACA,YAAM;AAAE3C,QAAAA;AAAF,UAAa,KAAK4C,KAAxB;AAEA,YAAMU,aAAa,GAAG+B,gBAAgB,CAAC;AAAE3D,QAAAA;AAAF,OAAD,CAAtC;;AAEA,UAAI4B,aAAJ,EAAmB;AACjB,cAAMgC,aAAa,GAAGtF,MAAM,CAACuF,IAAP,CACnB/E,KAAD,IAAWA,KAAK,CAACL,UAAN,CAAiBuB,KAAjB,CAAuBC,GAAvB,KAA+B2B,aAAa,CAAC3B,GADpC,CAAtB;AAIA,eAAO2D,aAAP;AACD;;AAED,aAAO3B,SAAP;AACD,KAtFyB;;AAGxB,SAAKf,KAAL,GAAa;AACXC,MAAAA,MAAM,EAAE,EADG;AAEX7C,MAAAA,MAAM,EAAE,EAFG;AAGX+C,MAAAA,QAAQ,EAAE,EAHC;AAIXhC,MAAAA,MAAM,EAAEzC,sBAAsB,CAACkH,cAAvB,CAAsCC,KAJnC;AAKX3C,MAAAA,WAAW,EAAE,KAAKH,KAAL,CAAWG,WALb;AAMX;AACA;AACA;AACA;AACA;AACAiC,MAAAA,aAAa,EAAE;AAXJ,KAAb;AAaD;;AAwEDW,EAAAA,MAAM,GAAG;AACP,UAAM;AACJ7E,MAAAA,MADI;AAEJ+B,MAAAA,KAFI;AAGJC,MAAAA,MAHI;AAIJ8C,MAAAA,gBAJI;AAKJC,MAAAA,WALI;AAMJC,MAAAA,YANI;AAOJC,MAAAA,YAPI;AAQJC,MAAAA,WARI;AASJjF,MAAAA,mBATI;AAUJL,MAAAA,aAVI;AAWJuF,MAAAA,iBAXI;AAYJC,MAAAA,eAZI;AAaJC,MAAAA,cAbI;AAcJC,MAAAA,YAdI;AAeJC,MAAAA,eAfI;AAgBJC,MAAAA,qBAAqB,GAAG3H,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACtBxF,QAAQ,CAACwF,EAAT,KAAgB,SADM,IAEtBxF,QAAQ,CAACwF,EAAT,KAAgB;AAlBd,QAmBF,KAAKvB,KAnBT;AAqBA,UAAM;AAAE3C,MAAAA,MAAF;AAAUe,MAAAA,MAAV;AAAkBgC,MAAAA,QAAlB;AAA4BgC,MAAAA;AAA5B,QAA8C,KAAKnC,KAAzD;AAEA,UAAM0D,YAAY,GAAG1D,KAAK,CAACC,MAAN,CAAaD,KAAK,CAAC3C,KAAnB,CAArB;AACA,UAAMsG,mBAAmB,GAAGxB,aAAa,CAACuB,YAAY,CAAC3E,GAAd,CAAzC;AAEA,UAAM6E,qBAAqB,GAAG,KAAK5D,KAAL,CAAW5C,MAAX,CAAkByG,KAAlB,CAAwB,CAAC,CAAzB,EAA4BC,IAA5B,CAAkClG,KAAD,IAAW;AAAA;;AACxE,YAAMV,OAAO,4BAAGU,KAAK,CAACL,UAAN,CAAiBL,OAApB,yEAA+B,EAA5C;AACA,YAAM;AAAEyE,QAAAA,UAAF;AAAcoC,QAAAA,iBAAd;AAAiCC,QAAAA,WAAW,GAAG;AAA/C,UAAwD9G,OAA9D;;AAEA,UACE6G,iBAAiB,IACjBC,WAAW,KAAK,KADhB,IAEArC,UAAU,KAAK,QAHjB,EAIE;AACA,eAAO,IAAP;AACD;;AAED,aAAO,KAAP;AACD,KAb6B,CAA9B;AAeA,QAAIsC,kBAAkB,GAAG,CAAzB;;AAEA,SAAK,IAAIxG,CAAC,GAAGL,MAAM,CAACgE,MAAP,GAAgB,CAA7B,EAAgC3D,CAAC,IAAI,CAArC,EAAwCA,CAAC,EAAzC,EAA6C;AAC3C,YAAM;AAAEP,QAAAA;AAAF,UAAcE,MAAM,CAACK,CAAD,CAAN,CAAUF,UAA9B;AACA,YAAM;AACJ;AACA2G,QAAAA,oBAAoB,GAAGhH,OAAO,CAAC+B,YAAR,KAAyB,kBAAzB,GACnB,KADmB,GAEnBxC,sBAAsB,CAACS,OAAO,CAACI,qBAAT,CAAtB,GACAG,CAAC,KACDL,MAAM,CACHoD,GADH,CACQ5C,KAAD,IAAWA,KAAK,CAACL,UAAN,CAAiBL,OAAjB,CAAyBI,qBAD3C,EAEG6G,WAFH,CAEenI,uBAFf,CAFA,GAKA;AATA,UAUFkB,OAVJ;;AAYA,UAAIgH,oBAAoB,KAAK,KAA7B,EAAoC;AAClCD,QAAAA,kBAAkB;AACnB,OAFD,MAEO;AACL;AACD;AACF;;AAED,UAAMG,cAAc,gBAClB,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAC;AAApB,OACGlB,YAAY,CAAC;AACZmB,MAAAA,IAAI,EAAE,OADM;AAEZlG,MAAAA,MAFY;AAGZf,MAAAA,MAHY;AAIZkH,MAAAA,gBAAgB,EAAE,KAAKA,gBAJX;AAKZC,MAAAA,eAAe,EAAE,KAAKA,eALV;AAMZC,MAAAA,qBAAqB,EAAE,KAAKC,kBANhB;AAOZ9F,MAAAA,KAAK,EAAE,CACL+F,MAAM,CAACC,QADF,EAELf,qBAAqB,IAAI,CACvB;AACA;AAAE/E,QAAAA,MAAM,EAAE8E;AAAV,OAFuB,EAGvBe,MAAM,CAACE,QAHgB,CAFpB;AAPK,KAAD,CADf,CADF;AAqBA,wBACE,oBAAC,UAAD,QACGhB,qBAAqB,GAAG,IAAH,GAAUQ,cADlC,eAEE,oBAAC,oBAAD;AACE,MAAA,OAAO,EAAEX,qBADX;AAEE,MAAA,KAAK,EAAEiB,MAAM,CAACG,SAFhB;AAGE,MAAA,QAAQ,EAAE,KAAKC;AAHjB,OAKG7E,MAAM,CAACO,GAAP,CAAW,CAAC1B,KAAD,EAAQzB,KAAR,EAAeoD,IAAf,KAAwB;AAAA;;AAClC,YAAMsE,OAAO,GAAGrB,YAAY,CAAC3E,GAAb,KAAqBD,KAAK,CAACC,GAA3C;AACA,YAAMK,OAAO,GAAGe,QAAQ,CAACrB,KAAK,CAACC,GAAP,CAAxB;AACA,YAAMnB,KAAK,GAAGR,MAAM,CAACC,KAAD,CAApB,CAHkC,CAKlC;AACA;AACA;AACA;;AACA,UAAI2H,cAA0D,GAAG,CAAjE;;AAEA,UAAI3H,KAAK,GAAGoD,IAAI,CAACW,MAAL,GAAc6C,kBAAd,GAAmC,CAA/C,EAAkD;AAChD;AACAe,QAAAA,cAAc,GAAGpI,cAAjB;AACD,OAHD,MAGO;AACL,cAAMqI,gBAAgB,GAAG7H,MAAM,CAACqD,IAAI,CAACW,MAAL,GAAc,CAAf,CAA/B;AACA,cAAM8D,WAAW,GACf7H,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAAxB,GACItE,YADJ,CACiB;AADjB,UAEIO,KAAK,IAAIoD,IAAI,CAACW,MAAL,GAAc6C,kBAAvB,GACApH,gCADA,CACiC;AADjC,UAEAD,cALN,CAFK,CAOiB;;AACtBoI,QAAAA,cAAc,GAAGC,gBAAgB,GAC7BA,gBAAgB,CAACpD,QAAjB,CAA0BC,OAA1B,CAAkCrC,WAAlC,CAA8C;AAC5CC,UAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,IAAI/C,OAAR,EAAiB,CAAjB,CADgC;AAE5CgD,UAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAOuF,WAAP,CAF+B;AAG5CC,UAAAA,WAAW,EAAE;AAH+B,SAA9C,CAD6B,GAM7BtI,gCANJ;AAOD;;AAED,YAAM;AACJmH,QAAAA,WAAW,GAAG,IADV;AAEJD,QAAAA,iBAFI;AAGJrF,QAAAA,WAHI;AAIJ0G,QAAAA;AAJI,UAKFxH,KAAK,CAACL,UAAN,CAAiBL,OALrB;AAOA,YAAMmI,gBAAgB,GAAGpH,MAAM,CAACQ,GAAhC;AACA,YAAM6G,kBAAkB,GAAGrH,MAAM,CAACsH,KAAlC;AACA,YAAMC,mBAAmB,GAAGvH,MAAM,CAACwH,MAAnC;AACA,YAAMC,iBAAiB,GAAGzH,MAAM,CAAC0H,IAAjC;AAEA,YAAMC,YAAY,GAChB5B,WAAW,KAAK,KAAhB,GAAwB7B,aAAa,CAACrD,KAAK,CAACC,GAAP,CAArC,GAAmD,CADrD;AAGA,YAAM;AAAE8G,QAAAA,eAAe,EAAEC;AAAnB,UACJ/J,UAAU,CAAC6C,OAAX,CAAmBF,WAAnB,KAAmC,EADrC;AAGA,UAAIqH,iBAAJ;;AAEA,UAAI/B,WAAJ,EAAiB;AACf,YAAI,OAAOoB,eAAP,KAA2B,QAA/B,EAAyC;AACvCW,UAAAA,iBAAiB,GAAGpK,KAAK,CAACyJ,eAAD,CAAL,CAAuBY,MAAvB,EAApB;AACD,SAFD,MAEO,IAAI,OAAOF,qBAAP,KAAiC,QAArC,EAA+C;AACpDC,UAAAA,iBAAiB,GAAG,CAACpK,KAAK,CAACmK,qBAAD,CAAL,CAA6BE,MAA7B,EAArB;AACD;AACF,OAzDiC,CA2DlC;;;AACA,YAAMxI,kBAAkB,GAAGL,qBAAqB,CAACC,MAAD,EAASC,KAAT,CAAhD;AACA,YAAMU,OAAO,GAAGJ,UAAU,CACxBC,KADwB,EAExBJ,kBAFwB,EAGxBK,aAHwB,CAA1B;AAMA,YAAMoI,uBAAuB,GAC3B,YAAA7I,MAAM,CAACC,KAAK,GAAG,CAAT,CAAN,oDAAmBE,UAAnB,CAA8BL,OAA9B,CAAsC+B,YAAtC,MACA,kBAFF;AAIA,YAAMiH,mBAAmB,GACvB,aAAA9I,MAAM,CAACC,KAAK,GAAG,CAAT,CAAN,sDAAmBE,UAAnB,CAA8BL,OAA9B,CAAsCgH,oBAAtC,MACA,KAFF;AAIA,0BACE,oBAAC,WAAD;AACE,QAAA,GAAG,EAAEpF,KAAK,CAACC,GADb;AAEE,QAAA,KAAK,EAAEhD,UAAU,CAACoK,YAFpB;AAGE,QAAA,OAAO,EAAE1C,qBAHX;AAIE,QAAA,MAAM,EAAEuB,cAJV;AAKE,QAAA,aAAa,EAAC;AALhB,sBAOE,oBAAC,aAAD;AACE,QAAA,KAAK,EAAE3H,KADT;AAEE,QAAA,kBAAkB,EAAEG,kBAFtB;AAGE,QAAA,KAAK,EAAEO,OAHT;AAIE,QAAA,MAAM,EAAEV,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAJlC;AAKE,QAAA,OAAO,EAAE2D,OALX;AAME,QAAA,OAAO,EAAEhC,gBAAgB,CAACxC,QAAjB,CAA0BzB,KAAK,CAACC,GAAhC,CANX;AAOE,QAAA,MAAM,EAAEZ,MAPV;AAQE,QAAA,OAAO,EAAEiB,OARX;AASE,QAAA,KAAK,EAAExB,KATT;AAUE,QAAA,gBAAgB,EAAEyH,gBAVpB;AAWE,QAAA,kBAAkB,EAAEC,kBAXtB;AAYE,QAAA,mBAAmB,EAAEE,mBAZvB;AAaE,QAAA,iBAAiB,EAAEE,iBAbrB;AAcE,QAAA,cAAc,EAAEpC,cAdlB;AAeE,QAAA,eAAe,EAAEE,eAfnB;AAgBE,QAAA,YAAY,EAAED,YAhBhB;AAiBE,QAAA,YAAY,EAAEqC,YAjBhB;AAkBE,QAAA,mBAAmB,EAAE1H,mBAlBvB;AAmBE,QAAA,oBAAoB,EAAE,KAAKuG,kBAnB7B;AAoBE,QAAA,gBAAgB,EAAE,KAAKH,gBApBzB;AAqBE,QAAA,eAAe,EAAE,KAAKC,eArBxB;AAsBE,QAAA,iBAAiB,EAAEwB,iBAtBrB;AAuBE,QAAA,sBAAsB,EACpBnC,qBAAqB,IAAI,CAACG,iBAxB9B;AA0BE,QAAA,YAAY,EAAEb,YA1BhB;AA2BE,QAAA,WAAW,EAAEC,WA3Bf;AA4BE,QAAA,WAAW,EAAEH,WA5Bf;AA6BE,QAAA,YAAY,EAAEC,YA7BhB;AA8BE,QAAA,iBAAiB,EAAEG,iBA9BrB;AA+BE,QAAA,eAAe,EAAEC,eA/BnB;AAgCE,QAAA,uBAAuB,EAAE4C,uBAhC3B;AAiCE,QAAA,mBAAmB,EAAEC;AAjCvB,QAPF,CADF;AA6CD,KAxHA,CALH,CAFF,EAiIGtC,qBAAqB,GAAGQ,cAAH,GAAoB,IAjI5C,CADF;AAqID;;AAxekE;AA2erE,MAAMM,MAAM,GAAG3I,UAAU,CAACqK,MAAX,CAAkB;AAC/BvB,EAAAA,SAAS,EAAE;AACTwB,IAAAA,IAAI,EAAE;AADG,GADoB;AAI/BzB,EAAAA,QAAQ,EAAE;AACR0B,IAAAA,QAAQ,EAAE,UADF;AAER7H,IAAAA,GAAG,EAAE,CAFG;AAGRkH,IAAAA,IAAI,EAAE,CAHE;AAIRJ,IAAAA,KAAK,EAAE;AAJC,GAJqB;AAU/BZ,EAAAA,QAAQ,EAAE;AACR4B,IAAAA,MAAM,EAAE;AADA;AAVqB,CAAlB,CAAf","sourcesContent":["import {\n Background,\n getDefaultHeaderHeight,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n Route,\n StackNavigationState,\n} from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleSheet,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport {\n forModalPresentationIOS,\n forNoAnimation as forNoAnimationCard,\n} from '../../TransitionConfigs/CardStyleInterpolators';\nimport {\n DefaultTransition,\n ModalFadeTransition,\n ModalTransition,\n} from '../../TransitionConfigs/TransitionPresets';\nimport type {\n Layout,\n Scene,\n StackDescriptor,\n StackDescriptorMap,\n StackHeaderMode,\n StackNavigationOptions,\n} from '../../types';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport { MaybeScreen, MaybeScreenContainer } from '../Screens';\nimport { getIsModalPresentation } from './Card';\nimport CardContainer from './CardContainer';\n\ntype GestureValues = {\n [key: string]: Animated.Value;\n};\n\ntype Props = {\n insets: EdgeInsets;\n state: StackNavigationState<ParamListBase>;\n descriptors: StackDescriptorMap;\n routes: Route<string>[];\n openingRouteKeys: string[];\n closingRouteKeys: string[];\n onOpenRoute: (props: { route: Route<string> }) => void;\n onCloseRoute: (props: { route: Route<string> }) => void;\n getPreviousRoute: (props: {\n route: Route<string>;\n }) => Route<string> | undefined;\n renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n renderScene: (props: { route: Route<string> }) => React.ReactNode;\n isParentHeaderShown: boolean;\n isParentModal: boolean;\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 detachInactiveScreens?: boolean;\n};\n\ntype State = {\n routes: Route<string>[];\n descriptors: StackDescriptorMap;\n scenes: Scene[];\n gestures: GestureValues;\n layout: Layout;\n headerHeights: Record<string, number>;\n};\n\nconst EPSILON = 0.01;\n\nconst STATE_INACTIVE = 0;\nconst STATE_TRANSITIONING_OR_BELOW_TOP = 1;\nconst STATE_ON_TOP = 2;\n\nconst FALLBACK_DESCRIPTOR = Object.freeze({ options: {} });\n\nconst getInterpolationIndex = (scenes: Scene[], index: number) => {\n const { cardStyleInterpolator } = scenes[index].descriptor.options;\n\n // Start from current card and count backwards the number of cards with same interpolation\n let interpolationIndex = 0;\n\n for (let i = index - 1; i >= 0; i--) {\n const cardStyleInterpolatorCurrent =\n scenes[i]?.descriptor.options.cardStyleInterpolator;\n\n if (cardStyleInterpolatorCurrent !== cardStyleInterpolator) {\n break;\n }\n\n interpolationIndex++;\n }\n\n return interpolationIndex;\n};\n\nconst getIsModal = (\n scene: Scene,\n interpolationIndex: number,\n isParentModal: boolean\n) => {\n if (isParentModal) {\n return true;\n }\n\n const { cardStyleInterpolator } = scene.descriptor.options;\n const isModalPresentation = getIsModalPresentation(cardStyleInterpolator);\n const isModal = isModalPresentation && interpolationIndex !== 0;\n\n return isModal;\n};\n\nconst getHeaderHeights = (\n scenes: Scene[],\n insets: EdgeInsets,\n isParentHeaderShown: boolean,\n isParentModal: boolean,\n layout: Layout,\n previous: Record<string, number>\n) => {\n return scenes.reduce<Record<string, number>>((acc, curr, index) => {\n const {\n headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top,\n headerStyle,\n } = curr.descriptor.options;\n\n const style = StyleSheet.flatten(headerStyle || {});\n\n const height =\n typeof style.height === 'number'\n ? style.height\n : previous[curr.route.key];\n\n const interpolationIndex = getInterpolationIndex(scenes, index);\n const isModal = getIsModal(curr, interpolationIndex, isParentModal);\n\n acc[curr.route.key] =\n typeof height === 'number'\n ? height\n : getDefaultHeaderHeight(layout, isModal, headerStatusBarHeight);\n\n return acc;\n }, {});\n};\n\nconst getDistanceFromOptions = (\n layout: Layout,\n descriptor?: StackDescriptor\n) => {\n const {\n presentation,\n gestureDirection = presentation === 'modal'\n ? ModalTransition.gestureDirection\n : DefaultTransition.gestureDirection,\n } = (descriptor?.options || {}) as StackNavigationOptions;\n\n return getDistanceForDirection(layout, gestureDirection);\n};\n\nconst getProgressFromGesture = (\n gesture: Animated.Value,\n layout: Layout,\n descriptor?: StackDescriptor\n) => {\n const distance = getDistanceFromOptions(\n {\n // Make sure that we have a non-zero distance, otherwise there will be incorrect progress\n // This causes blank screen on web if it was previously inside container with display: none\n width: Math.max(1, layout.width),\n height: Math.max(1, layout.height),\n },\n descriptor\n );\n\n if (distance > 0) {\n return gesture.interpolate({\n inputRange: [0, distance],\n outputRange: [1, 0],\n });\n }\n\n return gesture.interpolate({\n inputRange: [distance, 0],\n outputRange: [0, 1],\n });\n};\n\nexport default class CardStack extends React.Component<Props, State> {\n static getDerivedStateFromProps(\n props: Props,\n state: State\n ): Partial<State> | null {\n if (\n props.routes === state.routes &&\n props.descriptors === state.descriptors\n ) {\n return null;\n }\n\n const gestures = props.routes.reduce<GestureValues>((acc, curr) => {\n const descriptor = props.descriptors[curr.key];\n const { animationEnabled } = descriptor?.options || {};\n\n acc[curr.key] =\n state.gestures[curr.key] ||\n new Animated.Value(\n props.openingRouteKeys.includes(curr.key) &&\n animationEnabled !== false\n ? getDistanceFromOptions(state.layout, descriptor)\n : 0\n );\n\n return acc;\n }, {});\n\n const scenes = props.routes.map((route, index, self) => {\n const previousRoute = self[index - 1];\n const nextRoute = self[index + 1];\n\n const oldScene = state.scenes[index];\n\n const currentGesture = gestures[route.key];\n const previousGesture = previousRoute\n ? gestures[previousRoute.key]\n : undefined;\n const nextGesture = nextRoute ? gestures[nextRoute.key] : undefined;\n\n const descriptor =\n props.descriptors[route.key] ||\n state.descriptors[route.key] ||\n (oldScene ? oldScene.descriptor : FALLBACK_DESCRIPTOR);\n\n const nextDescriptor =\n props.descriptors[nextRoute?.key] || state.descriptors[nextRoute?.key];\n\n const previousDescriptor =\n props.descriptors[previousRoute?.key] ||\n state.descriptors[previousRoute?.key];\n\n // When a screen is not the last, it should use next screen's transition config\n // Many transitions also animate the previous screen, so using 2 different transitions doesn't look right\n // For example combining a slide and a modal transition would look wrong otherwise\n // With this approach, combining different transition styles in the same navigator mostly looks right\n // This will still be broken when 2 transitions have different idle state (e.g. modal presentation),\n // but majority of the transitions look alright\n const optionsForTransitionConfig =\n index !== self.length - 1 &&\n nextDescriptor &&\n nextDescriptor.options.presentation !== 'transparentModal'\n ? nextDescriptor.options\n : descriptor.options;\n\n let defaultTransitionPreset =\n optionsForTransitionConfig.presentation === 'modal'\n ? ModalTransition\n : optionsForTransitionConfig.presentation === 'transparentModal'\n ? ModalFadeTransition\n : DefaultTransition;\n\n const {\n animationEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n gestureEnabled = Platform.OS === 'ios' && animationEnabled,\n gestureDirection = defaultTransitionPreset.gestureDirection,\n transitionSpec = defaultTransitionPreset.transitionSpec,\n cardStyleInterpolator = animationEnabled === false\n ? forNoAnimationCard\n : defaultTransitionPreset.cardStyleInterpolator,\n headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,\n cardOverlayEnabled = (Platform.OS !== 'ios' &&\n optionsForTransitionConfig.presentation !== 'transparentModal') ||\n getIsModalPresentation(cardStyleInterpolator),\n } = optionsForTransitionConfig;\n\n const headerMode: StackHeaderMode =\n descriptor.options.headerMode ??\n (!(\n optionsForTransitionConfig.presentation === 'modal' ||\n optionsForTransitionConfig.presentation === 'transparentModal' ||\n nextDescriptor?.options.presentation === 'modal' ||\n nextDescriptor?.options.presentation === 'transparentModal' ||\n getIsModalPresentation(cardStyleInterpolator)\n ) &&\n Platform.OS === 'ios' &&\n descriptor.options.header === undefined\n ? 'float'\n : 'screen');\n\n const scene = {\n route,\n descriptor: {\n ...descriptor,\n options: {\n ...descriptor.options,\n animationEnabled,\n cardOverlayEnabled,\n cardStyleInterpolator,\n gestureDirection,\n gestureEnabled,\n headerStyleInterpolator,\n transitionSpec,\n headerMode,\n },\n },\n progress: {\n current: getProgressFromGesture(\n currentGesture,\n state.layout,\n descriptor\n ),\n next:\n nextGesture &&\n nextDescriptor?.options.presentation !== 'transparentModal'\n ? getProgressFromGesture(\n nextGesture,\n state.layout,\n nextDescriptor\n )\n : undefined,\n previous: previousGesture\n ? getProgressFromGesture(\n previousGesture,\n state.layout,\n previousDescriptor\n )\n : undefined,\n },\n __memo: [\n state.layout,\n descriptor,\n nextDescriptor,\n previousDescriptor,\n currentGesture,\n nextGesture,\n previousGesture,\n ],\n };\n\n if (\n oldScene &&\n scene.__memo.every((it, i) => {\n // @ts-expect-error: we haven't added __memo to the annotation to prevent usage elsewhere\n return oldScene.__memo[i] === it;\n })\n ) {\n return oldScene;\n }\n\n return scene;\n });\n\n return {\n routes: props.routes,\n scenes,\n gestures,\n descriptors: props.descriptors,\n headerHeights: getHeaderHeights(\n scenes,\n props.insets,\n props.isParentHeaderShown,\n props.isParentModal,\n state.layout,\n state.headerHeights\n ),\n };\n }\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n routes: [],\n scenes: [],\n gestures: {},\n layout: SafeAreaProviderCompat.initialMetrics.frame,\n descriptors: this.props.descriptors,\n // Used when card's header is null and mode is float to make transition\n // between screens with headers and those without headers smooth.\n // This is not a great heuristic here. We don't know synchronously\n // on mount what the header height is so we have just used the most\n // common cases here.\n headerHeights: {},\n };\n }\n\n private handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n const layout = { width, height };\n\n this.setState((state, props) => {\n if (height === state.layout.height && width === state.layout.width) {\n return null;\n }\n\n return {\n layout,\n headerHeights: getHeaderHeights(\n state.scenes,\n props.insets,\n props.isParentHeaderShown,\n props.isParentModal,\n layout,\n state.headerHeights\n ),\n };\n });\n };\n\n private handleHeaderLayout = ({\n route,\n height,\n }: {\n route: Route<string>;\n height: number;\n }) => {\n this.setState(({ headerHeights }) => {\n const previousHeight = headerHeights[route.key];\n\n if (previousHeight === height) {\n return null;\n }\n\n return {\n headerHeights: {\n ...headerHeights,\n [route.key]: height,\n },\n };\n });\n };\n\n private getFocusedRoute = () => {\n const { state } = this.props;\n\n return state.routes[state.index];\n };\n\n private getPreviousScene = ({ route }: { route: Route<string> }) => {\n const { getPreviousRoute } = this.props;\n const { scenes } = this.state;\n\n const previousRoute = getPreviousRoute({ route });\n\n if (previousRoute) {\n const previousScene = scenes.find(\n (scene) => scene.descriptor.route.key === previousRoute.key\n );\n\n return previousScene;\n }\n\n return undefined;\n };\n\n render() {\n const {\n insets,\n state,\n routes,\n closingRouteKeys,\n onOpenRoute,\n onCloseRoute,\n renderHeader,\n renderScene,\n isParentHeaderShown,\n isParentModal,\n onTransitionStart,\n onTransitionEnd,\n onGestureStart,\n onGestureEnd,\n onGestureCancel,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n } = this.props;\n\n const { scenes, layout, gestures, headerHeights } = this.state;\n\n const focusedRoute = state.routes[state.index];\n const focusedHeaderHeight = headerHeights[focusedRoute.key];\n\n const isFloatHeaderAbsolute = this.state.scenes.slice(-2).some((scene) => {\n const options = scene.descriptor.options ?? {};\n const { headerMode, headerTransparent, headerShown = true } = options;\n\n if (\n headerTransparent ||\n headerShown === false ||\n headerMode === 'screen'\n ) {\n return true;\n }\n\n return false;\n });\n\n let activeScreensLimit = 1;\n\n for (let i = scenes.length - 1; i >= 0; i--) {\n const { options } = scenes[i].descriptor;\n const {\n // By default, we don't want to detach the previous screen of the active one for modals\n detachPreviousScreen = options.presentation === 'transparentModal'\n ? false\n : getIsModalPresentation(options.cardStyleInterpolator)\n ? i !==\n scenes\n .map((scene) => scene.descriptor.options.cardStyleInterpolator)\n .lastIndexOf(forModalPresentationIOS)\n : true,\n } = options;\n\n if (detachPreviousScreen === false) {\n activeScreensLimit++;\n } else {\n break;\n }\n }\n\n const floatingHeader = (\n <React.Fragment key=\"header\">\n {renderHeader({\n mode: 'float',\n layout,\n scenes,\n getPreviousScene: this.getPreviousScene,\n getFocusedRoute: this.getFocusedRoute,\n onContentHeightChange: this.handleHeaderLayout,\n style: [\n styles.floating,\n isFloatHeaderAbsolute && [\n // Without this, the header buttons won't be touchable on Android when headerTransparent: true\n { height: focusedHeaderHeight },\n styles.absolute,\n ],\n ],\n })}\n </React.Fragment>\n );\n\n return (\n <Background>\n {isFloatHeaderAbsolute ? null : floatingHeader}\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n style={styles.container}\n onLayout={this.handleLayout}\n >\n {routes.map((route, index, self) => {\n const focused = focusedRoute.key === route.key;\n const gesture = gestures[route.key];\n const scene = scenes[index];\n\n // For the screens that shouldn't be active, the value is 0\n // For those that should be active, but are not the top screen, the value is 1\n // For those on top of the stack and with interaction enabled, the value is 2\n // For the old implementation, it stays the same it was\n let isScreenActive: Animated.AnimatedInterpolation | 2 | 1 | 0 = 1;\n\n if (index < self.length - activeScreensLimit - 1) {\n // screen should be inactive because it is too deep in the stack\n isScreenActive = STATE_INACTIVE;\n } else {\n const sceneForActivity = scenes[self.length - 1];\n const outputValue =\n index === self.length - 1\n ? STATE_ON_TOP // the screen is on top after the transition\n : index >= self.length - activeScreensLimit\n ? STATE_TRANSITIONING_OR_BELOW_TOP // the screen should stay active after the transition, it is not on top but is in activeLimit\n : STATE_INACTIVE; // the screen should be active only during the transition, it is at the edge of activeLimit\n isScreenActive = sceneForActivity\n ? sceneForActivity.progress.current.interpolate({\n inputRange: [0, 1 - EPSILON, 1],\n outputRange: [1, 1, outputValue],\n extrapolate: 'clamp',\n })\n : STATE_TRANSITIONING_OR_BELOW_TOP;\n }\n\n const {\n headerShown = true,\n headerTransparent,\n headerStyle,\n headerTintColor,\n } = scene.descriptor.options;\n\n const safeAreaInsetTop = insets.top;\n const safeAreaInsetRight = insets.right;\n const safeAreaInsetBottom = insets.bottom;\n const safeAreaInsetLeft = insets.left;\n\n const headerHeight =\n headerShown !== false ? headerHeights[route.key] : 0;\n\n const { backgroundColor: headerBackgroundColor } =\n StyleSheet.flatten(headerStyle) || {};\n\n let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else if (typeof headerBackgroundColor === 'string') {\n headerDarkContent = !Color(headerBackgroundColor).isDark();\n }\n }\n\n // Start from current card and count backwards the number of cards with same interpolation\n const interpolationIndex = getInterpolationIndex(scenes, index);\n const isModal = getIsModal(\n scene,\n interpolationIndex,\n isParentModal\n );\n\n const isNextScreenTransparent =\n scenes[index + 1]?.descriptor.options.presentation ===\n 'transparentModal';\n\n const detachCurrentScreen =\n scenes[index + 1]?.descriptor.options.detachPreviousScreen !==\n false;\n\n return (\n <MaybeScreen\n key={route.key}\n style={StyleSheet.absoluteFill}\n enabled={detachInactiveScreens}\n active={isScreenActive}\n pointerEvents=\"box-none\"\n >\n <CardContainer\n index={index}\n interpolationIndex={interpolationIndex}\n modal={isModal}\n active={index === self.length - 1}\n focused={focused}\n closing={closingRouteKeys.includes(route.key)}\n layout={layout}\n gesture={gesture}\n scene={scene}\n safeAreaInsetTop={safeAreaInsetTop}\n safeAreaInsetRight={safeAreaInsetRight}\n safeAreaInsetBottom={safeAreaInsetBottom}\n safeAreaInsetLeft={safeAreaInsetLeft}\n onGestureStart={onGestureStart}\n onGestureCancel={onGestureCancel}\n onGestureEnd={onGestureEnd}\n headerHeight={headerHeight}\n isParentHeaderShown={isParentHeaderShown}\n onHeaderHeightChange={this.handleHeaderLayout}\n getPreviousScene={this.getPreviousScene}\n getFocusedRoute={this.getFocusedRoute}\n headerDarkContent={headerDarkContent}\n hasAbsoluteFloatHeader={\n isFloatHeaderAbsolute && !headerTransparent\n }\n renderHeader={renderHeader}\n renderScene={renderScene}\n onOpenRoute={onOpenRoute}\n onCloseRoute={onCloseRoute}\n onTransitionStart={onTransitionStart}\n onTransitionEnd={onTransitionEnd}\n isNextScreenTransparent={isNextScreenTransparent}\n detachCurrentScreen={detachCurrentScreen}\n />\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n {isFloatHeaderAbsolute ? floatingHeader : null}\n </Background>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n absolute: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n floating: {\n zIndex: 1,\n },\n});\n"]}
1
+ {"version":3,"sources":["CardStack.tsx"],"names":["Background","getDefaultHeaderHeight","SafeAreaProviderCompat","Color","React","Animated","Platform","StyleSheet","forModalPresentationIOS","forNoAnimation","forNoAnimationCard","DefaultTransition","ModalFadeTransition","ModalTransition","getDistanceForDirection","MaybeScreen","MaybeScreenContainer","getIsModalPresentation","CardContainer","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","FALLBACK_DESCRIPTOR","Object","freeze","options","getInterpolationIndex","scenes","index","cardStyleInterpolator","descriptor","interpolationIndex","i","cardStyleInterpolatorCurrent","getIsModal","scene","isParentModal","isModalPresentation","isModal","getHeaderHeights","insets","isParentHeaderShown","layout","previous","reduce","acc","curr","headerStatusBarHeight","top","headerStyle","style","flatten","height","route","key","getDistanceFromOptions","presentation","gestureDirection","getProgressFromGesture","gesture","distance","width","Math","max","interpolate","inputRange","outputRange","CardStack","Component","getDerivedStateFromProps","props","state","routes","descriptors","gestures","animationEnabled","Value","openingRouteKeys","includes","map","self","previousRoute","nextRoute","oldScene","currentGesture","previousGesture","undefined","nextGesture","nextDescriptor","previousDescriptor","optionsForTransitionConfig","length","defaultTransitionPreset","OS","gestureEnabled","transitionSpec","headerStyleInterpolator","cardOverlayEnabled","headerMode","header","progress","current","next","__memo","every","it","headerHeights","constructor","e","nativeEvent","setState","previousHeight","getPreviousRoute","previousScene","find","initialMetrics","frame","render","closingRouteKeys","onOpenRoute","onCloseRoute","renderHeader","renderScene","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","detachInactiveScreens","focusedRoute","focusedHeaderHeight","isFloatHeaderAbsolute","slice","some","headerTransparent","headerShown","activeScreensLimit","detachPreviousScreen","lastIndexOf","floatingHeader","mode","getPreviousScene","getFocusedRoute","onContentHeightChange","handleHeaderLayout","styles","floating","absolute","container","handleLayout","focused","isScreenActive","sceneForActivity","outputValue","extrapolate","headerTintColor","safeAreaInsetTop","safeAreaInsetRight","right","safeAreaInsetBottom","bottom","safeAreaInsetLeft","left","headerHeight","backgroundColor","headerBackgroundColor","headerDarkContent","isDark","isNextScreenTransparent","detachCurrentScreen","absoluteFill","create","flex","position","zIndex"],"mappings":";;AAAA,SACEA,UADF,EAEEC,sBAFF,EAGEC,sBAHF,QAIO,4BAJP;AAUA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SACEC,QADF,EAGEC,QAHF,EAIEC,UAJF,QAKO,cALP;AAQA,SACEC,uBADF,EAEEC,cAAc,IAAIC,kBAFpB,QAGO,gDAHP;AAIA,SACEC,iBADF,EAEEC,mBAFF,EAGEC,eAHF,QAIO,2CAJP;AAaA,OAAOC,uBAAP,MAAoC,qCAApC;AAEA,SAASC,WAAT,EAAsBC,oBAAtB,QAAkD,YAAlD;AACA,SAASC,sBAAT,QAAuC,QAAvC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AA0CA,MAAMC,OAAO,GAAG,IAAhB;AAEA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,gCAAgC,GAAG,CAAzC;AACA,MAAMC,YAAY,GAAG,CAArB;AAEA,MAAMC,mBAAmB,GAAGC,MAAM,CAACC,MAAP,CAAc;AAAEC,EAAAA,OAAO,EAAE;AAAX,CAAd,CAA5B;;AAEA,MAAMC,qBAAqB,GAAG,CAACC,MAAD,EAAkBC,KAAlB,KAAoC;AAChE,QAAM;AAAEC,IAAAA;AAAF,MAA4BF,MAAM,CAACC,KAAD,CAAN,CAAcE,UAAd,CAAyBL,OAA3D,CADgE,CAGhE;;AACA,MAAIM,kBAAkB,GAAG,CAAzB;;AAEA,OAAK,IAAIC,CAAC,GAAGJ,KAAK,GAAG,CAArB,EAAwBI,CAAC,IAAI,CAA7B,EAAgCA,CAAC,EAAjC,EAAqC;AAAA;;AACnC,UAAMC,4BAA4B,gBAChCN,MAAM,CAACK,CAAD,CAD0B,8CAChC,UAAWF,UAAX,CAAsBL,OAAtB,CAA8BI,qBADhC;;AAGA,QAAII,4BAA4B,KAAKJ,qBAArC,EAA4D;AAC1D;AACD;;AAEDE,IAAAA,kBAAkB;AACnB;;AAED,SAAOA,kBAAP;AACD,CAlBD;;AAoBA,MAAMG,UAAU,GAAG,CACjBC,KADiB,EAEjBJ,kBAFiB,EAGjBK,aAHiB,KAId;AACH,MAAIA,aAAJ,EAAmB;AACjB,WAAO,IAAP;AACD;;AAED,QAAM;AAAEP,IAAAA;AAAF,MAA4BM,KAAK,CAACL,UAAN,CAAiBL,OAAnD;AACA,QAAMY,mBAAmB,GAAGrB,sBAAsB,CAACa,qBAAD,CAAlD;AACA,QAAMS,OAAO,GAAGD,mBAAmB,IAAIN,kBAAkB,KAAK,CAA9D;AAEA,SAAOO,OAAP;AACD,CAdD;;AAgBA,MAAMC,gBAAgB,GAAG,CACvBZ,MADuB,EAEvBa,MAFuB,EAGvBC,mBAHuB,EAIvBL,aAJuB,EAKvBM,MALuB,EAMvBC,QANuB,KAOpB;AACH,SAAOhB,MAAM,CAACiB,MAAP,CAAsC,CAACC,GAAD,EAAMC,IAAN,EAAYlB,KAAZ,KAAsB;AACjE,UAAM;AACJmB,MAAAA,qBAAqB,GAAGN,mBAAmB,GAAG,CAAH,GAAOD,MAAM,CAACQ,GADrD;AAEJC,MAAAA;AAFI,QAGFH,IAAI,CAAChB,UAAL,CAAgBL,OAHpB;AAKA,UAAMyB,KAAK,GAAG5C,UAAU,CAAC6C,OAAX,CAAmBF,WAAW,IAAI,EAAlC,CAAd;AAEA,UAAMG,MAAM,GACV,OAAOF,KAAK,CAACE,MAAb,KAAwB,QAAxB,GACIF,KAAK,CAACE,MADV,GAEIT,QAAQ,CAACG,IAAI,CAACO,KAAL,CAAWC,GAAZ,CAHd;AAKA,UAAMvB,kBAAkB,GAAGL,qBAAqB,CAACC,MAAD,EAASC,KAAT,CAAhD;AACA,UAAMU,OAAO,GAAGJ,UAAU,CAACY,IAAD,EAAOf,kBAAP,EAA2BK,aAA3B,CAA1B;AAEAS,IAAAA,GAAG,CAACC,IAAI,CAACO,KAAL,CAAWC,GAAZ,CAAH,GACE,OAAOF,MAAP,KAAkB,QAAlB,GACIA,MADJ,GAEIpD,sBAAsB,CAAC0C,MAAD,EAASJ,OAAT,EAAkBS,qBAAlB,CAH5B;AAKA,WAAOF,GAAP;AACD,GAtBM,EAsBJ,EAtBI,CAAP;AAuBD,CA/BD;;AAiCA,MAAMU,sBAAsB,GAAG,CAC7Bb,MAD6B,EAE7BZ,UAF6B,KAG1B;AACH,QAAM;AACJ0B,IAAAA,YADI;AAEJC,IAAAA,gBAAgB,GAAGD,YAAY,KAAK,OAAjB,GACf5C,eAAe,CAAC6C,gBADD,GAEf/C,iBAAiB,CAAC+C;AAJlB,MAKD,CAAA3B,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEL,OAAZ,KAAuB,EAL5B;AAOA,SAAOZ,uBAAuB,CAAC6B,MAAD,EAASe,gBAAT,CAA9B;AACD,CAZD;;AAcA,MAAMC,sBAAsB,GAAG,CAC7BC,OAD6B,EAE7BjB,MAF6B,EAG7BZ,UAH6B,KAI1B;AACH,QAAM8B,QAAQ,GAAGL,sBAAsB,CACrC;AACE;AACA;AACAM,IAAAA,KAAK,EAAEC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYrB,MAAM,CAACmB,KAAnB,CAHT;AAIET,IAAAA,MAAM,EAAEU,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYrB,MAAM,CAACU,MAAnB;AAJV,GADqC,EAOrCtB,UAPqC,CAAvC;;AAUA,MAAI8B,QAAQ,GAAG,CAAf,EAAkB;AAChB,WAAOD,OAAO,CAACK,WAAR,CAAoB;AACzBC,MAAAA,UAAU,EAAE,CAAC,CAAD,EAAIL,QAAJ,CADa;AAEzBM,MAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,KAApB,CAAP;AAID;;AAED,SAAOP,OAAO,CAACK,WAAR,CAAoB;AACzBC,IAAAA,UAAU,EAAE,CAACL,QAAD,EAAW,CAAX,CADa;AAEzBM,IAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,GAApB,CAAP;AAID,CA1BD;;AA4BA,eAAe,MAAMC,SAAN,SAAwBhE,KAAK,CAACiE,SAA9B,CAAsD;AACpC,SAAxBC,wBAAwB,CAC7BC,KAD6B,EAE7BC,KAF6B,EAGN;AACvB,QACED,KAAK,CAACE,MAAN,KAAiBD,KAAK,CAACC,MAAvB,IACAF,KAAK,CAACG,WAAN,KAAsBF,KAAK,CAACE,WAF9B,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAMC,QAAQ,GAAGJ,KAAK,CAACE,MAAN,CAAa5B,MAAb,CAAmC,CAACC,GAAD,EAAMC,IAAN,KAAe;AACjE,YAAMhB,UAAU,GAAGwC,KAAK,CAACG,WAAN,CAAkB3B,IAAI,CAACQ,GAAvB,CAAnB;AACA,YAAM;AAAEqB,QAAAA;AAAF,UAAuB,CAAA7C,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEL,OAAZ,KAAuB,EAApD;AAEAoB,MAAAA,GAAG,CAACC,IAAI,CAACQ,GAAN,CAAH,GACEiB,KAAK,CAACG,QAAN,CAAe5B,IAAI,CAACQ,GAApB,KACA,IAAIlD,QAAQ,CAACwE,KAAb,CACEN,KAAK,CAACO,gBAAN,CAAuBC,QAAvB,CAAgChC,IAAI,CAACQ,GAArC,KACAqB,gBAAgB,KAAK,KADrB,GAEIpB,sBAAsB,CAACgB,KAAK,CAAC7B,MAAP,EAAeZ,UAAf,CAF1B,GAGI,CAJN,CAFF;AASA,aAAOe,GAAP;AACD,KAdgB,EAcd,EAdc,CAAjB;AAgBA,UAAMlB,MAAM,GAAG2C,KAAK,CAACE,MAAN,CAAaO,GAAb,CAAiB,CAAC1B,KAAD,EAAQzB,KAAR,EAAeoD,IAAf,KAAwB;AAAA;;AACtD,YAAMC,aAAa,GAAGD,IAAI,CAACpD,KAAK,GAAG,CAAT,CAA1B;AACA,YAAMsD,SAAS,GAAGF,IAAI,CAACpD,KAAK,GAAG,CAAT,CAAtB;AAEA,YAAMuD,QAAQ,GAAGZ,KAAK,CAAC5C,MAAN,CAAaC,KAAb,CAAjB;AAEA,YAAMwD,cAAc,GAAGV,QAAQ,CAACrB,KAAK,CAACC,GAAP,CAA/B;AACA,YAAM+B,eAAe,GAAGJ,aAAa,GACjCP,QAAQ,CAACO,aAAa,CAAC3B,GAAf,CADyB,GAEjCgC,SAFJ;AAGA,YAAMC,WAAW,GAAGL,SAAS,GAAGR,QAAQ,CAACQ,SAAS,CAAC5B,GAAX,CAAX,GAA6BgC,SAA1D;AAEA,YAAMxD,UAAU,GACdwC,KAAK,CAACG,WAAN,CAAkBpB,KAAK,CAACC,GAAxB,KACAiB,KAAK,CAACE,WAAN,CAAkBpB,KAAK,CAACC,GAAxB,CADA,KAEC6B,QAAQ,GAAGA,QAAQ,CAACrD,UAAZ,GAAyBR,mBAFlC,CADF;AAKA,YAAMkE,cAAc,GAClBlB,KAAK,CAACG,WAAN,CAAkBS,SAAlB,aAAkBA,SAAlB,uBAAkBA,SAAS,CAAE5B,GAA7B,KAAqCiB,KAAK,CAACE,WAAN,CAAkBS,SAAlB,aAAkBA,SAAlB,uBAAkBA,SAAS,CAAE5B,GAA7B,CADvC;AAGA,YAAMmC,kBAAkB,GACtBnB,KAAK,CAACG,WAAN,CAAkBQ,aAAlB,aAAkBA,aAAlB,uBAAkBA,aAAa,CAAE3B,GAAjC,KACAiB,KAAK,CAACE,WAAN,CAAkBQ,aAAlB,aAAkBA,aAAlB,uBAAkBA,aAAa,CAAE3B,GAAjC,CAFF,CApBsD,CAwBtD;AACA;AACA;AACA;AACA;AACA;;AACA,YAAMoC,0BAA0B,GAC9B9D,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAAxB,IACAH,cADA,IAEAA,cAAc,CAAC/D,OAAf,CAAuB+B,YAAvB,KAAwC,kBAFxC,GAGIgC,cAAc,CAAC/D,OAHnB,GAIIK,UAAU,CAACL,OALjB;AAOA,UAAImE,uBAAuB,GACzBF,0BAA0B,CAAClC,YAA3B,KAA4C,OAA5C,GACI5C,eADJ,GAEI8E,0BAA0B,CAAClC,YAA3B,KAA4C,kBAA5C,GACA7C,mBADA,GAEAD,iBALN;AAOA,YAAM;AACJiE,QAAAA,gBAAgB,GAAGtE,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACjBxF,QAAQ,CAACwF,EAAT,KAAgB,SADC,IAEjBxF,QAAQ,CAACwF,EAAT,KAAgB,OAHd;AAIJC,QAAAA,cAAc,GAAGzF,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IAAyBlB,gBAJtC;AAKJlB,QAAAA,gBAAgB,GAAGmC,uBAAuB,CAACnC,gBALvC;AAMJsC,QAAAA,cAAc,GAAGH,uBAAuB,CAACG,cANrC;AAOJlE,QAAAA,qBAAqB,GAAG8C,gBAAgB,KAAK,KAArB,GACpBlE,kBADoB,GAEpBmF,uBAAuB,CAAC/D,qBATxB;AAUJmE,QAAAA,uBAAuB,GAAGJ,uBAAuB,CAACI,uBAV9C;AAWJC,QAAAA,kBAAkB,GAAI5F,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACpBH,0BAA0B,CAAClC,YAA3B,KAA4C,kBADzB,IAEnBxC,sBAAsB,CAACa,qBAAD;AAbpB,UAcF6D,0BAdJ;AAgBA,YAAMQ,UAA2B,4BAC/BpE,UAAU,CAACL,OAAX,CAAmByE,UADY,yEAE9B,EACCR,0BAA0B,CAAClC,YAA3B,KAA4C,OAA5C,IACAkC,0BAA0B,CAAClC,YAA3B,KAA4C,kBAD5C,IAEA,CAAAgC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,OAFzC,IAGA,CAAAgC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,kBAHzC,IAIAxC,sBAAsB,CAACa,qBAAD,CALvB,KAODxB,QAAQ,CAACwF,EAAT,KAAgB,KAPf,IAQD/D,UAAU,CAACL,OAAX,CAAmB0E,MAAnB,KAA8Bb,SAR7B,GASG,OATH,GAUG,QAZN;AAcA,YAAMnD,KAAK,GAAG;AACZkB,QAAAA,KADY;AAEZvB,QAAAA,UAAU,EAAE,EACV,GAAGA,UADO;AAEVL,UAAAA,OAAO,EAAE,EACP,GAAGK,UAAU,CAACL,OADP;AAEPkD,YAAAA,gBAFO;AAGPsB,YAAAA,kBAHO;AAIPpE,YAAAA,qBAJO;AAKP4B,YAAAA,gBALO;AAMPqC,YAAAA,cANO;AAOPE,YAAAA,uBAPO;AAQPD,YAAAA,cARO;AASPG,YAAAA;AATO;AAFC,SAFA;AAgBZE,QAAAA,QAAQ,EAAE;AACRC,UAAAA,OAAO,EAAE3C,sBAAsB,CAC7B0B,cAD6B,EAE7Bb,KAAK,CAAC7B,MAFuB,EAG7BZ,UAH6B,CADvB;AAMRwE,UAAAA,IAAI,EACFf,WAAW,IACX,CAAAC,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE/D,OAAhB,CAAwB+B,YAAxB,MAAyC,kBADzC,GAEIE,sBAAsB,CACpB6B,WADoB,EAEpBhB,KAAK,CAAC7B,MAFc,EAGpB8C,cAHoB,CAF1B,GAOIF,SAdE;AAeR3C,UAAAA,QAAQ,EAAE0C,eAAe,GACrB3B,sBAAsB,CACpB2B,eADoB,EAEpBd,KAAK,CAAC7B,MAFc,EAGpB+C,kBAHoB,CADD,GAMrBH;AArBI,SAhBE;AAuCZiB,QAAAA,MAAM,EAAE,CACNhC,KAAK,CAAC7B,MADA,EAENZ,UAFM,EAGN0D,cAHM,EAINC,kBAJM,EAKNL,cALM,EAMNG,WANM,EAONF,eAPM;AAvCI,OAAd;;AAkDA,UACEF,QAAQ,IACRhD,KAAK,CAACoE,MAAN,CAAaC,KAAb,CAAmB,CAACC,EAAD,EAAKzE,CAAL,KAAW;AAC5B;AACA,eAAOmD,QAAQ,CAACoB,MAAT,CAAgBvE,CAAhB,MAAuByE,EAA9B;AACD,OAHD,CAFF,EAME;AACA,eAAOtB,QAAP;AACD;;AAED,aAAOhD,KAAP;AACD,KAvIc,CAAf;AAyIA,WAAO;AACLqC,MAAAA,MAAM,EAAEF,KAAK,CAACE,MADT;AAEL7C,MAAAA,MAFK;AAGL+C,MAAAA,QAHK;AAILD,MAAAA,WAAW,EAAEH,KAAK,CAACG,WAJd;AAKLiC,MAAAA,aAAa,EAAEnE,gBAAgB,CAC7BZ,MAD6B,EAE7B2C,KAAK,CAAC9B,MAFuB,EAG7B8B,KAAK,CAAC7B,mBAHuB,EAI7B6B,KAAK,CAAClC,aAJuB,EAK7BmC,KAAK,CAAC7B,MALuB,EAM7B6B,KAAK,CAACmC,aANuB;AAL1B,KAAP;AAcD;;AAEDC,EAAAA,WAAW,CAACrC,MAAD,EAAe;AACxB,UAAMA,MAAN;;AADwB,0CAkBFsC,CAAD,IAA0B;AAC/C,YAAM;AAAExD,QAAAA,MAAF;AAAUS,QAAAA;AAAV,UAAoB+C,CAAC,CAACC,WAAF,CAAcnE,MAAxC;AAEA,YAAMA,MAAM,GAAG;AAAEmB,QAAAA,KAAF;AAAST,QAAAA;AAAT,OAAf;AAEA,WAAK0D,QAAL,CAAc,CAACvC,KAAD,EAAQD,KAAR,KAAkB;AAC9B,YAAIlB,MAAM,KAAKmB,KAAK,CAAC7B,MAAN,CAAaU,MAAxB,IAAkCS,KAAK,KAAKU,KAAK,CAAC7B,MAAN,CAAamB,KAA7D,EAAoE;AAClE,iBAAO,IAAP;AACD;;AAED,eAAO;AACLnB,UAAAA,MADK;AAELgE,UAAAA,aAAa,EAAEnE,gBAAgB,CAC7BgC,KAAK,CAAC5C,MADuB,EAE7B2C,KAAK,CAAC9B,MAFuB,EAG7B8B,KAAK,CAAC7B,mBAHuB,EAI7B6B,KAAK,CAAClC,aAJuB,EAK7BM,MAL6B,EAM7B6B,KAAK,CAACmC,aANuB;AAF1B,SAAP;AAWD,OAhBD;AAiBD,KAxCyB;;AAAA,gDA0CG,QAMvB;AAAA,UANwB;AAC5BrD,QAAAA,KAD4B;AAE5BD,QAAAA;AAF4B,OAMxB;AACJ,WAAK0D,QAAL,CAAc,SAAuB;AAAA,YAAtB;AAAEJ,UAAAA;AAAF,SAAsB;AACnC,cAAMK,cAAc,GAAGL,aAAa,CAACrD,KAAK,CAACC,GAAP,CAApC;;AAEA,YAAIyD,cAAc,KAAK3D,MAAvB,EAA+B;AAC7B,iBAAO,IAAP;AACD;;AAED,eAAO;AACLsD,UAAAA,aAAa,EAAE,EACb,GAAGA,aADU;AAEb,aAACrD,KAAK,CAACC,GAAP,GAAaF;AAFA;AADV,SAAP;AAMD,OAbD;AAcD,KA/DyB;;AAAA,6CAiEA,MAAM;AAC9B,YAAM;AAAEmB,QAAAA;AAAF,UAAY,KAAKD,KAAvB;AAEA,aAAOC,KAAK,CAACC,MAAN,CAAaD,KAAK,CAAC3C,KAAnB,CAAP;AACD,KArEyB;;AAAA,8CAuEC,SAAyC;AAAA,UAAxC;AAAEyB,QAAAA;AAAF,OAAwC;AAClE,YAAM;AAAE2D,QAAAA;AAAF,UAAuB,KAAK1C,KAAlC;AACA,YAAM;AAAE3C,QAAAA;AAAF,UAAa,KAAK4C,KAAxB;AAEA,YAAMU,aAAa,GAAG+B,gBAAgB,CAAC;AAAE3D,QAAAA;AAAF,OAAD,CAAtC;;AAEA,UAAI4B,aAAJ,EAAmB;AACjB,cAAMgC,aAAa,GAAGtF,MAAM,CAACuF,IAAP,CACnB/E,KAAD,IAAWA,KAAK,CAACL,UAAN,CAAiBuB,KAAjB,CAAuBC,GAAvB,KAA+B2B,aAAa,CAAC3B,GADpC,CAAtB;AAIA,eAAO2D,aAAP;AACD;;AAED,aAAO3B,SAAP;AACD,KAtFyB;;AAGxB,SAAKf,KAAL,GAAa;AACXC,MAAAA,MAAM,EAAE,EADG;AAEX7C,MAAAA,MAAM,EAAE,EAFG;AAGX+C,MAAAA,QAAQ,EAAE,EAHC;AAIXhC,MAAAA,MAAM,EAAEzC,sBAAsB,CAACkH,cAAvB,CAAsCC,KAJnC;AAKX3C,MAAAA,WAAW,EAAE,KAAKH,KAAL,CAAWG,WALb;AAMX;AACA;AACA;AACA;AACA;AACAiC,MAAAA,aAAa,EAAE;AAXJ,KAAb;AAaD;;AAwEDW,EAAAA,MAAM,GAAG;AACP,UAAM;AACJ7E,MAAAA,MADI;AAEJ+B,MAAAA,KAFI;AAGJC,MAAAA,MAHI;AAIJ8C,MAAAA,gBAJI;AAKJC,MAAAA,WALI;AAMJC,MAAAA,YANI;AAOJC,MAAAA,YAPI;AAQJC,MAAAA,WARI;AASJjF,MAAAA,mBATI;AAUJL,MAAAA,aAVI;AAWJuF,MAAAA,iBAXI;AAYJC,MAAAA,eAZI;AAaJC,MAAAA,cAbI;AAcJC,MAAAA,YAdI;AAeJC,MAAAA,eAfI;AAgBJC,MAAAA,qBAAqB,GAAG3H,QAAQ,CAACwF,EAAT,KAAgB,KAAhB,IACtBxF,QAAQ,CAACwF,EAAT,KAAgB,SADM,IAEtBxF,QAAQ,CAACwF,EAAT,KAAgB;AAlBd,QAmBF,KAAKvB,KAnBT;AAqBA,UAAM;AAAE3C,MAAAA,MAAF;AAAUe,MAAAA,MAAV;AAAkBgC,MAAAA,QAAlB;AAA4BgC,MAAAA;AAA5B,QAA8C,KAAKnC,KAAzD;AAEA,UAAM0D,YAAY,GAAG1D,KAAK,CAACC,MAAN,CAAaD,KAAK,CAAC3C,KAAnB,CAArB;AACA,UAAMsG,mBAAmB,GAAGxB,aAAa,CAACuB,YAAY,CAAC3E,GAAd,CAAzC;AAEA,UAAM6E,qBAAqB,GAAG,KAAK5D,KAAL,CAAW5C,MAAX,CAAkByG,KAAlB,CAAwB,CAAC,CAAzB,EAA4BC,IAA5B,CAAkClG,KAAD,IAAW;AAAA;;AACxE,YAAMV,OAAO,4BAAGU,KAAK,CAACL,UAAN,CAAiBL,OAApB,yEAA+B,EAA5C;AACA,YAAM;AAAEyE,QAAAA,UAAF;AAAcoC,QAAAA,iBAAd;AAAiCC,QAAAA,WAAW,GAAG;AAA/C,UAAwD9G,OAA9D;;AAEA,UACE6G,iBAAiB,IACjBC,WAAW,KAAK,KADhB,IAEArC,UAAU,KAAK,QAHjB,EAIE;AACA,eAAO,IAAP;AACD;;AAED,aAAO,KAAP;AACD,KAb6B,CAA9B;AAeA,QAAIsC,kBAAkB,GAAG,CAAzB;;AAEA,SAAK,IAAIxG,CAAC,GAAGL,MAAM,CAACgE,MAAP,GAAgB,CAA7B,EAAgC3D,CAAC,IAAI,CAArC,EAAwCA,CAAC,EAAzC,EAA6C;AAC3C,YAAM;AAAEP,QAAAA;AAAF,UAAcE,MAAM,CAACK,CAAD,CAAN,CAAUF,UAA9B;AACA,YAAM;AACJ;AACA2G,QAAAA,oBAAoB,GAAGhH,OAAO,CAAC+B,YAAR,KAAyB,kBAAzB,GACnB,KADmB,GAEnBxC,sBAAsB,CAACS,OAAO,CAACI,qBAAT,CAAtB,GACAG,CAAC,KACDL,MAAM,CACHoD,GADH,CACQ5C,KAAD,IAAWA,KAAK,CAACL,UAAN,CAAiBL,OAAjB,CAAyBI,qBAD3C,EAEG6G,WAFH,CAEenI,uBAFf,CAFA,GAKA;AATA,UAUFkB,OAVJ;;AAYA,UAAIgH,oBAAoB,KAAK,KAA7B,EAAoC;AAClCD,QAAAA,kBAAkB;AACnB,OAFD,MAEO;AACL;AACA;AACA;AACA,YAAIxG,CAAC,IAAIL,MAAM,CAACgE,MAAP,GAAgB,CAAzB,EAA4B;AAC1B;AACD;AACF;AACF;;AAED,UAAMgD,cAAc,gBAClB,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAC;AAApB,OACGlB,YAAY,CAAC;AACZmB,MAAAA,IAAI,EAAE,OADM;AAEZlG,MAAAA,MAFY;AAGZf,MAAAA,MAHY;AAIZkH,MAAAA,gBAAgB,EAAE,KAAKA,gBAJX;AAKZC,MAAAA,eAAe,EAAE,KAAKA,eALV;AAMZC,MAAAA,qBAAqB,EAAE,KAAKC,kBANhB;AAOZ9F,MAAAA,KAAK,EAAE,CACL+F,MAAM,CAACC,QADF,EAELf,qBAAqB,IAAI,CACvB;AACA;AAAE/E,QAAAA,MAAM,EAAE8E;AAAV,OAFuB,EAGvBe,MAAM,CAACE,QAHgB,CAFpB;AAPK,KAAD,CADf,CADF;AAqBA,wBACE,oBAAC,UAAD,QACGhB,qBAAqB,GAAG,IAAH,GAAUQ,cADlC,eAEE,oBAAC,oBAAD;AACE,MAAA,OAAO,EAAEX,qBADX;AAEE,MAAA,KAAK,EAAEiB,MAAM,CAACG,SAFhB;AAGE,MAAA,QAAQ,EAAE,KAAKC;AAHjB,OAKG7E,MAAM,CAACO,GAAP,CAAW,CAAC1B,KAAD,EAAQzB,KAAR,EAAeoD,IAAf,KAAwB;AAAA;;AAClC,YAAMsE,OAAO,GAAGrB,YAAY,CAAC3E,GAAb,KAAqBD,KAAK,CAACC,GAA3C;AACA,YAAMK,OAAO,GAAGe,QAAQ,CAACrB,KAAK,CAACC,GAAP,CAAxB;AACA,YAAMnB,KAAK,GAAGR,MAAM,CAACC,KAAD,CAApB,CAHkC,CAKlC;AACA;AACA;AACA;;AACA,UAAI2H,cAA0D,GAAG,CAAjE;;AAEA,UAAI3H,KAAK,GAAGoD,IAAI,CAACW,MAAL,GAAc6C,kBAAd,GAAmC,CAA/C,EAAkD;AAChD;AACAe,QAAAA,cAAc,GAAGpI,cAAjB;AACD,OAHD,MAGO;AACL,cAAMqI,gBAAgB,GAAG7H,MAAM,CAACqD,IAAI,CAACW,MAAL,GAAc,CAAf,CAA/B;AACA,cAAM8D,WAAW,GACf7H,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAAxB,GACItE,YADJ,CACiB;AADjB,UAEIO,KAAK,IAAIoD,IAAI,CAACW,MAAL,GAAc6C,kBAAvB,GACApH,gCADA,CACiC;AADjC,UAEAD,cALN,CAFK,CAOiB;;AACtBoI,QAAAA,cAAc,GAAGC,gBAAgB,GAC7BA,gBAAgB,CAACpD,QAAjB,CAA0BC,OAA1B,CAAkCrC,WAAlC,CAA8C;AAC5CC,UAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,IAAI/C,OAAR,EAAiB,CAAjB,CADgC;AAE5CgD,UAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAOuF,WAAP,CAF+B;AAG5CC,UAAAA,WAAW,EAAE;AAH+B,SAA9C,CAD6B,GAM7BtI,gCANJ;AAOD;;AAED,YAAM;AACJmH,QAAAA,WAAW,GAAG,IADV;AAEJD,QAAAA,iBAFI;AAGJrF,QAAAA,WAHI;AAIJ0G,QAAAA;AAJI,UAKFxH,KAAK,CAACL,UAAN,CAAiBL,OALrB;AAOA,YAAMmI,gBAAgB,GAAGpH,MAAM,CAACQ,GAAhC;AACA,YAAM6G,kBAAkB,GAAGrH,MAAM,CAACsH,KAAlC;AACA,YAAMC,mBAAmB,GAAGvH,MAAM,CAACwH,MAAnC;AACA,YAAMC,iBAAiB,GAAGzH,MAAM,CAAC0H,IAAjC;AAEA,YAAMC,YAAY,GAChB5B,WAAW,KAAK,KAAhB,GAAwB7B,aAAa,CAACrD,KAAK,CAACC,GAAP,CAArC,GAAmD,CADrD;AAGA,YAAM;AAAE8G,QAAAA,eAAe,EAAEC;AAAnB,UACJ/J,UAAU,CAAC6C,OAAX,CAAmBF,WAAnB,KAAmC,EADrC;AAGA,UAAIqH,iBAAJ;;AAEA,UAAI/B,WAAJ,EAAiB;AACf,YAAI,OAAOoB,eAAP,KAA2B,QAA/B,EAAyC;AACvCW,UAAAA,iBAAiB,GAAGpK,KAAK,CAACyJ,eAAD,CAAL,CAAuBY,MAAvB,EAApB;AACD,SAFD,MAEO,IAAI,OAAOF,qBAAP,KAAiC,QAArC,EAA+C;AACpDC,UAAAA,iBAAiB,GAAG,CAACpK,KAAK,CAACmK,qBAAD,CAAL,CAA6BE,MAA7B,EAArB;AACD;AACF,OAzDiC,CA2DlC;;;AACA,YAAMxI,kBAAkB,GAAGL,qBAAqB,CAACC,MAAD,EAASC,KAAT,CAAhD;AACA,YAAMU,OAAO,GAAGJ,UAAU,CACxBC,KADwB,EAExBJ,kBAFwB,EAGxBK,aAHwB,CAA1B;AAMA,YAAMoI,uBAAuB,GAC3B,YAAA7I,MAAM,CAACC,KAAK,GAAG,CAAT,CAAN,oDAAmBE,UAAnB,CAA8BL,OAA9B,CAAsC+B,YAAtC,MACA,kBAFF;AAIA,YAAMiH,mBAAmB,GACvB,aAAA9I,MAAM,CAACC,KAAK,GAAG,CAAT,CAAN,sDAAmBE,UAAnB,CAA8BL,OAA9B,CAAsCgH,oBAAtC,MACA,KAFF;AAIA,0BACE,oBAAC,WAAD;AACE,QAAA,GAAG,EAAEpF,KAAK,CAACC,GADb;AAEE,QAAA,KAAK,EAAEhD,UAAU,CAACoK,YAFpB;AAGE,QAAA,OAAO,EAAE1C,qBAHX;AAIE,QAAA,MAAM,EAAEuB,cAJV;AAKE,QAAA,aAAa,EAAC;AALhB,sBAOE,oBAAC,aAAD;AACE,QAAA,KAAK,EAAE3H,KADT;AAEE,QAAA,kBAAkB,EAAEG,kBAFtB;AAGE,QAAA,KAAK,EAAEO,OAHT;AAIE,QAAA,MAAM,EAAEV,KAAK,KAAKoD,IAAI,CAACW,MAAL,GAAc,CAJlC;AAKE,QAAA,OAAO,EAAE2D,OALX;AAME,QAAA,OAAO,EAAEhC,gBAAgB,CAACxC,QAAjB,CAA0BzB,KAAK,CAACC,GAAhC,CANX;AAOE,QAAA,MAAM,EAAEZ,MAPV;AAQE,QAAA,OAAO,EAAEiB,OARX;AASE,QAAA,KAAK,EAAExB,KATT;AAUE,QAAA,gBAAgB,EAAEyH,gBAVpB;AAWE,QAAA,kBAAkB,EAAEC,kBAXtB;AAYE,QAAA,mBAAmB,EAAEE,mBAZvB;AAaE,QAAA,iBAAiB,EAAEE,iBAbrB;AAcE,QAAA,cAAc,EAAEpC,cAdlB;AAeE,QAAA,eAAe,EAAEE,eAfnB;AAgBE,QAAA,YAAY,EAAED,YAhBhB;AAiBE,QAAA,YAAY,EAAEqC,YAjBhB;AAkBE,QAAA,mBAAmB,EAAE1H,mBAlBvB;AAmBE,QAAA,oBAAoB,EAAE,KAAKuG,kBAnB7B;AAoBE,QAAA,gBAAgB,EAAE,KAAKH,gBApBzB;AAqBE,QAAA,eAAe,EAAE,KAAKC,eArBxB;AAsBE,QAAA,iBAAiB,EAAEwB,iBAtBrB;AAuBE,QAAA,sBAAsB,EACpBnC,qBAAqB,IAAI,CAACG,iBAxB9B;AA0BE,QAAA,YAAY,EAAEb,YA1BhB;AA2BE,QAAA,WAAW,EAAEC,WA3Bf;AA4BE,QAAA,WAAW,EAAEH,WA5Bf;AA6BE,QAAA,YAAY,EAAEC,YA7BhB;AA8BE,QAAA,iBAAiB,EAAEG,iBA9BrB;AA+BE,QAAA,eAAe,EAAEC,eA/BnB;AAgCE,QAAA,uBAAuB,EAAE4C,uBAhC3B;AAiCE,QAAA,mBAAmB,EAAEC;AAjCvB,QAPF,CADF;AA6CD,KAxHA,CALH,CAFF,EAiIGtC,qBAAqB,GAAGQ,cAAH,GAAoB,IAjI5C,CADF;AAqID;;AA7ekE;AAgfrE,MAAMM,MAAM,GAAG3I,UAAU,CAACqK,MAAX,CAAkB;AAC/BvB,EAAAA,SAAS,EAAE;AACTwB,IAAAA,IAAI,EAAE;AADG,GADoB;AAI/BzB,EAAAA,QAAQ,EAAE;AACR0B,IAAAA,QAAQ,EAAE,UADF;AAER7H,IAAAA,GAAG,EAAE,CAFG;AAGRkH,IAAAA,IAAI,EAAE,CAHE;AAIRJ,IAAAA,KAAK,EAAE;AAJC,GAJqB;AAU/BZ,EAAAA,QAAQ,EAAE;AACR4B,IAAAA,MAAM,EAAE;AADA;AAVqB,CAAlB,CAAf","sourcesContent":["import {\n Background,\n getDefaultHeaderHeight,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n Route,\n StackNavigationState,\n} from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleSheet,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport {\n forModalPresentationIOS,\n forNoAnimation as forNoAnimationCard,\n} from '../../TransitionConfigs/CardStyleInterpolators';\nimport {\n DefaultTransition,\n ModalFadeTransition,\n ModalTransition,\n} from '../../TransitionConfigs/TransitionPresets';\nimport type {\n Layout,\n Scene,\n StackDescriptor,\n StackDescriptorMap,\n StackHeaderMode,\n StackNavigationOptions,\n} from '../../types';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport { MaybeScreen, MaybeScreenContainer } from '../Screens';\nimport { getIsModalPresentation } from './Card';\nimport CardContainer from './CardContainer';\n\ntype GestureValues = {\n [key: string]: Animated.Value;\n};\n\ntype Props = {\n insets: EdgeInsets;\n state: StackNavigationState<ParamListBase>;\n descriptors: StackDescriptorMap;\n routes: Route<string>[];\n openingRouteKeys: string[];\n closingRouteKeys: string[];\n onOpenRoute: (props: { route: Route<string> }) => void;\n onCloseRoute: (props: { route: Route<string> }) => void;\n getPreviousRoute: (props: {\n route: Route<string>;\n }) => Route<string> | undefined;\n renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n renderScene: (props: { route: Route<string> }) => React.ReactNode;\n isParentHeaderShown: boolean;\n isParentModal: boolean;\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 detachInactiveScreens?: boolean;\n};\n\ntype State = {\n routes: Route<string>[];\n descriptors: StackDescriptorMap;\n scenes: Scene[];\n gestures: GestureValues;\n layout: Layout;\n headerHeights: Record<string, number>;\n};\n\nconst EPSILON = 0.01;\n\nconst STATE_INACTIVE = 0;\nconst STATE_TRANSITIONING_OR_BELOW_TOP = 1;\nconst STATE_ON_TOP = 2;\n\nconst FALLBACK_DESCRIPTOR = Object.freeze({ options: {} });\n\nconst getInterpolationIndex = (scenes: Scene[], index: number) => {\n const { cardStyleInterpolator } = scenes[index].descriptor.options;\n\n // Start from current card and count backwards the number of cards with same interpolation\n let interpolationIndex = 0;\n\n for (let i = index - 1; i >= 0; i--) {\n const cardStyleInterpolatorCurrent =\n scenes[i]?.descriptor.options.cardStyleInterpolator;\n\n if (cardStyleInterpolatorCurrent !== cardStyleInterpolator) {\n break;\n }\n\n interpolationIndex++;\n }\n\n return interpolationIndex;\n};\n\nconst getIsModal = (\n scene: Scene,\n interpolationIndex: number,\n isParentModal: boolean\n) => {\n if (isParentModal) {\n return true;\n }\n\n const { cardStyleInterpolator } = scene.descriptor.options;\n const isModalPresentation = getIsModalPresentation(cardStyleInterpolator);\n const isModal = isModalPresentation && interpolationIndex !== 0;\n\n return isModal;\n};\n\nconst getHeaderHeights = (\n scenes: Scene[],\n insets: EdgeInsets,\n isParentHeaderShown: boolean,\n isParentModal: boolean,\n layout: Layout,\n previous: Record<string, number>\n) => {\n return scenes.reduce<Record<string, number>>((acc, curr, index) => {\n const {\n headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top,\n headerStyle,\n } = curr.descriptor.options;\n\n const style = StyleSheet.flatten(headerStyle || {});\n\n const height =\n typeof style.height === 'number'\n ? style.height\n : previous[curr.route.key];\n\n const interpolationIndex = getInterpolationIndex(scenes, index);\n const isModal = getIsModal(curr, interpolationIndex, isParentModal);\n\n acc[curr.route.key] =\n typeof height === 'number'\n ? height\n : getDefaultHeaderHeight(layout, isModal, headerStatusBarHeight);\n\n return acc;\n }, {});\n};\n\nconst getDistanceFromOptions = (\n layout: Layout,\n descriptor?: StackDescriptor\n) => {\n const {\n presentation,\n gestureDirection = presentation === 'modal'\n ? ModalTransition.gestureDirection\n : DefaultTransition.gestureDirection,\n } = (descriptor?.options || {}) as StackNavigationOptions;\n\n return getDistanceForDirection(layout, gestureDirection);\n};\n\nconst getProgressFromGesture = (\n gesture: Animated.Value,\n layout: Layout,\n descriptor?: StackDescriptor\n) => {\n const distance = getDistanceFromOptions(\n {\n // Make sure that we have a non-zero distance, otherwise there will be incorrect progress\n // This causes blank screen on web if it was previously inside container with display: none\n width: Math.max(1, layout.width),\n height: Math.max(1, layout.height),\n },\n descriptor\n );\n\n if (distance > 0) {\n return gesture.interpolate({\n inputRange: [0, distance],\n outputRange: [1, 0],\n });\n }\n\n return gesture.interpolate({\n inputRange: [distance, 0],\n outputRange: [0, 1],\n });\n};\n\nexport default class CardStack extends React.Component<Props, State> {\n static getDerivedStateFromProps(\n props: Props,\n state: State\n ): Partial<State> | null {\n if (\n props.routes === state.routes &&\n props.descriptors === state.descriptors\n ) {\n return null;\n }\n\n const gestures = props.routes.reduce<GestureValues>((acc, curr) => {\n const descriptor = props.descriptors[curr.key];\n const { animationEnabled } = descriptor?.options || {};\n\n acc[curr.key] =\n state.gestures[curr.key] ||\n new Animated.Value(\n props.openingRouteKeys.includes(curr.key) &&\n animationEnabled !== false\n ? getDistanceFromOptions(state.layout, descriptor)\n : 0\n );\n\n return acc;\n }, {});\n\n const scenes = props.routes.map((route, index, self) => {\n const previousRoute = self[index - 1];\n const nextRoute = self[index + 1];\n\n const oldScene = state.scenes[index];\n\n const currentGesture = gestures[route.key];\n const previousGesture = previousRoute\n ? gestures[previousRoute.key]\n : undefined;\n const nextGesture = nextRoute ? gestures[nextRoute.key] : undefined;\n\n const descriptor =\n props.descriptors[route.key] ||\n state.descriptors[route.key] ||\n (oldScene ? oldScene.descriptor : FALLBACK_DESCRIPTOR);\n\n const nextDescriptor =\n props.descriptors[nextRoute?.key] || state.descriptors[nextRoute?.key];\n\n const previousDescriptor =\n props.descriptors[previousRoute?.key] ||\n state.descriptors[previousRoute?.key];\n\n // When a screen is not the last, it should use next screen's transition config\n // Many transitions also animate the previous screen, so using 2 different transitions doesn't look right\n // For example combining a slide and a modal transition would look wrong otherwise\n // With this approach, combining different transition styles in the same navigator mostly looks right\n // This will still be broken when 2 transitions have different idle state (e.g. modal presentation),\n // but majority of the transitions look alright\n const optionsForTransitionConfig =\n index !== self.length - 1 &&\n nextDescriptor &&\n nextDescriptor.options.presentation !== 'transparentModal'\n ? nextDescriptor.options\n : descriptor.options;\n\n let defaultTransitionPreset =\n optionsForTransitionConfig.presentation === 'modal'\n ? ModalTransition\n : optionsForTransitionConfig.presentation === 'transparentModal'\n ? ModalFadeTransition\n : DefaultTransition;\n\n const {\n animationEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n gestureEnabled = Platform.OS === 'ios' && animationEnabled,\n gestureDirection = defaultTransitionPreset.gestureDirection,\n transitionSpec = defaultTransitionPreset.transitionSpec,\n cardStyleInterpolator = animationEnabled === false\n ? forNoAnimationCard\n : defaultTransitionPreset.cardStyleInterpolator,\n headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,\n cardOverlayEnabled = (Platform.OS !== 'ios' &&\n optionsForTransitionConfig.presentation !== 'transparentModal') ||\n getIsModalPresentation(cardStyleInterpolator),\n } = optionsForTransitionConfig;\n\n const headerMode: StackHeaderMode =\n descriptor.options.headerMode ??\n (!(\n optionsForTransitionConfig.presentation === 'modal' ||\n optionsForTransitionConfig.presentation === 'transparentModal' ||\n nextDescriptor?.options.presentation === 'modal' ||\n nextDescriptor?.options.presentation === 'transparentModal' ||\n getIsModalPresentation(cardStyleInterpolator)\n ) &&\n Platform.OS === 'ios' &&\n descriptor.options.header === undefined\n ? 'float'\n : 'screen');\n\n const scene = {\n route,\n descriptor: {\n ...descriptor,\n options: {\n ...descriptor.options,\n animationEnabled,\n cardOverlayEnabled,\n cardStyleInterpolator,\n gestureDirection,\n gestureEnabled,\n headerStyleInterpolator,\n transitionSpec,\n headerMode,\n },\n },\n progress: {\n current: getProgressFromGesture(\n currentGesture,\n state.layout,\n descriptor\n ),\n next:\n nextGesture &&\n nextDescriptor?.options.presentation !== 'transparentModal'\n ? getProgressFromGesture(\n nextGesture,\n state.layout,\n nextDescriptor\n )\n : undefined,\n previous: previousGesture\n ? getProgressFromGesture(\n previousGesture,\n state.layout,\n previousDescriptor\n )\n : undefined,\n },\n __memo: [\n state.layout,\n descriptor,\n nextDescriptor,\n previousDescriptor,\n currentGesture,\n nextGesture,\n previousGesture,\n ],\n };\n\n if (\n oldScene &&\n scene.__memo.every((it, i) => {\n // @ts-expect-error: we haven't added __memo to the annotation to prevent usage elsewhere\n return oldScene.__memo[i] === it;\n })\n ) {\n return oldScene;\n }\n\n return scene;\n });\n\n return {\n routes: props.routes,\n scenes,\n gestures,\n descriptors: props.descriptors,\n headerHeights: getHeaderHeights(\n scenes,\n props.insets,\n props.isParentHeaderShown,\n props.isParentModal,\n state.layout,\n state.headerHeights\n ),\n };\n }\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n routes: [],\n scenes: [],\n gestures: {},\n layout: SafeAreaProviderCompat.initialMetrics.frame,\n descriptors: this.props.descriptors,\n // Used when card's header is null and mode is float to make transition\n // between screens with headers and those without headers smooth.\n // This is not a great heuristic here. We don't know synchronously\n // on mount what the header height is so we have just used the most\n // common cases here.\n headerHeights: {},\n };\n }\n\n private handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n const layout = { width, height };\n\n this.setState((state, props) => {\n if (height === state.layout.height && width === state.layout.width) {\n return null;\n }\n\n return {\n layout,\n headerHeights: getHeaderHeights(\n state.scenes,\n props.insets,\n props.isParentHeaderShown,\n props.isParentModal,\n layout,\n state.headerHeights\n ),\n };\n });\n };\n\n private handleHeaderLayout = ({\n route,\n height,\n }: {\n route: Route<string>;\n height: number;\n }) => {\n this.setState(({ headerHeights }) => {\n const previousHeight = headerHeights[route.key];\n\n if (previousHeight === height) {\n return null;\n }\n\n return {\n headerHeights: {\n ...headerHeights,\n [route.key]: height,\n },\n };\n });\n };\n\n private getFocusedRoute = () => {\n const { state } = this.props;\n\n return state.routes[state.index];\n };\n\n private getPreviousScene = ({ route }: { route: Route<string> }) => {\n const { getPreviousRoute } = this.props;\n const { scenes } = this.state;\n\n const previousRoute = getPreviousRoute({ route });\n\n if (previousRoute) {\n const previousScene = scenes.find(\n (scene) => scene.descriptor.route.key === previousRoute.key\n );\n\n return previousScene;\n }\n\n return undefined;\n };\n\n render() {\n const {\n insets,\n state,\n routes,\n closingRouteKeys,\n onOpenRoute,\n onCloseRoute,\n renderHeader,\n renderScene,\n isParentHeaderShown,\n isParentModal,\n onTransitionStart,\n onTransitionEnd,\n onGestureStart,\n onGestureEnd,\n onGestureCancel,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n } = this.props;\n\n const { scenes, layout, gestures, headerHeights } = this.state;\n\n const focusedRoute = state.routes[state.index];\n const focusedHeaderHeight = headerHeights[focusedRoute.key];\n\n const isFloatHeaderAbsolute = this.state.scenes.slice(-2).some((scene) => {\n const options = scene.descriptor.options ?? {};\n const { headerMode, headerTransparent, headerShown = true } = options;\n\n if (\n headerTransparent ||\n headerShown === false ||\n headerMode === 'screen'\n ) {\n return true;\n }\n\n return false;\n });\n\n let activeScreensLimit = 1;\n\n for (let i = scenes.length - 1; i >= 0; i--) {\n const { options } = scenes[i].descriptor;\n const {\n // By default, we don't want to detach the previous screen of the active one for modals\n detachPreviousScreen = options.presentation === 'transparentModal'\n ? false\n : getIsModalPresentation(options.cardStyleInterpolator)\n ? i !==\n scenes\n .map((scene) => scene.descriptor.options.cardStyleInterpolator)\n .lastIndexOf(forModalPresentationIOS)\n : true,\n } = options;\n\n if (detachPreviousScreen === false) {\n activeScreensLimit++;\n } else {\n // Check at least last 2 screens before stopping\n // This will make sure that screen isn't detached when another screen is animating on top of the transparent one\n // For example, (Opaque -> Transparent -> Opaque)\n if (i <= scenes.length - 2) {\n break;\n }\n }\n }\n\n const floatingHeader = (\n <React.Fragment key=\"header\">\n {renderHeader({\n mode: 'float',\n layout,\n scenes,\n getPreviousScene: this.getPreviousScene,\n getFocusedRoute: this.getFocusedRoute,\n onContentHeightChange: this.handleHeaderLayout,\n style: [\n styles.floating,\n isFloatHeaderAbsolute && [\n // Without this, the header buttons won't be touchable on Android when headerTransparent: true\n { height: focusedHeaderHeight },\n styles.absolute,\n ],\n ],\n })}\n </React.Fragment>\n );\n\n return (\n <Background>\n {isFloatHeaderAbsolute ? null : floatingHeader}\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n style={styles.container}\n onLayout={this.handleLayout}\n >\n {routes.map((route, index, self) => {\n const focused = focusedRoute.key === route.key;\n const gesture = gestures[route.key];\n const scene = scenes[index];\n\n // For the screens that shouldn't be active, the value is 0\n // For those that should be active, but are not the top screen, the value is 1\n // For those on top of the stack and with interaction enabled, the value is 2\n // For the old implementation, it stays the same it was\n let isScreenActive: Animated.AnimatedInterpolation | 2 | 1 | 0 = 1;\n\n if (index < self.length - activeScreensLimit - 1) {\n // screen should be inactive because it is too deep in the stack\n isScreenActive = STATE_INACTIVE;\n } else {\n const sceneForActivity = scenes[self.length - 1];\n const outputValue =\n index === self.length - 1\n ? STATE_ON_TOP // the screen is on top after the transition\n : index >= self.length - activeScreensLimit\n ? STATE_TRANSITIONING_OR_BELOW_TOP // the screen should stay active after the transition, it is not on top but is in activeLimit\n : STATE_INACTIVE; // the screen should be active only during the transition, it is at the edge of activeLimit\n isScreenActive = sceneForActivity\n ? sceneForActivity.progress.current.interpolate({\n inputRange: [0, 1 - EPSILON, 1],\n outputRange: [1, 1, outputValue],\n extrapolate: 'clamp',\n })\n : STATE_TRANSITIONING_OR_BELOW_TOP;\n }\n\n const {\n headerShown = true,\n headerTransparent,\n headerStyle,\n headerTintColor,\n } = scene.descriptor.options;\n\n const safeAreaInsetTop = insets.top;\n const safeAreaInsetRight = insets.right;\n const safeAreaInsetBottom = insets.bottom;\n const safeAreaInsetLeft = insets.left;\n\n const headerHeight =\n headerShown !== false ? headerHeights[route.key] : 0;\n\n const { backgroundColor: headerBackgroundColor } =\n StyleSheet.flatten(headerStyle) || {};\n\n let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else if (typeof headerBackgroundColor === 'string') {\n headerDarkContent = !Color(headerBackgroundColor).isDark();\n }\n }\n\n // Start from current card and count backwards the number of cards with same interpolation\n const interpolationIndex = getInterpolationIndex(scenes, index);\n const isModal = getIsModal(\n scene,\n interpolationIndex,\n isParentModal\n );\n\n const isNextScreenTransparent =\n scenes[index + 1]?.descriptor.options.presentation ===\n 'transparentModal';\n\n const detachCurrentScreen =\n scenes[index + 1]?.descriptor.options.detachPreviousScreen !==\n false;\n\n return (\n <MaybeScreen\n key={route.key}\n style={StyleSheet.absoluteFill}\n enabled={detachInactiveScreens}\n active={isScreenActive}\n pointerEvents=\"box-none\"\n >\n <CardContainer\n index={index}\n interpolationIndex={interpolationIndex}\n modal={isModal}\n active={index === self.length - 1}\n focused={focused}\n closing={closingRouteKeys.includes(route.key)}\n layout={layout}\n gesture={gesture}\n scene={scene}\n safeAreaInsetTop={safeAreaInsetTop}\n safeAreaInsetRight={safeAreaInsetRight}\n safeAreaInsetBottom={safeAreaInsetBottom}\n safeAreaInsetLeft={safeAreaInsetLeft}\n onGestureStart={onGestureStart}\n onGestureCancel={onGestureCancel}\n onGestureEnd={onGestureEnd}\n headerHeight={headerHeight}\n isParentHeaderShown={isParentHeaderShown}\n onHeaderHeightChange={this.handleHeaderLayout}\n getPreviousScene={this.getPreviousScene}\n getFocusedRoute={this.getFocusedRoute}\n headerDarkContent={headerDarkContent}\n hasAbsoluteFloatHeader={\n isFloatHeaderAbsolute && !headerTransparent\n }\n renderHeader={renderHeader}\n renderScene={renderScene}\n onOpenRoute={onOpenRoute}\n onCloseRoute={onCloseRoute}\n onTransitionStart={onTransitionStart}\n onTransitionEnd={onTransitionEnd}\n isNextScreenTransparent={isNextScreenTransparent}\n detachCurrentScreen={detachCurrentScreen}\n />\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n {isFloatHeaderAbsolute ? floatingHeader : null}\n </Background>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n absolute: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n floating: {\n zIndex: 1,\n },\n});\n"]}