@amazon-devices/react-native-screens 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 (381) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +223 -0
  3. package/RNScreens.podspec +53 -0
  4. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.bundle +33668 -0
  5. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.map +1 -0
  6. package/SystemModules/amzn__react-native-screens.modules.txt +101 -0
  7. package/SystemModules/amzn__react-native-screens.private.modules.txt +244 -0
  8. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  9. package/THIRD_PARTY_NOTICES.txt +707 -0
  10. package/android/build.gradle +133 -0
  11. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +49 -0
  12. package/android/src/main/AndroidManifest.xml +5 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +77 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +7 -0
  15. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +29 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/FragmentHolder.kt +7 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +21 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +289 -0
  19. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +372 -0
  20. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +40 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +21 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +331 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +22 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +336 -0
  25. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +282 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +15 -0
  27. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +398 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +204 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +38 -0
  30. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +41 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +75 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +186 -0
  33. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +296 -0
  34. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +19 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +133 -0
  36. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +178 -0
  37. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +67 -0
  38. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +22 -0
  39. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +22 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +22 -0
  41. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +26 -0
  42. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +18 -0
  43. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +18 -0
  44. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +20 -0
  45. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +32 -0
  46. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +18 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +18 -0
  48. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +22 -0
  49. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +28 -0
  50. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +22 -0
  51. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +22 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +22 -0
  53. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +24 -0
  54. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +18 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +12 -0
  56. package/android/src/main/jni/CMakeLists.txt +72 -0
  57. package/android/src/main/jni/rnscreens.cpp +16 -0
  58. package/android/src/main/jni/rnscreens.h +28 -0
  59. package/android/src/main/res/base/anim/rns_default_enter_in.xml +18 -0
  60. package/android/src/main/res/base/anim/rns_default_enter_out.xml +19 -0
  61. package/android/src/main/res/base/anim/rns_default_exit_in.xml +17 -0
  62. package/android/src/main/res/base/anim/rns_default_exit_out.xml +18 -0
  63. package/android/src/main/res/base/anim/rns_fade_from_bottom.xml +14 -0
  64. package/android/src/main/res/base/anim/rns_fade_in.xml +7 -0
  65. package/android/src/main/res/base/anim/rns_fade_out.xml +7 -0
  66. package/android/src/main/res/base/anim/rns_fade_to_bottom.xml +15 -0
  67. package/android/src/main/res/base/anim/rns_no_animation_20.xml +6 -0
  68. package/android/src/main/res/base/anim/rns_no_animation_250.xml +7 -0
  69. package/android/src/main/res/base/anim/rns_no_animation_350.xml +6 -0
  70. package/android/src/main/res/base/anim/rns_no_animation_medium.xml +7 -0
  71. package/android/src/main/res/base/anim/rns_slide_in_from_bottom.xml +7 -0
  72. package/android/src/main/res/base/anim/rns_slide_in_from_left.xml +5 -0
  73. package/android/src/main/res/base/anim/rns_slide_in_from_right.xml +5 -0
  74. package/android/src/main/res/base/anim/rns_slide_out_to_bottom.xml +7 -0
  75. package/android/src/main/res/base/anim/rns_slide_out_to_left.xml +5 -0
  76. package/android/src/main/res/base/anim/rns_slide_out_to_right.xml +5 -0
  77. package/android/src/main/res/base/anim/rns_standard_accelerate_interpolator.xml +6 -0
  78. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +38 -0
  79. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +38 -0
  80. package/android/src/main/res/v33/anim-v33/rns_default_exit_in.xml +38 -0
  81. package/android/src/main/res/v33/anim-v33/rns_default_exit_out.xml +38 -0
  82. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +111 -0
  83. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +44 -0
  84. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +107 -0
  85. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +42 -0
  86. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +31 -0
  87. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +17 -0
  88. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +25 -0
  89. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +16 -0
  90. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +10 -0
  91. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +41 -0
  92. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +9 -0
  93. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +30 -0
  94. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +14 -0
  95. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +45 -0
  96. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.h +11 -0
  97. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.mm +14 -0
  98. package/ios/RNSConvert.h +36 -0
  99. package/ios/RNSConvert.mm +154 -0
  100. package/ios/RNSEnums.h +71 -0
  101. package/ios/RNSFullWindowOverlay.h +34 -0
  102. package/ios/RNSFullWindowOverlay.mm +241 -0
  103. package/ios/RNSScreen.h +144 -0
  104. package/ios/RNSScreen.mm +1599 -0
  105. package/ios/RNSScreenContainer.h +45 -0
  106. package/ios/RNSScreenContainer.mm +343 -0
  107. package/ios/RNSScreenNavigationContainer.h +16 -0
  108. package/ios/RNSScreenNavigationContainer.mm +66 -0
  109. package/ios/RNSScreenStack.h +37 -0
  110. package/ios/RNSScreenStack.mm +1111 -0
  111. package/ios/RNSScreenStackAnimator.h +8 -0
  112. package/ios/RNSScreenStackAnimator.mm +320 -0
  113. package/ios/RNSScreenStackHeaderConfig.h +74 -0
  114. package/ios/RNSScreenStackHeaderConfig.mm +967 -0
  115. package/ios/RNSScreenStackHeaderSubview.h +44 -0
  116. package/ios/RNSScreenStackHeaderSubview.mm +147 -0
  117. package/ios/RNSScreenWindowTraits.h +26 -0
  118. package/ios/RNSScreenWindowTraits.mm +266 -0
  119. package/ios/RNSSearchBar.h +43 -0
  120. package/ios/RNSSearchBar.mm +465 -0
  121. package/ios/RNScreens.xcodeproj/project.pbxproj +461 -0
  122. package/ios/UIViewController+RNScreens.h +9 -0
  123. package/ios/UIViewController+RNScreens.mm +78 -0
  124. package/ios/UIWindow+RNScreens.h +9 -0
  125. package/ios/UIWindow+RNScreens.mm +17 -0
  126. package/ios/events/RNSHeaderHeightChangeEvent.h +8 -0
  127. package/ios/events/RNSHeaderHeightChangeEvent.mm +44 -0
  128. package/ios/events/RNSScreenViewEvent.h +12 -0
  129. package/ios/events/RNSScreenViewEvent.mm +59 -0
  130. package/ios/utils/RNSUIBarButtonItem.h +5 -0
  131. package/ios/utils/RNSUIBarButtonItem.mm +22 -0
  132. package/kepler-compatibility.json +8 -0
  133. package/kepler-transformed-package-info.json +3 -0
  134. package/lib/commonjs/TransitionProgressContext.js +11 -0
  135. package/lib/commonjs/TransitionProgressContext.js.map +1 -0
  136. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +11 -0
  137. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  138. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +33 -0
  139. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -0
  140. package/lib/commonjs/fabric/ScreenNativeComponent.js +70 -0
  141. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -0
  142. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +11 -0
  143. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  144. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +31 -0
  145. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
  146. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +12 -0
  147. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
  148. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +35 -0
  149. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -0
  150. package/lib/commonjs/fabric/SearchBarNativeComponent.js +19 -0
  151. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -0
  152. package/lib/commonjs/index.js +147 -0
  153. package/lib/commonjs/index.js.map +1 -0
  154. package/lib/commonjs/index.native.js +407 -0
  155. package/lib/commonjs/index.native.js.map +1 -0
  156. package/lib/commonjs/native-stack/index.js +49 -0
  157. package/lib/commonjs/native-stack/index.js.map +1 -0
  158. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +75 -0
  159. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  160. package/lib/commonjs/native-stack/types.js +6 -0
  161. package/lib/commonjs/native-stack/types.js.map +1 -0
  162. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +12 -0
  163. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  164. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +12 -0
  165. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -0
  166. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +75 -0
  167. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -0
  168. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js +35 -0
  169. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -0
  170. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +19 -0
  171. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  172. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +54 -0
  173. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -0
  174. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +19 -0
  175. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -0
  176. package/lib/commonjs/native-stack/views/FontProcessor.js +21 -0
  177. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -0
  178. package/lib/commonjs/native-stack/views/HeaderConfig.js +141 -0
  179. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -0
  180. package/lib/commonjs/native-stack/views/NativeStackView.js +354 -0
  181. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -0
  182. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +12 -0
  183. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  184. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +101 -0
  185. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
  186. package/lib/commonjs/reanimated/ReanimatedScreen.js +22 -0
  187. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -0
  188. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +47 -0
  189. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -0
  190. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +12 -0
  191. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -0
  192. package/lib/commonjs/reanimated/index.js +28 -0
  193. package/lib/commonjs/reanimated/index.js.map +1 -0
  194. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +19 -0
  195. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  196. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +19 -0
  197. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -0
  198. package/lib/commonjs/types.js +6 -0
  199. package/lib/commonjs/types.js.map +1 -0
  200. package/lib/commonjs/useTransitionProgress.js +19 -0
  201. package/lib/commonjs/useTransitionProgress.js.map +1 -0
  202. package/lib/commonjs/utils.js +21 -0
  203. package/lib/commonjs/utils.js.map +1 -0
  204. package/lib/module/TransitionProgressContext.js +3 -0
  205. package/lib/module/TransitionProgressContext.js.map +1 -0
  206. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +4 -0
  207. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  208. package/lib/module/fabric/ScreenContainerNativeComponent.js +25 -0
  209. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -0
  210. package/lib/module/fabric/ScreenNativeComponent.js +63 -0
  211. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -0
  212. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +4 -0
  213. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  214. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +23 -0
  215. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
  216. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +7 -0
  217. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
  218. package/lib/module/fabric/ScreenStackNativeComponent.js +28 -0
  219. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -0
  220. package/lib/module/fabric/SearchBarNativeComponent.js +10 -0
  221. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -0
  222. package/lib/module/index.js +67 -0
  223. package/lib/module/index.js.map +1 -0
  224. package/lib/module/index.native.js +410 -0
  225. package/lib/module/index.native.js.map +1 -0
  226. package/lib/module/native-stack/index.js +22 -0
  227. package/lib/module/native-stack/index.js.map +1 -0
  228. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +72 -0
  229. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  230. package/lib/module/native-stack/types.js +2 -0
  231. package/lib/module/native-stack/types.js.map +1 -0
  232. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js +4 -0
  233. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  234. package/lib/module/native-stack/utils/HeaderHeightContext.js +4 -0
  235. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -0
  236. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js +68 -0
  237. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -0
  238. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js +29 -0
  239. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -0
  240. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js +10 -0
  241. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  242. package/lib/module/native-stack/utils/useBackPressSubscription.js +47 -0
  243. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -0
  244. package/lib/module/native-stack/utils/useHeaderHeight.js +10 -0
  245. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -0
  246. package/lib/module/native-stack/views/FontProcessor.js +13 -0
  247. package/lib/module/native-stack/views/FontProcessor.js.map +1 -0
  248. package/lib/module/native-stack/views/HeaderConfig.js +132 -0
  249. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -0
  250. package/lib/module/native-stack/views/NativeStackView.js +355 -0
  251. package/lib/module/native-stack/views/NativeStackView.js.map +1 -0
  252. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js +5 -0
  253. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  254. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +97 -0
  255. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
  256. package/lib/module/reanimated/ReanimatedScreen.js +17 -0
  257. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -0
  258. package/lib/module/reanimated/ReanimatedScreenProvider.js +40 -0
  259. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -0
  260. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js +5 -0
  261. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -0
  262. package/lib/module/reanimated/index.js +4 -0
  263. package/lib/module/reanimated/index.js.map +1 -0
  264. package/lib/module/reanimated/useReanimatedHeaderHeight.js +10 -0
  265. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  266. package/lib/module/reanimated/useReanimatedTransitionProgress.js +10 -0
  267. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -0
  268. package/lib/module/types.js +2 -0
  269. package/lib/module/types.js.map +1 -0
  270. package/lib/module/useTransitionProgress.js +10 -0
  271. package/lib/module/useTransitionProgress.js.map +1 -0
  272. package/lib/module/utils.js +14 -0
  273. package/lib/module/utils.js.map +1 -0
  274. package/lib/typescript/TransitionProgressContext.d.ts +9 -0
  275. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +7 -0
  276. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +5 -0
  277. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +66 -0
  278. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +7 -0
  279. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +33 -0
  280. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +10 -0
  281. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +8 -0
  282. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +49 -0
  283. package/lib/typescript/index.d.ts +33 -0
  284. package/lib/typescript/index.native.d.ts +2 -0
  285. package/lib/typescript/native-stack/index.d.ts +19 -0
  286. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +6 -0
  287. package/lib/typescript/native-stack/types.d.ts +438 -0
  288. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +4 -0
  289. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +3 -0
  290. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +11 -0
  291. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +7 -0
  292. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
  293. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +16 -0
  294. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  295. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  296. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +8 -0
  297. package/lib/typescript/native-stack/views/NativeStackView.d.ts +10 -0
  298. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +4 -0
  299. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +5 -0
  300. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +5 -0
  301. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +2 -0
  302. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +9 -0
  303. package/lib/typescript/reanimated/index.d.ts +3 -0
  304. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +3 -0
  305. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +11 -0
  306. package/lib/typescript/types.d.ts +612 -0
  307. package/lib/typescript/useTransitionProgress.d.ts +5 -0
  308. package/lib/typescript/utils.d.ts +3 -0
  309. package/native-stack/README.md +814 -0
  310. package/native-stack/package.json +6 -0
  311. package/package.json +1 -0
  312. package/react-native.config.js +42 -0
  313. package/reanimated/package.json +6 -0
  314. package/src/TransitionProgressContext.tsx +12 -0
  315. package/src/fabric/FullWindowOverlayNativeComponent.ts +7 -0
  316. package/src/fabric/ScreenContainerNativeComponent.ts +28 -0
  317. package/src/fabric/ScreenNativeComponent.ts +158 -0
  318. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +10 -0
  319. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +61 -0
  320. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +22 -0
  321. package/src/fabric/ScreenStackNativeComponent.ts +33 -0
  322. package/src/fabric/SearchBarNativeComponent.ts +79 -0
  323. package/src/index.native.tsx +599 -0
  324. package/src/index.tsx +119 -0
  325. package/src/native-stack/index.tsx +27 -0
  326. package/src/native-stack/navigators/createNativeStackNavigator.tsx +107 -0
  327. package/src/native-stack/types.tsx +486 -0
  328. package/src/native-stack/utils/AnimatedHeaderHeightContext.tsx +8 -0
  329. package/src/native-stack/utils/HeaderHeightContext.tsx +5 -0
  330. package/src/native-stack/utils/SafeAreaProviderCompat.tsx +78 -0
  331. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +41 -0
  332. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +15 -0
  333. package/src/native-stack/utils/useBackPressSubscription.tsx +66 -0
  334. package/src/native-stack/utils/useHeaderHeight.tsx +15 -0
  335. package/src/native-stack/views/FontProcessor.tsx +14 -0
  336. package/src/native-stack/views/HeaderConfig.tsx +187 -0
  337. package/src/native-stack/views/NativeStackView.tsx +466 -0
  338. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +7 -0
  339. package/src/reanimated/ReanimatedNativeStackScreen.tsx +130 -0
  340. package/src/reanimated/ReanimatedScreen.tsx +25 -0
  341. package/src/reanimated/ReanimatedScreenProvider.tsx +42 -0
  342. package/src/reanimated/ReanimatedTransitionProgressContext.tsx +13 -0
  343. package/src/reanimated/index.tsx +3 -0
  344. package/src/reanimated/useReanimatedHeaderHeight.tsx +14 -0
  345. package/src/reanimated/useReanimatedTransitionProgress.tsx +14 -0
  346. package/src/types.tsx +699 -0
  347. package/src/useTransitionProgress.tsx +15 -0
  348. package/src/utils.ts +18 -0
  349. package/windows/README.md +25 -0
  350. package/windows/RNScreens/PropertySheet.props +16 -0
  351. package/windows/RNScreens/RNScreens.cpp +66 -0
  352. package/windows/RNScreens/RNScreens.def +3 -0
  353. package/windows/RNScreens/RNScreens.h +41 -0
  354. package/windows/RNScreens/RNScreens.idl +8 -0
  355. package/windows/RNScreens/RNScreens.vcxproj +187 -0
  356. package/windows/RNScreens/RNScreens.vcxproj.filters +52 -0
  357. package/windows/RNScreens/ReactPackageProvider.cpp +30 -0
  358. package/windows/RNScreens/ReactPackageProvider.h +17 -0
  359. package/windows/RNScreens/ReactPackageProvider.idl +9 -0
  360. package/windows/RNScreens/Screen.cpp +122 -0
  361. package/windows/RNScreens/Screen.h +64 -0
  362. package/windows/RNScreens/ScreenContainer.cpp +49 -0
  363. package/windows/RNScreens/ScreenContainer.h +23 -0
  364. package/windows/RNScreens/ScreenContainerViewManager.cpp +133 -0
  365. package/windows/RNScreens/ScreenContainerViewManager.h +78 -0
  366. package/windows/RNScreens/ScreenStack.cpp +65 -0
  367. package/windows/RNScreens/ScreenStack.h +23 -0
  368. package/windows/RNScreens/ScreenStackHeaderConfig.cpp +19 -0
  369. package/windows/RNScreens/ScreenStackHeaderConfig.h +14 -0
  370. package/windows/RNScreens/ScreenStackHeaderConfigViewManager.cpp +89 -0
  371. package/windows/RNScreens/ScreenStackHeaderConfigViewManager.h +62 -0
  372. package/windows/RNScreens/ScreenStackViewManager.cpp +132 -0
  373. package/windows/RNScreens/ScreenStackViewManager.h +78 -0
  374. package/windows/RNScreens/ScreenViewManager.cpp +154 -0
  375. package/windows/RNScreens/ScreenViewManager.h +78 -0
  376. package/windows/RNScreens/packages.config +4 -0
  377. package/windows/RNScreens/pch.cpp +1 -0
  378. package/windows/RNScreens/pch.h +9 -0
  379. package/windows/RNScreens62.sln +254 -0
  380. package/windows/RNScreens63.sln +225 -0
  381. package/windows/RNScreens65.sln +144 -0
@@ -0,0 +1,78 @@
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
+
15
+ // code taken from
16
+ // https://github.com/react-navigation/react-navigation/blob/ec0d113eb25c39ef9defb6c7215640f44e3569ae/packages/elements/src/SafeAreaProviderCompat.tsx
17
+ import * as React from 'react';
18
+ import {
19
+ Dimensions,
20
+ Platform,
21
+ StyleProp,
22
+ StyleSheet,
23
+ View,
24
+ ViewStyle,
25
+ } from 'react-native';
26
+ import {
27
+ initialWindowMetrics,
28
+ SafeAreaInsetsContext,
29
+ SafeAreaProvider,
30
+ // amznmod_react - change imports to kepler packages
31
+ } from '@amazon-devices/react-native-safe-area-context';
32
+
33
+ type Props = {
34
+ children: React.ReactNode;
35
+ style?: StyleProp<ViewStyle>;
36
+ };
37
+
38
+ const { width = 0, height = 0 } = Dimensions.get('window');
39
+
40
+ // To support SSR on web, we need to have empty insets for initial values
41
+ // Otherwise there can be mismatch between SSR and client output
42
+ // We also need to specify empty values to support tests environments
43
+ const initialMetrics =
44
+ Platform.OS === 'web' || initialWindowMetrics == null
45
+ ? {
46
+ frame: { x: 0, y: 0, width, height },
47
+ insets: { top: 0, left: 0, right: 0, bottom: 0 },
48
+ }
49
+ : initialWindowMetrics;
50
+
51
+ export default function SafeAreaProviderCompat({ children, style }: Props) {
52
+ return (
53
+ <SafeAreaInsetsContext.Consumer>
54
+ {insets => {
55
+ if (insets) {
56
+ // If we already have insets, don't wrap the stack in another safe area provider
57
+ // This avoids an issue with updates at the cost of potentially incorrect values
58
+ // https://github.com/react-navigation/react-navigation/issues/174
59
+ return <View style={[styles.container, style]}>{children}</View>;
60
+ }
61
+
62
+ return (
63
+ <SafeAreaProvider initialMetrics={initialMetrics} style={style}>
64
+ {children}
65
+ </SafeAreaProvider>
66
+ );
67
+ }}
68
+ </SafeAreaInsetsContext.Consumer>
69
+ );
70
+ }
71
+
72
+ SafeAreaProviderCompat.initialMetrics = initialMetrics;
73
+
74
+ const styles = StyleSheet.create({
75
+ container: {
76
+ flex: 1,
77
+ },
78
+ });
@@ -0,0 +1,41 @@
1
+ import { Platform } from 'react-native';
2
+ import { StackPresentationTypes } from '@amazon-devices/react-native-screens';
3
+ type Layout = { width: number; height: number };
4
+
5
+ const formSheetModalHeight = 56;
6
+
7
+ export default function getDefaultHeaderHeight(
8
+ layout: Layout,
9
+ statusBarHeight: number,
10
+ stackPresentation: StackPresentationTypes,
11
+ isLargeHeader = false
12
+ ): number {
13
+ // default header heights
14
+ let headerHeight = Platform.OS === 'android' ? 56 : 64;
15
+
16
+ if (Platform.OS === 'ios') {
17
+ const isLandscape = layout.width > layout.height;
18
+ const isFormSheetModal =
19
+ stackPresentation === 'modal' || stackPresentation === 'formSheet';
20
+ if (isFormSheetModal && !isLandscape) {
21
+ // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.
22
+ statusBarHeight = 0;
23
+ }
24
+
25
+ if (Platform.isPad || Platform.isTV) {
26
+ headerHeight = isFormSheetModal ? formSheetModalHeight : 50;
27
+ } else {
28
+ if (isLandscape) {
29
+ headerHeight = 32;
30
+ } else {
31
+ if (isFormSheetModal) {
32
+ headerHeight = formSheetModalHeight;
33
+ } else {
34
+ headerHeight = isLargeHeader ? 96 : 44;
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ return headerHeight + statusBarHeight;
41
+ }
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ import AnimatedHeaderHeightContext from './AnimatedHeaderHeightContext';
4
+
5
+ export default function useAnimatedHeaderHeight() {
6
+ const animatedValue = React.useContext(AnimatedHeaderHeightContext);
7
+
8
+ if (animatedValue === undefined) {
9
+ throw new Error(
10
+ "Couldn't find the header height. Are you inside a screen in a navigator with a header?"
11
+ );
12
+ }
13
+
14
+ return animatedValue;
15
+ }
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import { BackHandler, NativeEventSubscription } from 'react-native';
3
+
4
+ interface Args {
5
+ onBackPress: () => boolean;
6
+ isDisabled: boolean;
7
+ }
8
+
9
+ interface UseBackPressSubscription {
10
+ handleAttached: () => void;
11
+ handleDetached: () => void;
12
+ createSubscription: () => void;
13
+ clearSubscription: () => void;
14
+ }
15
+
16
+ /**
17
+ * This hook is an abstraction for keeping back press subscription
18
+ * logic in one place.
19
+ */
20
+ export function useBackPressSubscription({
21
+ onBackPress,
22
+ isDisabled,
23
+ }: Args): UseBackPressSubscription {
24
+ const [isActive, setIsActive] = React.useState(false);
25
+ const subscription = React.useRef<NativeEventSubscription | undefined>();
26
+
27
+ const clearSubscription = React.useCallback((shouldSetActive = true) => {
28
+ subscription.current?.remove();
29
+ subscription.current = undefined;
30
+ if (shouldSetActive) setIsActive(false);
31
+ }, []);
32
+
33
+ const createSubscription = React.useCallback(() => {
34
+ if (!isDisabled) {
35
+ subscription.current?.remove();
36
+ subscription.current = BackHandler.addEventListener(
37
+ 'hardwareBackPress',
38
+ onBackPress
39
+ );
40
+ setIsActive(true);
41
+ }
42
+ }, [isDisabled, onBackPress]);
43
+
44
+ const handleAttached = React.useCallback(() => {
45
+ if (isActive) {
46
+ createSubscription();
47
+ }
48
+ }, [createSubscription, isActive]);
49
+
50
+ const handleDetached = React.useCallback(() => {
51
+ clearSubscription(false);
52
+ }, [clearSubscription]);
53
+
54
+ React.useEffect(() => {
55
+ if (isDisabled) {
56
+ clearSubscription();
57
+ }
58
+ }, [isDisabled, clearSubscription]);
59
+
60
+ return {
61
+ handleAttached,
62
+ handleDetached,
63
+ createSubscription,
64
+ clearSubscription,
65
+ };
66
+ }
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ import HeaderHeightContext from './HeaderHeightContext';
4
+
5
+ export default function useHeaderHeight() {
6
+ const height = React.useContext(HeaderHeightContext);
7
+
8
+ if (height === undefined) {
9
+ throw new Error(
10
+ "Couldn't find the header height. Are you inside a screen in a navigator with a header?"
11
+ );
12
+ }
13
+
14
+ return height;
15
+ }
@@ -0,0 +1,14 @@
1
+ // @ts-ignore: No declaration available
2
+ // eslint-disable-next-line import/no-named-as-default, import/default, import/no-named-as-default-member, import/namespace
3
+ import ReactNativeStyleAttributes from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes';
4
+
5
+ export function processFonts(
6
+ fontFamilies: (string | undefined)[]
7
+ ): (string | undefined)[] {
8
+ // @ts-ignore: React Native types are incorrect here and don't consider fontFamily a style value
9
+ const fontFamilyProcessor = ReactNativeStyleAttributes.fontFamily?.process;
10
+ if (typeof fontFamilyProcessor === 'function') {
11
+ return fontFamilies.map(fontFamilyProcessor);
12
+ }
13
+ return fontFamilies;
14
+ }
@@ -0,0 +1,187 @@
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
+ // amznmod_react - change imports to kepler packages
15
+ import { Route, useTheme } from '@amazon-devices/react-navigation__native';
16
+ import * as React from 'react';
17
+ import { Platform } from 'react-native';
18
+ import {
19
+ ScreenStackHeaderBackButtonImage,
20
+ ScreenStackHeaderCenterView,
21
+ ScreenStackHeaderConfig,
22
+ ScreenStackHeaderLeftView,
23
+ ScreenStackHeaderRightView,
24
+ ScreenStackHeaderSearchBarView,
25
+ SearchBar,
26
+ SearchBarProps,
27
+ isSearchBarAvailableForCurrentPlatform,
28
+ executeNativeBackPress,
29
+ } from '@amazon-devices/react-native-screens';
30
+ import { NativeStackNavigationOptions } from '../types';
31
+ import { useBackPressSubscription } from '../utils/useBackPressSubscription';
32
+ import { processFonts } from './FontProcessor';
33
+
34
+ type Props = NativeStackNavigationOptions & {
35
+ route: Route<string>;
36
+ };
37
+
38
+ export default function HeaderConfig({
39
+ backButtonImage,
40
+ backButtonInCustomView,
41
+ direction,
42
+ disableBackButtonMenu,
43
+ headerBackTitle,
44
+ headerBackTitleStyle = {},
45
+ headerBackTitleVisible = true,
46
+ headerCenter,
47
+ headerHideBackButton,
48
+ headerHideShadow,
49
+ headerLargeStyle = {},
50
+ headerLargeTitle,
51
+ headerLargeTitleHideShadow,
52
+ headerLargeTitleStyle = {},
53
+ headerLeft,
54
+ headerRight,
55
+ headerShown,
56
+ headerStyle = {},
57
+ headerTintColor,
58
+ headerTitle,
59
+ headerTitleStyle = {},
60
+ headerTopInsetEnabled = true,
61
+ headerTranslucent,
62
+ route,
63
+ searchBar,
64
+ title,
65
+ }: Props): JSX.Element {
66
+ const { colors } = useTheme();
67
+ const tintColor = headerTintColor ?? colors.primary;
68
+
69
+ // We need to use back press subscription here to override back button behavior on JS side.
70
+ // Because screens are usually used with react-navigation and this library overrides back button
71
+ // we need to handle it first in case when search bar is open
72
+ const {
73
+ handleAttached,
74
+ handleDetached,
75
+ clearSubscription,
76
+ createSubscription,
77
+ } = useBackPressSubscription({
78
+ onBackPress: executeNativeBackPress,
79
+ isDisabled: !searchBar || !!searchBar.disableBackButtonOverride,
80
+ });
81
+
82
+ const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =
83
+ processFonts([
84
+ headerBackTitleStyle.fontFamily,
85
+ headerLargeTitleStyle.fontFamily,
86
+ headerTitleStyle.fontFamily,
87
+ ]);
88
+
89
+ // We want to clear clearSubscription only when components unmounts or search bar changes
90
+ // eslint-disable-next-line react-hooks/exhaustive-deps
91
+ React.useEffect(() => clearSubscription, [searchBar]);
92
+
93
+ const processedSearchBarOptions = React.useMemo(() => {
94
+ if (
95
+ Platform.OS === 'android' &&
96
+ searchBar &&
97
+ !searchBar.disableBackButtonOverride
98
+ ) {
99
+ const onFocus: SearchBarProps['onFocus'] = (...args) => {
100
+ createSubscription();
101
+ searchBar.onFocus?.(...args);
102
+ };
103
+ const onClose: SearchBarProps['onClose'] = (...args) => {
104
+ clearSubscription();
105
+ searchBar.onClose?.(...args);
106
+ };
107
+
108
+ return { ...searchBar, onFocus, onClose };
109
+ }
110
+ return searchBar;
111
+ }, [searchBar, createSubscription, clearSubscription]);
112
+
113
+ return (
114
+ <ScreenStackHeaderConfig
115
+ backButtonInCustomView={backButtonInCustomView}
116
+ backgroundColor={
117
+ headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card
118
+ }
119
+ backTitle={headerBackTitle}
120
+ backTitleFontFamily={backTitleFontFamily}
121
+ backTitleFontSize={headerBackTitleStyle.fontSize}
122
+ backTitleVisible={headerBackTitleVisible}
123
+ blurEffect={headerStyle.blurEffect}
124
+ color={tintColor}
125
+ direction={direction}
126
+ disableBackButtonMenu={disableBackButtonMenu}
127
+ hidden={headerShown === false}
128
+ hideBackButton={headerHideBackButton}
129
+ hideShadow={headerHideShadow}
130
+ largeTitle={headerLargeTitle}
131
+ largeTitleBackgroundColor={headerLargeStyle.backgroundColor}
132
+ largeTitleColor={headerLargeTitleStyle.color}
133
+ largeTitleFontFamily={largeTitleFontFamily}
134
+ largeTitleFontSize={headerLargeTitleStyle.fontSize}
135
+ largeTitleFontWeight={headerLargeTitleStyle.fontWeight}
136
+ largeTitleHideShadow={headerLargeTitleHideShadow}
137
+ title={
138
+ headerTitle !== undefined
139
+ ? headerTitle
140
+ : title !== undefined
141
+ ? title
142
+ : route.name
143
+ }
144
+ titleColor={
145
+ headerTitleStyle.color !== undefined
146
+ ? headerTitleStyle.color
147
+ : headerTintColor !== undefined
148
+ ? headerTintColor
149
+ : colors.text
150
+ }
151
+ titleFontFamily={titleFontFamily}
152
+ titleFontSize={headerTitleStyle.fontSize}
153
+ titleFontWeight={headerTitleStyle.fontWeight}
154
+ topInsetEnabled={headerTopInsetEnabled}
155
+ translucent={headerTranslucent === true}
156
+ onAttached={handleAttached}
157
+ onDetached={handleDetached}>
158
+ {headerRight !== undefined ? (
159
+ <ScreenStackHeaderRightView>
160
+ {headerRight({ tintColor })}
161
+ </ScreenStackHeaderRightView>
162
+ ) : null}
163
+ {backButtonImage !== undefined ? (
164
+ <ScreenStackHeaderBackButtonImage
165
+ key="backImage"
166
+ source={backButtonImage}
167
+ />
168
+ ) : null}
169
+ {headerLeft !== undefined ? (
170
+ <ScreenStackHeaderLeftView>
171
+ {headerLeft({ tintColor })}
172
+ </ScreenStackHeaderLeftView>
173
+ ) : null}
174
+ {headerCenter !== undefined ? (
175
+ <ScreenStackHeaderCenterView>
176
+ {headerCenter({ tintColor })}
177
+ </ScreenStackHeaderCenterView>
178
+ ) : null}
179
+ {isSearchBarAvailableForCurrentPlatform &&
180
+ processedSearchBarOptions !== undefined ? (
181
+ <ScreenStackHeaderSearchBarView>
182
+ <SearchBar {...processedSearchBarOptions} />
183
+ </ScreenStackHeaderSearchBarView>
184
+ ) : null}
185
+ </ScreenStackHeaderConfig>
186
+ );
187
+ }