react-native-screens 3.25.0 → 3.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +1 -1
  2. package/RNScreens.podspec +53 -32
  3. package/android/build.gradle +13 -11
  4. package/android/src/main/java/com/swmansion/rnscreens/FragmentHolder.kt +7 -0
  5. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +41 -10
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +35 -36
  7. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +7 -7
  8. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +21 -0
  9. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +46 -38
  10. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +22 -0
  11. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +40 -39
  12. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +35 -10
  13. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +15 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +6 -4
  15. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +11 -18
  16. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +1 -1
  17. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +1 -1
  18. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +23 -7
  19. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +3 -5
  20. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +3 -5
  21. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +3 -5
  22. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +26 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +3 -5
  24. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +3 -5
  25. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +4 -7
  26. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +7 -8
  27. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +3 -5
  28. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +3 -5
  29. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +3 -5
  30. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +5 -6
  31. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +3 -5
  32. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +3 -5
  33. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +3 -5
  34. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +4 -6
  35. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +3 -5
  36. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +12 -0
  37. package/ios/RNSScreen.h +5 -0
  38. package/ios/RNSScreen.mm +163 -7
  39. package/ios/RNSScreenStack.mm +18 -0
  40. package/ios/RNSScreenStackHeaderConfig.mm +17 -0
  41. package/ios/events/RNSHeaderHeightChangeEvent.h +8 -0
  42. package/ios/events/RNSHeaderHeightChangeEvent.mm +44 -0
  43. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  44. package/lib/commonjs/index.native.js +11 -11
  45. package/lib/commonjs/index.native.js.map +1 -1
  46. package/lib/commonjs/native-stack/index.js +14 -0
  47. package/lib/commonjs/native-stack/index.js.map +1 -1
  48. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +1 -1
  49. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  50. package/lib/commonjs/native-stack/types.js.map +1 -1
  51. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +13 -0
  52. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  53. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  54. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
  55. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
  56. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +19 -0
  57. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  58. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -2
  59. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  60. package/lib/commonjs/native-stack/views/HeaderConfig.js +2 -2
  61. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  62. package/lib/commonjs/native-stack/views/NativeStackView.js +39 -21
  63. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  64. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +13 -0
  65. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  66. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +37 -6
  67. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  68. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +2 -2
  69. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  70. package/lib/commonjs/reanimated/index.js +7 -0
  71. package/lib/commonjs/reanimated/index.js.map +1 -1
  72. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +19 -0
  73. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  74. package/lib/commonjs/types.js.map +1 -1
  75. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  76. package/lib/module/index.native.js +12 -12
  77. package/lib/module/index.native.js.map +1 -1
  78. package/lib/module/native-stack/index.js +2 -0
  79. package/lib/module/native-stack/index.js.map +1 -1
  80. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +1 -1
  81. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  82. package/lib/module/native-stack/types.js.map +1 -1
  83. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js +4 -0
  84. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  85. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  86. package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
  87. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
  88. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js +10 -0
  89. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  90. package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -2
  91. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  92. package/lib/module/native-stack/views/HeaderConfig.js +2 -2
  93. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  94. package/lib/module/native-stack/views/NativeStackView.js +40 -22
  95. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  96. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js +5 -0
  97. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  98. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +37 -6
  99. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  100. package/lib/module/reanimated/ReanimatedScreenProvider.js +2 -2
  101. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  102. package/lib/module/reanimated/index.js +1 -0
  103. package/lib/module/reanimated/index.js.map +1 -1
  104. package/lib/module/reanimated/useReanimatedHeaderHeight.js +10 -0
  105. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  106. package/lib/module/types.js.map +1 -1
  107. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +4 -0
  108. package/lib/typescript/native-stack/index.d.ts +2 -0
  109. package/lib/typescript/native-stack/types.d.ts +8 -0
  110. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +4 -0
  111. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +2 -0
  112. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
  113. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +4 -0
  114. package/lib/typescript/reanimated/index.d.ts +1 -0
  115. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +3 -0
  116. package/lib/typescript/types.d.ts +11 -0
  117. package/native-stack/README.md +16 -1
  118. package/package.json +36 -38
  119. package/src/fabric/ScreenNativeComponent.ts +5 -0
  120. package/src/index.native.tsx +17 -19
  121. package/src/native-stack/index.tsx +3 -0
  122. package/src/native-stack/types.tsx +10 -1
  123. package/src/native-stack/utils/AnimatedHeaderHeightContext.tsx +8 -0
  124. package/src/native-stack/utils/SafeAreaProviderCompat.tsx +1 -1
  125. package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
  126. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +15 -0
  127. package/src/native-stack/views/HeaderConfig.tsx +1 -2
  128. package/src/native-stack/views/NativeStackView.tsx +78 -44
  129. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +7 -0
  130. package/src/reanimated/ReanimatedNativeStackScreen.tsx +58 -11
  131. package/src/reanimated/index.tsx +1 -0
  132. package/src/reanimated/useReanimatedHeaderHeight.tsx +14 -0
  133. package/src/types.tsx +14 -0
  134. package/windows/RNScreens/RNScreens.vcxproj +6 -3
  135. package/windows/RNScreens/ScreenStack.cpp +16 -0
  136. package/windows/RNScreens/ScreenStack.h +1 -0
  137. /package/ios/{RNSScreenViewEvent.h → events/RNSScreenViewEvent.h} +0 -0
  138. /package/ios/{RNSScreenViewEvent.mm → events/RNSScreenViewEvent.mm} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["useTheme","React","Platform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","useBackPressSubscription","processFonts","HeaderConfig","_ref","backButtonImage","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerCenter","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerLeft","headerRight","headerShown","headerStyle","headerTintColor","headerTitle","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","route","searchBar","title","colors","tintColor","primary","handleAttached","handleDetached","clearSubscription","createSubscription","onBackPress","isDisabled","disableBackButtonOverride","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","useEffect","processedSearchBarOptions","useMemo","OS","onFocus","_searchBar$onFocus","_len","arguments","length","args","Array","_key","call","onClose","_searchBar$onClose","_len2","_key2","createElement","backgroundColor","card","backTitle","backTitleFontSize","fontSize","backTitleVisible","blurEffect","color","hidden","hideBackButton","hideShadow","largeTitle","largeTitleBackgroundColor","largeTitleColor","largeTitleFontSize","largeTitleFontWeight","fontWeight","largeTitleHideShadow","undefined","name","titleColor","text","titleFontSize","titleFontWeight","topInsetEnabled","translucent","onAttached","onDetached","key","source"],"sources":["HeaderConfig.tsx"],"sourcesContent":["import { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport {\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n SearchBarProps,\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n} from 'react-native-screens';\nimport { NativeStackNavigationOptions } from '../types';\nimport { useBackPressSubscription } from '../utils/useBackPressSubscription';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n route: Route<string>;\n};\n\nexport default function HeaderConfig({\n backButtonImage,\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle = {},\n headerBackTitleVisible = true,\n headerCenter,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle = {},\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle = {},\n headerLeft,\n headerRight,\n headerShown,\n headerStyle = {},\n headerTintColor,\n headerTitle,\n headerTitleStyle = {},\n headerTopInsetEnabled = true,\n headerTranslucent,\n route,\n searchBar,\n title,\n}: Props): JSX.Element {\n const { colors } = useTheme();\n const tintColor = headerTintColor ?? colors.primary;\n\n // We need to use back press subscription here to override back button behavior on JS side.\n // Because screens are usually used with react-navigation and this library overrides back button\n // we need to handle it first in case when search bar is open\n const {\n handleAttached,\n handleDetached,\n clearSubscription,\n createSubscription,\n } = useBackPressSubscription({\n onBackPress: executeNativeBackPress,\n isDisabled: !searchBar || !!searchBar.disableBackButtonOverride,\n });\n\n const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =\n processFonts([\n headerBackTitleStyle.fontFamily,\n headerLargeTitleStyle.fontFamily,\n headerTitleStyle.fontFamily,\n ]);\n\n // We want to clear clearSubscription only when components unmounts or search bar changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => clearSubscription, [searchBar]);\n\n const processedSearchBarOptions = React.useMemo(() => {\n if (\n Platform.OS === 'android' &&\n searchBar &&\n !searchBar.disableBackButtonOverride\n ) {\n const onFocus: SearchBarProps['onFocus'] = (...args) => {\n createSubscription();\n searchBar.onFocus?.(...args);\n };\n const onClose: SearchBarProps['onClose'] = (...args) => {\n clearSubscription();\n searchBar.onClose?.(...args);\n };\n\n return { ...searchBar, onFocus, onClose };\n }\n return searchBar;\n }, [searchBar, createSubscription, clearSubscription]);\n\n return (\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card\n }\n backTitle={headerBackTitle}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyle.fontSize}\n backTitleVisible={headerBackTitleVisible}\n blurEffect={headerStyle.blurEffect}\n color={tintColor}\n direction={direction}\n disableBackButtonMenu={disableBackButtonMenu}\n hidden={headerShown === false}\n hideBackButton={headerHideBackButton}\n hideShadow={headerHideShadow}\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyle.backgroundColor}\n largeTitleColor={headerLargeTitleStyle.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyle.fontSize}\n largeTitleFontWeight={headerLargeTitleStyle.fontWeight}\n largeTitleHideShadow={headerLargeTitleHideShadow}\n title={\n headerTitle !== undefined\n ? headerTitle\n : title !== undefined\n ? title\n : route.name\n }\n titleColor={\n headerTitleStyle.color !== undefined\n ? headerTitleStyle.color\n : headerTintColor !== undefined\n ? headerTintColor\n : colors.text\n }\n titleFontFamily={titleFontFamily}\n titleFontSize={headerTitleStyle.fontSize}\n titleFontWeight={headerTitleStyle.fontWeight}\n topInsetEnabled={headerTopInsetEnabled}\n translucent={headerTranslucent === true}\n onAttached={handleAttached}\n onDetached={handleDetached}\n >\n {headerRight !== undefined ? (\n <ScreenStackHeaderRightView>\n {headerRight({ tintColor })}\n </ScreenStackHeaderRightView>\n ) : null}\n {backButtonImage !== undefined ? (\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={backButtonImage}\n />\n ) : null}\n {headerLeft !== undefined ? (\n <ScreenStackHeaderLeftView>\n {headerLeft({ tintColor })}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerCenter !== undefined ? (\n <ScreenStackHeaderCenterView>\n {headerCenter({ tintColor })}\n </ScreenStackHeaderCenterView>\n ) : null}\n {isSearchBarAvailableForCurrentPlatform &&\n processedSearchBarOptions !== undefined ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...processedSearchBarOptions} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useTheme","React","Platform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","useBackPressSubscription","processFonts","HeaderConfig","_ref","backButtonImage","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerCenter","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerLeft","headerRight","headerShown","headerStyle","headerTintColor","headerTitle","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","route","searchBar","title","colors","tintColor","primary","handleAttached","handleDetached","clearSubscription","createSubscription","onBackPress","isDisabled","disableBackButtonOverride","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","useEffect","processedSearchBarOptions","useMemo","OS","onFocus","_searchBar$onFocus","_len","arguments","length","args","Array","_key","call","onClose","_searchBar$onClose","_len2","_key2","createElement","backgroundColor","card","backTitle","backTitleFontSize","fontSize","backTitleVisible","blurEffect","color","hidden","hideBackButton","hideShadow","largeTitle","largeTitleBackgroundColor","largeTitleColor","largeTitleFontSize","largeTitleFontWeight","fontWeight","largeTitleHideShadow","undefined","name","titleColor","text","titleFontSize","titleFontWeight","topInsetEnabled","translucent","onAttached","onDetached","key","source"],"sources":["HeaderConfig.tsx"],"sourcesContent":["import { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport {\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n SearchBarProps,\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n} from 'react-native-screens';\nimport { NativeStackNavigationOptions } from '../types';\nimport { useBackPressSubscription } from '../utils/useBackPressSubscription';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n route: Route<string>;\n};\n\nexport default function HeaderConfig({\n backButtonImage,\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle = {},\n headerBackTitleVisible = true,\n headerCenter,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle = {},\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle = {},\n headerLeft,\n headerRight,\n headerShown,\n headerStyle = {},\n headerTintColor,\n headerTitle,\n headerTitleStyle = {},\n headerTopInsetEnabled = true,\n headerTranslucent,\n route,\n searchBar,\n title,\n}: Props): JSX.Element {\n const { colors } = useTheme();\n const tintColor = headerTintColor ?? colors.primary;\n\n // We need to use back press subscription here to override back button behavior on JS side.\n // Because screens are usually used with react-navigation and this library overrides back button\n // we need to handle it first in case when search bar is open\n const {\n handleAttached,\n handleDetached,\n clearSubscription,\n createSubscription,\n } = useBackPressSubscription({\n onBackPress: executeNativeBackPress,\n isDisabled: !searchBar || !!searchBar.disableBackButtonOverride,\n });\n\n const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =\n processFonts([\n headerBackTitleStyle.fontFamily,\n headerLargeTitleStyle.fontFamily,\n headerTitleStyle.fontFamily,\n ]);\n\n // We want to clear clearSubscription only when components unmounts or search bar changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => clearSubscription, [searchBar]);\n\n const processedSearchBarOptions = React.useMemo(() => {\n if (\n Platform.OS === 'android' &&\n searchBar &&\n !searchBar.disableBackButtonOverride\n ) {\n const onFocus: SearchBarProps['onFocus'] = (...args) => {\n createSubscription();\n searchBar.onFocus?.(...args);\n };\n const onClose: SearchBarProps['onClose'] = (...args) => {\n clearSubscription();\n searchBar.onClose?.(...args);\n };\n\n return { ...searchBar, onFocus, onClose };\n }\n return searchBar;\n }, [searchBar, createSubscription, clearSubscription]);\n\n return (\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card\n }\n backTitle={headerBackTitle}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyle.fontSize}\n backTitleVisible={headerBackTitleVisible}\n blurEffect={headerStyle.blurEffect}\n color={tintColor}\n direction={direction}\n disableBackButtonMenu={disableBackButtonMenu}\n hidden={headerShown === false}\n hideBackButton={headerHideBackButton}\n hideShadow={headerHideShadow}\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyle.backgroundColor}\n largeTitleColor={headerLargeTitleStyle.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyle.fontSize}\n largeTitleFontWeight={headerLargeTitleStyle.fontWeight}\n largeTitleHideShadow={headerLargeTitleHideShadow}\n title={\n headerTitle !== undefined\n ? headerTitle\n : title !== undefined\n ? title\n : route.name\n }\n titleColor={\n headerTitleStyle.color !== undefined\n ? headerTitleStyle.color\n : headerTintColor !== undefined\n ? headerTintColor\n : colors.text\n }\n titleFontFamily={titleFontFamily}\n titleFontSize={headerTitleStyle.fontSize}\n titleFontWeight={headerTitleStyle.fontWeight}\n topInsetEnabled={headerTopInsetEnabled}\n translucent={headerTranslucent === true}\n onAttached={handleAttached}\n onDetached={handleDetached}>\n {headerRight !== undefined ? (\n <ScreenStackHeaderRightView>\n {headerRight({ tintColor })}\n </ScreenStackHeaderRightView>\n ) : null}\n {backButtonImage !== undefined ? (\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={backButtonImage}\n />\n ) : null}\n {headerLeft !== undefined ? (\n <ScreenStackHeaderLeftView>\n {headerLeft({ tintColor })}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerCenter !== undefined ? (\n <ScreenStackHeaderCenterView>\n {headerCenter({ tintColor })}\n </ScreenStackHeaderCenterView>\n ) : null}\n {isSearchBarAvailableForCurrentPlatform &&\n processedSearchBarOptions !== undefined ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...processedSearchBarOptions} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
  import * as React from 'react';
3
- import { Platform, StyleSheet, View } from 'react-native';
3
+ import { Animated, Platform, StyleSheet, View } from 'react-native';
4
4
  // @ts-ignore Getting private component
5
5
  // eslint-disable-next-line import/no-named-as-default, import/default, import/no-named-as-default-member, import/namespace
6
6
  import AppContainer from 'react-native/Libraries/ReactNative/AppContainer';
@@ -11,7 +11,9 @@ import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-cont
11
11
  import HeaderConfig from './HeaderConfig';
12
12
  import SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';
13
13
  import getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';
14
+ import getStatusBarHeight from '../utils/getStatusBarHeight';
14
15
  import HeaderHeightContext from '../utils/HeaderHeightContext';
16
+ import AnimatedHeaderHeightContext from '../utils/AnimatedHeaderHeightContext';
15
17
  const isAndroid = Platform.OS === 'android';
16
18
  let Container = View;
17
19
  if (__DEV__) {
@@ -29,7 +31,7 @@ if (__DEV__) {
29
31
  Container = DebugContainer;
30
32
  }
31
33
  const MaybeNestedStack = _ref => {
32
- var _options$headerLargeT;
34
+ var _options$statusBarTra, _options$headerLargeT;
33
35
  let {
34
36
  options,
35
37
  route,
@@ -65,20 +67,17 @@ const MaybeNestedStack = _ref => {
65
67
  }, children);
66
68
  const dimensions = useSafeAreaFrame();
67
69
  const topInset = useSafeAreaInsets().top;
68
- let statusBarHeight = topInset;
69
- const hasDynamicIsland = Platform.OS === 'ios' && topInset === 59;
70
- const isLargeHeader = (_options$headerLargeT = options.headerLargeTitle) !== null && _options$headerLargeT !== void 0 ? _options$headerLargeT : false;
71
- if (hasDynamicIsland) {
72
- // On models with Dynamic Island the status bar height is smaller than the safe area top inset.
73
- statusBarHeight = 54;
74
- }
75
- const headerHeight = getDefaultHeaderHeight(dimensions, statusBarHeight, stackPresentation, isLargeHeader);
70
+ const isStatusBarTranslucent = (_options$statusBarTra = options.statusBarTranslucent) !== null && _options$statusBarTra !== void 0 ? _options$statusBarTra : false;
71
+ const statusBarHeight = getStatusBarHeight(topInset, dimensions, isStatusBarTranslucent);
72
+ const hasLargeHeader = (_options$headerLargeT = options.headerLargeTitle) !== null && _options$headerLargeT !== void 0 ? _options$headerLargeT : false;
73
+ const headerHeight = getDefaultHeaderHeight(dimensions, statusBarHeight, stackPresentation, hasLargeHeader);
76
74
  if (isHeaderInModal) {
77
75
  return /*#__PURE__*/React.createElement(ScreenStack, {
78
76
  style: styles.container
79
77
  }, /*#__PURE__*/React.createElement(Screen, {
80
78
  enabled: true,
81
79
  isNativeStack: true,
80
+ hasLargeHeader: hasLargeHeader,
82
81
  style: StyleSheet.absoluteFill
83
82
  }, /*#__PURE__*/React.createElement(HeaderHeightContext.Provider, {
84
83
  value: headerHeight
@@ -89,7 +88,7 @@ const MaybeNestedStack = _ref => {
89
88
  return content;
90
89
  };
91
90
  const RouteView = _ref2 => {
92
- var _options$headerLargeT2;
91
+ var _options$statusBarTra2, _options$headerLargeT2;
93
92
  let {
94
93
  descriptors,
95
94
  route,
@@ -153,18 +152,23 @@ const RouteView = _ref2 => {
153
152
  // for navigator with first screen as `modal` and the next as `push`
154
153
  stackPresentation = 'push';
155
154
  }
156
- const isHeaderInPush = isAndroid ? headerShown : stackPresentation === 'push' && headerShown !== false;
157
155
  const dimensions = useSafeAreaFrame();
158
156
  const topInset = useSafeAreaInsets().top;
159
- let statusBarHeight = topInset;
160
- const hasDynamicIsland = Platform.OS === 'ios' && topInset === 59;
161
- const isLargeHeader = (_options$headerLargeT2 = options.headerLargeTitle) !== null && _options$headerLargeT2 !== void 0 ? _options$headerLargeT2 : false;
162
- if (hasDynamicIsland) {
163
- // On models with Dynamic Island the status bar height is smaller than the safe area top inset.
164
- statusBarHeight = 54;
165
- }
166
- const headerHeight = getDefaultHeaderHeight(dimensions, statusBarHeight, stackPresentation, isLargeHeader);
157
+ const isStatusBarTranslucent = (_options$statusBarTra2 = options.statusBarTranslucent) !== null && _options$statusBarTra2 !== void 0 ? _options$statusBarTra2 : false;
158
+ const statusBarHeight = getStatusBarHeight(topInset, dimensions, isStatusBarTranslucent);
159
+ const hasLargeHeader = (_options$headerLargeT2 = options.headerLargeTitle) !== null && _options$headerLargeT2 !== void 0 ? _options$headerLargeT2 : false;
160
+ const defaultHeaderHeight = getDefaultHeaderHeight(dimensions, statusBarHeight, stackPresentation, hasLargeHeader);
167
161
  const parentHeaderHeight = React.useContext(HeaderHeightContext);
162
+ const isHeaderInPush = isAndroid ? headerShown : stackPresentation === 'push' && headerShown !== false;
163
+ const staticHeaderHeight = isHeaderInPush !== false ? defaultHeaderHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0;
164
+
165
+ // We need to ensure the first retrieved header height will be cached and set in animatedHeaderHeight.
166
+ // We're caching the header height here, as on iOS native side events are not always coming to the JS on first notify.
167
+ // TODO: Check why first event is not being received once it is cached on the native side.
168
+ const cachedAnimatedHeaderHeight = React.useRef(defaultHeaderHeight);
169
+ const animatedHeaderHeight = React.useRef(new Animated.Value(staticHeaderHeight, {
170
+ useNativeDriver: true
171
+ })).current;
168
172
  const Screen = React.useContext(ScreenContext);
169
173
  const {
170
174
  dark
@@ -173,6 +177,7 @@ const RouteView = _ref2 => {
173
177
  key: route.key,
174
178
  enabled: true,
175
179
  isNativeStack: true,
180
+ hasLargeHeader: hasLargeHeader,
176
181
  style: StyleSheet.absoluteFill,
177
182
  sheetAllowedDetents: sheetAllowedDetents,
178
183
  sheetLargestUndimmedDetent: sheetLargestUndimmedDetent,
@@ -247,6 +252,17 @@ const RouteView = _ref2 => {
247
252
  target: route.key
248
253
  });
249
254
  },
255
+ onHeaderHeightChange: e => {
256
+ const headerHeight = e.nativeEvent.headerHeight;
257
+ if (cachedAnimatedHeaderHeight.current !== headerHeight) {
258
+ // Currently, we're setting value by Animated#setValue, because we want to cache animated value.
259
+ // Also, in React Native 0.72 there was a bug on Fabric causing a large delay between the screen transition,
260
+ // which should not occur.
261
+ // TODO: Check if it's possible to replace animated#setValue to Animated#event.
262
+ animatedHeaderHeight.setValue(headerHeight);
263
+ cachedAnimatedHeaderHeight.current = headerHeight;
264
+ }
265
+ },
250
266
  onDismissed: e => {
251
267
  navigation.emit({
252
268
  type: 'dismiss',
@@ -265,8 +281,10 @@ const RouteView = _ref2 => {
265
281
  target: route.key
266
282
  });
267
283
  }
284
+ }, /*#__PURE__*/React.createElement(AnimatedHeaderHeightContext.Provider, {
285
+ value: animatedHeaderHeight
268
286
  }, /*#__PURE__*/React.createElement(HeaderHeightContext.Provider, {
269
- value: isHeaderInPush !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
287
+ value: staticHeaderHeight
270
288
  }, /*#__PURE__*/React.createElement(MaybeNestedStack, {
271
289
  options: options,
272
290
  route: route,
@@ -274,7 +292,7 @@ const RouteView = _ref2 => {
274
292
  }, renderScene()), /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
275
293
  route: route,
276
294
  headerShown: isHeaderInPush
277
- }))));
295
+ })))));
278
296
  };
279
297
  function NativeStackViewInner(_ref3) {
280
298
  let {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","StyleSheet","View","AppContainer","warnOnce","ScreenStack","ScreenContext","StackActions","useTheme","useSafeAreaFrame","useSafeAreaInsets","HeaderConfig","SafeAreaProviderCompat","getDefaultHeaderHeight","HeaderHeightContext","isAndroid","OS","Container","__DEV__","DebugContainer","props","stackPresentation","rest","createElement","MaybeNestedStack","_ref","_options$headerLargeT","options","route","children","colors","headerShown","contentStyle","Screen","useContext","isHeaderInModal","headerShownPreviousRef","useRef","useEffect","current","name","content","style","styles","container","backgroundColor","background","collapsable","dimensions","topInset","top","statusBarHeight","hasDynamicIsland","isLargeHeader","headerLargeTitle","headerHeight","enabled","isNativeStack","absoluteFill","Provider","value","_extends","RouteView","_ref2","_options$headerLargeT2","descriptors","index","navigation","stateKey","render","renderScene","key","gestureEnabled","hideKeyboardOnSwipe","homeIndicatorHidden","sheetAllowedDetents","sheetLargestUndimmedDetent","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","nativeBackButtonDismissalEnabled","navigationBarColor","navigationBarHidden","replaceAnimation","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","statusBarTranslucent","swipeDirection","transitionDuration","freezeOnBlur","customAnimationOnSwipe","fullScreenSwipeEnabled","gestureResponseDistance","stackAnimation","undefined","isHeaderInPush","parentHeaderHeight","dark","onHeaderBackButtonClicked","dispatch","pop","source","target","onWillAppear","emit","type","data","closing","onWillDisappear","onAppear","onDisappear","onDismissed","e","dismissCount","nativeEvent","onGestureCancel","NativeStackViewInner","_ref3","state","routes","map","NativeStackView","create","flex"],"sources":["NativeStackView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Platform, StyleSheet, View, ViewProps } from 'react-native';\n// @ts-ignore Getting private component\n// eslint-disable-next-line import/no-named-as-default, import/default, import/no-named-as-default-member, import/namespace\nimport AppContainer from 'react-native/Libraries/ReactNative/AppContainer';\nimport warnOnce from 'warn-once';\nimport {\n ScreenStack,\n StackPresentationTypes,\n ScreenContext,\n} from 'react-native-screens';\nimport {\n ParamListBase,\n StackActions,\n StackNavigationState,\n useTheme,\n Route,\n NavigationState,\n PartialState,\n} from '@react-navigation/native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\n\nimport {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport HeaderConfig from './HeaderConfig';\nimport SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';\nimport getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';\nimport HeaderHeightContext from '../utils/HeaderHeightContext';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet Container = View;\n\nif (__DEV__) {\n const DebugContainer = (\n props: ViewProps & { stackPresentation: StackPresentationTypes }\n ) => {\n const { stackPresentation, ...rest } = props;\n if (Platform.OS === 'ios' && stackPresentation !== 'push') {\n return (\n <AppContainer>\n <View {...rest} />\n </AppContainer>\n );\n }\n return <View {...rest} />;\n };\n // @ts-ignore Wrong props\n Container = DebugContainer;\n}\n\nconst MaybeNestedStack = ({\n options,\n route,\n stackPresentation,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n stackPresentation: StackPresentationTypes;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { headerShown = true, contentStyle } = options;\n\n const Screen = React.useContext(ScreenContext);\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' && headerShown === true;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n stackPresentation !== 'push' &&\n headerShownPreviousRef.current !== headerShown,\n `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`\n );\n\n headerShownPreviousRef.current = headerShown;\n }, [headerShown, stackPresentation, route.name]);\n\n const content = (\n <Container\n style={[\n styles.container,\n stackPresentation !== 'transparentModal' &&\n stackPresentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n // @ts-ignore Wrong props passed to View\n stackPresentation={stackPresentation}\n // This view must *not* be flattened.\n // See https://github.com/software-mansion/react-native-screens/pull/1825\n // for detailed explanation.\n collapsable={false}\n >\n {children}\n </Container>\n );\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n let statusBarHeight = topInset;\n const hasDynamicIsland = Platform.OS === 'ios' && topInset === 59;\n const isLargeHeader = options.headerLargeTitle ?? false;\n if (hasDynamicIsland) {\n // On models with Dynamic Island the status bar height is smaller than the safe area top inset.\n statusBarHeight = 54;\n }\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n statusBarHeight,\n stackPresentation,\n isLargeHeader\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled isNativeStack style={StyleSheet.absoluteFill}>\n <HeaderHeightContext.Provider value={headerHeight}>\n <HeaderConfig {...options} route={route} />\n {content}\n </HeaderHeightContext.Provider>\n </Screen>\n </ScreenStack>\n );\n }\n return content;\n};\n\ntype NavigationRoute<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]> & {\n state?: NavigationState | PartialState<NavigationState>;\n};\n\nconst RouteView = ({\n descriptors,\n route,\n index,\n navigation,\n stateKey,\n}: {\n descriptors: NativeStackDescriptorMap;\n route: NavigationRoute<ParamListBase, string>;\n index: number;\n navigation: NativeStackNavigationHelpers;\n stateKey: string;\n}) => {\n const { options, render: renderScene } = descriptors[route.key];\n const {\n gestureEnabled,\n headerShown,\n hideKeyboardOnSwipe,\n homeIndicatorHidden,\n sheetAllowedDetents = 'large',\n sheetLargestUndimmedDetent = 'all',\n sheetGrabberVisible = false,\n sheetCornerRadius = -1.0,\n sheetExpandsWhenScrolledToEdge = true,\n nativeBackButtonDismissalEnabled = false,\n navigationBarColor,\n navigationBarHidden,\n replaceAnimation = 'pop',\n screenOrientation,\n statusBarAnimation,\n statusBarColor,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n swipeDirection = 'horizontal',\n transitionDuration,\n freezeOnBlur,\n } = options;\n\n let {\n customAnimationOnSwipe,\n fullScreenSwipeEnabled,\n gestureResponseDistance,\n stackAnimation,\n stackPresentation = 'push',\n } = options;\n\n if (swipeDirection === 'vertical') {\n // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnSwipe` needs to be set to `true` so the `stackAnimation` set by user can be used,\n // otherwise `simple_push` will be used.\n // Also, the default animation for this direction seems to be `slide_from_bottom`.\n if (fullScreenSwipeEnabled === undefined) {\n fullScreenSwipeEnabled = true;\n }\n if (customAnimationOnSwipe === undefined) {\n customAnimationOnSwipe = true;\n }\n if (stackAnimation === undefined) {\n stackAnimation = 'slide_from_bottom';\n }\n }\n\n if (index === 0) {\n // first screen should always be treated as `push`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `push`\n stackPresentation = 'push';\n }\n\n const isHeaderInPush = isAndroid\n ? headerShown\n : stackPresentation === 'push' && headerShown !== false;\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n let statusBarHeight = topInset;\n const hasDynamicIsland = Platform.OS === 'ios' && topInset === 59;\n const isLargeHeader = options.headerLargeTitle ?? false;\n\n if (hasDynamicIsland) {\n // On models with Dynamic Island the status bar height is smaller than the safe area top inset.\n statusBarHeight = 54;\n }\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n statusBarHeight,\n stackPresentation,\n isLargeHeader\n );\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const Screen = React.useContext(ScreenContext);\n\n const { dark } = useTheme();\n\n return (\n <Screen\n key={route.key}\n enabled\n isNativeStack\n style={StyleSheet.absoluteFill}\n sheetAllowedDetents={sheetAllowedDetents}\n sheetLargestUndimmedDetent={sheetLargestUndimmedDetent}\n sheetGrabberVisible={sheetGrabberVisible}\n sheetCornerRadius={sheetCornerRadius}\n sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}\n customAnimationOnSwipe={customAnimationOnSwipe}\n freezeOnBlur={freezeOnBlur}\n fullScreenSwipeEnabled={fullScreenSwipeEnabled}\n hideKeyboardOnSwipe={hideKeyboardOnSwipe}\n homeIndicatorHidden={homeIndicatorHidden}\n gestureEnabled={isAndroid ? false : gestureEnabled}\n gestureResponseDistance={gestureResponseDistance}\n nativeBackButtonDismissalEnabled={nativeBackButtonDismissalEnabled}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={replaceAnimation}\n screenOrientation={screenOrientation}\n stackAnimation={stackAnimation}\n stackPresentation={stackPresentation}\n statusBarAnimation={statusBarAnimation}\n statusBarColor={statusBarColor}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle ?? (dark ? 'light' : 'dark')}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={swipeDirection}\n transitionDuration={transitionDuration}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: stateKey,\n });\n }}\n onWillAppear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: false },\n target: route.key,\n });\n }}\n onWillDisappear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: true },\n target: route.key,\n });\n }}\n onAppear={() => {\n navigation.emit({\n type: 'appear',\n target: route.key,\n });\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: false },\n target: route.key,\n });\n }}\n onDisappear={() => {\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: true },\n target: route.key,\n });\n }}\n onDismissed={(e) => {\n navigation.emit({\n type: 'dismiss',\n target: route.key,\n });\n\n const dismissCount =\n e.nativeEvent.dismissCount > 0 ? e.nativeEvent.dismissCount : 1;\n\n navigation.dispatch({\n ...StackActions.pop(dismissCount),\n source: route.key,\n target: stateKey,\n });\n }}\n onGestureCancel={() => {\n navigation.emit({\n type: 'gestureCancel',\n target: route.key,\n });\n }}\n >\n <HeaderHeightContext.Provider\n value={\n isHeaderInPush !== false ? headerHeight : parentHeaderHeight ?? 0\n }\n >\n <MaybeNestedStack\n options={options}\n route={route}\n stackPresentation={stackPresentation}\n >\n {renderScene()}\n </MaybeNestedStack>\n {/* HeaderConfig must not be first child of a Screen. \n See https://github.com/software-mansion/react-native-screens/pull/1825\n for detailed explanation */}\n <HeaderConfig {...options} route={route} headerShown={isHeaderInPush} />\n </HeaderHeightContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({\n state,\n navigation,\n descriptors,\n}: Props): JSX.Element {\n const { key, routes } = state;\n\n return (\n <ScreenStack style={styles.container}>\n {routes.map((route, index) => (\n <RouteView\n key={route.key}\n descriptors={descriptors}\n route={route}\n index={index}\n navigation={navigation}\n stateKey={key}\n />\n ))}\n </ScreenStack>\n );\n}\n\nexport default function NativeStackView(props: Props) {\n return (\n <SafeAreaProviderCompat>\n <NativeStackViewInner {...props} />\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Animated","Platform","StyleSheet","View","AppContainer","warnOnce","ScreenStack","ScreenContext","StackActions","useTheme","useSafeAreaFrame","useSafeAreaInsets","HeaderConfig","SafeAreaProviderCompat","getDefaultHeaderHeight","getStatusBarHeight","HeaderHeightContext","AnimatedHeaderHeightContext","isAndroid","OS","Container","__DEV__","DebugContainer","props","stackPresentation","rest","createElement","MaybeNestedStack","_ref","_options$statusBarTra","_options$headerLargeT","options","route","children","colors","headerShown","contentStyle","Screen","useContext","isHeaderInModal","headerShownPreviousRef","useRef","useEffect","current","name","content","style","styles","container","backgroundColor","background","collapsable","dimensions","topInset","top","isStatusBarTranslucent","statusBarTranslucent","statusBarHeight","hasLargeHeader","headerLargeTitle","headerHeight","enabled","isNativeStack","absoluteFill","Provider","value","_extends","RouteView","_ref2","_options$statusBarTra2","_options$headerLargeT2","descriptors","index","navigation","stateKey","render","renderScene","key","gestureEnabled","hideKeyboardOnSwipe","homeIndicatorHidden","sheetAllowedDetents","sheetLargestUndimmedDetent","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","nativeBackButtonDismissalEnabled","navigationBarColor","navigationBarHidden","replaceAnimation","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","swipeDirection","transitionDuration","freezeOnBlur","customAnimationOnSwipe","fullScreenSwipeEnabled","gestureResponseDistance","stackAnimation","undefined","defaultHeaderHeight","parentHeaderHeight","isHeaderInPush","staticHeaderHeight","cachedAnimatedHeaderHeight","animatedHeaderHeight","Value","useNativeDriver","dark","onHeaderBackButtonClicked","dispatch","pop","source","target","onWillAppear","emit","type","data","closing","onWillDisappear","onAppear","onDisappear","onHeaderHeightChange","e","nativeEvent","setValue","onDismissed","dismissCount","onGestureCancel","NativeStackViewInner","_ref3","state","routes","map","NativeStackView","create","flex"],"sources":["NativeStackView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Animated, Platform, StyleSheet, View, ViewProps } from 'react-native';\n// @ts-ignore Getting private component\n// eslint-disable-next-line import/no-named-as-default, import/default, import/no-named-as-default-member, import/namespace\nimport AppContainer from 'react-native/Libraries/ReactNative/AppContainer';\nimport warnOnce from 'warn-once';\nimport {\n ScreenStack,\n StackPresentationTypes,\n ScreenContext,\n} from 'react-native-screens';\nimport {\n ParamListBase,\n StackActions,\n StackNavigationState,\n useTheme,\n Route,\n NavigationState,\n PartialState,\n} from '@react-navigation/native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport HeaderConfig from './HeaderConfig';\nimport SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';\nimport getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';\nimport getStatusBarHeight from '../utils/getStatusBarHeight';\nimport HeaderHeightContext from '../utils/HeaderHeightContext';\nimport AnimatedHeaderHeightContext from '../utils/AnimatedHeaderHeightContext';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet Container = View;\n\nif (__DEV__) {\n const DebugContainer = (\n props: ViewProps & { stackPresentation: StackPresentationTypes }\n ) => {\n const { stackPresentation, ...rest } = props;\n if (Platform.OS === 'ios' && stackPresentation !== 'push') {\n return (\n <AppContainer>\n <View {...rest} />\n </AppContainer>\n );\n }\n return <View {...rest} />;\n };\n // @ts-ignore Wrong props\n Container = DebugContainer;\n}\n\nconst MaybeNestedStack = ({\n options,\n route,\n stackPresentation,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n stackPresentation: StackPresentationTypes;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { headerShown = true, contentStyle } = options;\n\n const Screen = React.useContext(ScreenContext);\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' && headerShown === true;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n stackPresentation !== 'push' &&\n headerShownPreviousRef.current !== headerShown,\n `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`\n );\n\n headerShownPreviousRef.current = headerShown;\n }, [headerShown, stackPresentation, route.name]);\n\n const content = (\n <Container\n style={[\n styles.container,\n stackPresentation !== 'transparentModal' &&\n stackPresentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n // @ts-ignore Wrong props passed to View\n stackPresentation={stackPresentation}\n // This view must *not* be flattened.\n // See https://github.com/software-mansion/react-native-screens/pull/1825\n // for detailed explanation.\n collapsable={false}>\n {children}\n </Container>\n );\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n const isStatusBarTranslucent = options.statusBarTranslucent ?? false;\n const statusBarHeight = getStatusBarHeight(\n topInset,\n dimensions,\n isStatusBarTranslucent\n );\n\n const hasLargeHeader = options.headerLargeTitle ?? false;\n\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n statusBarHeight,\n stackPresentation,\n hasLargeHeader\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen\n enabled\n isNativeStack\n hasLargeHeader={hasLargeHeader}\n style={StyleSheet.absoluteFill}>\n <HeaderHeightContext.Provider value={headerHeight}>\n <HeaderConfig {...options} route={route} />\n {content}\n </HeaderHeightContext.Provider>\n </Screen>\n </ScreenStack>\n );\n }\n return content;\n};\n\ntype NavigationRoute<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]> & {\n state?: NavigationState | PartialState<NavigationState>;\n};\n\nconst RouteView = ({\n descriptors,\n route,\n index,\n navigation,\n stateKey,\n}: {\n descriptors: NativeStackDescriptorMap;\n route: NavigationRoute<ParamListBase, string>;\n index: number;\n navigation: NativeStackNavigationHelpers;\n stateKey: string;\n}) => {\n const { options, render: renderScene } = descriptors[route.key];\n const {\n gestureEnabled,\n headerShown,\n hideKeyboardOnSwipe,\n homeIndicatorHidden,\n sheetAllowedDetents = 'large',\n sheetLargestUndimmedDetent = 'all',\n sheetGrabberVisible = false,\n sheetCornerRadius = -1.0,\n sheetExpandsWhenScrolledToEdge = true,\n nativeBackButtonDismissalEnabled = false,\n navigationBarColor,\n navigationBarHidden,\n replaceAnimation = 'pop',\n screenOrientation,\n statusBarAnimation,\n statusBarColor,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n swipeDirection = 'horizontal',\n transitionDuration,\n freezeOnBlur,\n } = options;\n\n let {\n customAnimationOnSwipe,\n fullScreenSwipeEnabled,\n gestureResponseDistance,\n stackAnimation,\n stackPresentation = 'push',\n } = options;\n\n if (swipeDirection === 'vertical') {\n // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnSwipe` needs to be set to `true` so the `stackAnimation` set by user can be used,\n // otherwise `simple_push` will be used.\n // Also, the default animation for this direction seems to be `slide_from_bottom`.\n if (fullScreenSwipeEnabled === undefined) {\n fullScreenSwipeEnabled = true;\n }\n if (customAnimationOnSwipe === undefined) {\n customAnimationOnSwipe = true;\n }\n if (stackAnimation === undefined) {\n stackAnimation = 'slide_from_bottom';\n }\n }\n\n if (index === 0) {\n // first screen should always be treated as `push`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `push`\n stackPresentation = 'push';\n }\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n const isStatusBarTranslucent = options.statusBarTranslucent ?? false;\n const statusBarHeight = getStatusBarHeight(\n topInset,\n dimensions,\n isStatusBarTranslucent\n );\n\n const hasLargeHeader = options.headerLargeTitle ?? false;\n\n const defaultHeaderHeight = getDefaultHeaderHeight(\n dimensions,\n statusBarHeight,\n stackPresentation,\n hasLargeHeader\n );\n\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const isHeaderInPush = isAndroid\n ? headerShown\n : stackPresentation === 'push' && headerShown !== false;\n\n const staticHeaderHeight =\n isHeaderInPush !== false ? defaultHeaderHeight : parentHeaderHeight ?? 0;\n\n // We need to ensure the first retrieved header height will be cached and set in animatedHeaderHeight.\n // We're caching the header height here, as on iOS native side events are not always coming to the JS on first notify.\n // TODO: Check why first event is not being received once it is cached on the native side.\n const cachedAnimatedHeaderHeight = React.useRef(defaultHeaderHeight);\n const animatedHeaderHeight = React.useRef(\n new Animated.Value(staticHeaderHeight, {\n useNativeDriver: true,\n })\n ).current;\n\n const Screen = React.useContext(ScreenContext);\n\n const { dark } = useTheme();\n\n return (\n <Screen\n key={route.key}\n enabled\n isNativeStack\n hasLargeHeader={hasLargeHeader}\n style={StyleSheet.absoluteFill}\n sheetAllowedDetents={sheetAllowedDetents}\n sheetLargestUndimmedDetent={sheetLargestUndimmedDetent}\n sheetGrabberVisible={sheetGrabberVisible}\n sheetCornerRadius={sheetCornerRadius}\n sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}\n customAnimationOnSwipe={customAnimationOnSwipe}\n freezeOnBlur={freezeOnBlur}\n fullScreenSwipeEnabled={fullScreenSwipeEnabled}\n hideKeyboardOnSwipe={hideKeyboardOnSwipe}\n homeIndicatorHidden={homeIndicatorHidden}\n gestureEnabled={isAndroid ? false : gestureEnabled}\n gestureResponseDistance={gestureResponseDistance}\n nativeBackButtonDismissalEnabled={nativeBackButtonDismissalEnabled}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={replaceAnimation}\n screenOrientation={screenOrientation}\n stackAnimation={stackAnimation}\n stackPresentation={stackPresentation}\n statusBarAnimation={statusBarAnimation}\n statusBarColor={statusBarColor}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle ?? (dark ? 'light' : 'dark')}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={swipeDirection}\n transitionDuration={transitionDuration}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: stateKey,\n });\n }}\n onWillAppear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: false },\n target: route.key,\n });\n }}\n onWillDisappear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: true },\n target: route.key,\n });\n }}\n onAppear={() => {\n navigation.emit({\n type: 'appear',\n target: route.key,\n });\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: false },\n target: route.key,\n });\n }}\n onDisappear={() => {\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: true },\n target: route.key,\n });\n }}\n onHeaderHeightChange={e => {\n const headerHeight = e.nativeEvent.headerHeight;\n\n if (cachedAnimatedHeaderHeight.current !== headerHeight) {\n // Currently, we're setting value by Animated#setValue, because we want to cache animated value.\n // Also, in React Native 0.72 there was a bug on Fabric causing a large delay between the screen transition,\n // which should not occur.\n // TODO: Check if it's possible to replace animated#setValue to Animated#event.\n animatedHeaderHeight.setValue(headerHeight);\n cachedAnimatedHeaderHeight.current = headerHeight;\n }\n }}\n onDismissed={e => {\n navigation.emit({\n type: 'dismiss',\n target: route.key,\n });\n\n const dismissCount =\n e.nativeEvent.dismissCount > 0 ? e.nativeEvent.dismissCount : 1;\n\n navigation.dispatch({\n ...StackActions.pop(dismissCount),\n source: route.key,\n target: stateKey,\n });\n }}\n onGestureCancel={() => {\n navigation.emit({\n type: 'gestureCancel',\n target: route.key,\n });\n }}>\n <AnimatedHeaderHeightContext.Provider value={animatedHeaderHeight}>\n <HeaderHeightContext.Provider value={staticHeaderHeight}>\n <MaybeNestedStack\n options={options}\n route={route}\n stackPresentation={stackPresentation}>\n {renderScene()}\n </MaybeNestedStack>\n {/* HeaderConfig must not be first child of a Screen.\n See https://github.com/software-mansion/react-native-screens/pull/1825\n for detailed explanation */}\n <HeaderConfig\n {...options}\n route={route}\n headerShown={isHeaderInPush}\n />\n </HeaderHeightContext.Provider>\n </AnimatedHeaderHeightContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({\n state,\n navigation,\n descriptors,\n}: Props): JSX.Element {\n const { key, routes } = state;\n\n return (\n <ScreenStack style={styles.container}>\n {routes.map((route, index) => (\n <RouteView\n key={route.key}\n descriptors={descriptors}\n route={route}\n index={index}\n navigation={navigation}\n stateKey={key}\n />\n ))}\n </ScreenStack>\n );\n}\n\nexport default function NativeStackView(props: Props) {\n return (\n <SafeAreaProviderCompat>\n <NativeStackViewInner {...props} />\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ // @ts-ignore file to be used only if `react-native-reanimated` available in the project
3
+
4
+ export default /*#__PURE__*/React.createContext(undefined);
5
+ //# sourceMappingURL=ReanimatedHeaderHeightContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","undefined"],"sources":["ReanimatedHeaderHeightContext.tsx"],"sourcesContent":["import * as React from 'react';\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated from 'react-native-reanimated';\n\nexport default React.createContext<Animated.SharedValue<number> | undefined>(\n undefined\n);\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B;;AAGA,4BAAeA,KAAK,CAACC,aAAa,CAChCC,SACF,CAAC"}
@@ -7,6 +7,10 @@ import { InnerScreen } from 'react-native-screens';
7
7
  // @ts-ignore file to be used only if `react-native-reanimated` available in the project
8
8
  import Animated, { useEvent, useSharedValue } from 'react-native-reanimated';
9
9
  import ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';
10
+ import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';
11
+ import getDefaultHeaderHeight from '../native-stack/utils/getDefaultHeaderHeight';
12
+ import getStatusBarHeight from '../native-stack/utils/getStatusBarHeight';
13
+ import ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';
10
14
  const AnimatedScreen = Animated.createAnimatedComponent(InnerScreen);
11
15
 
12
16
  // We use prop added to global by reanimated since it seems safer than the one from RN. See:
@@ -14,10 +18,25 @@ const AnimatedScreen = Animated.createAnimatedComponent(InnerScreen);
14
18
  // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
15
19
  const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global._IS_FABRIC);
16
20
  const ReanimatedNativeStackScreen = /*#__PURE__*/React.forwardRef((props, ref) => {
21
+ var _rest$statusBarTransl;
17
22
  const {
18
23
  children,
19
24
  ...rest
20
25
  } = props;
26
+ const {
27
+ stackPresentation = 'push',
28
+ hasLargeHeader
29
+ } = rest;
30
+ const dimensions = useSafeAreaFrame();
31
+ const topInset = useSafeAreaInsets().top;
32
+ const isStatusBarTranslucent = (_rest$statusBarTransl = rest.statusBarTranslucent) !== null && _rest$statusBarTransl !== void 0 ? _rest$statusBarTransl : false;
33
+ const statusBarHeight = getStatusBarHeight(topInset, dimensions, isStatusBarTranslucent);
34
+
35
+ // Default header height, normally used in `useHeaderHeight` hook.
36
+ // Here, it is used for returning a default value for shared value.
37
+ const defaultHeaderHeight = getDefaultHeaderHeight(dimensions, statusBarHeight, stackPresentation, hasLargeHeader);
38
+ const cachedHeaderHeight = React.useRef(defaultHeaderHeight);
39
+ const headerHeight = useSharedValue(defaultHeaderHeight);
21
40
  const progress = useSharedValue(0);
22
41
  const closing = useSharedValue(0);
23
42
  const goingForward = useSharedValue(0);
@@ -36,14 +55,26 @@ const ReanimatedNativeStackScreen = /*#__PURE__*/React.forwardRef((props, ref) =
36
55
  // @ts-ignore wrong type
37
56
  Platform.OS === 'android' ? 'onTransitionProgress' :
38
57
  // for some reason there is a difference in required event name between architectures
39
- ENABLE_FABRIC ? 'onTransitionProgress' : 'topTransitionProgress'])
40
- }, rest), /*#__PURE__*/React.createElement(ReanimatedTransitionProgressContext.Provider, {
58
+ ENABLE_FABRIC ? 'onTransitionProgress' : 'topTransitionProgress']),
59
+ onHeaderHeightChangeReanimated: useEvent(event => {
60
+ 'worklet';
61
+
62
+ if (event.headerHeight !== cachedHeaderHeight.current) {
63
+ headerHeight.value = event.headerHeight;
64
+ cachedHeaderHeight.current = event.headerHeight;
65
+ }
66
+ }, [
67
+ // @ts-ignore wrong type
68
+ Platform.OS === 'android' ? 'onHeaderHeightChange' : ENABLE_FABRIC ? 'onHeaderHeightChange' : 'topHeaderHeightChange'])
69
+ }, rest), /*#__PURE__*/React.createElement(ReanimatedHeaderHeightContext.Provider, {
70
+ value: headerHeight
71
+ }, /*#__PURE__*/React.createElement(ReanimatedTransitionProgressContext.Provider, {
41
72
  value: {
42
- progress: progress,
43
- closing: closing,
44
- goingForward: goingForward
73
+ progress,
74
+ closing,
75
+ goingForward
45
76
  }
46
- }, children));
77
+ }, children)));
47
78
  });
48
79
  ReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';
49
80
  export default ReanimatedNativeStackScreen;
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","InnerScreen","Animated","useEvent","useSharedValue","ReanimatedTransitionProgressContext","AnimatedScreen","createAnimatedComponent","ENABLE_FABRIC","_global","global","_IS_FABRIC","ReanimatedNativeStackScreen","forwardRef","props","ref","children","rest","progress","closing","goingForward","createElement","_extends","onTransitionProgressReanimated","event","value","OS","Provider","displayName"],"sources":["ReanimatedNativeStackScreen.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n InnerScreen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n InnerScreen as unknown as React.ComponentClass\n);\n\n// We use prop added to global by reanimated since it seems safer than the one from RN. See:\n// https://github.com/software-mansion/react-native-reanimated/blob/3fe8b35b05e82b2f2aefda1fb97799cf81e4b7bb/src/reanimated2/UpdateProps.ts#L46\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?._IS_FABRIC;\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : // for some reason there is a difference in required event name between architectures\n ENABLE_FABRIC\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n {...rest}\n >\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress: progress,\n closing: closing,\n goingForward: goingForward,\n }}\n >\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,cAAc;AACvC,SACEC,WAAW,QAGN,sBAAsB;;AAE7B;AACA,OAAOC,QAAQ,IAAIC,QAAQ,EAAEC,cAAc,QAAQ,yBAAyB;AAC5E,OAAOC,mCAAmC,MAAM,uCAAuC;AAEvF,MAAMC,cAAc,GAAGJ,QAAQ,CAACK,uBAAuB,CACrDN,WACF,CAAC;;AAED;AACA;AACA;AACA,MAAMO,aAAa,GAAG,CAAC,GAAAC,OAAA,GAACC,MAAM,cAAAD,OAAA,eAANA,OAAA,CAAQE,UAAU;AAE1C,MAAMC,2BAA2B,gBAAGb,KAAK,CAACc,UAAU,CAGlD,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,MAAM;IAAEC,QAAQ;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAEnC,MAAMI,QAAQ,GAAGd,cAAc,CAAC,CAAC,CAAC;EAClC,MAAMe,OAAO,GAAGf,cAAc,CAAC,CAAC,CAAC;EACjC,MAAMgB,YAAY,GAAGhB,cAAc,CAAC,CAAC,CAAC;EAEtC,oBACEL,KAAA,CAAAsB,aAAA,CAACf;EACC;EAAA,EAAAgB,QAAA;IACAP,GAAG,EAAEA,GAAI;IACTQ,8BAA8B,EAAEpB,QAAQ,CACrCqB,KAAkC,IAAK;MACtC,SAAS;;MACTN,QAAQ,CAACO,KAAK,GAAGD,KAAK,CAACN,QAAQ;MAC/BC,OAAO,CAACM,KAAK,GAAGD,KAAK,CAACL,OAAO;MAC7BC,YAAY,CAACK,KAAK,GAAGD,KAAK,CAACJ,YAAY;IACzC,CAAC,EACD;IACE;IACA;IACApB,QAAQ,CAAC0B,EAAE,KAAK,SAAS,GACrB,sBAAsB;IACtB;IACFlB,aAAa,GACX,sBAAsB,GACtB,uBAAuB,CAE/B;EAAE,GACES,IAAI,gBAERlB,KAAA,CAAAsB,aAAA,CAAChB,mCAAmC,CAACsB,QAAQ;IAC3CF,KAAK,EAAE;MACLP,QAAQ,EAAEA,QAAQ;MAClBC,OAAO,EAAEA,OAAO;MAChBC,YAAY,EAAEA;IAChB;EAAE,GAEDJ,QAC2C,CAChC,CAAC;AAErB,CAAC,CAAC;AAEFJ,2BAA2B,CAACgB,WAAW,GAAG,6BAA6B;AAEvE,eAAehB,2BAA2B"}
1
+ {"version":3,"names":["React","Platform","InnerScreen","Animated","useEvent","useSharedValue","ReanimatedTransitionProgressContext","useSafeAreaFrame","useSafeAreaInsets","getDefaultHeaderHeight","getStatusBarHeight","ReanimatedHeaderHeightContext","AnimatedScreen","createAnimatedComponent","ENABLE_FABRIC","_global","global","_IS_FABRIC","ReanimatedNativeStackScreen","forwardRef","props","ref","_rest$statusBarTransl","children","rest","stackPresentation","hasLargeHeader","dimensions","topInset","top","isStatusBarTranslucent","statusBarTranslucent","statusBarHeight","defaultHeaderHeight","cachedHeaderHeight","useRef","headerHeight","progress","closing","goingForward","createElement","_extends","onTransitionProgressReanimated","event","value","OS","onHeaderHeightChangeReanimated","current","Provider","displayName"],"sources":["ReanimatedNativeStackScreen.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n HeaderHeightChangeEventType,\n InnerScreen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport getDefaultHeaderHeight from '../native-stack/utils/getDefaultHeaderHeight';\nimport getStatusBarHeight from '../native-stack/utils/getStatusBarHeight';\nimport ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n InnerScreen as unknown as React.ComponentClass\n);\n\n// We use prop added to global by reanimated since it seems safer than the one from RN. See:\n// https://github.com/software-mansion/react-native-reanimated/blob/3fe8b35b05e82b2f2aefda1fb97799cf81e4b7bb/src/reanimated2/UpdateProps.ts#L46\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?._IS_FABRIC;\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n const { stackPresentation = 'push', hasLargeHeader } = rest;\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n const isStatusBarTranslucent = rest.statusBarTranslucent ?? false;\n const statusBarHeight = getStatusBarHeight(\n topInset,\n dimensions,\n isStatusBarTranslucent\n );\n\n // Default header height, normally used in `useHeaderHeight` hook.\n // Here, it is used for returning a default value for shared value.\n const defaultHeaderHeight = getDefaultHeaderHeight(\n dimensions,\n statusBarHeight,\n stackPresentation,\n hasLargeHeader\n );\n\n const cachedHeaderHeight = React.useRef(defaultHeaderHeight);\n const headerHeight = useSharedValue(defaultHeaderHeight);\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : // for some reason there is a difference in required event name between architectures\n ENABLE_FABRIC\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n onHeaderHeightChangeReanimated={useEvent(\n (event: HeaderHeightChangeEventType) => {\n 'worklet';\n if (event.headerHeight !== cachedHeaderHeight.current) {\n headerHeight.value = event.headerHeight;\n cachedHeaderHeight.current = event.headerHeight;\n }\n },\n [\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onHeaderHeightChange'\n : ENABLE_FABRIC\n ? 'onHeaderHeightChange'\n : 'topHeaderHeightChange',\n ]\n )}\n {...rest}>\n <ReanimatedHeaderHeightContext.Provider value={headerHeight}>\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress,\n closing,\n goingForward,\n }}>\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </ReanimatedHeaderHeightContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"],"mappings":"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"}
@@ -13,12 +13,12 @@ class ReanimatedScreenWrapper extends React.Component {
13
13
  _defineProperty(this, "setRef", ref => {
14
14
  var _this$props$onCompone, _this$props;
15
15
  this.ref = ref;
16
- (_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0 ? void 0 : _this$props$onCompone.call(_this$props, ref);
16
+ (_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0 || _this$props$onCompone.call(_this$props, ref);
17
17
  });
18
18
  }
19
19
  setNativeProps(props) {
20
20
  var _this$ref;
21
- (_this$ref = this.ref) === null || _this$ref === void 0 ? void 0 : _this$ref.setNativeProps(props);
21
+ (_this$ref = this.ref) === null || _this$ref === void 0 || _this$ref.setNativeProps(props);
22
22
  }
23
23
  render() {
24
24
  const ReanimatedScreen = this.props.isNativeStack ? ReanimatedNativeStackScreen : AnimatedScreen;
@@ -1 +1 @@
1
- {"version":3,"names":["React","ScreenContext","ReanimatedNativeStackScreen","AnimatedScreen","ReanimatedScreenWrapper","Component","constructor","arguments","_defineProperty","ref","_this$props$onCompone","_this$props","props","onComponentRef","call","setNativeProps","_this$ref","render","ReanimatedScreen","isNativeStack","createElement","_extends","setRef","ReanimatedScreenProvider","Provider","value","children"],"sources":["ReanimatedScreenProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { View } from 'react-native';\nimport { ScreenProps, ScreenContext } from 'react-native-screens';\nimport ReanimatedNativeStackScreen from './ReanimatedNativeStackScreen';\nimport AnimatedScreen from './ReanimatedScreen';\n\nclass ReanimatedScreenWrapper extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const ReanimatedScreen = this.props.isNativeStack\n ? ReanimatedNativeStackScreen\n : AnimatedScreen;\n return (\n <ReanimatedScreen\n {...this.props}\n // @ts-ignore some problems with ref\n ref={this.setRef}\n />\n );\n }\n}\n\nexport default function ReanimatedScreenProvider(\n props: PropsWithChildren<unknown>\n) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ScreenContext.Provider value={ReanimatedScreenWrapper as any}>\n {props.children}\n </ScreenContext.Provider>\n );\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAA6B,OAAO;AAEhD,SAAsBC,aAAa,QAAQ,sBAAsB;AACjE,OAAOC,2BAA2B,MAAM,+BAA+B;AACvE,OAAOC,cAAc,MAAM,oBAAoB;AAE/C,MAAMC,uBAAuB,SAASJ,KAAK,CAACK,SAAS,CAAc;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,cACb,IAAI;IAAAA,eAAA,iBAM9CC,GAAyC,IAAW;MAAA,IAAAC,qBAAA,EAAAC,WAAA;MAC5D,IAAI,CAACF,GAAG,GAAGA,GAAG;MACd,CAAAC,qBAAA,IAAAC,WAAA,OAAI,CAACC,KAAK,EAACC,cAAc,cAAAH,qBAAA,uBAAzBA,qBAAA,CAAAI,IAAA,CAAAH,WAAA,EAA4BF,GAAG,CAAC;IAClC,CAAC;EAAA;EAPDM,cAAcA,CAACH,KAAkB,EAAQ;IAAA,IAAAI,SAAA;IACvC,CAAAA,SAAA,OAAI,CAACP,GAAG,cAAAO,SAAA,uBAARA,SAAA,CAAUD,cAAc,CAACH,KAAK,CAAC;EACjC;EAOAK,MAAMA,CAAA,EAAG;IACP,MAAMC,gBAAgB,GAAG,IAAI,CAACN,KAAK,CAACO,aAAa,GAC7CjB,2BAA2B,GAC3BC,cAAc;IAClB,oBACEH,KAAA,CAAAoB,aAAA,CAACF,gBAAgB,EAAAG,QAAA,KACX,IAAI,CAACT,KAAK;MACd;MACAH,GAAG,EAAE,IAAI,CAACa;IAAO,EAClB,CAAC;EAEN;AACF;AAEA,eAAe,SAASC,wBAAwBA,CAC9CX,KAAiC,EACjC;EACA;IAAA;IACE;IACAZ,KAAA,CAAAoB,aAAA,CAACnB,aAAa,CAACuB,QAAQ;MAACC,KAAK,EAAErB;IAA+B,GAC3DQ,KAAK,CAACc,QACe;EAAC;AAE7B"}
1
+ {"version":3,"names":["React","ScreenContext","ReanimatedNativeStackScreen","AnimatedScreen","ReanimatedScreenWrapper","Component","constructor","arguments","_defineProperty","ref","_this$props$onCompone","_this$props","props","onComponentRef","call","setNativeProps","_this$ref","render","ReanimatedScreen","isNativeStack","createElement","_extends","setRef","ReanimatedScreenProvider","Provider","value","children"],"sources":["ReanimatedScreenProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { View } from 'react-native';\nimport { ScreenProps, ScreenContext } from 'react-native-screens';\nimport ReanimatedNativeStackScreen from './ReanimatedNativeStackScreen';\nimport AnimatedScreen from './ReanimatedScreen';\n\nclass ReanimatedScreenWrapper extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const ReanimatedScreen = this.props.isNativeStack\n ? ReanimatedNativeStackScreen\n : AnimatedScreen;\n return (\n <ReanimatedScreen\n {...this.props}\n // @ts-ignore some problems with ref\n ref={this.setRef}\n />\n );\n }\n}\n\nexport default function ReanimatedScreenProvider(\n props: PropsWithChildren<unknown>\n) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ScreenContext.Provider value={ReanimatedScreenWrapper as any}>\n {props.children}\n </ScreenContext.Provider>\n );\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAA6B,OAAO;AAEhD,SAAsBC,aAAa,QAAQ,sBAAsB;AACjE,OAAOC,2BAA2B,MAAM,+BAA+B;AACvE,OAAOC,cAAc,MAAM,oBAAoB;AAE/C,MAAMC,uBAAuB,SAASJ,KAAK,CAACK,SAAS,CAAc;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,cACb,IAAI;IAAAA,eAAA,iBAM9CC,GAAyC,IAAW;MAAA,IAAAC,qBAAA,EAAAC,WAAA;MAC5D,IAAI,CAACF,GAAG,GAAGA,GAAG;MACd,CAAAC,qBAAA,IAAAC,WAAA,OAAI,CAACC,KAAK,EAACC,cAAc,cAAAH,qBAAA,eAAzBA,qBAAA,CAAAI,IAAA,CAAAH,WAAA,EAA4BF,GAAG,CAAC;IAClC,CAAC;EAAA;EAPDM,cAAcA,CAACH,KAAkB,EAAQ;IAAA,IAAAI,SAAA;IACvC,CAAAA,SAAA,OAAI,CAACP,GAAG,cAAAO,SAAA,eAARA,SAAA,CAAUD,cAAc,CAACH,KAAK,CAAC;EACjC;EAOAK,MAAMA,CAAA,EAAG;IACP,MAAMC,gBAAgB,GAAG,IAAI,CAACN,KAAK,CAACO,aAAa,GAC7CjB,2BAA2B,GAC3BC,cAAc;IAClB,oBACEH,KAAA,CAAAoB,aAAA,CAACF,gBAAgB,EAAAG,QAAA,KACX,IAAI,CAACT,KAAK;MACd;MACAH,GAAG,EAAE,IAAI,CAACa;IAAO,EAClB,CAAC;EAEN;AACF;AAEA,eAAe,SAASC,wBAAwBA,CAC9CX,KAAiC,EACjC;EACA;IAAA;IACE;IACAZ,KAAA,CAAAoB,aAAA,CAACnB,aAAa,CAACuB,QAAQ;MAACC,KAAK,EAAErB;IAA+B,GAC3DQ,KAAK,CAACc,QACe;EAAC;AAE7B"}
@@ -1,3 +1,4 @@
1
1
  export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';
2
2
  export { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';
3
+ export { default as useReanimatedHeaderHeight } from './useReanimatedHeaderHeight';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","ReanimatedScreenProvider","useReanimatedTransitionProgress"],"sources":["index.tsx"],"sourcesContent":["export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';\nexport { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,wBAAwB,QAAQ,4BAA4B;AAChF,SAASD,OAAO,IAAIE,+BAA+B,QAAQ,mCAAmC"}
1
+ {"version":3,"names":["default","ReanimatedScreenProvider","useReanimatedTransitionProgress","useReanimatedHeaderHeight"],"sources":["index.tsx"],"sourcesContent":["export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';\nexport { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';\nexport { default as useReanimatedHeaderHeight } from './useReanimatedHeaderHeight';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,wBAAwB,QAAQ,4BAA4B;AAChF,SAASD,OAAO,IAAIE,+BAA+B,QAAQ,mCAAmC;AAC9F,SAASF,OAAO,IAAIG,yBAAyB,QAAQ,6BAA6B"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';
3
+ export default function useReanimatedHeaderHeight() {
4
+ const height = React.useContext(ReanimatedHeaderHeightContext);
5
+ if (height === undefined) {
6
+ throw new Error("Couldn't find the header height using Reanimated. Are you inside a screen in a navigator with a header and your NavigationContainer is wrapped in ReanimatedScreenProvider?");
7
+ }
8
+ return height;
9
+ }
10
+ //# sourceMappingURL=useReanimatedHeaderHeight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ReanimatedHeaderHeightContext","useReanimatedHeaderHeight","height","useContext","undefined","Error"],"sources":["useReanimatedHeaderHeight.tsx"],"sourcesContent":["import * as React from 'react';\nimport ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';\n\nexport default function useReanimatedHeaderHeight() {\n const height = React.useContext(ReanimatedHeaderHeightContext);\n\n if (height === undefined) {\n throw new Error(\n \"Couldn't find the header height using Reanimated. Are you inside a screen in a navigator with a header and your NavigationContainer is wrapped in ReanimatedScreenProvider?\"\n );\n }\n\n return height;\n}\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,6BAA6B,MAAM,iCAAiC;AAE3E,eAAe,SAASC,yBAAyBA,CAAA,EAAG;EAClD,MAAMC,MAAM,GAAGH,KAAK,CAACI,UAAU,CAACH,6BAA6B,CAAC;EAE9D,IAAIE,MAAM,KAAKE,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CACb,6KACF,CAAC;EACH;EAEA,OAAOH,MAAM;AACf"}