@amazon-devices/react-navigation__stack 2.0.1758683737

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 (242) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +5 -0
  3. package/SystemBundles/ed2637c0b74cd42ce066fca701acc5cb0850978c5296fae5bd715d5e4c67b128.bundle +29321 -0
  4. package/SystemBundles/ed2637c0b74cd42ce066fca701acc5cb0850978c5296fae5bd715d5e4c67b128.map +1 -0
  5. package/SystemModules/amzn__react-navigation__stack-2.modules.txt +95 -0
  6. package/SystemModules/amzn__react-navigation__stack-2.private.modules.txt +258 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  8. package/THIRD_PARTY_NOTICES.txt +24 -0
  9. package/kepler-compatibility.json +8 -0
  10. package/kepler-transformed-package-info.json +3 -0
  11. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js +353 -0
  12. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js.map +1 -0
  13. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +259 -0
  14. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -0
  15. package/lib/commonjs/TransitionConfigs/TransitionPresets.js +134 -0
  16. package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +1 -0
  17. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +100 -0
  18. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +1 -0
  19. package/lib/commonjs/index.js +69 -0
  20. package/lib/commonjs/index.js.map +1 -0
  21. package/lib/commonjs/navigators/createStackNavigator.js +82 -0
  22. package/lib/commonjs/navigators/createStackNavigator.js.map +1 -0
  23. package/lib/commonjs/types.js +6 -0
  24. package/lib/commonjs/types.js.map +1 -0
  25. package/lib/commonjs/utils/CardAnimationContext.js +11 -0
  26. package/lib/commonjs/utils/CardAnimationContext.js.map +1 -0
  27. package/lib/commonjs/utils/GestureHandlerRefContext.js +11 -0
  28. package/lib/commonjs/utils/GestureHandlerRefContext.js.map +1 -0
  29. package/lib/commonjs/utils/ModalPresentationContext.js +12 -0
  30. package/lib/commonjs/utils/ModalPresentationContext.js.map +1 -0
  31. package/lib/commonjs/utils/conditional.js +32 -0
  32. package/lib/commonjs/utils/conditional.js.map +1 -0
  33. package/lib/commonjs/utils/debounce.js +19 -0
  34. package/lib/commonjs/utils/debounce.js.map +1 -0
  35. package/lib/commonjs/utils/findLastIndex.js +15 -0
  36. package/lib/commonjs/utils/findLastIndex.js.map +1 -0
  37. package/lib/commonjs/utils/getDistanceForDirection.js +20 -0
  38. package/lib/commonjs/utils/getDistanceForDirection.js.map +1 -0
  39. package/lib/commonjs/utils/getInvertedMultiplier.js +20 -0
  40. package/lib/commonjs/utils/getInvertedMultiplier.js.map +1 -0
  41. package/lib/commonjs/utils/memoize.js +33 -0
  42. package/lib/commonjs/utils/memoize.js.map +1 -0
  43. package/lib/commonjs/utils/useCardAnimation.js +19 -0
  44. package/lib/commonjs/utils/useCardAnimation.js.map +1 -0
  45. package/lib/commonjs/utils/useGestureHandlerRef.js +19 -0
  46. package/lib/commonjs/utils/useGestureHandlerRef.js.map +1 -0
  47. package/lib/commonjs/utils/useKeyboardManager.js +96 -0
  48. package/lib/commonjs/utils/useKeyboardManager.js.map +1 -0
  49. package/lib/commonjs/views/GestureHandler.android.js +17 -0
  50. package/lib/commonjs/views/GestureHandler.android.js.map +1 -0
  51. package/lib/commonjs/views/GestureHandler.ios.js +17 -0
  52. package/lib/commonjs/views/GestureHandler.ios.js.map +1 -0
  53. package/lib/commonjs/views/GestureHandler.js +24 -0
  54. package/lib/commonjs/views/GestureHandler.js.map +1 -0
  55. package/lib/commonjs/views/GestureHandlerNative.js +34 -0
  56. package/lib/commonjs/views/GestureHandlerNative.js.map +1 -0
  57. package/lib/commonjs/views/Header/Header.js +61 -0
  58. package/lib/commonjs/views/Header/Header.js.map +1 -0
  59. package/lib/commonjs/views/Header/HeaderContainer.js +127 -0
  60. package/lib/commonjs/views/Header/HeaderContainer.js.map +1 -0
  61. package/lib/commonjs/views/Header/HeaderSegment.js +139 -0
  62. package/lib/commonjs/views/Header/HeaderSegment.js.map +1 -0
  63. package/lib/commonjs/views/ModalStatusBarManager.js +42 -0
  64. package/lib/commonjs/views/ModalStatusBarManager.js.map +1 -0
  65. package/lib/commonjs/views/Screens.js +44 -0
  66. package/lib/commonjs/views/Screens.js.map +1 -0
  67. package/lib/commonjs/views/Stack/Card.js +469 -0
  68. package/lib/commonjs/views/Stack/Card.js.map +1 -0
  69. package/lib/commonjs/views/Stack/CardContainer.js +259 -0
  70. package/lib/commonjs/views/Stack/CardContainer.js.map +1 -0
  71. package/lib/commonjs/views/Stack/CardSheet.js +54 -0
  72. package/lib/commonjs/views/Stack/CardSheet.js.map +1 -0
  73. package/lib/commonjs/views/Stack/CardStack.js +442 -0
  74. package/lib/commonjs/views/Stack/CardStack.js.map +1 -0
  75. package/lib/commonjs/views/Stack/StackView.js +333 -0
  76. package/lib/commonjs/views/Stack/StackView.js.map +1 -0
  77. package/lib/module/TransitionConfigs/CardStyleInterpolators.js +338 -0
  78. package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -0
  79. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +248 -0
  80. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -0
  81. package/lib/module/TransitionConfigs/TransitionPresets.js +128 -0
  82. package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -0
  83. package/lib/module/TransitionConfigs/TransitionSpecs.js +94 -0
  84. package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -0
  85. package/lib/module/index.js +33 -0
  86. package/lib/module/index.js.map +1 -0
  87. package/lib/module/navigators/createStackNavigator.js +73 -0
  88. package/lib/module/navigators/createStackNavigator.js.map +1 -0
  89. package/lib/module/types.js +2 -0
  90. package/lib/module/types.js.map +1 -0
  91. package/lib/module/utils/CardAnimationContext.js +3 -0
  92. package/lib/module/utils/CardAnimationContext.js.map +1 -0
  93. package/lib/module/utils/GestureHandlerRefContext.js +3 -0
  94. package/lib/module/utils/GestureHandlerRefContext.js.map +1 -0
  95. package/lib/module/utils/ModalPresentationContext.js +4 -0
  96. package/lib/module/utils/ModalPresentationContext.js.map +1 -0
  97. package/lib/module/utils/conditional.js +26 -0
  98. package/lib/module/utils/conditional.js.map +1 -0
  99. package/lib/module/utils/debounce.js +13 -0
  100. package/lib/module/utils/debounce.js.map +1 -0
  101. package/lib/module/utils/findLastIndex.js +9 -0
  102. package/lib/module/utils/findLastIndex.js.map +1 -0
  103. package/lib/module/utils/getDistanceForDirection.js +13 -0
  104. package/lib/module/utils/getDistanceForDirection.js.map +1 -0
  105. package/lib/module/utils/getInvertedMultiplier.js +14 -0
  106. package/lib/module/utils/getInvertedMultiplier.js.map +1 -0
  107. package/lib/module/utils/memoize.js +27 -0
  108. package/lib/module/utils/memoize.js.map +1 -0
  109. package/lib/module/utils/useCardAnimation.js +10 -0
  110. package/lib/module/utils/useCardAnimation.js.map +1 -0
  111. package/lib/module/utils/useGestureHandlerRef.js +10 -0
  112. package/lib/module/utils/useGestureHandlerRef.js.map +1 -0
  113. package/lib/module/utils/useKeyboardManager.js +88 -0
  114. package/lib/module/utils/useKeyboardManager.js.map +1 -0
  115. package/lib/module/views/GestureHandler.android.js +2 -0
  116. package/lib/module/views/GestureHandler.android.js.map +1 -0
  117. package/lib/module/views/GestureHandler.ios.js +2 -0
  118. package/lib/module/views/GestureHandler.ios.js.map +1 -0
  119. package/lib/module/views/GestureHandler.js +16 -0
  120. package/lib/module/views/GestureHandler.js.map +1 -0
  121. package/lib/module/views/GestureHandlerNative.js +14 -0
  122. package/lib/module/views/GestureHandlerNative.js.map +1 -0
  123. package/lib/module/views/Header/Header.js +52 -0
  124. package/lib/module/views/Header/Header.js.map +1 -0
  125. package/lib/module/views/Header/HeaderContainer.js +118 -0
  126. package/lib/module/views/Header/HeaderContainer.js.map +1 -0
  127. package/lib/module/views/Header/HeaderSegment.js +130 -0
  128. package/lib/module/views/Header/HeaderSegment.js.map +1 -0
  129. package/lib/module/views/ModalStatusBarManager.js +34 -0
  130. package/lib/module/views/ModalStatusBarManager.js.map +1 -0
  131. package/lib/module/views/Screens.js +34 -0
  132. package/lib/module/views/Screens.js.map +1 -0
  133. package/lib/module/views/Stack/Card.js +458 -0
  134. package/lib/module/views/Stack/Card.js.map +1 -0
  135. package/lib/module/views/Stack/CardContainer.js +250 -0
  136. package/lib/module/views/Stack/CardContainer.js.map +1 -0
  137. package/lib/module/views/Stack/CardSheet.js +46 -0
  138. package/lib/module/views/Stack/CardSheet.js.map +1 -0
  139. package/lib/module/views/Stack/CardStack.js +432 -0
  140. package/lib/module/views/Stack/CardStack.js.map +1 -0
  141. package/lib/module/views/Stack/StackView.js +323 -0
  142. package/lib/module/views/Stack/StackView.js.map +1 -0
  143. package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts +35 -0
  144. package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts.map +1 -0
  145. package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts +23 -0
  146. package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts.map +1 -0
  147. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +42 -0
  148. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -0
  149. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +36 -0
  150. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -0
  151. package/lib/typescript/src/index.d.ts +29 -0
  152. package/lib/typescript/src/index.d.ts.map +1 -0
  153. package/lib/typescript/src/navigators/createStackNavigator.d.ts +8 -0
  154. package/lib/typescript/src/navigators/createStackNavigator.d.ts.map +1 -0
  155. package/lib/typescript/src/types.d.ts +481 -0
  156. package/lib/typescript/src/types.d.ts.map +1 -0
  157. package/lib/typescript/src/utils/CardAnimationContext.d.ts +5 -0
  158. package/lib/typescript/src/utils/CardAnimationContext.d.ts.map +1 -0
  159. package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts +4 -0
  160. package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts.map +1 -0
  161. package/lib/typescript/src/utils/ModalPresentationContext.d.ts +4 -0
  162. package/lib/typescript/src/utils/ModalPresentationContext.d.ts.map +1 -0
  163. package/lib/typescript/src/utils/conditional.d.ts +10 -0
  164. package/lib/typescript/src/utils/conditional.d.ts.map +1 -0
  165. package/lib/typescript/src/utils/debounce.d.ts +2 -0
  166. package/lib/typescript/src/utils/debounce.d.ts.map +1 -0
  167. package/lib/typescript/src/utils/findLastIndex.d.ts +2 -0
  168. package/lib/typescript/src/utils/findLastIndex.d.ts.map +1 -0
  169. package/lib/typescript/src/utils/getDistanceForDirection.d.ts +3 -0
  170. package/lib/typescript/src/utils/getDistanceForDirection.d.ts.map +1 -0
  171. package/lib/typescript/src/utils/getInvertedMultiplier.d.ts +3 -0
  172. package/lib/typescript/src/utils/getInvertedMultiplier.d.ts.map +1 -0
  173. package/lib/typescript/src/utils/memoize.d.ts +2 -0
  174. package/lib/typescript/src/utils/memoize.d.ts.map +1 -0
  175. package/lib/typescript/src/utils/useCardAnimation.d.ts +2 -0
  176. package/lib/typescript/src/utils/useCardAnimation.d.ts.map +1 -0
  177. package/lib/typescript/src/utils/useGestureHandlerRef.d.ts +3 -0
  178. package/lib/typescript/src/utils/useGestureHandlerRef.d.ts.map +1 -0
  179. package/lib/typescript/src/utils/useKeyboardManager.d.ts +6 -0
  180. package/lib/typescript/src/utils/useKeyboardManager.d.ts.map +1 -0
  181. package/lib/typescript/src/views/GestureHandler.android.d.ts +2 -0
  182. package/lib/typescript/src/views/GestureHandler.android.d.ts.map +1 -0
  183. package/lib/typescript/src/views/GestureHandler.d.ts +14 -0
  184. package/lib/typescript/src/views/GestureHandler.d.ts.map +1 -0
  185. package/lib/typescript/src/views/GestureHandler.ios.d.ts +2 -0
  186. package/lib/typescript/src/views/GestureHandler.ios.d.ts.map +1 -0
  187. package/lib/typescript/src/views/GestureHandlerNative.d.ts +6 -0
  188. package/lib/typescript/src/views/GestureHandlerNative.d.ts.map +1 -0
  189. package/lib/typescript/src/views/Header/Header.d.ts +5 -0
  190. package/lib/typescript/src/views/Header/Header.d.ts.map +1 -0
  191. package/lib/typescript/src/views/Header/HeaderContainer.d.ts +20 -0
  192. package/lib/typescript/src/views/Header/HeaderContainer.d.ts.map +1 -0
  193. package/lib/typescript/src/views/Header/HeaderSegment.d.ts +14 -0
  194. package/lib/typescript/src/views/Header/HeaderSegment.d.ts.map +1 -0
  195. package/lib/typescript/src/views/ModalStatusBarManager.d.ts +12 -0
  196. package/lib/typescript/src/views/ModalStatusBarManager.d.ts.map +1 -0
  197. package/lib/typescript/src/views/Screens.d.ts +13 -0
  198. package/lib/typescript/src/views/Screens.d.ts.map +1 -0
  199. package/lib/typescript/src/views/Stack/Card.d.ts +76 -0
  200. package/lib/typescript/src/views/Stack/Card.d.ts.map +1 -0
  201. package/lib/typescript/src/views/Stack/CardContainer.d.ts +63 -0
  202. package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -0
  203. package/lib/typescript/src/views/Stack/CardSheet.d.ts +15 -0
  204. package/lib/typescript/src/views/Stack/CardSheet.d.ts.map +1 -0
  205. package/lib/typescript/src/views/Stack/CardStack.d.ts +67 -0
  206. package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -0
  207. package/lib/typescript/src/views/Stack/StackView.d.ts +122 -0
  208. package/lib/typescript/src/views/Stack/StackView.d.ts.map +1 -0
  209. package/package.json +1 -0
  210. package/src/TransitionConfigs/CardStyleInterpolators.tsx +394 -0
  211. package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +268 -0
  212. package/src/TransitionConfigs/TransitionPresets.tsx +152 -0
  213. package/src/TransitionConfigs/TransitionSpecs.tsx +96 -0
  214. package/src/index.tsx +51 -0
  215. package/src/navigators/createStackNavigator.tsx +136 -0
  216. package/src/types.tsx +547 -0
  217. package/src/utils/CardAnimationContext.tsx +7 -0
  218. package/src/utils/GestureHandlerRefContext.tsx +5 -0
  219. package/src/utils/ModalPresentationContext.tsx +5 -0
  220. package/src/utils/conditional.tsx +33 -0
  221. package/src/utils/debounce.tsx +17 -0
  222. package/src/utils/findLastIndex.tsx +12 -0
  223. package/src/utils/getDistanceForDirection.tsx +18 -0
  224. package/src/utils/getInvertedMultiplier.tsx +18 -0
  225. package/src/utils/memoize.tsx +33 -0
  226. package/src/utils/useCardAnimation.tsx +15 -0
  227. package/src/utils/useGestureHandlerRef.tsx +15 -0
  228. package/src/utils/useKeyboardManager.tsx +105 -0
  229. package/src/views/GestureHandler.android.tsx +1 -0
  230. package/src/views/GestureHandler.ios.tsx +1 -0
  231. package/src/views/GestureHandler.tsx +23 -0
  232. package/src/views/GestureHandlerNative.tsx +23 -0
  233. package/src/views/Header/Header.tsx +72 -0
  234. package/src/views/Header/HeaderContainer.tsx +186 -0
  235. package/src/views/Header/HeaderSegment.tsx +205 -0
  236. package/src/views/ModalStatusBarManager.tsx +50 -0
  237. package/src/views/Screens.tsx +43 -0
  238. package/src/views/Stack/Card.tsx +628 -0
  239. package/src/views/Stack/CardContainer.tsx +320 -0
  240. package/src/views/Stack/CardSheet.tsx +61 -0
  241. package/src/views/Stack/CardStack.tsx +717 -0
  242. package/src/views/Stack/StackView.tsx +474 -0
@@ -0,0 +1,152 @@
1
+ import { Platform } from 'react-native';
2
+
3
+ import type { TransitionPreset } from '../types';
4
+ import {
5
+ forBottomSheetAndroid,
6
+ forFadeFromBottomAndroid,
7
+ forFadeFromCenter as forFadeCard,
8
+ forHorizontalIOS,
9
+ forModalPresentationIOS,
10
+ forRevealFromBottomAndroid,
11
+ forScaleFromCenterAndroid,
12
+ forVerticalIOS,
13
+ } from './CardStyleInterpolators';
14
+ import { forFade } from './HeaderStyleInterpolators';
15
+ import {
16
+ BottomSheetSlideInSpec,
17
+ BottomSheetSlideOutSpec,
18
+ FadeInFromBottomAndroidSpec,
19
+ FadeOutToBottomAndroidSpec,
20
+ RevealFromBottomAndroidSpec,
21
+ ScaleFromCenterAndroidSpec,
22
+ TransitionIOSSpec,
23
+ } from './TransitionSpecs';
24
+
25
+ const ANDROID_VERSION_PIE = 28;
26
+ const ANDROID_VERSION_10 = 29;
27
+
28
+ /**
29
+ * Standard iOS navigation transition.
30
+ */
31
+ export const SlideFromRightIOS: TransitionPreset = {
32
+ gestureDirection: 'horizontal',
33
+ transitionSpec: {
34
+ open: TransitionIOSSpec,
35
+ close: TransitionIOSSpec,
36
+ },
37
+ cardStyleInterpolator: forHorizontalIOS,
38
+ headerStyleInterpolator: forFade,
39
+ };
40
+
41
+ /**
42
+ * Standard iOS navigation transition for modals.
43
+ */
44
+ export const ModalSlideFromBottomIOS: TransitionPreset = {
45
+ gestureDirection: 'vertical',
46
+ transitionSpec: {
47
+ open: TransitionIOSSpec,
48
+ close: TransitionIOSSpec,
49
+ },
50
+ cardStyleInterpolator: forVerticalIOS,
51
+ headerStyleInterpolator: forFade,
52
+ };
53
+
54
+ /**
55
+ * Standard iOS modal presentation style (introduced in iOS 13).
56
+ */
57
+ export const ModalPresentationIOS: TransitionPreset = {
58
+ gestureDirection: 'vertical',
59
+ transitionSpec: {
60
+ open: TransitionIOSSpec,
61
+ close: TransitionIOSSpec,
62
+ },
63
+ cardStyleInterpolator: forModalPresentationIOS,
64
+ headerStyleInterpolator: forFade,
65
+ };
66
+
67
+ /**
68
+ * Standard Android navigation transition when opening or closing an Activity on Android < 9 (Oreo).
69
+ */
70
+ export const FadeFromBottomAndroid: TransitionPreset = {
71
+ gestureDirection: 'vertical',
72
+ transitionSpec: {
73
+ open: FadeInFromBottomAndroidSpec,
74
+ close: FadeOutToBottomAndroidSpec,
75
+ },
76
+ cardStyleInterpolator: forFadeFromBottomAndroid,
77
+ headerStyleInterpolator: forFade,
78
+ };
79
+
80
+ /**
81
+ * Standard Android navigation transition when opening or closing an Activity on Android 9 (Pie).
82
+ */
83
+ export const RevealFromBottomAndroid: TransitionPreset = {
84
+ gestureDirection: 'vertical',
85
+ transitionSpec: {
86
+ open: RevealFromBottomAndroidSpec,
87
+ close: RevealFromBottomAndroidSpec,
88
+ },
89
+ cardStyleInterpolator: forRevealFromBottomAndroid,
90
+ headerStyleInterpolator: forFade,
91
+ };
92
+
93
+ /**
94
+ * Standard Android navigation transition when opening or closing an Activity on Android 10 (Q).
95
+ */
96
+ export const ScaleFromCenterAndroid: TransitionPreset = {
97
+ gestureDirection: 'horizontal',
98
+ transitionSpec: {
99
+ open: ScaleFromCenterAndroidSpec,
100
+ close: ScaleFromCenterAndroidSpec,
101
+ },
102
+ cardStyleInterpolator: forScaleFromCenterAndroid,
103
+ headerStyleInterpolator: forFade,
104
+ };
105
+
106
+ /**
107
+ * Standard bottom sheet slide transition for Android 10.
108
+ */
109
+ export const BottomSheetAndroid: TransitionPreset = {
110
+ gestureDirection: 'vertical',
111
+ transitionSpec: {
112
+ open: BottomSheetSlideInSpec,
113
+ close: BottomSheetSlideOutSpec,
114
+ },
115
+ cardStyleInterpolator: forBottomSheetAndroid,
116
+ headerStyleInterpolator: forFade,
117
+ };
118
+
119
+ /**
120
+ * Fade transition for transparent modals.
121
+ */
122
+ export const ModalFadeTransition: TransitionPreset = {
123
+ gestureDirection: 'vertical',
124
+ transitionSpec: {
125
+ open: BottomSheetSlideInSpec,
126
+ close: BottomSheetSlideOutSpec,
127
+ },
128
+ cardStyleInterpolator: forFadeCard,
129
+ headerStyleInterpolator: forFade,
130
+ };
131
+
132
+ /**
133
+ * Default navigation transition for the current platform.
134
+ */
135
+ export const DefaultTransition = Platform.select({
136
+ ios: SlideFromRightIOS,
137
+ android:
138
+ Platform.Version >= ANDROID_VERSION_10
139
+ ? ScaleFromCenterAndroid
140
+ : Platform.Version >= ANDROID_VERSION_PIE
141
+ ? RevealFromBottomAndroid
142
+ : FadeFromBottomAndroid,
143
+ default: ScaleFromCenterAndroid,
144
+ });
145
+
146
+ /**
147
+ * Default modal transition for the current platform.
148
+ */
149
+ export const ModalTransition = Platform.select({
150
+ ios: ModalPresentationIOS,
151
+ default: BottomSheetAndroid,
152
+ });
@@ -0,0 +1,96 @@
1
+ import { Easing } from 'react-native';
2
+
3
+ import type { TransitionSpec } from '../types';
4
+
5
+ /**
6
+ * Exact values from UINavigationController's animation configuration.
7
+ */
8
+ export const TransitionIOSSpec: TransitionSpec = {
9
+ animation: 'spring',
10
+ config: {
11
+ stiffness: 1000,
12
+ damping: 500,
13
+ mass: 3,
14
+ overshootClamping: true,
15
+ restDisplacementThreshold: 10,
16
+ restSpeedThreshold: 10,
17
+ },
18
+ };
19
+
20
+ /**
21
+ * Configuration for activity open animation from Android Nougat.
22
+ * See http://aosp.opersys.com/xref/android-7.1.2_r37/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml
23
+ */
24
+ export const FadeInFromBottomAndroidSpec: TransitionSpec = {
25
+ animation: 'timing',
26
+ config: {
27
+ duration: 350,
28
+ easing: Easing.out(Easing.poly(5)),
29
+ },
30
+ };
31
+
32
+ /**
33
+ * Configuration for activity close animation from Android Nougat.
34
+ * See http://aosp.opersys.com/xref/android-7.1.2_r37/xref/frameworks/base/core/res/res/anim/activity_close_exit.xml
35
+ */
36
+ export const FadeOutToBottomAndroidSpec: TransitionSpec = {
37
+ animation: 'timing',
38
+ config: {
39
+ duration: 150,
40
+ easing: Easing.in(Easing.linear),
41
+ },
42
+ };
43
+
44
+ /**
45
+ * Approximate configuration for activity open animation from Android Pie.
46
+ * See http://aosp.opersys.com/xref/android-9.0.0_r47/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml
47
+ */
48
+ export const RevealFromBottomAndroidSpec: TransitionSpec = {
49
+ animation: 'timing',
50
+ config: {
51
+ duration: 425,
52
+ // This is super rough approximation of the path used for the curve by android
53
+ // See http://aosp.opersys.com/xref/android-9.0.0_r47/xref/frameworks/base/core/res/res/interpolator/fast_out_extra_slow_in.xml
54
+ easing: Easing.bezier(0.35, 0.45, 0, 1),
55
+ },
56
+ };
57
+
58
+ /**
59
+ * Approximate configuration for activity open animation from Android Q.
60
+ * See http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml
61
+ */
62
+ export const ScaleFromCenterAndroidSpec: TransitionSpec = {
63
+ animation: 'timing',
64
+ config: {
65
+ duration: 400,
66
+ // This is super rough approximation of the path used for the curve by android
67
+ // See http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/res/res/interpolator/fast_out_extra_slow_in.xml
68
+ easing: Easing.bezier(0.35, 0.45, 0, 1),
69
+ },
70
+ };
71
+
72
+ /**
73
+ * Configuration for bottom sheet slide in animation from Material Design.
74
+ * See https://github.com/material-components/material-components-android/blob/fd3639092e1ffef9dc11bcedf79f32801d85e898/lib/java/com/google/android/material/bottomsheet/res/anim/mtrl_bottom_sheet_slide_in.xml
75
+ */
76
+ export const BottomSheetSlideInSpec: TransitionSpec = {
77
+ animation: 'timing',
78
+ config: {
79
+ duration: 250,
80
+ // See https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/animation/AccelerateDecelerateInterpolator.java
81
+ easing: (t) => Math.cos((t + 1) * Math.PI) / 2.0 + 0.5,
82
+ },
83
+ };
84
+
85
+ /**
86
+ * Configuration for bottom sheet slide out animation from Material Design.
87
+ * See https://github.com/material-components/material-components-android/blob/fd3639092e1ffef9dc11bcedf79f32801d85e898/lib/java/com/google/android/material/bottomsheet/res/anim/mtrl_bottom_sheet_slide_in.xml
88
+ */
89
+ export const BottomSheetSlideOutSpec: TransitionSpec = {
90
+ animation: 'timing',
91
+ config: {
92
+ duration: 200,
93
+ // See https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/animation/AccelerateInterpolator.java
94
+ easing: (t) => (t === 1.0 ? 1 : Math.pow(t, 2)),
95
+ },
96
+ };
package/src/index.tsx ADDED
@@ -0,0 +1,51 @@
1
+ import * as CardStyleInterpolators from './TransitionConfigs/CardStyleInterpolators';
2
+ import * as HeaderStyleInterpolators from './TransitionConfigs/HeaderStyleInterpolators';
3
+ import * as TransitionPresets from './TransitionConfigs/TransitionPresets';
4
+ import * as TransitionSpecs from './TransitionConfigs/TransitionSpecs';
5
+
6
+ /**
7
+ * Navigators
8
+ */
9
+ export { default as createStackNavigator } from './navigators/createStackNavigator';
10
+
11
+ /**
12
+ * Views
13
+ */
14
+ export { default as Header } from './views/Header/Header';
15
+ export { default as StackView } from './views/Stack/StackView';
16
+
17
+ /**
18
+ * Transition presets
19
+ */
20
+ export {
21
+ CardStyleInterpolators,
22
+ HeaderStyleInterpolators,
23
+ TransitionPresets,
24
+ TransitionSpecs,
25
+ };
26
+
27
+ /**
28
+ * Utilities
29
+ */
30
+ export { default as CardAnimationContext } from './utils/CardAnimationContext';
31
+ export { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext';
32
+ export { default as useCardAnimation } from './utils/useCardAnimation';
33
+ export { default as useGestureHandlerRef } from './utils/useGestureHandlerRef';
34
+
35
+ /**
36
+ * Types
37
+ */
38
+ export type {
39
+ StackCardInterpolatedStyle,
40
+ StackCardInterpolationProps,
41
+ StackCardStyleInterpolator,
42
+ StackHeaderInterpolatedStyle,
43
+ StackHeaderInterpolationProps,
44
+ StackHeaderProps,
45
+ StackHeaderStyleInterpolator,
46
+ StackNavigationEventMap,
47
+ StackNavigationOptions,
48
+ StackNavigationProp,
49
+ StackScreenProps,
50
+ TransitionPreset,
51
+ } from './types';
@@ -0,0 +1,136 @@
1
+ import {
2
+ createNavigatorFactory,
3
+ DefaultNavigatorOptions,
4
+ EventArg,
5
+ ParamListBase,
6
+ StackActionHelpers,
7
+ StackActions,
8
+ StackNavigationState,
9
+ StackRouter,
10
+ StackRouterOptions,
11
+ useNavigationBuilder,
12
+ } from '@amazon-devices/react-navigation__native';
13
+ import * as React from 'react';
14
+ import warnOnce from 'warn-once';
15
+
16
+ import type {
17
+ StackHeaderMode,
18
+ StackNavigationConfig,
19
+ StackNavigationEventMap,
20
+ StackNavigationOptions,
21
+ } from '../types';
22
+ import StackView from '../views/Stack/StackView';
23
+
24
+ type Props = DefaultNavigatorOptions<
25
+ ParamListBase,
26
+ StackNavigationState<ParamListBase>,
27
+ StackNavigationOptions,
28
+ StackNavigationEventMap
29
+ > &
30
+ StackRouterOptions &
31
+ StackNavigationConfig;
32
+
33
+ function StackNavigator({
34
+ id,
35
+ initialRouteName,
36
+ children,
37
+ screenListeners,
38
+ screenOptions,
39
+ ...rest
40
+ }: Props) {
41
+ // @ts-expect-error: mode is deprecated
42
+ const mode = rest.mode as 'card' | 'modal' | undefined;
43
+
44
+ warnOnce(
45
+ mode != null,
46
+ `Stack Navigator: 'mode="${mode}"' is deprecated. Use 'presentation: "${mode}"' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/stack-navigator#presentation for more details.`
47
+ );
48
+
49
+ // @ts-expect-error: headerMode='none' is deprecated
50
+ const headerMode = rest.headerMode as StackHeaderMode | 'none' | undefined;
51
+
52
+ warnOnce(
53
+ headerMode === 'none',
54
+ `Stack Navigator: 'headerMode="none"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/stack-navigator/#headershown for more details.`
55
+ );
56
+
57
+ warnOnce(
58
+ headerMode != null && headerMode !== 'none',
59
+ `Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\n\nSee https://reactnavigation.org/docs/stack-navigator/#headermode for more details.`
60
+ );
61
+
62
+ // @ts-expect-error: headerMode='none' is deprecated
63
+ const keyboardHandlingEnabled = rest.keyboardHandlingEnabled;
64
+
65
+ warnOnce(
66
+ keyboardHandlingEnabled !== undefined,
67
+ `Stack Navigator: 'keyboardHandlingEnabled' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\n\nSee https://reactnavigation.org/docs/stack-navigator/#keyboardhandlingenabled for more details.`
68
+ );
69
+
70
+ const defaultScreenOptions: StackNavigationOptions = {
71
+ presentation: mode,
72
+ headerShown: headerMode ? headerMode !== 'none' : true,
73
+ headerMode: headerMode && headerMode !== 'none' ? headerMode : undefined,
74
+ keyboardHandlingEnabled,
75
+ };
76
+
77
+ const { state, descriptors, navigation, NavigationContent } =
78
+ useNavigationBuilder<
79
+ StackNavigationState<ParamListBase>,
80
+ StackRouterOptions,
81
+ StackActionHelpers<ParamListBase>,
82
+ StackNavigationOptions,
83
+ StackNavigationEventMap
84
+ >(StackRouter, {
85
+ id,
86
+ initialRouteName,
87
+ children,
88
+ screenListeners,
89
+ screenOptions,
90
+ defaultScreenOptions,
91
+ });
92
+
93
+ React.useEffect(
94
+ () =>
95
+ // @ts-expect-error: there may not be a tab navigator in parent
96
+ navigation.addListener?.('tabPress', (e) => {
97
+ const isFocused = navigation.isFocused();
98
+
99
+ // Run the operation in the next frame so we're sure all listeners have been run
100
+ // This is necessary to know if preventDefault() has been called
101
+ requestAnimationFrame(() => {
102
+ if (
103
+ state.index > 0 &&
104
+ isFocused &&
105
+ !(e as unknown as EventArg<'tabPress', true>).defaultPrevented
106
+ ) {
107
+ // When user taps on already focused tab and we're inside the tab,
108
+ // reset the stack to replicate native behaviour
109
+ navigation.dispatch({
110
+ ...StackActions.popToTop(),
111
+ target: state.key,
112
+ });
113
+ }
114
+ });
115
+ }),
116
+ [navigation, state.index, state.key]
117
+ );
118
+
119
+ return (
120
+ <NavigationContent>
121
+ <StackView
122
+ {...rest}
123
+ state={state}
124
+ descriptors={descriptors}
125
+ navigation={navigation}
126
+ />
127
+ </NavigationContent>
128
+ );
129
+ }
130
+
131
+ export default createNavigatorFactory<
132
+ StackNavigationState<ParamListBase>,
133
+ StackNavigationOptions,
134
+ StackNavigationEventMap,
135
+ typeof StackNavigator
136
+ >(StackNavigator);