@amazon-devices/react-native-screens 3.0.9000000000 → 3.0.9000000003

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 (274) hide show
  1. package/SystemModules/amzn__react-native-screens-3.private.modules.txt +116 -61
  2. package/kepler-compatibility.json +5 -2
  3. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  4. package/lib/commonjs/components/DebugContainer.js.map +1 -1
  5. package/lib/commonjs/components/DebugContainer.web.js.map +1 -1
  6. package/lib/commonjs/components/Screen.web.js.map +1 -1
  7. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -1
  8. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -1
  9. package/lib/commonjs/components/ScreenStackItem.js.map +1 -1
  10. package/lib/commonjs/components/SearchBar.js.map +1 -1
  11. package/lib/commonjs/components/helpers/usePrevious.js.map +1 -1
  12. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -1
  13. package/lib/commonjs/index.js +0 -210
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  16. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  17. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  18. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  19. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  20. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  21. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  22. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  23. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  24. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  25. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  26. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  27. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  28. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  29. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  30. package/lib/module/components/Screen.web.js.map +1 -1
  31. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -1
  32. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -1
  33. package/lib/module/components/SearchBar.js.map +1 -1
  34. package/lib/module/components/helpers/usePrevious.js.map +1 -1
  35. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  36. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  37. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  38. package/lib/typescript/components/Screen.web.d.ts +1 -1
  39. package/lib/typescript/components/Screen.web.d.ts.map +1 -1
  40. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +5 -5
  41. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -1
  42. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +6 -6
  43. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -1
  44. package/lib/typescript/components/SearchBar.d.ts.map +1 -1
  45. package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -1
  46. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -1
  47. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +2 -2
  48. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -1
  49. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
  50. package/lib/typescript/types.d.ts +2 -2
  51. package/lib/typescript/types.d.ts.map +1 -1
  52. package/oss-attribution/attribution.txt +77 -0
  53. package/oss-attribution/licenseInfos.json +27 -0
  54. package/package.json +1 -1
  55. package/src/index.tsx +0 -55
  56. package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.bundle +0 -45301
  57. package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.map +0 -13711
  58. package/lib/commonjs/TransitionProgressContext.js +0 -12
  59. package/lib/commonjs/components/DebugContainer.js +0 -39
  60. package/lib/commonjs/components/DebugContainer.web.js +0 -15
  61. package/lib/commonjs/components/FullWindowOverlay.js +0 -31
  62. package/lib/commonjs/components/FullWindowOverlay.web.js +0 -9
  63. package/lib/commonjs/components/Screen.js +0 -286
  64. package/lib/commonjs/components/Screen.web.js +0 -47
  65. package/lib/commonjs/components/ScreenContainer.js +0 -32
  66. package/lib/commonjs/components/ScreenContainer.web.js +0 -10
  67. package/lib/commonjs/components/ScreenContentWrapper.js +0 -17
  68. package/lib/commonjs/components/ScreenContentWrapper.web.js +0 -10
  69. package/lib/commonjs/components/ScreenFooter.js +0 -25
  70. package/lib/commonjs/components/ScreenFooter.web.js +0 -11
  71. package/lib/commonjs/components/ScreenStack.js +0 -67
  72. package/lib/commonjs/components/ScreenStack.web.js +0 -10
  73. package/lib/commonjs/components/ScreenStackHeaderConfig.js +0 -90
  74. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +0 -27
  75. package/lib/commonjs/components/ScreenStackItem.js +0 -107
  76. package/lib/commonjs/components/SearchBar.js +0 -63
  77. package/lib/commonjs/components/SearchBar.web.js +0 -10
  78. package/lib/commonjs/components/helpers/DelayedFreeze.js +0 -31
  79. package/lib/commonjs/components/helpers/usePrevious.js +0 -15
  80. package/lib/commonjs/contexts.js +0 -11
  81. package/lib/commonjs/core.js +0 -40
  82. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +0 -26
  83. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +0 -14
  84. package/lib/commonjs/fabric/NativeScreensModule.js +0 -10
  85. package/lib/commonjs/fabric/NativeScreensModule.web.js +0 -8
  86. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +0 -30
  87. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +0 -18
  88. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +0 -10
  89. package/lib/commonjs/fabric/ScreenNativeComponent.js +0 -70
  90. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +0 -12
  91. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -32
  92. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -15
  93. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +0 -32
  94. package/lib/commonjs/fabric/SearchBarNativeComponent.js +0 -18
  95. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +0 -19
  96. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +0 -8
  97. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +0 -201
  98. package/lib/commonjs/gesture-handler/constraints.js +0 -64
  99. package/lib/commonjs/gesture-handler/defaults.js +0 -45
  100. package/lib/commonjs/gesture-handler/fabricUtils.js +0 -66
  101. package/lib/commonjs/gesture-handler/fabricUtils.web.js +0 -17
  102. package/lib/commonjs/gesture-handler/index.js +0 -14
  103. package/lib/commonjs/native-stack/contexts/GHContext.js +0 -12
  104. package/lib/commonjs/native-stack/index.js +0 -49
  105. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +0 -76
  106. package/lib/commonjs/native-stack/types.js +0 -6
  107. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +0 -12
  108. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +0 -12
  109. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +0 -75
  110. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js +0 -35
  111. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +0 -22
  112. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +0 -19
  113. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +0 -52
  114. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +0 -19
  115. package/lib/commonjs/native-stack/views/FontProcessor.js +0 -19
  116. package/lib/commonjs/native-stack/views/FooterComponent.js +0 -17
  117. package/lib/commonjs/native-stack/views/HeaderConfig.js +0 -149
  118. package/lib/commonjs/native-stack/views/NativeStackView.js +0 -420
  119. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +0 -12
  120. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +0 -95
  121. package/lib/commonjs/reanimated/ReanimatedScreen.js +0 -22
  122. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +0 -39
  123. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +0 -12
  124. package/lib/commonjs/reanimated/index.js +0 -28
  125. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +0 -19
  126. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +0 -19
  127. package/lib/commonjs/types.js +0 -6
  128. package/lib/commonjs/useTransitionProgress.js +0 -19
  129. package/lib/commonjs/utils.js +0 -43
  130. package/lib/module/TransitionProgressContext.js +0 -5
  131. package/lib/module/components/DebugContainer.js +0 -30
  132. package/lib/module/components/DebugContainer.web.js +0 -6
  133. package/lib/module/components/FullWindowOverlay.js +0 -24
  134. package/lib/module/components/FullWindowOverlay.web.js +0 -3
  135. package/lib/module/components/Screen.js +0 -282
  136. package/lib/module/components/Screen.web.js +0 -40
  137. package/lib/module/components/ScreenContainer.js +0 -26
  138. package/lib/module/components/ScreenContainer.web.js +0 -4
  139. package/lib/module/components/ScreenContentWrapper.js +0 -10
  140. package/lib/module/components/ScreenContentWrapper.web.js +0 -4
  141. package/lib/module/components/ScreenFooter.js +0 -18
  142. package/lib/module/components/ScreenFooter.web.js +0 -6
  143. package/lib/module/components/ScreenStack.js +0 -63
  144. package/lib/module/components/ScreenStack.web.js +0 -4
  145. package/lib/module/components/ScreenStackHeaderConfig.js +0 -81
  146. package/lib/module/components/ScreenStackHeaderConfig.web.js +0 -14
  147. package/lib/module/components/ScreenStackItem.js +0 -98
  148. package/lib/module/components/SearchBar.js +0 -57
  149. package/lib/module/components/SearchBar.web.js +0 -4
  150. package/lib/module/components/helpers/DelayedFreeze.js +0 -24
  151. package/lib/module/components/helpers/usePrevious.js +0 -9
  152. package/lib/module/contexts.js +0 -4
  153. package/lib/module/core.js +0 -31
  154. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +0 -20
  155. package/lib/module/fabric/ModalScreenNativeComponent.js +0 -10
  156. package/lib/module/fabric/NativeScreensModule.js +0 -5
  157. package/lib/module/fabric/NativeScreensModule.web.js +0 -2
  158. package/lib/module/fabric/ScreenContainerNativeComponent.js +0 -24
  159. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +0 -10
  160. package/lib/module/fabric/ScreenFooterNativeComponent.js +0 -3
  161. package/lib/module/fabric/ScreenNativeComponent.js +0 -66
  162. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +0 -6
  163. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -29
  164. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -11
  165. package/lib/module/fabric/ScreenStackNativeComponent.js +0 -28
  166. package/lib/module/fabric/SearchBarNativeComponent.js +0 -12
  167. package/lib/module/gesture-handler/GestureDetectorProvider.js +0 -12
  168. package/lib/module/gesture-handler/RNScreensTurboModule.js +0 -2
  169. package/lib/module/gesture-handler/ScreenGestureDetector.js +0 -193
  170. package/lib/module/gesture-handler/constraints.js +0 -56
  171. package/lib/module/gesture-handler/defaults.js +0 -39
  172. package/lib/module/gesture-handler/fabricUtils.js +0 -61
  173. package/lib/module/gesture-handler/fabricUtils.web.js +0 -10
  174. package/lib/module/gesture-handler/index.js +0 -5
  175. package/lib/module/index.js +0 -33
  176. package/lib/module/native-stack/contexts/GHContext.js +0 -6
  177. package/lib/module/native-stack/index.js +0 -22
  178. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +0 -73
  179. package/lib/module/native-stack/types.js +0 -2
  180. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js +0 -4
  181. package/lib/module/native-stack/utils/HeaderHeightContext.js +0 -4
  182. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js +0 -68
  183. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js +0 -29
  184. package/lib/module/native-stack/utils/getStatusBarHeight.js +0 -16
  185. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js +0 -10
  186. package/lib/module/native-stack/utils/useBackPressSubscription.js +0 -45
  187. package/lib/module/native-stack/utils/useHeaderHeight.js +0 -10
  188. package/lib/module/native-stack/views/FontProcessor.js +0 -12
  189. package/lib/module/native-stack/views/FooterComponent.js +0 -10
  190. package/lib/module/native-stack/views/HeaderConfig.js +0 -139
  191. package/lib/module/native-stack/views/NativeStackView.js +0 -423
  192. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js +0 -5
  193. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +0 -93
  194. package/lib/module/reanimated/ReanimatedScreen.js +0 -16
  195. package/lib/module/reanimated/ReanimatedScreenProvider.js +0 -32
  196. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js +0 -5
  197. package/lib/module/reanimated/index.js +0 -4
  198. package/lib/module/reanimated/useReanimatedHeaderHeight.js +0 -10
  199. package/lib/module/reanimated/useReanimatedTransitionProgress.js +0 -10
  200. package/lib/module/types.js +0 -2
  201. package/lib/module/useTransitionProgress.js +0 -10
  202. package/lib/module/utils.js +0 -35
  203. package/src/TransitionProgressContext.tsx +0 -14
  204. package/src/components/DebugContainer.tsx +0 -46
  205. package/src/components/DebugContainer.web.tsx +0 -7
  206. package/src/components/FullWindowOverlay.tsx +0 -33
  207. package/src/components/FullWindowOverlay.web.tsx +0 -6
  208. package/src/components/Screen.tsx +0 -392
  209. package/src/components/Screen.web.tsx +0 -46
  210. package/src/components/ScreenContainer.tsx +0 -28
  211. package/src/components/ScreenContainer.web.tsx +0 -5
  212. package/src/components/ScreenContentWrapper.tsx +0 -9
  213. package/src/components/ScreenContentWrapper.web.tsx +0 -5
  214. package/src/components/ScreenFooter.tsx +0 -20
  215. package/src/components/ScreenFooter.web.tsx +0 -7
  216. package/src/components/ScreenStack.tsx +0 -112
  217. package/src/components/ScreenStack.web.tsx +0 -5
  218. package/src/components/ScreenStackHeaderConfig.tsx +0 -122
  219. package/src/components/ScreenStackHeaderConfig.web.tsx +0 -39
  220. package/src/components/ScreenStackItem.tsx +0 -174
  221. package/src/components/SearchBar.tsx +0 -102
  222. package/src/components/SearchBar.web.tsx +0 -5
  223. package/src/components/helpers/DelayedFreeze.tsx +0 -27
  224. package/src/components/helpers/usePrevious.tsx +0 -11
  225. package/src/contexts.tsx +0 -9
  226. package/src/core.ts +0 -45
  227. package/src/fabric/FullWindowOverlayNativeComponent.ts +0 -23
  228. package/src/fabric/ModalScreenNativeComponent.ts +0 -115
  229. package/src/fabric/NativeScreensModule.ts +0 -8
  230. package/src/fabric/NativeScreensModule.web.ts +0 -1
  231. package/src/fabric/ScreenContainerNativeComponent.ts +0 -28
  232. package/src/fabric/ScreenContentWrapperNativeComponent.ts +0 -14
  233. package/src/fabric/ScreenFooterNativeComponent.ts +0 -6
  234. package/src/fabric/ScreenNativeComponent.ts +0 -171
  235. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +0 -12
  236. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +0 -97
  237. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +0 -26
  238. package/src/fabric/ScreenStackNativeComponent.ts +0 -34
  239. package/src/fabric/SearchBarNativeComponent.ts +0 -83
  240. package/src/gesture-handler/GestureDetectorProvider.tsx +0 -16
  241. package/src/gesture-handler/RNScreensTurboModule.ts +0 -13
  242. package/src/gesture-handler/ScreenGestureDetector.tsx +0 -241
  243. package/src/gesture-handler/constraints.ts +0 -87
  244. package/src/gesture-handler/defaults.ts +0 -46
  245. package/src/gesture-handler/fabricUtils.ts +0 -86
  246. package/src/gesture-handler/fabricUtils.web.ts +0 -10
  247. package/src/gesture-handler/index.tsx +0 -4
  248. package/src/native-stack/contexts/GHContext.tsx +0 -9
  249. package/src/native-stack/index.tsx +0 -27
  250. package/src/native-stack/navigators/createNativeStackNavigator.tsx +0 -110
  251. package/src/native-stack/types.tsx +0 -659
  252. package/src/native-stack/utils/AnimatedHeaderHeightContext.tsx +0 -8
  253. package/src/native-stack/utils/HeaderHeightContext.tsx +0 -5
  254. package/src/native-stack/utils/SafeAreaProviderCompat.tsx +0 -78
  255. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +0 -41
  256. package/src/native-stack/utils/getStatusBarHeight.tsx +0 -22
  257. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +0 -15
  258. package/src/native-stack/utils/useBackPressSubscription.tsx +0 -66
  259. package/src/native-stack/utils/useHeaderHeight.tsx +0 -15
  260. package/src/native-stack/views/FontProcessor.tsx +0 -14
  261. package/src/native-stack/views/FooterComponent.tsx +0 -10
  262. package/src/native-stack/views/HeaderConfig.tsx +0 -202
  263. package/src/native-stack/views/NativeStackView.tsx +0 -550
  264. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +0 -7
  265. package/src/reanimated/ReanimatedNativeStackScreen.tsx +0 -132
  266. package/src/reanimated/ReanimatedScreen.tsx +0 -26
  267. package/src/reanimated/ReanimatedScreenProvider.tsx +0 -43
  268. package/src/reanimated/ReanimatedTransitionProgressContext.tsx +0 -13
  269. package/src/reanimated/index.tsx +0 -3
  270. package/src/reanimated/useReanimatedHeaderHeight.tsx +0 -14
  271. package/src/reanimated/useReanimatedTransitionProgress.tsx +0 -14
  272. package/src/types.tsx +0 -869
  273. package/src/useTransitionProgress.tsx +0 -15
  274. package/src/utils.ts +0 -40
@@ -1,550 +0,0 @@
1
- /*
2
- * Portions of this file are copyright (c) 2023 Amazon.com, Inc. or its affiliates. All rights reserved.
3
- *
4
- * PORTIONS OF THIS FILE ARE AMAZON PROPRIETARY/CONFIDENTIAL. USE IS SUBJECT TO LICENSE TERMS.
5
- *
6
- * Amazon modifications are indicated by [amznmod_* comments].
7
- */
8
-
9
- /*
10
- * Changelog:
11
- * Set up react-native-screens package to build for Kepler
12
- */
13
-
14
- /* eslint-disable camelcase */
15
- import * as React from 'react';
16
- import {
17
- Animated,
18
- Platform,
19
- StyleSheet,
20
- ViewProps,
21
- ViewStyle,
22
- } from 'react-native';
23
- // @ts-ignore Getting private component
24
-
25
- import AppContainer from 'react-native/Libraries/ReactNative/AppContainer';
26
- import warnOnce from 'warn-once';
27
- import { StackPresentationTypes, ScreensRefsHolder } from '../../types';
28
- import ScreenStack from '../../components/ScreenStack';
29
- import ScreenContentWrapper from '../../components/ScreenContentWrapper';
30
- import { ScreenContext } from '../../components/Screen';
31
- import {
32
- ParamListBase,
33
- StackActions,
34
- StackNavigationState,
35
- useTheme,
36
- Route,
37
- NavigationState,
38
- PartialState,
39
- // amznmod_react - change imports to kepler packages
40
- } from '@amazon-devices/react-navigation__native';
41
- import {
42
- useSafeAreaFrame,
43
- useSafeAreaInsets,
44
- // amznmod_react - change imports to kepler packages
45
- } from '@amazon-devices/react-native-safe-area-context';
46
- import {
47
- NativeStackDescriptorMap,
48
- NativeStackNavigationHelpers,
49
- NativeStackNavigationOptions,
50
- } from '../types';
51
- import HeaderConfig from './HeaderConfig';
52
- import SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';
53
- import getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';
54
- import getStatusBarHeight from '../utils/getStatusBarHeight';
55
- import HeaderHeightContext from '../utils/HeaderHeightContext';
56
- import AnimatedHeaderHeightContext from '../utils/AnimatedHeaderHeightContext';
57
- import FooterComponent from './FooterComponent';
58
-
59
- const isAndroid = Platform.OS === 'android';
60
- // amznmod_react - add isKepler flag
61
- // @ts-ignore
62
- const isKepler = Platform.OS === 'kepler';
63
-
64
- let Container = ScreenContentWrapper;
65
-
66
- if (__DEV__) {
67
- const DebugContainer = (
68
- props: ViewProps & { stackPresentation: StackPresentationTypes },
69
- ) => {
70
- const { stackPresentation, ...rest } = props;
71
- if (
72
- Platform.OS === 'ios' &&
73
- stackPresentation !== 'push' &&
74
- stackPresentation !== 'formSheet'
75
- ) {
76
- return (
77
- <AppContainer>
78
- <ScreenContentWrapper {...rest} />
79
- </AppContainer>
80
- );
81
- }
82
- return <ScreenContentWrapper {...rest} />;
83
- };
84
- // @ts-ignore Wrong props
85
- Container = DebugContainer;
86
- }
87
-
88
- const MaybeNestedStack = ({
89
- options,
90
- route,
91
- stackPresentation,
92
- children,
93
- internalScreenStyle,
94
- }: {
95
- options: NativeStackNavigationOptions;
96
- route: Route<string>;
97
- stackPresentation: StackPresentationTypes;
98
- children: React.ReactNode;
99
- internalScreenStyle?: Pick<ViewStyle, 'backgroundColor'>;
100
- }) => {
101
- const { colors } = useTheme();
102
- const { headerShown = true, contentStyle } = options;
103
-
104
- const Screen = React.useContext(ScreenContext);
105
-
106
- // amznmod_react - return false for Modal on kepler because native component is not implemented yet
107
- const isHeaderInModal = isAndroid || isKepler
108
- ? false
109
- : stackPresentation !== 'push' && headerShown === true;
110
-
111
- const headerShownPreviousRef = React.useRef(headerShown);
112
-
113
- React.useEffect(() => {
114
- warnOnce(
115
- !isAndroid &&
116
- stackPresentation !== 'push' &&
117
- headerShownPreviousRef.current !== headerShown,
118
- `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`,
119
- );
120
-
121
- headerShownPreviousRef.current = headerShown;
122
- }, [headerShown, stackPresentation, route.name]);
123
-
124
- const content = (
125
- <Container
126
- style={[
127
- stackPresentation === 'formSheet'
128
- ? Platform.OS === 'ios'
129
- ? styles.absoluteFillNoBottom
130
- : null
131
- : styles.container,
132
- stackPresentation !== 'transparentModal' &&
133
- stackPresentation !== 'containedTransparentModal' && {
134
- backgroundColor: colors.background,
135
- },
136
- contentStyle,
137
- ]}
138
- // @ts-ignore Wrong props passed to View
139
- stackPresentation={stackPresentation}
140
- // This view must *not* be flattened.
141
- // See https://github.com/software-mansion/react-native-screens/pull/1825
142
- // for detailed explanation.
143
- collapsable={false}>
144
- {children}
145
- </Container>
146
- );
147
-
148
- const dimensions = useSafeAreaFrame();
149
- const topInset = useSafeAreaInsets().top;
150
- const isStatusBarTranslucent = options.statusBarTranslucent ?? false;
151
- const statusBarHeight = getStatusBarHeight(
152
- topInset,
153
- dimensions,
154
- isStatusBarTranslucent,
155
- );
156
-
157
- const hasLargeHeader = options.headerLargeTitle ?? false;
158
-
159
- const headerHeight = getDefaultHeaderHeight(
160
- dimensions,
161
- statusBarHeight,
162
- stackPresentation,
163
- hasLargeHeader,
164
- );
165
-
166
- if (isHeaderInModal) {
167
- return (
168
- <ScreenStack style={styles.container}>
169
- <Screen
170
- enabled
171
- isNativeStack
172
- hasLargeHeader={hasLargeHeader}
173
- style={[StyleSheet.absoluteFill, internalScreenStyle]}>
174
- <HeaderHeightContext.Provider value={headerHeight}>
175
- <HeaderConfig {...options} route={route} />
176
- {content}
177
- </HeaderHeightContext.Provider>
178
- </Screen>
179
- </ScreenStack>
180
- );
181
- }
182
- return content;
183
- };
184
-
185
- type NavigationRoute<
186
- ParamList extends ParamListBase,
187
- RouteName extends keyof ParamList,
188
- > = Route<Extract<RouteName, string>, ParamList[RouteName]> & {
189
- state?: NavigationState | PartialState<NavigationState>;
190
- };
191
-
192
- const RouteView = ({
193
- descriptors,
194
- route,
195
- index,
196
- navigation,
197
- stateKey,
198
- screensRefs,
199
- }: {
200
- descriptors: NativeStackDescriptorMap;
201
- route: NavigationRoute<ParamListBase, string>;
202
- index: number;
203
- navigation: NativeStackNavigationHelpers;
204
- stateKey: string;
205
- screensRefs: React.MutableRefObject<ScreensRefsHolder>;
206
- }) => {
207
- const { options, render: renderScene } = descriptors[route.key];
208
-
209
- const {
210
- fullScreenSwipeShadowEnabled = true,
211
- gestureEnabled,
212
- headerShown,
213
- hideKeyboardOnSwipe,
214
- homeIndicatorHidden,
215
- sheetLargestUndimmedDetentIndex = 'none',
216
- sheetGrabberVisible = false,
217
- sheetCornerRadius = -1.0,
218
- sheetElevation = 24,
219
- sheetExpandsWhenScrolledToEdge = true,
220
- sheetInitialDetentIndex = 0,
221
- nativeBackButtonDismissalEnabled = false,
222
- navigationBarColor,
223
- navigationBarTranslucent,
224
- navigationBarHidden,
225
- replaceAnimation = 'pop',
226
- screenOrientation,
227
- statusBarAnimation,
228
- statusBarColor,
229
- statusBarHidden,
230
- statusBarStyle,
231
- statusBarTranslucent,
232
- swipeDirection = 'horizontal',
233
- transitionDuration,
234
- freezeOnBlur,
235
- unstable_sheetFooter = null,
236
- contentStyle,
237
- } = options;
238
-
239
- let {
240
- sheetAllowedDetents = [1.0],
241
- customAnimationOnSwipe,
242
- fullScreenSwipeEnabled,
243
- gestureResponseDistance,
244
- stackAnimation,
245
- stackPresentation = 'push',
246
- } = options;
247
-
248
- // We take backgroundColor from contentStyle and apply it on Screen.
249
- // This allows to workaround one issue with truncated
250
- // content with formSheet presentation.
251
- let internalScreenStyle;
252
-
253
- if (stackPresentation === 'formSheet' && contentStyle) {
254
- const flattenContentStyles = StyleSheet.flatten(contentStyle);
255
- internalScreenStyle = {
256
- backgroundColor: flattenContentStyles?.backgroundColor,
257
- };
258
- }
259
-
260
- if (sheetAllowedDetents === 'fitToContents') {
261
- sheetAllowedDetents = [-1];
262
- }
263
-
264
- if (swipeDirection === 'vertical') {
265
- // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`
266
- // so the screen can be dismissed from any point on screen.
267
- // `customAnimationOnSwipe` needs to be set to `true` so the `stackAnimation` set by user can be used,
268
- // otherwise `simple_push` will be used.
269
- // Also, the default animation for this direction seems to be `slide_from_bottom`.
270
- if (fullScreenSwipeEnabled === undefined) {
271
- fullScreenSwipeEnabled = true;
272
- }
273
- if (customAnimationOnSwipe === undefined) {
274
- customAnimationOnSwipe = true;
275
- }
276
- if (stackAnimation === undefined) {
277
- stackAnimation = 'slide_from_bottom';
278
- }
279
- }
280
-
281
- if (index === 0) {
282
- // first screen should always be treated as `push`, it resolves problems with no header animation
283
- // for navigator with first screen as `modal` and the next as `push`
284
- stackPresentation = 'push';
285
- }
286
-
287
- const dimensions = useSafeAreaFrame();
288
- const topInset = useSafeAreaInsets().top;
289
- const isStatusBarTranslucent = options.statusBarTranslucent ?? false;
290
- const statusBarHeight = getStatusBarHeight(
291
- topInset,
292
- dimensions,
293
- isStatusBarTranslucent,
294
- );
295
-
296
- const hasLargeHeader = options.headerLargeTitle ?? false;
297
-
298
- const defaultHeaderHeight = getDefaultHeaderHeight(
299
- dimensions,
300
- statusBarHeight,
301
- stackPresentation,
302
- hasLargeHeader,
303
- );
304
-
305
- const parentHeaderHeight = React.useContext(HeaderHeightContext);
306
- const isHeaderInPush = isAndroid
307
- ? headerShown
308
- : stackPresentation === 'push' && headerShown !== false;
309
-
310
- const staticHeaderHeight =
311
- isHeaderInPush !== false ? defaultHeaderHeight : parentHeaderHeight ?? 0;
312
-
313
- // We need to ensure the first retrieved header height will be cached and set in animatedHeaderHeight.
314
- // We're caching the header height here, as on iOS native side events are not always coming to the JS on first notify.
315
- // TODO: Check why first event is not being received once it is cached on the native side.
316
- const cachedAnimatedHeaderHeight = React.useRef(defaultHeaderHeight);
317
- const animatedHeaderHeight = React.useRef(
318
- // amznmod_react - change imports to kepler packages
319
- // @ts-ignore
320
- new Animated.Value(staticHeaderHeight, {
321
- useNativeDriver: true,
322
- }),
323
- ).current;
324
-
325
- const Screen = React.useContext(ScreenContext);
326
- const { dark } = useTheme();
327
-
328
- const screenRef = React.useRef(null);
329
- React.useEffect(() => {
330
- screensRefs.current[route.key] = screenRef;
331
- return () => {
332
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
333
- delete screensRefs.current[route.key];
334
- };
335
- });
336
-
337
- return (
338
- <Screen
339
- key={route.key}
340
- ref={screenRef}
341
- enabled
342
- isNativeStack
343
- hasLargeHeader={hasLargeHeader}
344
- style={[StyleSheet.absoluteFill, internalScreenStyle]}
345
- sheetAllowedDetents={sheetAllowedDetents}
346
- sheetLargestUndimmedDetentIndex={sheetLargestUndimmedDetentIndex}
347
- sheetGrabberVisible={sheetGrabberVisible}
348
- sheetInitialDetentIndex={sheetInitialDetentIndex}
349
- sheetCornerRadius={sheetCornerRadius}
350
- sheetElevation={sheetElevation}
351
- sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}
352
- customAnimationOnSwipe={customAnimationOnSwipe}
353
- freezeOnBlur={freezeOnBlur}
354
- fullScreenSwipeEnabled={fullScreenSwipeEnabled}
355
- fullScreenSwipeShadowEnabled={fullScreenSwipeShadowEnabled}
356
- hideKeyboardOnSwipe={hideKeyboardOnSwipe}
357
- homeIndicatorHidden={homeIndicatorHidden}
358
- gestureEnabled={isAndroid ? false : gestureEnabled}
359
- gestureResponseDistance={gestureResponseDistance}
360
- nativeBackButtonDismissalEnabled={nativeBackButtonDismissalEnabled}
361
- navigationBarColor={navigationBarColor}
362
- navigationBarTranslucent={navigationBarTranslucent}
363
- navigationBarHidden={navigationBarHidden}
364
- replaceAnimation={replaceAnimation}
365
- screenOrientation={screenOrientation}
366
- stackAnimation={stackAnimation}
367
- stackPresentation={stackPresentation}
368
- statusBarAnimation={statusBarAnimation}
369
- statusBarColor={statusBarColor}
370
- statusBarHidden={statusBarHidden}
371
- statusBarStyle={statusBarStyle ?? (dark ? 'light' : 'dark')}
372
- statusBarTranslucent={statusBarTranslucent}
373
- swipeDirection={swipeDirection}
374
- transitionDuration={transitionDuration}
375
- onHeaderBackButtonClicked={() => {
376
- navigation.dispatch({
377
- ...StackActions.pop(),
378
- source: route.key,
379
- target: stateKey,
380
- });
381
- }}
382
- onWillAppear={() => {
383
- navigation.emit({
384
- type: 'transitionStart',
385
- data: { closing: false },
386
- target: route.key,
387
- });
388
- }}
389
- onWillDisappear={() => {
390
- navigation.emit({
391
- type: 'transitionStart',
392
- data: { closing: true },
393
- target: route.key,
394
- });
395
- }}
396
- onAppear={() => {
397
- navigation.emit({
398
- type: 'appear',
399
- target: route.key,
400
- });
401
- navigation.emit({
402
- type: 'transitionEnd',
403
- data: { closing: false },
404
- target: route.key,
405
- });
406
- }}
407
- onDisappear={() => {
408
- navigation.emit({
409
- type: 'transitionEnd',
410
- data: { closing: true },
411
- target: route.key,
412
- });
413
- }}
414
- onHeaderHeightChange={e => {
415
- const headerHeight = e.nativeEvent.headerHeight;
416
-
417
- if (cachedAnimatedHeaderHeight.current !== headerHeight) {
418
- // Currently, we're setting value by Animated#setValue, because we want to cache animated value.
419
- // Also, in React Native 0.72 there was a bug on Fabric causing a large delay between the screen transition,
420
- // which should not occur.
421
- // TODO: Check if it's possible to replace animated#setValue to Animated#event.
422
- animatedHeaderHeight.setValue(headerHeight);
423
- cachedAnimatedHeaderHeight.current = headerHeight;
424
- }
425
- }}
426
- onDismissed={e => {
427
- navigation.emit({
428
- type: 'dismiss',
429
- target: route.key,
430
- });
431
-
432
- const dismissCount =
433
- e.nativeEvent.dismissCount > 0 ? e.nativeEvent.dismissCount : 1;
434
-
435
- navigation.dispatch({
436
- ...StackActions.pop(dismissCount),
437
- source: route.key,
438
- target: stateKey,
439
- });
440
- }}
441
- onSheetDetentChanged={e => {
442
- navigation.emit({
443
- type: 'sheetDetentChange',
444
- target: route.key,
445
- data: {
446
- index: e.nativeEvent.index,
447
- isStable: e.nativeEvent.isStable,
448
- },
449
- });
450
- }}
451
- onGestureCancel={() => {
452
- navigation.emit({
453
- type: 'gestureCancel',
454
- target: route.key,
455
- });
456
- }}>
457
- <AnimatedHeaderHeightContext.Provider value={animatedHeaderHeight}>
458
- <HeaderHeightContext.Provider value={staticHeaderHeight}>
459
- <MaybeNestedStack
460
- options={options}
461
- route={route}
462
- stackPresentation={stackPresentation}
463
- internalScreenStyle={internalScreenStyle}>
464
- {renderScene()}
465
- </MaybeNestedStack>
466
- {/* HeaderConfig must not be first child of a Screen.
467
- See https://github.com/software-mansion/react-native-screens/pull/1825
468
- for detailed explanation */}
469
- <HeaderConfig
470
- {...options}
471
- route={route}
472
- headerShown={isHeaderInPush}
473
- />
474
- {stackPresentation === 'formSheet' && unstable_sheetFooter && (
475
- <FooterComponent>{unstable_sheetFooter()}</FooterComponent>
476
- )}
477
- </HeaderHeightContext.Provider>
478
- </AnimatedHeaderHeightContext.Provider>
479
- </Screen>
480
- );
481
- };
482
-
483
- type Props = {
484
- state: StackNavigationState<ParamListBase>;
485
- navigation: NativeStackNavigationHelpers;
486
- descriptors: NativeStackDescriptorMap;
487
- };
488
-
489
- function NativeStackViewInner({
490
- state,
491
- navigation,
492
- descriptors,
493
- }: Props): JSX.Element {
494
- const { key, routes } = state;
495
-
496
- const currentRouteKey = routes[state.index].key;
497
- const { goBackGesture, transitionAnimation, screenEdgeGesture } =
498
- descriptors[currentRouteKey].options;
499
-
500
- const screensRefs = React.useRef<ScreensRefsHolder>({});
501
-
502
- return (
503
- <ScreenStack
504
- style={styles.container}
505
- goBackGesture={goBackGesture}
506
- transitionAnimation={transitionAnimation}
507
- screenEdgeGesture={screenEdgeGesture ?? false}
508
- screensRefs={screensRefs}
509
- currentScreenId={currentRouteKey}>
510
- {routes.map((route, index) => (
511
- <RouteView
512
- key={route.key}
513
- descriptors={descriptors}
514
- route={route}
515
- index={index}
516
- navigation={navigation}
517
- stateKey={key}
518
- screensRefs={screensRefs}
519
- />
520
- ))}
521
- </ScreenStack>
522
- );
523
- }
524
-
525
- export default function NativeStackView(props: Props) {
526
- return (
527
- <SafeAreaProviderCompat>
528
- <NativeStackViewInner {...props} />
529
- </SafeAreaProviderCompat>
530
- );
531
- }
532
-
533
- const styles = StyleSheet.create({
534
- container: {
535
- flex: 1,
536
- },
537
- absoluteFill: {
538
- position: 'absolute',
539
- top: 0,
540
- left: 0,
541
- right: 0,
542
- bottom: 0,
543
- },
544
- absoluteFillNoBottom: {
545
- position: 'absolute',
546
- top: 0,
547
- left: 0,
548
- right: 0,
549
- },
550
- });
@@ -1,7 +0,0 @@
1
- import * as React from 'react';
2
- // @ts-ignore file to be used only if `react-native-reanimated` available in the project
3
- import Animated from 'react-native-reanimated';
4
-
5
- export default React.createContext<Animated.SharedValue<number> | undefined>(
6
- undefined,
7
- );
@@ -1,132 +0,0 @@
1
- /*
2
- * Portions of this file are copyright (c) 2023 Amazon.com, Inc. or its affiliates. All rights reserved.
3
- *
4
- * PORTIONS OF THIS FILE ARE AMAZON PROPRIETARY/CONFIDENTIAL. USE IS SUBJECT TO LICENSE TERMS.
5
- *
6
- * Amazon modifications are indicated by [amznmod_* comments].
7
- */
8
-
9
- /*
10
- * Changelog:
11
- * Set up react-native-screens package to build for Kepler
12
- */
13
-
14
- import React from 'react';
15
- import { Platform } from 'react-native';
16
- import { InnerScreen } from '../components/Screen';
17
- import {
18
- HeaderHeightChangeEventType,
19
- ScreenProps,
20
- TransitionProgressEventType,
21
- } from '../types';
22
-
23
- // @ts-ignore file to be used only if `react-native-reanimated` available in the project
24
- import Animated, { useEvent, useSharedValue } from 'react-native-reanimated';
25
- import ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';
26
- import {
27
- useSafeAreaFrame,
28
- useSafeAreaInsets,
29
- // amznmod_react - change imports to kepler packages
30
- } from '@amazon-devices/react-native-safe-area-context';
31
- import getDefaultHeaderHeight from '../native-stack/utils/getDefaultHeaderHeight';
32
- import getStatusBarHeight from '../native-stack/utils/getStatusBarHeight';
33
- import ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';
34
-
35
- const AnimatedScreen = Animated.createAnimatedComponent(
36
- InnerScreen as unknown as React.ComponentClass,
37
- );
38
-
39
- // We use prop added to global by reanimated since it seems safer than the one from RN. See:
40
- // https://github.com/software-mansion/react-native-reanimated/blob/3fe8b35b05e82b2f2aefda1fb97799cf81e4b7bb/src/reanimated2/UpdateProps.ts#L46
41
- // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
42
- const ENABLE_FABRIC = !!global?._IS_FABRIC;
43
-
44
- const ReanimatedNativeStackScreen = React.forwardRef<
45
- typeof AnimatedScreen,
46
- ScreenProps
47
- >((props, ref) => {
48
- const { children, ...rest } = props;
49
- const { stackPresentation = 'push', hasLargeHeader } = rest;
50
-
51
- const dimensions = useSafeAreaFrame();
52
- const topInset = useSafeAreaInsets().top;
53
- const isStatusBarTranslucent = rest.statusBarTranslucent ?? false;
54
- const statusBarHeight = getStatusBarHeight(
55
- topInset,
56
- dimensions,
57
- isStatusBarTranslucent,
58
- );
59
-
60
- // Default header height, normally used in `useHeaderHeight` hook.
61
- // Here, it is used for returning a default value for shared value.
62
- const defaultHeaderHeight = getDefaultHeaderHeight(
63
- dimensions,
64
- statusBarHeight,
65
- stackPresentation,
66
- hasLargeHeader,
67
- );
68
-
69
- const cachedHeaderHeight = React.useRef(defaultHeaderHeight);
70
- const headerHeight = useSharedValue(defaultHeaderHeight);
71
-
72
- const progress = useSharedValue(0);
73
- const closing = useSharedValue(0);
74
- const goingForward = useSharedValue(0);
75
-
76
- return (
77
- <AnimatedScreen
78
- // @ts-ignore some problems with ref and onTransitionProgressReanimated being "fake" prop for parsing of `useEvent` return value
79
- ref={ref}
80
- onTransitionProgressReanimated={useEvent(
81
- (event: TransitionProgressEventType) => {
82
- 'worklet';
83
- progress.value = event.progress;
84
- closing.value = event.closing;
85
- goingForward.value = event.goingForward;
86
- },
87
- [
88
- // This should not be necessary, but is not properly managed by `react-native-reanimated`
89
- // @ts-ignore wrong type
90
- Platform.OS === 'android'
91
- ? 'onTransitionProgress'
92
- : // for some reason there is a difference in required event name between architectures
93
- ENABLE_FABRIC
94
- ? 'onTransitionProgress'
95
- : 'topTransitionProgress',
96
- ],
97
- )}
98
- onHeaderHeightChangeReanimated={useEvent(
99
- (event: HeaderHeightChangeEventType) => {
100
- 'worklet';
101
- if (event.headerHeight !== cachedHeaderHeight.current) {
102
- headerHeight.value = event.headerHeight;
103
- cachedHeaderHeight.current = event.headerHeight;
104
- }
105
- },
106
- [
107
- // @ts-ignore wrong type
108
- Platform.OS === 'android'
109
- ? 'onHeaderHeightChange'
110
- : ENABLE_FABRIC
111
- ? 'onHeaderHeightChange'
112
- : 'topHeaderHeightChange',
113
- ],
114
- )}
115
- {...rest}>
116
- <ReanimatedHeaderHeightContext.Provider value={headerHeight}>
117
- <ReanimatedTransitionProgressContext.Provider
118
- value={{
119
- progress,
120
- closing,
121
- goingForward,
122
- }}>
123
- {children}
124
- </ReanimatedTransitionProgressContext.Provider>
125
- </ReanimatedHeaderHeightContext.Provider>
126
- </AnimatedScreen>
127
- );
128
- });
129
-
130
- ReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';
131
-
132
- export default ReanimatedNativeStackScreen;