@react-navigation/stack 6.2.3 → 6.3.1

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.
@@ -16,12 +16,6 @@ Object.defineProperty(exports, "GestureState", {
16
16
  }
17
17
  });
18
18
  exports.PanGestureHandler = PanGestureHandler;
19
- Object.defineProperty(exports, "PanGestureHandlerGestureEvent", {
20
- enumerable: true,
21
- get: function () {
22
- return _reactNativeGestureHandler.PanGestureHandlerGestureEvent;
23
- }
24
- });
25
19
 
26
20
  var React = _interopRequireWildcard(require("react"));
27
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;;;;;;;;;AAEO,SAASA,iBAAT,CAA2BC,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGC,KAAK,CAACC,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,iCAAD,CAA0B,QAA1B;AAAmC,IAAA,KAAK,EAAEF;AAA1C,kBACE,oBAAC,4CAAD,eAA6BD,KAA7B;AAAoC,IAAA,GAAG,EAAEC;AAAzC,KADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <GestureHandlerRefContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} ref={gestureRef} />\n </GestureHandlerRefContext.Provider>\n );\n}\n\nexport {\n GestureHandlerRootView,\n State as GestureState,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\n"]}
1
+ {"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;;;;;;;;;AAEO,SAASA,iBAAT,CAA2BC,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGC,KAAK,CAACC,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,iCAAD,CAA0B,QAA1B;AAAmC,IAAA,KAAK,EAAEF;AAA1C,kBACE,oBAAC,4CAAD,eAA6BD,KAA7B;AAAoC,IAAA,GAAG,EAAEC;AAAzC,KADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <GestureHandlerRefContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} ref={gestureRef} />\n </GestureHandlerRefContext.Provider>\n );\n}\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nexport {\n GestureHandlerRootView,\n State as GestureState,\n} from 'react-native-gesture-handler';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Screens.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,MAAMC,WAAW,GAAG,SAQrB;AAAA,MARsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAQtB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAhBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
1
+ {"version":3,"sources":["Screens.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,MAAMC,WAAW,GAAG,SASrB;AAAA,MATsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAStB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAjBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n freezeOnBlur?: boolean;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
@@ -33,7 +33,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
33
33
 
34
34
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
35
 
36
- const EPSILON = 0.01;
36
+ const EPSILON = 1e-5;
37
37
  const STATE_INACTIVE = 0;
38
38
  const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
39
39
  const STATE_ON_TOP = 2;
@@ -413,7 +413,8 @@ class CardStack extends React.Component {
413
413
  headerShown = true,
414
414
  headerTransparent,
415
415
  headerStyle,
416
- headerTintColor
416
+ headerTintColor,
417
+ freezeOnBlur
417
418
  } = scene.descriptor.options;
418
419
  const safeAreaInsetTop = insets.top;
419
420
  const safeAreaInsetRight = insets.right;
@@ -444,6 +445,7 @@ class CardStack extends React.Component {
444
445
  style: _reactNative.StyleSheet.absoluteFill,
445
446
  enabled: detachInactiveScreens,
446
447
  active: isScreenActive,
448
+ freezeOnBlur: freezeOnBlur,
447
449
  pointerEvents: "box-none"
448
450
  }, /*#__PURE__*/React.createElement(_CardContainer.default, {
449
451
  index: index,
@@ -1 +1 @@
1
- {"version":3,"sources":["CardStack.tsx"],"names":["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","StyleSheet","flatten","height","route","key","getDistanceFromOptions","presentation","gestureDirection","ModalTransition","DefaultTransition","getProgressFromGesture","gesture","distance","width","Math","max","interpolate","inputRange","outputRange","CardStack","React","Component","getDerivedStateFromProps","props","state","routes","descriptors","gestures","animationEnabled","Animated","Value","openingRouteKeys","includes","map","self","previousRoute","nextRoute","oldScene","currentGesture","previousGesture","undefined","nextGesture","nextDescriptor","previousDescriptor","optionsForTransitionConfig","length","defaultTransitionPreset","ModalFadeTransition","Platform","OS","gestureEnabled","transitionSpec","forNoAnimationCard","headerStyleInterpolator","cardOverlayEnabled","headerMode","header","progress","current","next","__memo","every","it","headerHeights","constructor","e","nativeEvent","setState","previousHeight","getPreviousRoute","previousScene","find","SafeAreaProviderCompat","initialMetrics","frame","render","closingRouteKeys","onOpenRoute","onCloseRoute","renderHeader","renderScene","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","detachInactiveScreens","focusedRoute","focusedHeaderHeight","isFloatHeaderAbsolute","slice","some","headerTransparent","headerShown","activeScreensLimit","detachPreviousScreen","lastIndexOf","forModalPresentationIOS","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","headerDarkContent","isDark","flattenedHeaderStyle","backgroundColor","isNextScreenTransparent","detachCurrentScreen","absoluteFill","create","flex","position","zIndex"],"mappings":"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","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 'height' in style && 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 let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else {\n const flattenedHeaderStyle = StyleSheet.flatten(headerStyle);\n\n if (\n flattenedHeaderStyle &&\n 'backgroundColor' in flattenedHeaderStyle &&\n typeof flattenedHeaderStyle.backgroundColor === 'string'\n ) {\n headerDarkContent = !Color(\n flattenedHeaderStyle.backgroundColor\n ).isDark();\n }\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":["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","StyleSheet","flatten","height","route","key","getDistanceFromOptions","presentation","gestureDirection","ModalTransition","DefaultTransition","getProgressFromGesture","gesture","distance","width","Math","max","interpolate","inputRange","outputRange","CardStack","React","Component","getDerivedStateFromProps","props","state","routes","descriptors","gestures","animationEnabled","Animated","Value","openingRouteKeys","includes","map","self","previousRoute","nextRoute","oldScene","currentGesture","previousGesture","undefined","nextGesture","nextDescriptor","previousDescriptor","optionsForTransitionConfig","length","defaultTransitionPreset","ModalFadeTransition","Platform","OS","gestureEnabled","transitionSpec","forNoAnimationCard","headerStyleInterpolator","cardOverlayEnabled","headerMode","header","progress","current","next","__memo","every","it","headerHeights","constructor","e","nativeEvent","setState","previousHeight","getPreviousRoute","previousScene","find","SafeAreaProviderCompat","initialMetrics","frame","render","closingRouteKeys","onOpenRoute","onCloseRoute","renderHeader","renderScene","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","detachInactiveScreens","focusedRoute","focusedHeaderHeight","isFloatHeaderAbsolute","slice","some","headerTransparent","headerShown","activeScreensLimit","detachPreviousScreen","lastIndexOf","forModalPresentationIOS","floatingHeader","mode","getPreviousScene","getFocusedRoute","onContentHeightChange","handleHeaderLayout","styles","floating","absolute","container","handleLayout","focused","isScreenActive","sceneForActivity","outputValue","extrapolate","headerTintColor","freezeOnBlur","safeAreaInsetTop","safeAreaInsetRight","right","safeAreaInsetBottom","bottom","safeAreaInsetLeft","left","headerHeight","headerDarkContent","isDark","flattenedHeaderStyle","backgroundColor","isNextScreenTransparent","detachCurrentScreen","absoluteFill","create","flex","position","zIndex"],"mappings":"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","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 = 1e-5;\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 'height' in style && 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 freezeOnBlur,\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 let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else {\n const flattenedHeaderStyle = StyleSheet.flatten(headerStyle);\n\n if (\n flattenedHeaderStyle &&\n 'backgroundColor' in flattenedHeaderStyle &&\n typeof flattenedHeaderStyle.backgroundColor === 'string'\n ) {\n headerDarkContent = !Color(\n flattenedHeaderStyle.backgroundColor\n ).isDark();\n }\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 freezeOnBlur={freezeOnBlur}\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"]}
@@ -11,5 +11,5 @@ export function PanGestureHandler(props) {
11
11
  ref: gestureRef
12
12
  })));
13
13
  }
14
- export { GestureHandlerRootView, State as GestureState, PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';
14
+ export { GestureHandlerRootView, State as GestureState } from 'react-native-gesture-handler';
15
15
  //# sourceMappingURL=GestureHandlerNative.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandlerNative.tsx"],"names":["React","PanGestureHandler","PanGestureHandlerNative","GestureHandlerRefContext","props","gestureRef","useRef","GestureHandlerRootView","State","GestureState","PanGestureHandlerGestureEvent"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,iBAAiB,IAAIC,uBADvB,QAGO,8BAHP;AAKA,OAAOC,wBAAP,MAAqC,mCAArC;AAEA,OAAO,SAASF,iBAAT,CAA2BG,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGL,KAAK,CAACM,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,wBAAD,CAA0B,QAA1B;AAAmC,IAAA,KAAK,EAAED;AAA1C,kBACE,oBAAC,uBAAD,eAA6BD,KAA7B;AAAoC,IAAA,GAAG,EAAEC;AAAzC,KADF,CADF;AAKD;AAED,SACEE,sBADF,EAEEC,KAAK,IAAIC,YAFX,EAGEC,6BAHF,QAIO,8BAJP","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <GestureHandlerRefContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} ref={gestureRef} />\n </GestureHandlerRefContext.Provider>\n );\n}\n\nexport {\n GestureHandlerRootView,\n State as GestureState,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\n"]}
1
+ {"version":3,"sources":["GestureHandlerNative.tsx"],"names":["React","PanGestureHandler","PanGestureHandlerNative","GestureHandlerRefContext","props","gestureRef","useRef","GestureHandlerRootView","State","GestureState"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,iBAAiB,IAAIC,uBADvB,QAGO,8BAHP;AAKA,OAAOC,wBAAP,MAAqC,mCAArC;AAEA,OAAO,SAASF,iBAAT,CAA2BG,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGL,KAAK,CAACM,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,wBAAD,CAA0B,QAA1B;AAAmC,IAAA,KAAK,EAAED;AAA1C,kBACE,oBAAC,uBAAD,eAA6BD,KAA7B;AAAoC,IAAA,GAAG,EAAEC;AAAzC,KADF,CADF;AAKD;AAGD,SACEE,sBADF,EAEEC,KAAK,IAAIC,YAFX,QAGO,8BAHP","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <GestureHandlerRefContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} ref={gestureRef} />\n </GestureHandlerRefContext.Provider>\n );\n}\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nexport {\n GestureHandlerRootView,\n State as GestureState,\n} from 'react-native-gesture-handler';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Screens.tsx"],"names":["React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAmBC,IAAnB,QAA0C,cAA1C;AAEA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAZM;AAcP,OAAO,MAAMC,WAAW,GAAG,SAQrB;AAAA,MARsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAQtB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAhBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
1
+ {"version":3,"sources":["Screens.tsx"],"names":["React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAmBC,IAAnB,QAA0C,cAA1C;AAEA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAZM;AAcP,OAAO,MAAMC,WAAW,GAAG,SASrB;AAAA,MATsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAStB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAjBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n freezeOnBlur?: boolean;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
@@ -10,7 +10,7 @@ import getDistanceForDirection from '../../utils/getDistanceForDirection';
10
10
  import { MaybeScreen, MaybeScreenContainer } from '../Screens';
11
11
  import { getIsModalPresentation } from './Card';
12
12
  import CardContainer from './CardContainer';
13
- const EPSILON = 0.01;
13
+ const EPSILON = 1e-5;
14
14
  const STATE_INACTIVE = 0;
15
15
  const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
16
16
  const STATE_ON_TOP = 2;
@@ -388,7 +388,8 @@ export default class CardStack extends React.Component {
388
388
  headerShown = true,
389
389
  headerTransparent,
390
390
  headerStyle,
391
- headerTintColor
391
+ headerTintColor,
392
+ freezeOnBlur
392
393
  } = scene.descriptor.options;
393
394
  const safeAreaInsetTop = insets.top;
394
395
  const safeAreaInsetRight = insets.right;
@@ -419,6 +420,7 @@ export default class CardStack extends React.Component {
419
420
  style: StyleSheet.absoluteFill,
420
421
  enabled: detachInactiveScreens,
421
422
  active: isScreenActive,
423
+ freezeOnBlur: freezeOnBlur,
422
424
  pointerEvents: "box-none"
423
425
  }, /*#__PURE__*/React.createElement(CardContainer, {
424
426
  index: index,
@@ -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","headerDarkContent","isDark","flattenedHeaderStyle","backgroundColor","isNextScreenTransparent","detachCurrentScreen","absoluteFill","create","flex","position","zIndex"],"mappings":"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","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 'height' in style && 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 let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else {\n const flattenedHeaderStyle = StyleSheet.flatten(headerStyle);\n\n if (\n flattenedHeaderStyle &&\n 'backgroundColor' in flattenedHeaderStyle &&\n typeof flattenedHeaderStyle.backgroundColor === 'string'\n ) {\n headerDarkContent = !Color(\n flattenedHeaderStyle.backgroundColor\n ).isDark();\n }\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","freezeOnBlur","safeAreaInsetTop","safeAreaInsetRight","right","safeAreaInsetBottom","bottom","safeAreaInsetLeft","left","headerHeight","headerDarkContent","isDark","flattenedHeaderStyle","backgroundColor","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,YAAYF,KAAZ,IAAqB,OAAOA,KAAK,CAACE,MAAb,KAAwB,QAA7C,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,eAJI;AAKJC,QAAAA;AALI,UAMFzH,KAAK,CAACL,UAAN,CAAiBL,OANrB;AAQA,YAAMoI,gBAAgB,GAAGrH,MAAM,CAACQ,GAAhC;AACA,YAAM8G,kBAAkB,GAAGtH,MAAM,CAACuH,KAAlC;AACA,YAAMC,mBAAmB,GAAGxH,MAAM,CAACyH,MAAnC;AACA,YAAMC,iBAAiB,GAAG1H,MAAM,CAAC2H,IAAjC;AAEA,YAAMC,YAAY,GAChB7B,WAAW,KAAK,KAAhB,GAAwB7B,aAAa,CAACrD,KAAK,CAACC,GAAP,CAArC,GAAmD,CADrD;AAGA,UAAI+G,iBAAJ;;AAEA,UAAI9B,WAAJ,EAAiB;AACf,YAAI,OAAOoB,eAAP,KAA2B,QAA/B,EAAyC;AACvCU,UAAAA,iBAAiB,GAAGnK,KAAK,CAACyJ,eAAD,CAAL,CAAuBW,MAAvB,EAApB;AACD,SAFD,MAEO;AACL,gBAAMC,oBAAoB,GAAGjK,UAAU,CAAC6C,OAAX,CAAmBF,WAAnB,CAA7B;;AAEA,cACEsH,oBAAoB,IACpB,qBAAqBA,oBADrB,IAEA,OAAOA,oBAAoB,CAACC,eAA5B,KAAgD,QAHlD,EAIE;AACAH,YAAAA,iBAAiB,GAAG,CAACnK,KAAK,CACxBqK,oBAAoB,CAACC,eADG,CAAL,CAEnBF,MAFmB,EAArB;AAGD;AACF;AACF,OAjEiC,CAmElC;;;AACA,YAAMvI,kBAAkB,GAAGL,qBAAqB,CAACC,MAAD,EAASC,KAAT,CAAhD;AACA,YAAMU,OAAO,GAAGJ,UAAU,CACxBC,KADwB,EAExBJ,kBAFwB,EAGxBK,aAHwB,CAA1B;AAMA,YAAMqI,uBAAuB,GAC3B,YAAA9I,MAAM,CAACC,KAAK,GAAG,CAAT,CAAN,oDAAmBE,UAAnB,CAA8BL,OAA9B,CAAsC+B,YAAtC,MACA,kBAFF;AAIA,YAAMkH,mBAAmB,GACvB,aAAA/I,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,CAACqK,YAFpB;AAGE,QAAA,OAAO,EAAE3C,qBAHX;AAIE,QAAA,MAAM,EAAEuB,cAJV;AAKE,QAAA,YAAY,EAAEK,YALhB;AAME,QAAA,aAAa,EAAC;AANhB,sBAQE,oBAAC,aAAD;AACE,QAAA,KAAK,EAAEhI,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,EAAE0H,gBAVpB;AAWE,QAAA,kBAAkB,EAAEC,kBAXtB;AAYE,QAAA,mBAAmB,EAAEE,mBAZvB;AAaE,QAAA,iBAAiB,EAAEE,iBAbrB;AAcE,QAAA,cAAc,EAAErC,cAdlB;AAeE,QAAA,eAAe,EAAEE,eAfnB;AAgBE,QAAA,YAAY,EAAED,YAhBhB;AAiBE,QAAA,YAAY,EAAEsC,YAjBhB;AAkBE,QAAA,mBAAmB,EAAE3H,mBAlBvB;AAmBE,QAAA,oBAAoB,EAAE,KAAKuG,kBAnB7B;AAoBE,QAAA,gBAAgB,EAAE,KAAKH,gBApBzB;AAqBE,QAAA,eAAe,EAAE,KAAKC,eArBxB;AAsBE,QAAA,iBAAiB,EAAEuB,iBAtBrB;AAuBE,QAAA,sBAAsB,EACpBlC,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,EAAE6C,uBAhC3B;AAiCE,QAAA,mBAAmB,EAAEC;AAjCvB,QARF,CADF;AA8CD,KAjIA,CALH,CAFF,EA0IGvC,qBAAqB,GAAGQ,cAAH,GAAoB,IA1I5C,CADF;AA8ID;;AAtfkE;AAyfrE,MAAMM,MAAM,GAAG3I,UAAU,CAACsK,MAAX,CAAkB;AAC/BxB,EAAAA,SAAS,EAAE;AACTyB,IAAAA,IAAI,EAAE;AADG,GADoB;AAI/B1B,EAAAA,QAAQ,EAAE;AACR2B,IAAAA,QAAQ,EAAE,UADF;AAER9H,IAAAA,GAAG,EAAE,CAFG;AAGRmH,IAAAA,IAAI,EAAE,CAHE;AAIRJ,IAAAA,KAAK,EAAE;AAJC,GAJqB;AAU/Bb,EAAAA,QAAQ,EAAE;AACR6B,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 = 1e-5;\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 'height' in style && 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 freezeOnBlur,\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 let headerDarkContent: boolean | undefined;\n\n if (headerShown) {\n if (typeof headerTintColor === 'string') {\n headerDarkContent = Color(headerTintColor).isDark();\n } else {\n const flattenedHeaderStyle = StyleSheet.flatten(headerStyle);\n\n if (\n flattenedHeaderStyle &&\n 'backgroundColor' in flattenedHeaderStyle &&\n typeof flattenedHeaderStyle.backgroundColor === 'string'\n ) {\n headerDarkContent = !Color(\n flattenedHeaderStyle.backgroundColor\n ).isDark();\n }\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 freezeOnBlur={freezeOnBlur}\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"]}
@@ -286,6 +286,14 @@ export declare type StackNavigationOptions = StackHeaderOptions & Partial<Transi
286
286
  * Defaults to `true`.
287
287
  */
288
288
  keyboardHandlingEnabled?: boolean;
289
+ /**
290
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
291
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
292
+ * Requires `react-native-screens` version >=3.16.0.
293
+ *
294
+ * Only supported on iOS and Android.
295
+ */
296
+ freezeOnBlur?: boolean;
289
297
  };
290
298
  export declare type StackNavigationConfig = {
291
299
  /**
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { PanGestureHandlerProperties } from 'react-native-gesture-handler';
3
3
  export declare function PanGestureHandler(props: PanGestureHandlerProperties): JSX.Element;
4
- export { GestureHandlerRootView, State as GestureState, PanGestureHandlerGestureEvent, } from 'react-native-gesture-handler';
4
+ export type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';
5
+ export { GestureHandlerRootView, State as GestureState, } from 'react-native-gesture-handler';
@@ -8,4 +8,5 @@ export declare const MaybeScreen: ({ enabled, active, ...rest }: ViewProps & {
8
8
  enabled: boolean;
9
9
  active: 0 | 1 | Animated.AnimatedInterpolation;
10
10
  children: React.ReactNode;
11
+ freezeOnBlur?: boolean | undefined;
11
12
  }) => JSX.Element;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/stack",
3
3
  "description": "Stack navigator component for iOS and Android with animated transitions and gestures",
4
- "version": "6.2.3",
4
+ "version": "6.3.1",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -40,23 +40,23 @@
40
40
  "clean": "del lib"
41
41
  },
42
42
  "dependencies": {
43
- "@react-navigation/elements": "^1.3.5",
43
+ "@react-navigation/elements": "^1.3.6",
44
44
  "color": "^4.2.3",
45
45
  "warn-once": "^0.1.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@react-navigation/native": "^6.0.12",
48
+ "@react-navigation/native": "^6.0.13",
49
49
  "@testing-library/react-native": "^7.2.0",
50
50
  "@types/color": "^3.0.1",
51
- "@types/react": "^17.0.47",
52
- "@types/react-native": "~0.68.1",
51
+ "@types/react": "~18.0.0",
52
+ "@types/react-native": "~0.69.1",
53
53
  "del-cli": "^3.0.1",
54
- "react": "17.0.2",
55
- "react-native": "~0.68.2",
54
+ "react": "18.0.0",
55
+ "react-native": "0.69.5",
56
56
  "react-native-builder-bob": "^0.18.1",
57
- "react-native-gesture-handler": "~2.2.1",
58
- "react-native-safe-area-context": "4.2.4",
59
- "react-native-screens": "~3.11.1",
57
+ "react-native-gesture-handler": "~2.5.0",
58
+ "react-native-safe-area-context": "4.3.1",
59
+ "react-native-screens": "~3.15.0",
60
60
  "typescript": "^4.7.4"
61
61
  },
62
62
  "peerDependencies": {
@@ -81,5 +81,5 @@
81
81
  ]
82
82
  ]
83
83
  },
84
- "gitHead": "83aa392f1e13796d609c9df0afa44699ce4bacae"
84
+ "gitHead": "d20e565f8835596d76b0dbcc18d1ac46b27c3203"
85
85
  }
package/src/types.tsx CHANGED
@@ -333,6 +333,14 @@ export type StackNavigationOptions = StackHeaderOptions &
333
333
  * Defaults to `true`.
334
334
  */
335
335
  keyboardHandlingEnabled?: boolean;
336
+ /**
337
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
338
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
339
+ * Requires `react-native-screens` version >=3.16.0.
340
+ *
341
+ * Only supported on iOS and Android.
342
+ */
343
+ freezeOnBlur?: boolean;
336
344
  };
337
345
 
338
346
  export type StackNavigationConfig = {
@@ -16,8 +16,8 @@ export function PanGestureHandler(props: PanGestureHandlerProperties) {
16
16
  );
17
17
  }
18
18
 
19
+ export type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';
19
20
  export {
20
21
  GestureHandlerRootView,
21
22
  State as GestureState,
22
- PanGestureHandlerGestureEvent,
23
23
  } from 'react-native-gesture-handler';
@@ -31,6 +31,7 @@ export const MaybeScreen = ({
31
31
  enabled: boolean;
32
32
  active: 0 | 1 | Animated.AnimatedInterpolation;
33
33
  children: React.ReactNode;
34
+ freezeOnBlur?: boolean;
34
35
  }) => {
35
36
  if (Screens != null) {
36
37
  return (
@@ -81,7 +81,7 @@ type State = {
81
81
  headerHeights: Record<string, number>;
82
82
  };
83
83
 
84
- const EPSILON = 0.01;
84
+ const EPSILON = 1e-5;
85
85
 
86
86
  const STATE_INACTIVE = 0;
87
87
  const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
@@ -604,6 +604,7 @@ export default class CardStack extends React.Component<Props, State> {
604
604
  headerTransparent,
605
605
  headerStyle,
606
606
  headerTintColor,
607
+ freezeOnBlur,
607
608
  } = scene.descriptor.options;
608
609
 
609
610
  const safeAreaInsetTop = insets.top;
@@ -656,6 +657,7 @@ export default class CardStack extends React.Component<Props, State> {
656
657
  style={StyleSheet.absoluteFill}
657
658
  enabled={detachInactiveScreens}
658
659
  active={isScreenActive}
660
+ freezeOnBlur={freezeOnBlur}
659
661
  pointerEvents="box-none"
660
662
  >
661
663
  <CardContainer