react-native-screens 3.29.0 → 3.30.1

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 (448) hide show
  1. package/README.md +7 -7
  2. package/RNScreens.podspec +3 -3
  3. package/android/CMakeLists.txt +27 -0
  4. package/android/build.gradle +21 -2
  5. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +17 -14
  6. package/android/src/main/cpp/jni-adapter.cpp +110 -0
  7. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +13 -8
  8. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
  9. package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
  10. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +38 -5
  11. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +32 -42
  12. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +76 -48
  13. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +38 -35
  14. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +43 -37
  15. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +23 -23
  16. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +73 -71
  17. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +3 -3
  18. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +5 -5
  19. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +3 -3
  20. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +3 -3
  21. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +4 -4
  22. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +13 -16
  23. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +105 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +2 -2
  25. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +1 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +14 -10
  27. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +8 -8
  28. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +3 -7
  29. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +4 -8
  30. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +3 -7
  31. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +3 -3
  32. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +9 -13
  33. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +3 -7
  34. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +3 -7
  35. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +3 -7
  36. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +3 -7
  37. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +3 -7
  38. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +3 -7
  39. package/android/src/main/jni/rnscreens.h +1 -0
  40. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
  41. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
  42. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +1 -1
  43. package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +32 -0
  44. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +41 -0
  45. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +15 -0
  46. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +31 -0
  47. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +6 -0
  48. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +1 -5
  49. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +1 -1
  50. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +8 -3
  51. package/cpp/RNScreensTurboModule.cpp +107 -0
  52. package/cpp/RNScreensTurboModule.h +43 -0
  53. package/gesture-handler/package.json +6 -0
  54. package/ios/RNSConvert.h +2 -0
  55. package/ios/RNSConvert.mm +5 -2
  56. package/ios/RNSEnums.h +1 -0
  57. package/ios/RNSModalScreen.h +8 -0
  58. package/ios/RNSModalScreen.mm +36 -0
  59. package/ios/RNSModule.h +19 -0
  60. package/ios/RNSModule.mm +174 -0
  61. package/ios/RNSScreen.h +4 -1
  62. package/ios/RNSScreen.mm +48 -26
  63. package/ios/RNSScreenStack.h +6 -0
  64. package/ios/RNSScreenStack.mm +81 -15
  65. package/ios/RNSScreenStackAnimator.mm +89 -1
  66. package/ios/RNSScreenStackHeaderConfig.mm +7 -1
  67. package/ios/RNSScreenWindowTraits.h +1 -1
  68. package/ios/RNSScreenWindowTraits.mm +24 -50
  69. package/ios/RNSSearchBar.mm +24 -0
  70. package/ios/utils/RNSUIBarButtonItem.h +2 -0
  71. package/lib/commonjs/TransitionProgressContext.js +3 -4
  72. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  73. package/lib/commonjs/components/FullWindowOverlay.js +28 -0
  74. package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
  75. package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
  76. package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
  77. package/lib/commonjs/components/Screen.js +161 -0
  78. package/lib/commonjs/components/Screen.js.map +1 -0
  79. package/lib/commonjs/components/Screen.web.js +46 -0
  80. package/lib/commonjs/components/Screen.web.js.map +1 -0
  81. package/lib/commonjs/components/ScreenContainer.js +33 -0
  82. package/lib/commonjs/components/ScreenContainer.js.map +1 -0
  83. package/lib/commonjs/components/ScreenContainer.web.js +11 -0
  84. package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
  85. package/lib/commonjs/components/ScreenStack.js +45 -0
  86. package/lib/commonjs/components/ScreenStack.js.map +1 -0
  87. package/lib/commonjs/components/ScreenStack.web.js +9 -0
  88. package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
  89. package/lib/commonjs/components/ScreenStackHeaderConfig.js +53 -0
  90. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
  91. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +27 -0
  92. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
  93. package/lib/commonjs/components/SearchBar.js +59 -0
  94. package/lib/commonjs/components/SearchBar.js.map +1 -0
  95. package/lib/commonjs/components/SearchBar.web.js +11 -0
  96. package/lib/commonjs/components/SearchBar.web.js.map +1 -0
  97. package/lib/commonjs/components/helpers/DelayedFreeze.js +32 -0
  98. package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
  99. package/lib/commonjs/core.js +41 -0
  100. package/lib/commonjs/core.js.map +1 -0
  101. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +1 -2
  102. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  103. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +13 -0
  104. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
  105. package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
  106. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
  107. package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
  108. package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
  109. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +1 -2
  110. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  111. package/lib/commonjs/fabric/ScreenNativeComponent.js +1 -2
  112. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  113. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +1 -2
  114. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  115. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +1 -2
  116. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  117. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +1 -2
  118. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  119. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +1 -2
  120. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  121. package/lib/commonjs/fabric/SearchBarNativeComponent.js +3 -5
  122. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  123. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
  124. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
  125. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
  126. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
  127. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +202 -0
  128. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
  129. package/lib/commonjs/gesture-handler/constraints.js +64 -0
  130. package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
  131. package/lib/commonjs/gesture-handler/defaults.js +38 -0
  132. package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
  133. package/lib/commonjs/gesture-handler/fabricUtils.js +30 -0
  134. package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
  135. package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
  136. package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
  137. package/lib/commonjs/gesture-handler/index.js +14 -0
  138. package/lib/commonjs/gesture-handler/index.js.map +1 -0
  139. package/lib/commonjs/index.js +183 -100
  140. package/lib/commonjs/index.js.map +1 -1
  141. package/lib/commonjs/native-stack/contexts/GHContext.js +11 -0
  142. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
  143. package/lib/commonjs/native-stack/index.js.map +1 -1
  144. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +20 -24
  145. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  146. package/lib/commonjs/native-stack/types.js.map +1 -1
  147. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +3 -4
  148. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  149. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +3 -4
  150. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  151. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +2 -2
  152. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  153. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  154. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -1
  155. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +2 -2
  156. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  157. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -4
  158. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  159. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +2 -2
  160. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  161. package/lib/commonjs/native-stack/views/FontProcessor.js +1 -2
  162. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  163. package/lib/commonjs/native-stack/views/HeaderConfig.js +11 -7
  164. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  165. package/lib/commonjs/native-stack/views/NativeStackView.js +50 -15
  166. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  167. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +3 -4
  168. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  169. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +6 -9
  170. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  171. package/lib/commonjs/reanimated/ReanimatedScreen.js +1 -2
  172. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  173. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +6 -14
  174. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  175. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +3 -4
  176. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  177. package/lib/commonjs/reanimated/index.js.map +1 -1
  178. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +2 -2
  179. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  180. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +2 -2
  181. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  182. package/lib/commonjs/types.js.map +1 -1
  183. package/lib/commonjs/useTransitionProgress.js +2 -2
  184. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  185. package/lib/commonjs/utils.js +2 -4
  186. package/lib/commonjs/utils.js.map +1 -1
  187. package/lib/module/TransitionProgressContext.js.map +1 -1
  188. package/lib/module/components/FullWindowOverlay.js +21 -0
  189. package/lib/module/components/FullWindowOverlay.js.map +1 -0
  190. package/lib/module/components/FullWindowOverlay.web.js +3 -0
  191. package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
  192. package/lib/module/components/Screen.js +156 -0
  193. package/lib/module/components/Screen.js.map +1 -0
  194. package/lib/module/components/Screen.web.js +38 -0
  195. package/lib/module/components/Screen.web.js.map +1 -0
  196. package/lib/module/components/ScreenContainer.js +26 -0
  197. package/lib/module/components/ScreenContainer.js.map +1 -0
  198. package/lib/module/components/ScreenContainer.web.js +5 -0
  199. package/lib/module/components/ScreenContainer.web.js.map +1 -0
  200. package/lib/module/components/ScreenStack.js +40 -0
  201. package/lib/module/components/ScreenStack.js.map +1 -0
  202. package/lib/module/components/ScreenStack.web.js +3 -0
  203. package/lib/module/components/ScreenStack.web.js.map +1 -0
  204. package/lib/module/components/ScreenStackHeaderConfig.js +43 -0
  205. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
  206. package/lib/module/components/ScreenStackHeaderConfig.web.js +14 -0
  207. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
  208. package/lib/module/components/SearchBar.js +52 -0
  209. package/lib/module/components/SearchBar.js.map +1 -0
  210. package/lib/module/components/SearchBar.web.js +5 -0
  211. package/lib/module/components/SearchBar.web.js.map +1 -0
  212. package/lib/module/components/helpers/DelayedFreeze.js +25 -0
  213. package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
  214. package/lib/module/core.js +31 -0
  215. package/lib/module/core.js.map +1 -0
  216. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  217. package/lib/module/fabric/ModalScreenNativeComponent.js +8 -0
  218. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
  219. package/lib/module/fabric/NativeScreensModule.js +5 -0
  220. package/lib/module/fabric/NativeScreensModule.js.map +1 -0
  221. package/lib/module/fabric/NativeScreensModule.web.js +2 -0
  222. package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
  223. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  224. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  225. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  226. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  227. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  228. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  229. package/lib/module/fabric/SearchBarNativeComponent.js +1 -1
  230. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  231. package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
  232. package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
  233. package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
  234. package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
  235. package/lib/module/gesture-handler/ScreenGestureDetector.js +194 -0
  236. package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
  237. package/lib/module/gesture-handler/constraints.js +56 -0
  238. package/lib/module/gesture-handler/constraints.js.map +1 -0
  239. package/lib/module/gesture-handler/defaults.js +32 -0
  240. package/lib/module/gesture-handler/defaults.js.map +1 -0
  241. package/lib/module/gesture-handler/fabricUtils.js +23 -0
  242. package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
  243. package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
  244. package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
  245. package/lib/module/gesture-handler/index.js +5 -0
  246. package/lib/module/gesture-handler/index.js.map +1 -0
  247. package/lib/module/index.js +31 -64
  248. package/lib/module/index.js.map +1 -1
  249. package/lib/module/native-stack/contexts/GHContext.js +4 -0
  250. package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
  251. package/lib/module/native-stack/index.js.map +1 -1
  252. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +17 -20
  253. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  254. package/lib/module/native-stack/types.js.map +1 -1
  255. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  256. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
  257. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  258. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  259. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -1
  260. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  261. package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -4
  262. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  263. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  264. package/lib/module/native-stack/views/FontProcessor.js +1 -2
  265. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  266. package/lib/module/native-stack/views/HeaderConfig.js +8 -5
  267. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  268. package/lib/module/native-stack/views/NativeStackView.js +49 -14
  269. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  270. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  271. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +2 -4
  272. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  273. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  274. package/lib/module/reanimated/ReanimatedScreenProvider.js +6 -14
  275. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  276. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  277. package/lib/module/reanimated/index.js.map +1 -1
  278. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  279. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  280. package/lib/module/types.js.map +1 -1
  281. package/lib/module/useTransitionProgress.js.map +1 -1
  282. package/lib/module/utils.js.map +1 -1
  283. package/lib/typescript/TransitionProgressContext.d.ts +1 -0
  284. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
  285. package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
  286. package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
  287. package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
  288. package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
  289. package/lib/typescript/components/Screen.d.ts +20 -0
  290. package/lib/typescript/components/Screen.d.ts.map +1 -0
  291. package/lib/typescript/components/Screen.web.d.ts +11 -0
  292. package/lib/typescript/components/Screen.web.d.ts.map +1 -0
  293. package/lib/typescript/components/ScreenContainer.d.ts +7 -0
  294. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
  295. package/lib/typescript/components/ScreenContainer.web.d.ts +5 -0
  296. package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
  297. package/lib/typescript/components/ScreenStack.d.ts +5 -0
  298. package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
  299. package/lib/typescript/components/ScreenStack.web.d.ts +3 -0
  300. package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
  301. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
  302. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
  303. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
  304. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
  305. package/lib/typescript/components/SearchBar.d.ts +26 -0
  306. package/lib/typescript/components/SearchBar.d.ts.map +1 -0
  307. package/lib/typescript/components/SearchBar.web.d.ts +5 -0
  308. package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
  309. package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
  310. package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
  311. package/lib/typescript/core.d.ts +7 -0
  312. package/lib/typescript/core.d.ts.map +1 -0
  313. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -0
  314. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
  315. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +68 -0
  316. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
  317. package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
  318. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
  319. package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
  320. package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
  321. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
  322. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
  323. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +2 -1
  324. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
  325. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -0
  326. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
  327. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +1 -0
  328. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
  329. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -0
  330. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
  331. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -0
  332. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
  333. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +3 -1
  334. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
  335. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
  336. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
  337. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
  338. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
  339. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
  340. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
  341. package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
  342. package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
  343. package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
  344. package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
  345. package/lib/typescript/gesture-handler/fabricUtils.d.ts +8 -0
  346. package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
  347. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
  348. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
  349. package/lib/typescript/gesture-handler/index.d.ts +2 -0
  350. package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
  351. package/lib/typescript/index.d.ts +11 -31
  352. package/lib/typescript/index.d.ts.map +1 -0
  353. package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
  354. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
  355. package/lib/typescript/native-stack/index.d.ts +1 -0
  356. package/lib/typescript/native-stack/index.d.ts.map +1 -0
  357. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +1 -0
  358. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  359. package/lib/typescript/native-stack/types.d.ts +39 -2
  360. package/lib/typescript/native-stack/types.d.ts.map +1 -0
  361. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
  362. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
  363. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
  364. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
  365. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -0
  366. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
  367. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -0
  368. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
  369. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +1 -0
  370. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
  371. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
  372. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  373. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
  374. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
  375. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  376. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
  377. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  378. package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
  379. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +1 -0
  380. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
  381. package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -0
  382. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
  383. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
  384. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
  385. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +2 -2
  386. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
  387. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +2 -2
  388. package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
  389. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
  390. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
  391. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -0
  392. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
  393. package/lib/typescript/reanimated/index.d.ts +1 -0
  394. package/lib/typescript/reanimated/index.d.ts.map +1 -0
  395. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
  396. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
  397. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
  398. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
  399. package/lib/typescript/types.d.ts +11 -2
  400. package/lib/typescript/types.d.ts.map +1 -0
  401. package/lib/typescript/useTransitionProgress.d.ts +1 -0
  402. package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
  403. package/lib/typescript/utils.d.ts +1 -0
  404. package/lib/typescript/utils.d.ts.map +1 -0
  405. package/native-stack/README.md +2 -1
  406. package/native-stack/package.json +1 -1
  407. package/package.json +17 -11
  408. package/react-native.config.js +2 -1
  409. package/reanimated/package.json +1 -1
  410. package/src/components/FullWindowOverlay.tsx +25 -0
  411. package/src/components/FullWindowOverlay.web.tsx +6 -0
  412. package/src/components/Screen.tsx +218 -0
  413. package/src/components/Screen.web.tsx +43 -0
  414. package/src/components/ScreenContainer.tsx +33 -0
  415. package/src/components/ScreenContainer.web.tsx +6 -0
  416. package/src/components/ScreenStack.tsx +41 -0
  417. package/src/components/ScreenStack.web.tsx +3 -0
  418. package/src/components/ScreenStackHeaderConfig.tsx +76 -0
  419. package/src/components/ScreenStackHeaderConfig.web.tsx +39 -0
  420. package/src/components/SearchBar.tsx +91 -0
  421. package/src/components/SearchBar.web.tsx +6 -0
  422. package/src/components/helpers/DelayedFreeze.tsx +27 -0
  423. package/src/core.ts +43 -0
  424. package/src/fabric/ModalScreenNativeComponent.ts +104 -0
  425. package/src/fabric/NativeScreensModule.ts +7 -0
  426. package/src/fabric/NativeScreensModule.web.ts +1 -0
  427. package/src/fabric/ScreenNativeComponent.ts +1 -1
  428. package/src/fabric/SearchBarNativeComponent.ts +2 -0
  429. package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
  430. package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
  431. package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
  432. package/src/gesture-handler/constraints.ts +87 -0
  433. package/src/gesture-handler/defaults.ts +38 -0
  434. package/src/gesture-handler/fabricUtils.ts +39 -0
  435. package/src/gesture-handler/fabricUtils.web.ts +10 -0
  436. package/src/gesture-handler/index.tsx +4 -0
  437. package/src/index.tsx +65 -112
  438. package/src/native-stack/contexts/GHContext.tsx +7 -0
  439. package/src/native-stack/types.tsx +62 -1
  440. package/src/native-stack/views/HeaderConfig.tsx +11 -0
  441. package/src/native-stack/views/NativeStackView.tsx +65 -13
  442. package/src/types.tsx +13 -1
  443. package/lib/commonjs/index.native.js +0 -418
  444. package/lib/commonjs/index.native.js.map +0 -1
  445. package/lib/module/index.native.js +0 -415
  446. package/lib/module/index.native.js.map +0 -1
  447. package/lib/typescript/index.native.d.ts +0 -2
  448. package/src/index.native.tsx +0 -619
@@ -17,10 +17,10 @@ import javax.annotation.Nonnull
17
17
 
18
18
  @ReactModule(name = ScreenStackHeaderConfigViewManager.REACT_CLASS)
19
19
  class ScreenStackHeaderConfigViewManager : ViewGroupManager<ScreenStackHeaderConfig>(), RNSScreenStackHeaderConfigManagerInterface<ScreenStackHeaderConfig> {
20
- private val mDelegate: ViewManagerDelegate<ScreenStackHeaderConfig>
20
+ private val delegate: ViewManagerDelegate<ScreenStackHeaderConfig>
21
21
 
22
22
  init {
23
- mDelegate = RNSScreenStackHeaderConfigManagerDelegate<ScreenStackHeaderConfig, ScreenStackHeaderConfigViewManager>(this)
23
+ delegate = RNSScreenStackHeaderConfigManagerDelegate<ScreenStackHeaderConfig, ScreenStackHeaderConfigViewManager>(this)
24
24
  }
25
25
 
26
26
  override fun getName(): String = REACT_CLASS
@@ -143,7 +143,7 @@ class ScreenStackHeaderConfigViewManager : ViewGroupManager<ScreenStackHeaderCon
143
143
  )
144
144
  }
145
145
 
146
- protected override fun getDelegate(): ViewManagerDelegate<ScreenStackHeaderConfig> = mDelegate
146
+ protected override fun getDelegate(): ViewManagerDelegate<ScreenStackHeaderConfig> = delegate
147
147
 
148
148
  companion object {
149
149
  const val REACT_CLASS = "RNSScreenStackHeaderConfig"
@@ -7,8 +7,8 @@ import com.facebook.react.views.view.ReactViewGroup
7
7
 
8
8
  @SuppressLint("ViewConstructor")
9
9
  class ScreenStackHeaderSubview(context: ReactContext?) : ReactViewGroup(context) {
10
- private var mReactWidth = 0
11
- private var mReactHeight = 0
10
+ private var reactWidth = 0
11
+ private var reactHeight = 0
12
12
  var type = Type.RIGHT
13
13
 
14
14
  val config: ScreenStackHeaderConfig?
@@ -19,15 +19,15 @@ class ScreenStackHeaderSubview(context: ReactContext?) : ReactViewGroup(context)
19
19
  MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY
20
20
  ) {
21
21
  // dimensions provided by react
22
- mReactWidth = MeasureSpec.getSize(widthMeasureSpec)
23
- mReactHeight = MeasureSpec.getSize(heightMeasureSpec)
22
+ reactWidth = MeasureSpec.getSize(widthMeasureSpec)
23
+ reactHeight = MeasureSpec.getSize(heightMeasureSpec)
24
24
  val parent = parent
25
25
  if (parent != null) {
26
26
  forceLayout()
27
27
  (parent as View).requestLayout()
28
28
  }
29
29
  }
30
- setMeasuredDimension(mReactWidth, mReactHeight)
30
+ setMeasuredDimension(reactWidth, reactHeight)
31
31
  }
32
32
 
33
33
  override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) = Unit
@@ -11,10 +11,10 @@ import com.facebook.react.viewmanagers.RNSScreenStackHeaderSubviewManagerInterfa
11
11
 
12
12
  @ReactModule(name = ScreenStackHeaderSubviewManager.REACT_CLASS)
13
13
  class ScreenStackHeaderSubviewManager : ViewGroupManager<ScreenStackHeaderSubview>(), RNSScreenStackHeaderSubviewManagerInterface<ScreenStackHeaderSubview> {
14
- private val mDelegate: ViewManagerDelegate<ScreenStackHeaderSubview>
14
+ private val delegate: ViewManagerDelegate<ScreenStackHeaderSubview>
15
15
 
16
16
  init {
17
- mDelegate = RNSScreenStackHeaderSubviewManagerDelegate<ScreenStackHeaderSubview, ScreenStackHeaderSubviewManager>(this)
17
+ delegate = RNSScreenStackHeaderSubviewManagerDelegate<ScreenStackHeaderSubview, ScreenStackHeaderSubviewManager>(this)
18
18
  }
19
19
 
20
20
  override fun getName() = REACT_CLASS
@@ -33,7 +33,7 @@ class ScreenStackHeaderSubviewManager : ViewGroupManager<ScreenStackHeaderSubvie
33
33
  }
34
34
  }
35
35
 
36
- protected override fun getDelegate(): ViewManagerDelegate<ScreenStackHeaderSubview> = mDelegate
36
+ protected override fun getDelegate(): ViewManagerDelegate<ScreenStackHeaderSubview> = delegate
37
37
 
38
38
  companion object {
39
39
  const val REACT_CLASS = "RNSScreenStackHeaderSubview"
@@ -14,10 +14,10 @@ import com.swmansion.rnscreens.events.StackFinishTransitioningEvent
14
14
 
15
15
  @ReactModule(name = ScreenStackViewManager.REACT_CLASS)
16
16
  class ScreenStackViewManager : ViewGroupManager<ScreenStack>(), RNSScreenStackManagerInterface<ScreenStack> {
17
- private val mDelegate: ViewManagerDelegate<ScreenStack>
17
+ private val delegate: ViewManagerDelegate<ScreenStack>
18
18
 
19
19
  init {
20
- mDelegate = RNSScreenStackManagerDelegate<ScreenStack, ScreenStackViewManager>(this)
20
+ delegate = RNSScreenStackManagerDelegate<ScreenStack, ScreenStackViewManager>(this)
21
21
  }
22
22
 
23
23
  override fun getName() = REACT_CLASS
@@ -63,7 +63,7 @@ class ScreenStackViewManager : ViewGroupManager<ScreenStack>(), RNSScreenStackMa
63
63
 
64
64
  override fun needsCustomLayoutForChildren() = true
65
65
 
66
- protected override fun getDelegate(): ViewManagerDelegate<ScreenStack> = mDelegate
66
+ protected override fun getDelegate(): ViewManagerDelegate<ScreenStack> = delegate
67
67
 
68
68
  override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any> = mutableMapOf(
69
69
  StackFinishTransitioningEvent.EVENT_NAME to mutableMapOf("registrationName" to "onFinishTransitioning")
@@ -22,11 +22,11 @@ import com.swmansion.rnscreens.events.ScreenWillAppearEvent
22
22
  import com.swmansion.rnscreens.events.ScreenWillDisappearEvent
23
23
 
24
24
  @ReactModule(name = ScreenViewManager.REACT_CLASS)
25
- class ScreenViewManager : ViewGroupManager<Screen>(), RNSScreenManagerInterface<Screen> {
26
- private val mDelegate: ViewManagerDelegate<Screen>
25
+ open class ScreenViewManager : ViewGroupManager<Screen>(), RNSScreenManagerInterface<Screen> {
26
+ private val delegate: ViewManagerDelegate<Screen>
27
27
 
28
28
  init {
29
- mDelegate = RNSScreenManagerDelegate<Screen, ScreenViewManager>(this)
29
+ delegate = RNSScreenManagerDelegate<Screen, ScreenViewManager>(this)
30
30
  }
31
31
 
32
32
  override fun getName() = REACT_CLASS
@@ -193,7 +193,7 @@ class ScreenViewManager : ViewGroupManager<Screen>(), RNSScreenManagerInterface<
193
193
  ScreenTransitionProgressEvent.EVENT_NAME to MapBuilder.of("registrationName", "onTransitionProgress")
194
194
  )
195
195
 
196
- protected override fun getDelegate(): ViewManagerDelegate<Screen> = mDelegate
196
+ protected override fun getDelegate(): ViewManagerDelegate<Screen> = delegate
197
197
 
198
198
  companion object {
199
199
  const val REACT_CLASS = "RNSScreen"
@@ -11,7 +11,6 @@ import android.os.Build
11
11
  import android.view.ViewParent
12
12
  import androidx.core.graphics.Insets
13
13
  import androidx.core.view.ViewCompat
14
- import androidx.core.view.WindowCompat
15
14
  import androidx.core.view.WindowInsetsCompat
16
15
  import androidx.core.view.WindowInsetsControllerCompat
17
16
  import com.facebook.react.bridge.GuardedRunnable
@@ -22,21 +21,21 @@ import com.swmansion.rnscreens.Screen.WindowTraits
22
21
  object ScreenWindowTraits {
23
22
  // Methods concerning statusBar management were taken from `react-native`'s status bar module:
24
23
  // https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java
25
- private var mDidSetOrientation = false
26
- private var mDidSetStatusBarAppearance = false
27
- private var mDidSetNavigationBarAppearance = false
28
- private var mDefaultStatusBarColor: Int? = null
24
+ private var didSetOrientation = false
25
+ private var didSetStatusBarAppearance = false
26
+ private var didSetNavigationBarAppearance = false
27
+ private var defaultStatusBarColor: Int? = null
29
28
 
30
29
  internal fun applyDidSetOrientation() {
31
- mDidSetOrientation = true
30
+ didSetOrientation = true
32
31
  }
33
32
 
34
33
  internal fun applyDidSetStatusBarAppearance() {
35
- mDidSetStatusBarAppearance = true
34
+ didSetStatusBarAppearance = true
36
35
  }
37
36
 
38
37
  internal fun applyDidSetNavigationBarAppearance() {
39
- mDidSetNavigationBarAppearance = true
38
+ didSetNavigationBarAppearance = true
40
39
  }
41
40
 
42
41
  internal fun setOrientation(screen: Screen, activity: Activity?) {
@@ -48,17 +47,16 @@ object ScreenWindowTraits {
48
47
  activity.requestedOrientation = orientation
49
48
  }
50
49
 
51
- @SuppressLint("ObsoleteSdkInt") // to be removed when support for < 0.64 is dropped
52
50
  internal fun setColor(screen: Screen, activity: Activity?, context: ReactContext?) {
53
51
  if (activity == null || context == null) {
54
52
  return
55
53
  }
56
- if (mDefaultStatusBarColor == null) {
57
- mDefaultStatusBarColor = activity.window.statusBarColor
54
+ if (defaultStatusBarColor == null) {
55
+ defaultStatusBarColor = activity.window.statusBarColor
58
56
  }
59
57
  val screenForColor = findScreenForTrait(screen, WindowTraits.COLOR)
60
58
  val screenForAnimated = findScreenForTrait(screen, WindowTraits.ANIMATED)
61
- val color = screenForColor?.statusBarColor ?: mDefaultStatusBarColor
59
+ val color = screenForColor?.statusBarColor ?: defaultStatusBarColor
62
60
  val animated = screenForAnimated?.isStatusBarAnimated ?: false
63
61
 
64
62
  UiThreadUtil.runOnUiThread(
@@ -197,7 +195,6 @@ object ScreenWindowTraits {
197
195
  val screenForNavBarHidden = findScreenForTrait(screen, WindowTraits.NAVIGATION_BAR_HIDDEN)
198
196
  val hidden = screenForNavBarHidden?.isNavigationBarHidden ?: false
199
197
 
200
- WindowCompat.setDecorFitsSystemWindows(window, hidden)
201
198
  if (hidden) {
202
199
  WindowInsetsControllerCompat(window, window.decorView).let { controller ->
203
200
  controller.hide(WindowInsetsCompat.Type.navigationBars())
@@ -213,16 +210,16 @@ object ScreenWindowTraits {
213
210
  }
214
211
 
215
212
  internal fun trySetWindowTraits(screen: Screen, activity: Activity?, context: ReactContext?) {
216
- if (mDidSetOrientation) {
213
+ if (didSetOrientation) {
217
214
  setOrientation(screen, activity)
218
215
  }
219
- if (mDidSetStatusBarAppearance) {
216
+ if (didSetStatusBarAppearance) {
220
217
  setColor(screen, activity, context)
221
218
  setStyle(screen, activity, context)
222
219
  setTranslucent(screen, activity, context)
223
220
  setHidden(screen, activity)
224
221
  }
225
- if (mDidSetNavigationBarAppearance) {
222
+ if (didSetNavigationBarAppearance) {
226
223
  setNavigationBarColor(screen, activity)
227
224
  setNavigationBarHidden(screen, activity)
228
225
  }
@@ -0,0 +1,105 @@
1
+ package com.swmansion.rnscreens
2
+
3
+ import android.util.Log
4
+ import com.facebook.proguard.annotations.DoNotStrip
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.UiThreadUtil
7
+ import com.facebook.react.module.annotations.ReactModule
8
+ import com.facebook.react.uimanager.UIManagerHelper
9
+ import com.swmansion.rnscreens.events.ScreenTransitionProgressEvent
10
+ import java.util.concurrent.atomic.AtomicBoolean
11
+
12
+ @ReactModule(name = ScreensModule.NAME)
13
+ class ScreensModule(private val reactContext: ReactApplicationContext)
14
+ : NativeScreensModuleSpec(reactContext)
15
+ {
16
+ private var topScreenId: Int = -1
17
+ private val isActiveTransition = AtomicBoolean(false)
18
+
19
+ init {
20
+ try {
21
+ System.loadLibrary("rnscreens")
22
+ val jsContext = reactApplicationContext.javaScriptContextHolder
23
+ if (jsContext != null) {
24
+ nativeInstall(jsContext.get())
25
+ } else {
26
+ Log.e("[RNScreens]", "Could not install JSI bindings.")
27
+ }
28
+ } catch (exception: Exception) {
29
+ Log.w("[RNScreens]", "Could not load RNScreens module.")
30
+ }
31
+ }
32
+
33
+ private external fun nativeInstall(jsiPtr: Long)
34
+
35
+ override fun getName(): String = NAME
36
+
37
+ @DoNotStrip
38
+ private fun startTransition(reactTag: Int?): IntArray {
39
+ UiThreadUtil.assertOnUiThread()
40
+ if (isActiveTransition.get() || reactTag == null) {
41
+ return intArrayOf(-1, -1)
42
+ }
43
+ topScreenId = -1
44
+ val result = intArrayOf(-1, -1)
45
+ val uiManager = UIManagerHelper.getUIManagerForReactTag(reactContext, reactTag)
46
+ val stack = uiManager?.resolveView(reactTag)
47
+ if (stack is ScreenStack) {
48
+ val fragments = stack.fragments
49
+ val screensCount = fragments.size
50
+ if (screensCount > 1) {
51
+ isActiveTransition.set(true)
52
+ stack.attachBelowTop()
53
+ topScreenId = fragments[screensCount - 1].screen.id
54
+ result[0] = topScreenId
55
+ result[1] = fragments[screensCount - 2].screen.id
56
+ }
57
+ }
58
+ return result
59
+ }
60
+
61
+ @DoNotStrip
62
+ private fun updateTransition(progress: Double) {
63
+ UiThreadUtil.assertOnUiThread()
64
+ if (topScreenId == -1) {
65
+ return
66
+ }
67
+ val progressFloat = progress.toFloat();
68
+ val coalescingKey = ScreenFragment.getCoalescingKey(progressFloat)
69
+ UIManagerHelper
70
+ .getEventDispatcherForReactTag(reactContext, topScreenId)
71
+ ?.dispatchEvent(
72
+ ScreenTransitionProgressEvent(
73
+ UIManagerHelper.getSurfaceId(reactContext),
74
+ topScreenId, progressFloat, true, true, coalescingKey
75
+ )
76
+ )
77
+ }
78
+
79
+ @DoNotStrip
80
+ private fun finishTransition(reactTag: Int?, canceled: Boolean) {
81
+ UiThreadUtil.assertOnUiThread()
82
+ if (!isActiveTransition.get() || reactTag == null) {
83
+ Log.e(
84
+ "[RNScreens]",
85
+ "Unable to call `finishTransition` method before transition start."
86
+ )
87
+ return
88
+ }
89
+ val uiManager = UIManagerHelper.getUIManagerForReactTag(reactContext, reactTag)
90
+ val stack = uiManager?.resolveView(reactTag)
91
+ if (stack is ScreenStack) {
92
+ if (canceled) {
93
+ stack.detachBelowTop()
94
+ } else {
95
+ stack.notifyTopDetached()
96
+ }
97
+ isActiveTransition.set(false)
98
+ }
99
+ topScreenId = -1
100
+ }
101
+
102
+ companion object {
103
+ const val NAME = "RNSModule"
104
+ }
105
+ }
@@ -6,10 +6,10 @@ import com.facebook.react.uimanager.NativeViewHierarchyManager
6
6
  import com.facebook.react.uimanager.NativeViewHierarchyOptimizer
7
7
  import com.facebook.react.uimanager.UIManagerModule
8
8
 
9
- internal class ScreensShadowNode(private var mContext: ReactContext) : LayoutShadowNode() {
9
+ internal class ScreensShadowNode(private var context: ReactContext) : LayoutShadowNode() {
10
10
  override fun onBeforeLayout(nativeViewHierarchyOptimizer: NativeViewHierarchyOptimizer) {
11
11
  super.onBeforeLayout(nativeViewHierarchyOptimizer)
12
- (mContext.getNativeModule(UIManagerModule::class.java))?.addUIBlock { nativeViewHierarchyManager: NativeViewHierarchyManager ->
12
+ (context.getNativeModule(UIManagerModule::class.java))?.addUIBlock { nativeViewHierarchyManager: NativeViewHierarchyManager ->
13
13
  val view = nativeViewHierarchyManager.resolveView(reactTag)
14
14
  if (view is ScreenContainer) {
15
15
  view.performUpdates()
@@ -106,6 +106,7 @@ class SearchBarManager : ViewGroupManager<SearchBarView>() {
106
106
  "clearText" -> root.handleClearTextJsRequest()
107
107
  "toggleCancelButton" -> root.handleToggleCancelButtonJsRequest(false) // just a dummy argument
108
108
  "setText" -> root.handleSetTextJsRequest(args?.getString(0))
109
+ "cancelSearch" -> root.handleCancelSearchJsRequest()
109
110
  else -> throw JSApplicationIllegalArgumentException("Unsupported native command received: $commandId")
110
111
  }
111
112
  }
@@ -28,9 +28,9 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
28
28
  var autoFocus: Boolean = false
29
29
  var shouldShowHintSearchIcon: Boolean = true
30
30
 
31
- private var mSearchViewFormatter: SearchViewFormatter? = null
31
+ private var searchViewFormatter: SearchViewFormatter? = null
32
32
 
33
- private var mAreListenersSet: Boolean = false
33
+ private var areListenersSet: Boolean = false
34
34
 
35
35
  private val headerConfig: ScreenStackHeaderConfig?
36
36
  get() {
@@ -52,17 +52,17 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
52
52
  private fun setSearchViewProps() {
53
53
  val searchView = screenStackFragment?.searchView
54
54
  if (searchView != null) {
55
- if (!mAreListenersSet) {
55
+ if (!areListenersSet) {
56
56
  setSearchViewListeners(searchView)
57
- mAreListenersSet = true
57
+ areListenersSet = true
58
58
  }
59
59
 
60
60
  searchView.inputType = inputType.toAndroidInputType(autoCapitalize)
61
- mSearchViewFormatter?.setTextColor(textColor)
62
- mSearchViewFormatter?.setTintColor(tintColor)
63
- mSearchViewFormatter?.setHeaderIconColor(headerIconColor)
64
- mSearchViewFormatter?.setHintTextColor(hintTextColor)
65
- mSearchViewFormatter?.setPlaceholder(placeholder, shouldShowHintSearchIcon)
61
+ searchViewFormatter?.setTextColor(textColor)
62
+ searchViewFormatter?.setTintColor(tintColor)
63
+ searchViewFormatter?.setHeaderIconColor(headerIconColor)
64
+ searchViewFormatter?.setHintTextColor(hintTextColor)
65
+ searchViewFormatter?.setPlaceholder(placeholder, shouldShowHintSearchIcon)
66
66
  searchView.overrideBackAction = shouldOverrideBackButton
67
67
  }
68
68
  }
@@ -71,7 +71,7 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
71
71
  super.onAttachedToWindow()
72
72
 
73
73
  screenStackFragment?.onSearchViewCreate = { newSearchView ->
74
- if (mSearchViewFormatter == null) mSearchViewFormatter =
74
+ if (searchViewFormatter == null) searchViewFormatter =
75
75
  SearchViewFormatter(newSearchView)
76
76
  setSearchViewProps()
77
77
  if (autoFocus) {
@@ -150,6 +150,10 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
150
150
  text?.let { screenStackFragment?.searchView?.setText(it) }
151
151
  }
152
152
 
153
+ fun handleCancelSearchJsRequest() {
154
+ screenStackFragment?.searchView?.cancelSearch()
155
+ }
156
+
153
157
  private fun setToolbarElementsVisibility(visibility: Int) {
154
158
  for (i in 0..(headerConfig?.configSubviewsCount?.minus(1) ?: 0)) {
155
159
  val subview = headerConfig?.getConfigSubview(i)
@@ -8,8 +8,8 @@ import androidx.appcompat.R
8
8
  import androidx.appcompat.widget.SearchView
9
9
 
10
10
  class SearchViewFormatter(var searchView: SearchView) {
11
- private var mDefaultTextColor: Int? = null
12
- private var mDefaultTintBackground: Drawable? = null
11
+ private var defaultTextColor: Int? = null
12
+ private var defaultTintBackground: Drawable? = null
13
13
 
14
14
  private val searchEditText
15
15
  get() = searchView.findViewById<View>(R.id.search_src_text) as? EditText
@@ -21,10 +21,10 @@ class SearchViewFormatter(var searchView: SearchView) {
21
21
  get() = searchView.findViewById<ImageView>(R.id.search_close_btn)
22
22
 
23
23
  fun setTextColor(textColor: Int?) {
24
- val currentDefaultTextColor = mDefaultTextColor
24
+ val currentDefaultTextColor = defaultTextColor
25
25
  if (textColor != null) {
26
- if (mDefaultTextColor == null) {
27
- mDefaultTextColor = searchEditText?.textColors?.defaultColor
26
+ if (defaultTextColor == null) {
27
+ defaultTextColor = searchEditText?.textColors?.defaultColor
28
28
  }
29
29
  searchEditText?.setTextColor(textColor)
30
30
  } else if (currentDefaultTextColor != null) {
@@ -33,10 +33,10 @@ class SearchViewFormatter(var searchView: SearchView) {
33
33
  }
34
34
 
35
35
  fun setTintColor(tintColor: Int?) {
36
- val currentDefaultTintColor = mDefaultTintBackground
36
+ val currentDefaultTintColor = defaultTintBackground
37
37
  if (tintColor != null) {
38
- if (mDefaultTintBackground == null) {
39
- mDefaultTintBackground = searchTextPlate.background
38
+ if (defaultTintBackground == null) {
39
+ defaultTintBackground = searchTextPlate.background
40
40
  }
41
41
  searchTextPlate.setBackgroundColor(tintColor)
42
42
  } else if (currentDefaultTintColor != null) {
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class HeaderAttachedEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
@@ -5,18 +5,14 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class HeaderBackButtonClickedEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
19
15
  companion object {
20
- const val EVENT_NAME = "topHeaderBackButtonClickedEvent"
16
+ const val EVENT_NAME = "topHeaderBackButtonClicked"
21
17
  }
22
18
  }
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class HeaderDetachedEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
@@ -6,17 +6,17 @@ import com.facebook.react.uimanager.events.RCTEventEmitter
6
6
 
7
7
  class HeaderHeightChangeEvent(
8
8
  viewId: Int,
9
- private val mHeaderHeight: Double
9
+ private val headerHeight: Double
10
10
  ) : Event<HeaderHeightChangeEvent>(viewId) {
11
11
 
12
12
  override fun getEventName() = EVENT_NAME
13
13
 
14
14
  // As the same header height could appear twice, use header height as a coalescing key.
15
- override fun getCoalescingKey(): Short = mHeaderHeight.toInt().toShort()
15
+ override fun getCoalescingKey(): Short = headerHeight.toInt().toShort()
16
16
 
17
17
  override fun dispatch(rctEventEmitter: RCTEventEmitter) {
18
18
  val map = Arguments.createMap()
19
- map.putDouble("headerHeight", mHeaderHeight)
19
+ map.putDouble("headerHeight", headerHeight)
20
20
  rctEventEmitter.receiveEvent(viewTag, eventName, map)
21
21
  }
22
22
 
@@ -7,23 +7,19 @@ import com.facebook.react.uimanager.events.Event
7
7
  class ScreenTransitionProgressEvent(
8
8
  surfaceId: Int,
9
9
  viewId: Int,
10
- private val mProgress: Float,
11
- private val mClosing: Boolean,
12
- private val mGoingForward: Boolean,
13
- private val mCoalescingKey: Short
10
+ private val progress: Float,
11
+ private val isClosing: Boolean,
12
+ private val isGoingForward: Boolean,
13
+ private val coalescingKey: Short
14
14
  ) : Event<ScreenAppearEvent?>(surfaceId, viewId) {
15
- override fun getEventName(): String {
16
- return EVENT_NAME
17
- }
15
+ override fun getEventName(): String = EVENT_NAME
18
16
 
19
- override fun getCoalescingKey(): Short {
20
- return mCoalescingKey
21
- }
17
+ override fun getCoalescingKey(): Short = coalescingKey
22
18
 
23
19
  override fun getEventData(): WritableMap? = Arguments.createMap().apply {
24
- putDouble("progress", mProgress.toDouble())
25
- putInt("closing", if (mClosing) 1 else 0)
26
- putInt("goingForward", if (mGoingForward) 1 else 0)
20
+ putDouble("progress", progress.toDouble())
21
+ putInt("closing", if (isClosing) 1 else 0)
22
+ putInt("goingForward", if (isGoingForward) 1 else 0)
27
23
  }
28
24
 
29
25
  companion object {
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class SearchBarBlurEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
@@ -9,14 +9,10 @@ class SearchBarChangeTextEvent(
9
9
  viewId: Int,
10
10
  private val text: String?,
11
11
  ) : Event<ScreenAppearEvent>(surfaceId, viewId) {
12
- override fun getEventName(): String {
13
- return EVENT_NAME
14
- }
12
+ override fun getEventName(): String = EVENT_NAME
15
13
 
16
- override fun getCoalescingKey(): Short {
17
- // All events for a given view can be coalesced.
18
- return 0
19
- }
14
+ // All events for a given view can be coalesced.
15
+ override fun getCoalescingKey(): Short = 0
20
16
 
21
17
  override fun getEventData(): WritableMap? = Arguments.createMap().apply {
22
18
  putString("text", text)
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class SearchBarCloseEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class SearchBarFocusEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14
 
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class SearchBarOpenEvent(surfaceId: Int, viewId: Int) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap()
18
14