@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,392 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { Animated, View, Platform } from 'react-native';
5
-
6
- import TransitionProgressContext from '../TransitionProgressContext';
7
- import DelayedFreeze from './helpers/DelayedFreeze';
8
- import { ScreenProps } from '../types';
9
-
10
- import {
11
- freezeEnabled,
12
- isNativePlatformSupported,
13
- screensEnabled,
14
- } from '../core';
15
-
16
- // Native components
17
- import ScreenNativeComponent, {
18
- NativeProps as ScreenNativeComponentProps,
19
- } from '../fabric/ScreenNativeComponent';
20
- import ModalScreenNativeComponent, {
21
- NativeProps as ModalScreenNativeComponentProps,
22
- } from '../fabric/ModalScreenNativeComponent';
23
- import { usePrevious } from './helpers/usePrevious';
24
-
25
- type NativeProps = ScreenNativeComponentProps | ModalScreenNativeComponentProps;
26
- const AnimatedNativeScreen = Animated.createAnimatedComponent(
27
- ScreenNativeComponent,
28
- );
29
- const AnimatedNativeModalScreen = Animated.createAnimatedComponent(
30
- ModalScreenNativeComponent,
31
- );
32
-
33
- // Incomplete type, all accessible properties available at:
34
- // react-native/Libraries/Components/View/ReactNativeViewViewConfig.js
35
- interface ViewConfig extends View {
36
- viewConfig: {
37
- validAttributes: {
38
- style: {
39
- display: boolean;
40
- };
41
- };
42
- };
43
- _viewConfig: {
44
- validAttributes: {
45
- style: {
46
- display: boolean;
47
- };
48
- };
49
- };
50
- }
51
-
52
- // This value must be kept in sync with native side.
53
- const SHEET_FIT_TO_CONTENTS = [-1];
54
- const SHEET_COMPAT_LARGE = [1.0];
55
- const SHEET_COMPAT_MEDIUM = [0.5];
56
- const SHEET_COMPAT_ALL = [0.5, 1.0];
57
-
58
- const SHEET_DIMMED_ALWAYS = -1;
59
- // const SHEET_DIMMED_NEVER = 9999;
60
-
61
- function assertDetentsArrayIsSorted(array: number[]) {
62
- for (let i = 1; i < array.length; i++) {
63
- if (array[i - 1] > array[i]) {
64
- throw new Error(
65
- '[RNScreens] The detent array is not sorted in ascending order!',
66
- );
67
- }
68
- }
69
- }
70
-
71
- // These exist to transform old 'legacy' values used by the formsheet API to the new API shape.
72
- // We can get rid of it, once we get rid of support for legacy values: 'large', 'medium', 'all'.
73
- function resolveSheetAllowedDetents(
74
- allowedDetentsCompat: ScreenProps['sheetAllowedDetents'],
75
- ): number[] {
76
- if (Array.isArray(allowedDetentsCompat)) {
77
- if (Platform.OS === 'android' && allowedDetentsCompat.length > 3) {
78
- if (__DEV__) {
79
- console.warn(
80
- '[RNScreens] Sheets API on Android do accept only up to 3 values. Any surplus value are ignored.',
81
- );
82
- }
83
- allowedDetentsCompat = allowedDetentsCompat.slice(0, 3);
84
- }
85
- if (__DEV__) {
86
- assertDetentsArrayIsSorted(allowedDetentsCompat);
87
- }
88
- return allowedDetentsCompat;
89
- } else if (allowedDetentsCompat === 'fitToContents') {
90
- return SHEET_FIT_TO_CONTENTS;
91
- } else if (allowedDetentsCompat === 'large') {
92
- return SHEET_COMPAT_LARGE;
93
- } else if (allowedDetentsCompat === 'medium') {
94
- return SHEET_COMPAT_MEDIUM;
95
- } else if (allowedDetentsCompat === 'all') {
96
- return SHEET_COMPAT_ALL;
97
- } else {
98
- // Safe default, only large detent is allowed.
99
- return [1.0];
100
- }
101
- }
102
-
103
- function resolveSheetLargestUndimmedDetent(
104
- lud: ScreenProps['sheetLargestUndimmedDetentIndex'],
105
- lastDetentIndex: number,
106
- ): number {
107
- if (typeof lud === 'number') {
108
- if (!isIndexInClosedRange(lud, SHEET_DIMMED_ALWAYS, lastDetentIndex)) {
109
- if (__DEV__) {
110
- throw new Error(
111
- "[RNScreens] Provided value of 'sheetLargestUndimmedDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.",
112
- );
113
- }
114
- // Return default in production
115
- return SHEET_DIMMED_ALWAYS;
116
- }
117
- return lud;
118
- } else if (lud === 'last') {
119
- return lastDetentIndex;
120
- } else if (lud === 'none' || lud === 'all') {
121
- return SHEET_DIMMED_ALWAYS;
122
- } else if (lud === 'large') {
123
- return 1;
124
- } else if (lud === 'medium') {
125
- return 0;
126
- } else {
127
- // Safe default, every detent is dimmed
128
- return SHEET_DIMMED_ALWAYS;
129
- }
130
- }
131
-
132
- function resolveSheetInitialDetentIndex(
133
- index: ScreenProps['sheetInitialDetentIndex'],
134
- lastDetentIndex: number,
135
- ): number {
136
- if (index === 'last') {
137
- index = lastDetentIndex;
138
- } else if (index == null) {
139
- // Intentional check for undefined & null ^
140
- index = 0;
141
- }
142
- if (!isIndexInClosedRange(index, 0, lastDetentIndex)) {
143
- if (__DEV__) {
144
- throw new Error(
145
- "[RNScreens] Provided value of 'sheetInitialDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.",
146
- );
147
- }
148
- // Return default in production
149
- return 0;
150
- }
151
- return index;
152
- }
153
-
154
- function isIndexInClosedRange(
155
- value: number,
156
- lowerBound: number,
157
- upperBound: number,
158
- ): boolean {
159
- return Number.isInteger(value) && value >= lowerBound && value <= upperBound;
160
- }
161
-
162
- export const InnerScreen = React.forwardRef<View, ScreenProps>(
163
- function InnerScreen(props, ref) {
164
- const innerRef = React.useRef<ViewConfig | null>(null);
165
- React.useImperativeHandle(ref, () => innerRef.current!, []);
166
- const prevActivityState = usePrevious(props.activityState);
167
-
168
- const setRef = (ref: ViewConfig) => {
169
- innerRef.current = ref;
170
- props.onComponentRef?.(ref);
171
- };
172
-
173
- const closing = React.useRef(new Animated.Value(0)).current;
174
- const progress = React.useRef(new Animated.Value(0)).current;
175
- const goingForward = React.useRef(new Animated.Value(0)).current;
176
-
177
- const {
178
- enabled = screensEnabled(),
179
- freezeOnBlur = freezeEnabled(),
180
- shouldFreeze,
181
- ...rest
182
- } = props;
183
-
184
- // To maintain default behavior of formSheet stack presentation style and to have reasonable
185
- // defaults for new medium-detent iOS API we need to set defaults here
186
- const {
187
- // formSheet presentation related props
188
- sheetAllowedDetents = [1.0],
189
- sheetLargestUndimmedDetentIndex = SHEET_DIMMED_ALWAYS,
190
- sheetGrabberVisible = false,
191
- sheetCornerRadius = -1.0,
192
- sheetExpandsWhenScrolledToEdge = true,
193
- sheetElevation = 24,
194
- sheetInitialDetentIndex = 0,
195
- // Other
196
- stackPresentation,
197
- // Events for override
198
- onAppear,
199
- onDisappear,
200
- onWillAppear,
201
- onWillDisappear,
202
- } = rest;
203
-
204
- if (enabled && isNativePlatformSupported) {
205
- const resolvedSheetAllowedDetents =
206
- resolveSheetAllowedDetents(sheetAllowedDetents);
207
- const resolvedSheetLargestUndimmedDetent =
208
- resolveSheetLargestUndimmedDetent(
209
- sheetLargestUndimmedDetentIndex,
210
- resolvedSheetAllowedDetents.length - 1,
211
- );
212
- const resolvedSheetInitialDetentIndex = resolveSheetInitialDetentIndex(
213
- sheetInitialDetentIndex,
214
- resolvedSheetAllowedDetents.length - 1,
215
- );
216
- // Due to how Yoga resolves layout, we need to have different components for modal nad non-modal screens
217
- const AnimatedScreen =
218
- Platform.OS === 'android' ||
219
- // amznmod_react - disable NativeModalScreen on kepler because native component is not implemented yet
220
- // @ts-ignore
221
- Platform.OS === 'kepler' ||
222
- stackPresentation === undefined ||
223
- stackPresentation === 'push' ||
224
- stackPresentation === 'containedModal' ||
225
- stackPresentation === 'containedTransparentModal'
226
- ? AnimatedNativeScreen
227
- : AnimatedNativeModalScreen;
228
-
229
- let {
230
- // Filter out active prop in this case because it is unused and
231
- // can cause problems depending on react-native version:
232
- // https://github.com/react-navigation/react-navigation/issues/4886
233
- active,
234
- activityState,
235
- children,
236
- isNativeStack,
237
- gestureResponseDistance,
238
- onGestureCancel,
239
- style,
240
- ...props
241
- } = rest;
242
-
243
- if (active !== undefined && activityState === undefined) {
244
- console.warn(
245
- 'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens',
246
- );
247
- activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition
248
- }
249
-
250
- if (
251
- isNativeStack &&
252
- prevActivityState !== undefined &&
253
- activityState !== undefined
254
- ) {
255
- if (prevActivityState > activityState) {
256
- throw new Error(
257
- '[RNScreens] activityState cannot be decreased in NativeStack',
258
- );
259
- }
260
- }
261
-
262
- const handleRef = (ref: ViewConfig) => {
263
- if (ref?.viewConfig?.validAttributes?.style) {
264
- ref.viewConfig.validAttributes.style = {
265
- ...ref.viewConfig.validAttributes.style,
266
- display: false,
267
- };
268
- setRef(ref);
269
- } else if (ref?._viewConfig?.validAttributes?.style) {
270
- ref._viewConfig.validAttributes.style = {
271
- ...ref._viewConfig.validAttributes.style,
272
- display: false,
273
- };
274
- setRef(ref);
275
- }
276
- };
277
-
278
- const freeze =
279
- freezeOnBlur &&
280
- (shouldFreeze !== undefined ? shouldFreeze : activityState === 0);
281
-
282
- return (
283
- <DelayedFreeze freeze={freeze}>
284
- <AnimatedScreen
285
- {...props}
286
- /**
287
- * This messy override is to conform NativeProps used by codegen and
288
- * our Public API. To see reasoning go to this PR:
289
- * https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
290
- */
291
- onAppear={onAppear as NativeProps['onAppear']}
292
- onDisappear={onDisappear as NativeProps['onDisappear']}
293
- onWillAppear={onWillAppear as NativeProps['onWillAppear']}
294
- onWillDisappear={onWillDisappear as NativeProps['onWillDisappear']}
295
- onGestureCancel={
296
- (onGestureCancel as NativeProps['onGestureCancel']) ??
297
- (() => {
298
- // for internal use
299
- })
300
- }
301
- //
302
- // Hierarchy of screens is handled on the native side and setting zIndex value causes this issue:
303
- // https://github.com/software-mansion/react-native-screens/issues/2345
304
- // With below change of zIndex, we force RN diffing mechanism to NOT include detaching and attaching mutation in one transaction.
305
- // Detailed information can be found here https://github.com/software-mansion/react-native-screens/pull/2351
306
- style={[style, { zIndex: undefined }]}
307
- activityState={activityState}
308
- sheetAllowedDetents={resolvedSheetAllowedDetents}
309
- sheetLargestUndimmedDetent={resolvedSheetLargestUndimmedDetent}
310
- sheetElevation={sheetElevation}
311
- sheetGrabberVisible={sheetGrabberVisible}
312
- sheetCornerRadius={sheetCornerRadius}
313
- sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}
314
- sheetInitialDetent={resolvedSheetInitialDetentIndex}
315
- gestureResponseDistance={{
316
- start: gestureResponseDistance?.start ?? -1,
317
- end: gestureResponseDistance?.end ?? -1,
318
- top: gestureResponseDistance?.top ?? -1,
319
- bottom: gestureResponseDistance?.bottom ?? -1,
320
- }}
321
- // This prevents showing blank screen when navigating between multiple screens with freezing
322
- // https://github.com/software-mansion/react-native-screens/pull/1208
323
- ref={handleRef}
324
- onTransitionProgress={
325
- !isNativeStack
326
- ? undefined
327
- : Animated.event(
328
- [
329
- {
330
- nativeEvent: {
331
- progress,
332
- closing,
333
- goingForward,
334
- },
335
- },
336
- ],
337
- { useNativeDriver: true },
338
- )
339
- }>
340
- {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed
341
- children
342
- ) : (
343
- <TransitionProgressContext.Provider
344
- value={{
345
- progress,
346
- closing,
347
- goingForward,
348
- }}>
349
- {children}
350
- </TransitionProgressContext.Provider>
351
- )}
352
- </AnimatedScreen>
353
- </DelayedFreeze>
354
- );
355
- } else {
356
- // same reason as above
357
- let {
358
- active,
359
- activityState,
360
- style,
361
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
362
- onComponentRef,
363
- ...props
364
- } = rest;
365
-
366
- if (active !== undefined && activityState === undefined) {
367
- activityState = active !== 0 ? 2 : 0;
368
- }
369
- return (
370
- <Animated.View
371
- style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}
372
- ref={setRef}
373
- {...props}
374
- />
375
- );
376
- }
377
- },
378
- );
379
-
380
- // context to be used when the user wants to use enhanced implementation
381
- // e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)
382
- export const ScreenContext = React.createContext(InnerScreen);
383
-
384
- const Screen = React.forwardRef<View, ScreenProps>((props, ref) => {
385
- const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;
386
-
387
- return <ScreenWrapper {...props} ref={ref} />;
388
- });
389
-
390
- Screen.displayName = 'Screen';
391
-
392
- export default Screen;
@@ -1,46 +0,0 @@
1
- 'use client';
2
-
3
- import { ScreenProps } from '../types';
4
- import { Animated, View } from 'react-native';
5
- import React from 'react';
6
-
7
- import { screensEnabled } from '../core';
8
-
9
- export const InnerScreen = View;
10
-
11
- // We're using class component here because of the error from reanimated:
12
- // createAnimatedComponent` does not support stateless functional components; use a class component instead.
13
- // NOTE: React Server Components do not support class components.
14
- export class NativeScreen extends React.Component<ScreenProps> {
15
- render(): JSX.Element {
16
- let {
17
- active,
18
- activityState,
19
- style,
20
- enabled = screensEnabled(),
21
- ...rest
22
- } = this.props;
23
-
24
- if (enabled) {
25
- if (active !== undefined && activityState === undefined) {
26
- activityState = active !== 0 ? 2 : 0; // change taken from index.native.tsx
27
- }
28
- return (
29
- <View
30
- // @ts-expect-error: hidden exists on web, but not in React Native
31
- hidden={activityState === 0}
32
- style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}
33
- {...rest}
34
- />
35
- );
36
- }
37
-
38
- return <View {...rest} />;
39
- }
40
- }
41
-
42
- const Screen = Animated.createAnimatedComponent(NativeScreen);
43
-
44
- export const ScreenContext = React.createContext(Screen);
45
-
46
- export default Screen;
@@ -1,28 +0,0 @@
1
- 'use client';
2
-
3
- import { Platform, View } from 'react-native';
4
- import React from 'react';
5
- import { ScreenContainerProps } from '../types';
6
- import { isNativePlatformSupported, screensEnabled } from '../core';
7
-
8
- // Native components
9
- import ScreenContainerNativeComponent from '../fabric/ScreenContainerNativeComponent';
10
- import ScreenNavigationContainerNativeComponent from '../fabric/ScreenNavigationContainerNativeComponent';
11
-
12
- function ScreenContainer(props: ScreenContainerProps) {
13
- const { enabled = screensEnabled(), hasTwoStates, ...rest } = props;
14
-
15
- if (enabled && isNativePlatformSupported) {
16
- if (hasTwoStates) {
17
- const ScreenNavigationContainer =
18
- Platform.OS === 'ios'
19
- ? ScreenNavigationContainerNativeComponent
20
- : ScreenContainerNativeComponent;
21
- return <ScreenNavigationContainer {...rest} />;
22
- }
23
- return <ScreenContainerNativeComponent {...rest} />;
24
- }
25
- return <View {...rest} />;
26
- }
27
-
28
- export default ScreenContainer;
@@ -1,5 +0,0 @@
1
- import { View } from 'react-native';
2
-
3
- const ScreenContainer = View;
4
-
5
- export default ScreenContainer;
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import { ViewProps } from 'react-native';
3
- import ScreenContentWrapperNativeComponent from '../fabric/ScreenContentWrapperNativeComponent';
4
-
5
- function ScreenContentWrapper(props: ViewProps) {
6
- return <ScreenContentWrapperNativeComponent collapsable={false} {...props} />;
7
- }
8
-
9
- export default ScreenContentWrapper;
@@ -1,5 +0,0 @@
1
- import { View } from 'react-native';
2
-
3
- const ScreenContentWrapper = View;
4
-
5
- export default ScreenContentWrapper;
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { ViewProps } from 'react-native';
3
- import ScreenFooterNativeComponent from '../fabric/ScreenFooterNativeComponent';
4
-
5
- /**
6
- * Unstable API
7
- */
8
- function ScreenFooter(props: ViewProps) {
9
- return <ScreenFooterNativeComponent {...props} />;
10
- }
11
-
12
- type FooterProps = {
13
- children?: React.ReactNode;
14
- };
15
-
16
- export function FooterComponent({ children }: FooterProps) {
17
- return <ScreenFooter collapsable={false}>{children}</ScreenFooter>;
18
- }
19
-
20
- export default ScreenFooter;
@@ -1,7 +0,0 @@
1
- import { View } from 'react-native';
2
-
3
- const ScreenFooter = View;
4
- const FooterComponent = View;
5
-
6
- export default ScreenFooter;
7
- export { FooterComponent };
@@ -1,112 +0,0 @@
1
- 'use client';
2
-
3
- import React, { PropsWithChildren } from 'react';
4
- import {
5
- GestureDetectorBridge,
6
- ScreensRefsHolder,
7
- GestureProviderProps,
8
- GoBackGesture,
9
- ScreenStackProps,
10
- } from '../types';
11
- import { GHContext, RNSScreensRefContext } from '../contexts';
12
- import warnOnce from 'warn-once';
13
-
14
- // Native components
15
- import ScreenStackNativeComponent, {
16
- NativeProps,
17
- } from '../fabric/ScreenStackNativeComponent';
18
-
19
- const assertGHProvider = (
20
- ScreenGestureDetector: (
21
- props: PropsWithChildren<GestureProviderProps>,
22
- ) => React.JSX.Element,
23
- goBackGesture: GoBackGesture | undefined,
24
- ) => {
25
- const isGestureDetectorProviderNotDetected =
26
- ScreenGestureDetector.name !== 'GHWrapper' && goBackGesture !== undefined;
27
-
28
- warnOnce(
29
- isGestureDetectorProviderNotDetected,
30
- 'Cannot detect GestureDetectorProvider in a screen that uses `goBackGesture`. Make sure your navigator is wrapped in GestureDetectorProvider.',
31
- );
32
- };
33
-
34
- const assertCustomScreenTransitionsProps = (
35
- screensRefs: ScreenStackProps['screensRefs'],
36
- currentScreenId: ScreenStackProps['currentScreenId'],
37
- goBackGesture: ScreenStackProps['goBackGesture'],
38
- ) => {
39
- const isGestureDetectorNotConfiguredProperly =
40
- goBackGesture !== undefined &&
41
- screensRefs === null &&
42
- currentScreenId === undefined;
43
-
44
- warnOnce(
45
- isGestureDetectorNotConfiguredProperly,
46
- 'Custom Screen Transition require screensRefs and currentScreenId to be provided.',
47
- );
48
- };
49
-
50
- function ScreenStack(props: ScreenStackProps) {
51
- const {
52
- goBackGesture,
53
- screensRefs: passedScreenRefs, // TODO: For compatibility with v5, remove once v5 is removed
54
- currentScreenId,
55
- transitionAnimation,
56
- screenEdgeGesture,
57
- onFinishTransitioning,
58
- children,
59
- ...rest
60
- } = props;
61
-
62
- const screensRefs = React.useRef<ScreensRefsHolder>(
63
- passedScreenRefs?.current ?? {},
64
- );
65
- const ref = React.useRef(null);
66
- const ScreenGestureDetector = React.useContext(GHContext);
67
- const gestureDetectorBridge = React.useRef<GestureDetectorBridge>({
68
- stackUseEffectCallback: _stackRef => {
69
- // this method will be overriden in GestureDetector
70
- },
71
- });
72
-
73
- React.useEffect(() => {
74
- gestureDetectorBridge.current.stackUseEffectCallback(ref);
75
- });
76
-
77
- assertGHProvider(ScreenGestureDetector, goBackGesture);
78
-
79
- assertCustomScreenTransitionsProps(
80
- screensRefs,
81
- currentScreenId,
82
- goBackGesture,
83
- );
84
-
85
- return (
86
- <RNSScreensRefContext.Provider value={screensRefs}>
87
- <ScreenGestureDetector
88
- gestureDetectorBridge={gestureDetectorBridge}
89
- goBackGesture={goBackGesture}
90
- transitionAnimation={transitionAnimation}
91
- screenEdgeGesture={screenEdgeGesture ?? false}
92
- screensRefs={screensRefs}
93
- currentScreenId={currentScreenId}>
94
- <ScreenStackNativeComponent
95
- {...rest}
96
- /**
97
- * This messy override is to conform NativeProps used by codegen and
98
- * our Public API. To see reasoning go to this PR:
99
- * https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
100
- */
101
- onFinishTransitioning={
102
- onFinishTransitioning as NativeProps['onFinishTransitioning']
103
- }
104
- ref={ref}>
105
- {children}
106
- </ScreenStackNativeComponent>
107
- </ScreenGestureDetector>
108
- </RNSScreensRefContext.Provider>
109
- );
110
- }
111
-
112
- export default ScreenStack;
@@ -1,5 +0,0 @@
1
- import { View } from 'react-native';
2
-
3
- const ScreenStack = View;
4
-
5
- export default ScreenStack;