@amazon-devices/react-native-screens 2.0.9000000000 → 3.0.9000000000-rn-83

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 (685) hide show
  1. package/README.md +57 -18
  2. package/RNScreens.podspec +12 -30
  3. package/SystemBundles/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.bundle +45130 -0
  4. package/SystemBundles/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.map +13686 -0
  5. package/SystemModules/amzn__react-native-screens-3.modules.txt +158 -0
  6. package/SystemModules/amzn__react-native-screens-3.private.modules.txt +376 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +4 -4
  8. package/android/CMakeLists.txt +80 -0
  9. package/android/build.gradle +96 -17
  10. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +61 -0
  11. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +38 -25
  12. package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
  13. package/android/src/main/cpp/NativeProxy.cpp +51 -0
  14. package/android/src/main/cpp/NativeProxy.h +35 -0
  15. package/android/src/main/cpp/OnLoad.cpp +8 -0
  16. package/android/src/main/cpp/jni-adapter.cpp +106 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +20 -10
  18. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +69 -1
  19. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
  20. package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +104 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +12 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +65 -7
  24. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +327 -84
  25. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +122 -72
  26. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
  27. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapper.kt +38 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapperManager.kt +25 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
  30. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +299 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooterManager.kt +25 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +91 -67
  33. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +12 -1
  34. package/android/src/main/java/com/swmansion/rnscreens/ScreenModalFragment.kt +281 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +184 -81
  36. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +467 -80
  37. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +8 -1
  38. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +156 -124
  39. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +25 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +159 -39
  41. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +24 -9
  42. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +19 -13
  43. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +31 -28
  44. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +276 -71
  45. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +124 -64
  46. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +127 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +4 -2
  48. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -53
  49. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +57 -32
  50. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +15 -10
  51. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetBehaviorExt.kt +42 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogRootView.kt +104 -0
  53. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogScreen.kt +26 -0
  54. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +493 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +66 -0
  56. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/GestureTransparentViewGroup.kt +24 -0
  57. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +135 -0
  58. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +7 -8
  59. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +8 -9
  60. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +7 -8
  61. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +9 -10
  62. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
  63. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
  64. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
  65. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +13 -16
  66. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
  67. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
  68. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +8 -9
  69. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +8 -11
  70. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +7 -8
  71. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +8 -9
  72. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +7 -8
  73. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +12 -11
  74. package/android/src/main/java/com/swmansion/rnscreens/events/SheetDetentChangedEvent.kt +27 -0
  75. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
  76. package/android/src/main/java/com/swmansion/rnscreens/ext/NumericExt.kt +12 -0
  77. package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +32 -0
  78. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
  79. package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +8 -0
  80. package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +282 -0
  81. package/android/src/main/jni/CMakeLists.txt +35 -23
  82. package/android/src/main/jni/rnscreens.h +3 -0
  83. package/android/src/main/res/base/anim/rns_ios_from_left_background_close.xml +5 -0
  84. package/android/src/main/res/base/anim/rns_ios_from_left_background_open.xml +5 -0
  85. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_close.xml +6 -0
  86. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_open.xml +6 -0
  87. package/android/src/main/res/base/anim/rns_ios_from_right_background_close.xml +5 -0
  88. package/android/src/main/res/base/anim/rns_ios_from_right_background_open.xml +5 -0
  89. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_close.xml +6 -0
  90. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_open.xml +6 -0
  91. package/android/src/main/res/base/drawable/rns_rounder_top_corners_shape.xml +8 -0
  92. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
  93. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
  94. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
  95. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
  96. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +25 -0
  97. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +16 -0
  98. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +25 -0
  99. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +16 -0
  100. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +16 -3
  101. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +7 -2
  102. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +6 -0
  103. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +2 -0
  104. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
  105. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
  106. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +39 -0
  107. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +11 -2
  108. package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
  109. package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +36 -0
  110. package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
  111. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +40 -0
  112. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +16 -0
  113. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +32 -0
  114. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +55 -12
  115. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +157 -0
  116. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +31 -11
  117. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +49 -0
  118. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +22 -0
  119. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +40 -0
  120. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +34 -0
  121. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +57 -0
  122. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +27 -0
  123. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +8 -0
  124. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +31 -0
  125. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +15 -0
  126. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +39 -0
  127. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +23 -2
  128. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +33 -8
  129. package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
  130. package/cpp/RNSScreenRemovalListener.cpp +25 -0
  131. package/cpp/RNSScreenRemovalListener.h +20 -0
  132. package/cpp/RNScreensTurboModule.cpp +115 -0
  133. package/cpp/RNScreensTurboModule.h +40 -0
  134. package/gesture-handler/package.json +6 -0
  135. package/ios/RNSConvert.h +24 -4
  136. package/ios/RNSConvert.mm +180 -55
  137. package/ios/RNSEnums.h +48 -0
  138. package/ios/RNSFullWindowOverlay.mm +12 -2
  139. package/ios/RNSModalScreen.h +8 -0
  140. package/ios/RNSModalScreen.mm +65 -0
  141. package/ios/RNSModule.h +19 -0
  142. package/ios/RNSModule.mm +173 -0
  143. package/ios/RNSPercentDrivenInteractiveTransition.h +12 -0
  144. package/ios/RNSPercentDrivenInteractiveTransition.mm +69 -0
  145. package/ios/RNSScreen.h +24 -5
  146. package/ios/RNSScreen.mm +652 -173
  147. package/ios/RNSScreenContainer.mm +12 -1
  148. package/ios/RNSScreenContentWrapper.h +44 -0
  149. package/ios/RNSScreenContentWrapper.mm +67 -0
  150. package/ios/RNSScreenFooter.h +30 -0
  151. package/ios/RNSScreenFooter.mm +142 -0
  152. package/ios/RNSScreenNavigationContainer.mm +7 -0
  153. package/ios/RNSScreenStack.h +6 -0
  154. package/ios/RNSScreenStack.mm +333 -109
  155. package/ios/RNSScreenStackAnimator.h +15 -1
  156. package/ios/RNSScreenStackAnimator.mm +380 -115
  157. package/ios/RNSScreenStackHeaderConfig.h +74 -6
  158. package/ios/RNSScreenStackHeaderConfig.mm +338 -69
  159. package/ios/RNSScreenStackHeaderSubview.h +0 -7
  160. package/ios/RNSScreenStackHeaderSubview.mm +61 -24
  161. package/ios/RNSScreenWindowTraits.h +1 -1
  162. package/ios/RNSScreenWindowTraits.mm +24 -50
  163. package/ios/RNSSearchBar.h +5 -5
  164. package/ios/RNSSearchBar.mm +42 -11
  165. package/ios/events/RNSHeaderHeightChangeEvent.h +0 -1
  166. package/ios/events/RNSHeaderHeightChangeEvent.mm +15 -0
  167. package/ios/events/RNSScreenViewEvent.h +0 -1
  168. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
  169. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
  170. package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
  171. package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
  172. package/ios/utils/RNSDefines.h +7 -0
  173. package/ios/utils/RNSUIBarButtonItem.h +2 -0
  174. package/ios/utils/UINavigationBar+RNSUtility.h +37 -0
  175. package/ios/utils/UINavigationBar+RNSUtility.mm +44 -0
  176. package/ios/utils/UIView+RNSUtility.h +23 -0
  177. package/ios/utils/UIView+RNSUtility.mm +54 -0
  178. package/kepler-compatibility.json +2 -2
  179. package/lib/commonjs/TransitionProgressContext.js +2 -2
  180. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  181. package/lib/commonjs/components/DebugContainer.js +38 -0
  182. package/lib/commonjs/components/DebugContainer.js.map +1 -0
  183. package/lib/commonjs/components/DebugContainer.web.js +14 -0
  184. package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
  185. package/lib/commonjs/components/FullWindowOverlay.js +31 -0
  186. package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
  187. package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
  188. package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
  189. package/lib/commonjs/components/Screen.js +286 -0
  190. package/lib/commonjs/components/Screen.js.map +1 -0
  191. package/lib/commonjs/components/Screen.web.js +48 -0
  192. package/lib/commonjs/components/Screen.web.js.map +1 -0
  193. package/lib/commonjs/components/ScreenContainer.js +32 -0
  194. package/lib/commonjs/components/ScreenContainer.js.map +1 -0
  195. package/lib/commonjs/components/ScreenContainer.web.js +10 -0
  196. package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
  197. package/lib/commonjs/components/ScreenContentWrapper.js +17 -0
  198. package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -0
  199. package/lib/commonjs/components/ScreenContentWrapper.web.js +10 -0
  200. package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -0
  201. package/lib/commonjs/components/ScreenFooter.js +25 -0
  202. package/lib/commonjs/components/ScreenFooter.js.map +1 -0
  203. package/lib/commonjs/components/ScreenFooter.web.js +11 -0
  204. package/lib/commonjs/components/ScreenFooter.web.js.map +1 -0
  205. package/lib/commonjs/components/ScreenStack.js +67 -0
  206. package/lib/commonjs/components/ScreenStack.js.map +1 -0
  207. package/lib/commonjs/components/ScreenStack.web.js +10 -0
  208. package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
  209. package/lib/commonjs/components/ScreenStackHeaderConfig.js +100 -0
  210. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
  211. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +39 -0
  212. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
  213. package/lib/commonjs/components/ScreenStackItem.js +106 -0
  214. package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
  215. package/lib/commonjs/components/SearchBar.js +67 -0
  216. package/lib/commonjs/components/SearchBar.js.map +1 -0
  217. package/lib/commonjs/components/SearchBar.web.js +10 -0
  218. package/lib/commonjs/components/SearchBar.web.js.map +1 -0
  219. package/lib/commonjs/components/helpers/DelayedFreeze.js +31 -0
  220. package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
  221. package/lib/commonjs/components/helpers/usePrevious.js +16 -0
  222. package/lib/commonjs/components/helpers/usePrevious.js.map +1 -0
  223. package/lib/commonjs/contexts.js +11 -0
  224. package/lib/commonjs/contexts.js.map +1 -0
  225. package/lib/commonjs/core.js +40 -0
  226. package/lib/commonjs/core.js.map +1 -0
  227. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +17 -2
  228. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  229. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +14 -0
  230. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
  231. package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
  232. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
  233. package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
  234. package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
  235. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +8 -11
  236. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  237. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +18 -0
  238. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  239. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +10 -0
  240. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js.map +1 -0
  241. package/lib/commonjs/fabric/ScreenNativeComponent.js +13 -15
  242. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  243. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +3 -2
  244. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  245. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -9
  246. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  247. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +6 -3
  248. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  249. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +8 -11
  250. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  251. package/lib/commonjs/fabric/SearchBarNativeComponent.js +5 -6
  252. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  253. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
  254. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
  255. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
  256. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
  257. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +200 -0
  258. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
  259. package/lib/commonjs/gesture-handler/constraints.js +64 -0
  260. package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
  261. package/lib/commonjs/gesture-handler/defaults.js +45 -0
  262. package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
  263. package/lib/commonjs/gesture-handler/fabricUtils.js +66 -0
  264. package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
  265. package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
  266. package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
  267. package/lib/commonjs/gesture-handler/index.js +14 -0
  268. package/lib/commonjs/gesture-handler/index.js.map +1 -0
  269. package/lib/commonjs/index.js +157 -95
  270. package/lib/commonjs/index.js.map +1 -1
  271. package/lib/commonjs/native-stack/contexts/GHContext.js +12 -0
  272. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
  273. package/lib/commonjs/native-stack/index.js +1 -1
  274. package/lib/commonjs/native-stack/index.js.map +1 -1
  275. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +24 -24
  276. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  277. package/lib/commonjs/native-stack/types.js.map +1 -1
  278. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +1 -2
  279. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  280. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +1 -2
  281. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  282. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +1 -2
  283. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  284. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  285. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
  286. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
  287. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +2 -3
  288. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  289. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +5 -6
  290. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  291. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +2 -3
  292. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  293. package/lib/commonjs/native-stack/views/FontProcessor.js +2 -4
  294. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  295. package/lib/commonjs/native-stack/views/FooterComponent.js +17 -0
  296. package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -0
  297. package/lib/commonjs/native-stack/views/HeaderConfig.js +23 -15
  298. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  299. package/lib/commonjs/native-stack/views/NativeStackView.js +124 -56
  300. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  301. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +1 -2
  302. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  303. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +14 -21
  304. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  305. package/lib/commonjs/reanimated/ReanimatedScreen.js +4 -4
  306. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  307. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +10 -18
  308. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  309. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +1 -2
  310. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  311. package/lib/commonjs/reanimated/index.js +1 -1
  312. package/lib/commonjs/reanimated/index.js.map +1 -1
  313. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +4 -5
  314. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  315. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +2 -3
  316. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  317. package/lib/commonjs/types.js.map +1 -1
  318. package/lib/commonjs/useTransitionProgress.js +2 -3
  319. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  320. package/lib/commonjs/utils.js +28 -6
  321. package/lib/commonjs/utils.js.map +1 -1
  322. package/lib/module/TransitionProgressContext.js +2 -0
  323. package/lib/module/TransitionProgressContext.js.map +1 -1
  324. package/lib/module/components/DebugContainer.js +30 -0
  325. package/lib/module/components/DebugContainer.js.map +1 -0
  326. package/lib/module/components/DebugContainer.web.js +6 -0
  327. package/lib/module/components/DebugContainer.web.js.map +1 -0
  328. package/lib/module/components/FullWindowOverlay.js +24 -0
  329. package/lib/module/components/FullWindowOverlay.js.map +1 -0
  330. package/lib/module/components/FullWindowOverlay.web.js +3 -0
  331. package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
  332. package/lib/module/components/Screen.js +282 -0
  333. package/lib/module/components/Screen.js.map +1 -0
  334. package/lib/module/components/Screen.web.js +41 -0
  335. package/lib/module/components/Screen.web.js.map +1 -0
  336. package/lib/module/components/ScreenContainer.js +26 -0
  337. package/lib/module/components/ScreenContainer.js.map +1 -0
  338. package/lib/module/components/ScreenContainer.web.js +4 -0
  339. package/lib/module/components/ScreenContainer.web.js.map +1 -0
  340. package/lib/module/components/ScreenContentWrapper.js +10 -0
  341. package/lib/module/components/ScreenContentWrapper.js.map +1 -0
  342. package/lib/module/components/ScreenContentWrapper.web.js +4 -0
  343. package/lib/module/components/ScreenContentWrapper.web.js.map +1 -0
  344. package/lib/module/components/ScreenFooter.js +18 -0
  345. package/lib/module/components/ScreenFooter.js.map +1 -0
  346. package/lib/module/components/ScreenFooter.web.js +6 -0
  347. package/lib/module/components/ScreenFooter.web.js.map +1 -0
  348. package/lib/module/components/ScreenStack.js +63 -0
  349. package/lib/module/components/ScreenStack.js.map +1 -0
  350. package/lib/module/components/ScreenStack.web.js +4 -0
  351. package/lib/module/components/ScreenStack.web.js.map +1 -0
  352. package/lib/module/components/ScreenStackHeaderConfig.js +91 -0
  353. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
  354. package/lib/module/components/ScreenStackHeaderConfig.web.js +26 -0
  355. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
  356. package/lib/module/components/ScreenStackItem.js +98 -0
  357. package/lib/module/components/ScreenStackItem.js.map +1 -0
  358. package/lib/module/components/SearchBar.js +62 -0
  359. package/lib/module/components/SearchBar.js.map +1 -0
  360. package/lib/module/components/SearchBar.web.js +4 -0
  361. package/lib/module/components/SearchBar.web.js.map +1 -0
  362. package/lib/module/components/helpers/DelayedFreeze.js +24 -0
  363. package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
  364. package/lib/module/components/helpers/usePrevious.js +10 -0
  365. package/lib/module/components/helpers/usePrevious.js.map +1 -0
  366. package/lib/module/contexts.js +4 -0
  367. package/lib/module/contexts.js.map +1 -0
  368. package/lib/module/core.js +31 -0
  369. package/lib/module/core.js.map +1 -0
  370. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +16 -0
  371. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  372. package/lib/module/fabric/ModalScreenNativeComponent.js +10 -0
  373. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
  374. package/lib/module/fabric/NativeScreensModule.js +5 -0
  375. package/lib/module/fabric/NativeScreensModule.js.map +1 -0
  376. package/lib/module/fabric/NativeScreensModule.web.js +2 -0
  377. package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
  378. package/lib/module/fabric/ScreenContainerNativeComponent.js +3 -4
  379. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  380. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +10 -0
  381. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  382. package/lib/module/fabric/ScreenFooterNativeComponent.js +3 -0
  383. package/lib/module/fabric/ScreenFooterNativeComponent.js.map +1 -0
  384. package/lib/module/fabric/ScreenNativeComponent.js +8 -7
  385. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  386. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +2 -0
  387. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  388. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +8 -2
  389. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  390. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -1
  391. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  392. package/lib/module/fabric/ScreenStackNativeComponent.js +3 -3
  393. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  394. package/lib/module/fabric/SearchBarNativeComponent.js +3 -1
  395. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  396. package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
  397. package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
  398. package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
  399. package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
  400. package/lib/module/gesture-handler/ScreenGestureDetector.js +193 -0
  401. package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
  402. package/lib/module/gesture-handler/constraints.js +56 -0
  403. package/lib/module/gesture-handler/constraints.js.map +1 -0
  404. package/lib/module/gesture-handler/defaults.js +39 -0
  405. package/lib/module/gesture-handler/defaults.js.map +1 -0
  406. package/lib/module/gesture-handler/fabricUtils.js +61 -0
  407. package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
  408. package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
  409. package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
  410. package/lib/module/gesture-handler/index.js +5 -0
  411. package/lib/module/gesture-handler/index.js.map +1 -0
  412. package/lib/module/index.js +29 -64
  413. package/lib/module/index.js.map +1 -1
  414. package/lib/module/native-stack/contexts/GHContext.js +6 -0
  415. package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
  416. package/lib/module/native-stack/index.js.map +1 -1
  417. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +22 -21
  418. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  419. package/lib/module/native-stack/types.js.map +1 -1
  420. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  421. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
  422. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  423. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  424. package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
  425. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
  426. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  427. package/lib/module/native-stack/utils/useBackPressSubscription.js +4 -5
  428. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  429. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  430. package/lib/module/native-stack/views/FontProcessor.js +2 -3
  431. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  432. package/lib/module/native-stack/views/FooterComponent.js +10 -0
  433. package/lib/module/native-stack/views/FooterComponent.js.map +1 -0
  434. package/lib/module/native-stack/views/HeaderConfig.js +14 -6
  435. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  436. package/lib/module/native-stack/views/NativeStackView.js +118 -47
  437. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  438. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  439. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +9 -13
  440. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  441. package/lib/module/reanimated/ReanimatedScreen.js +2 -3
  442. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  443. package/lib/module/reanimated/ReanimatedScreenProvider.js +8 -16
  444. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  445. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  446. package/lib/module/reanimated/index.js.map +1 -1
  447. package/lib/module/reanimated/useReanimatedHeaderHeight.js +1 -1
  448. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  449. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  450. package/lib/module/types.js.map +1 -1
  451. package/lib/module/useTransitionProgress.js.map +1 -1
  452. package/lib/module/utils.js +26 -5
  453. package/lib/module/utils.js.map +1 -1
  454. package/lib/typescript/TransitionProgressContext.d.ts +2 -1
  455. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
  456. package/lib/typescript/components/DebugContainer.d.ts +15 -0
  457. package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
  458. package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
  459. package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
  460. package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
  461. package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
  462. package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
  463. package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
  464. package/lib/typescript/components/Screen.d.ts +8 -0
  465. package/lib/typescript/components/Screen.d.ts.map +1 -0
  466. package/lib/typescript/components/Screen.web.d.ts +11 -0
  467. package/lib/typescript/components/Screen.web.d.ts.map +1 -0
  468. package/lib/typescript/components/ScreenContainer.d.ts +5 -0
  469. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
  470. package/lib/typescript/components/ScreenContainer.web.d.ts +4 -0
  471. package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
  472. package/lib/typescript/components/ScreenContentWrapper.d.ts +5 -0
  473. package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -0
  474. package/lib/typescript/components/ScreenContentWrapper.web.d.ts +4 -0
  475. package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -0
  476. package/lib/typescript/components/ScreenFooter.d.ts +12 -0
  477. package/lib/typescript/components/ScreenFooter.d.ts.map +1 -0
  478. package/lib/typescript/components/ScreenFooter.web.d.ts +6 -0
  479. package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -0
  480. package/lib/typescript/components/ScreenStack.d.ts +5 -0
  481. package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
  482. package/lib/typescript/components/ScreenStack.web.d.ts +4 -0
  483. package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
  484. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
  485. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
  486. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
  487. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
  488. package/lib/typescript/components/ScreenStackItem.d.ts +11 -0
  489. package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
  490. package/lib/typescript/components/SearchBar.d.ts +5 -0
  491. package/lib/typescript/components/SearchBar.d.ts.map +1 -0
  492. package/lib/typescript/components/SearchBar.web.d.ts +4 -0
  493. package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
  494. package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
  495. package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
  496. package/lib/typescript/components/helpers/usePrevious.d.ts +2 -0
  497. package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -0
  498. package/lib/typescript/contexts.d.ts +5 -0
  499. package/lib/typescript/contexts.d.ts.map +1 -0
  500. package/lib/typescript/core.d.ts +6 -0
  501. package/lib/typescript/core.d.ts.map +1 -0
  502. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -1
  503. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
  504. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +76 -0
  505. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
  506. package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
  507. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
  508. package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
  509. package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
  510. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
  511. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
  512. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts +6 -0
  513. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts.map +1 -0
  514. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts +7 -0
  515. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts.map +1 -0
  516. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +34 -24
  517. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
  518. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -1
  519. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
  520. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +12 -2
  521. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
  522. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
  523. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
  524. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +4 -2
  525. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
  526. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +17 -16
  527. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
  528. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
  529. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
  530. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
  531. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
  532. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
  533. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
  534. package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
  535. package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
  536. package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
  537. package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
  538. package/lib/typescript/gesture-handler/fabricUtils.d.ts +10 -0
  539. package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
  540. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
  541. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
  542. package/lib/typescript/gesture-handler/index.d.ts +2 -0
  543. package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
  544. package/lib/typescript/index.d.ts +25 -31
  545. package/lib/typescript/index.d.ts.map +1 -0
  546. package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
  547. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
  548. package/lib/typescript/native-stack/index.d.ts +1 -0
  549. package/lib/typescript/native-stack/index.d.ts.map +1 -0
  550. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +4 -0
  551. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  552. package/lib/typescript/native-stack/types.d.ts +191 -33
  553. package/lib/typescript/native-stack/types.d.ts.map +1 -0
  554. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
  555. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
  556. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
  557. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
  558. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +2 -1
  559. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
  560. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +3 -2
  561. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
  562. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +3 -0
  563. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
  564. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +2 -1
  565. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  566. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
  567. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
  568. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  569. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
  570. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  571. package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
  572. package/lib/typescript/native-stack/views/FooterComponent.d.ts +7 -0
  573. package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +1 -0
  574. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +4 -3
  575. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
  576. package/lib/typescript/native-stack/views/NativeStackView.d.ts +2 -1
  577. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
  578. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
  579. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
  580. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +3 -3
  581. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
  582. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +3 -3
  583. package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
  584. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
  585. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
  586. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +2 -1
  587. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
  588. package/lib/typescript/reanimated/index.d.ts +1 -0
  589. package/lib/typescript/reanimated/index.d.ts.map +1 -0
  590. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
  591. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
  592. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
  593. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
  594. package/lib/typescript/types.d.ts +187 -37
  595. package/lib/typescript/types.d.ts.map +1 -0
  596. package/lib/typescript/useTransitionProgress.d.ts +4 -3
  597. package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
  598. package/lib/typescript/utils.d.ts +27 -1
  599. package/lib/typescript/utils.d.ts.map +1 -0
  600. package/native-stack/README.md +156 -108
  601. package/native-stack/package.json +4 -4
  602. package/oss-attribution/attribution.txt +77 -0
  603. package/oss-attribution/licenseInfos.json +27 -0
  604. package/package.json +196 -1
  605. package/react-native.config.js +19 -16
  606. package/reanimated/package.json +1 -1
  607. package/src/TransitionProgressContext.tsx +3 -1
  608. package/src/components/DebugContainer.tsx +46 -0
  609. package/src/components/DebugContainer.web.tsx +7 -0
  610. package/src/components/FullWindowOverlay.tsx +33 -0
  611. package/src/components/FullWindowOverlay.web.tsx +6 -0
  612. package/src/components/Screen.tsx +392 -0
  613. package/src/components/Screen.web.tsx +47 -0
  614. package/src/components/ScreenContainer.tsx +28 -0
  615. package/src/components/ScreenContainer.web.tsx +5 -0
  616. package/src/components/ScreenContentWrapper.tsx +9 -0
  617. package/src/components/ScreenContentWrapper.web.tsx +5 -0
  618. package/src/components/ScreenFooter.tsx +20 -0
  619. package/src/components/ScreenFooter.web.tsx +7 -0
  620. package/src/components/ScreenStack.tsx +112 -0
  621. package/src/components/ScreenStack.web.tsx +5 -0
  622. package/src/components/ScreenStackHeaderConfig.tsx +127 -0
  623. package/src/components/ScreenStackHeaderConfig.web.tsx +45 -0
  624. package/src/components/ScreenStackItem.tsx +174 -0
  625. package/src/components/SearchBar.tsx +105 -0
  626. package/src/components/SearchBar.web.tsx +5 -0
  627. package/src/components/helpers/DelayedFreeze.tsx +27 -0
  628. package/src/components/helpers/usePrevious.tsx +12 -0
  629. package/src/contexts.tsx +9 -0
  630. package/src/core.ts +45 -0
  631. package/src/fabric/FullWindowOverlayNativeComponent.ts +16 -0
  632. package/src/fabric/ModalScreenNativeComponent.ts +115 -0
  633. package/src/fabric/NativeScreensModule.ts +8 -0
  634. package/src/fabric/NativeScreensModule.web.ts +1 -0
  635. package/src/fabric/ScreenContainerNativeComponent.ts +3 -3
  636. package/src/fabric/ScreenContentWrapperNativeComponent.ts +14 -0
  637. package/src/fabric/ScreenFooterNativeComponent.ts +6 -0
  638. package/src/fabric/ScreenNativeComponent.ts +34 -23
  639. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +3 -1
  640. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +38 -2
  641. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +5 -1
  642. package/src/fabric/ScreenStackNativeComponent.ts +3 -2
  643. package/src/fabric/SearchBarNativeComponent.ts +17 -13
  644. package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
  645. package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
  646. package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
  647. package/src/gesture-handler/constraints.ts +87 -0
  648. package/src/gesture-handler/defaults.ts +46 -0
  649. package/src/gesture-handler/fabricUtils.ts +86 -0
  650. package/src/gesture-handler/fabricUtils.web.ts +10 -0
  651. package/src/gesture-handler/index.tsx +4 -0
  652. package/src/index.tsx +49 -113
  653. package/src/native-stack/contexts/GHContext.tsx +9 -0
  654. package/src/native-stack/navigators/createNativeStackNavigator.tsx +6 -3
  655. package/src/native-stack/types.tsx +204 -31
  656. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +2 -2
  657. package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
  658. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
  659. package/src/native-stack/utils/useBackPressSubscription.tsx +3 -2
  660. package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
  661. package/src/native-stack/views/FontProcessor.tsx +2 -2
  662. package/src/native-stack/views/FooterComponent.tsx +10 -0
  663. package/src/native-stack/views/HeaderConfig.tsx +22 -6
  664. package/src/native-stack/views/NativeStackView.tsx +141 -54
  665. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
  666. package/src/reanimated/ReanimatedNativeStackScreen.tsx +15 -13
  667. package/src/reanimated/ReanimatedScreen.tsx +4 -3
  668. package/src/reanimated/ReanimatedScreenProvider.tsx +3 -2
  669. package/src/reanimated/useReanimatedHeaderHeight.tsx +2 -2
  670. package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
  671. package/src/types.tsx +213 -41
  672. package/src/useTransitionProgress.tsx +1 -1
  673. package/src/utils.ts +27 -5
  674. package/windows/README.md +4 -1
  675. package/windows/RNScreens/Screen.h +3 -1
  676. package/SystemBundles/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.bundle +0 -33190
  677. package/SystemBundles/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.map +0 -10181
  678. package/SystemModules/amzn__react-native-screens.modules.txt +0 -101
  679. package/SystemModules/amzn__react-native-screens.private.modules.txt +0 -243
  680. package/lib/commonjs/index.native.js +0 -409
  681. package/lib/commonjs/index.native.js.map +0 -1
  682. package/lib/module/index.native.js +0 -412
  683. package/lib/module/index.native.js.map +0 -1
  684. package/lib/typescript/index.native.d.ts +0 -2
  685. package/src/index.native.tsx +0 -601
@@ -0,0 +1,26 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.content.Context
4
+ import com.google.android.material.bottomsheet.BottomSheetDialog
5
+ import com.swmansion.rnscreens.ScreenModalFragment
6
+ import java.lang.ref.WeakReference
7
+
8
+ class BottomSheetDialogScreen(
9
+ context: Context,
10
+ fragment: ScreenModalFragment,
11
+ ) : BottomSheetDialog(context) {
12
+ private val fragmentRef: WeakReference<ScreenModalFragment> = WeakReference(fragment)
13
+
14
+ // There are various code paths leading to this method, however the one I'm concerned with
15
+ // is dismissal via swipe-down. If the sheet is dismissed we don't want the native dismiss logic
16
+ // to run, as this will lead to inconsistencies in ScreenStack state. Instead we intercept
17
+ // dismiss intention and run our logic.
18
+ override fun cancel() {
19
+ fragmentRef.get()!!.dismissFromContainer()
20
+ this.show()
21
+ }
22
+
23
+ companion object {
24
+ val TAG = BottomSheetDialogScreen::class.simpleName
25
+ }
26
+ }
@@ -0,0 +1,493 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.animation.ValueAnimator
4
+ import android.app.Activity
5
+ import android.graphics.Color
6
+ import android.os.Bundle
7
+ import android.view.LayoutInflater
8
+ import android.view.View
9
+ import android.view.ViewGroup
10
+ import android.view.animation.Animation
11
+ import android.view.animation.AnimationUtils
12
+ import androidx.appcompat.widget.Toolbar
13
+ import androidx.core.graphics.Insets
14
+ import androidx.core.view.OnApplyWindowInsetsListener
15
+ import androidx.core.view.WindowInsetsCompat
16
+ import androidx.fragment.app.Fragment
17
+ import androidx.fragment.app.commit
18
+ import androidx.lifecycle.Lifecycle
19
+ import androidx.lifecycle.LifecycleEventObserver
20
+ import androidx.lifecycle.LifecycleOwner
21
+ import com.facebook.react.bridge.ReactContext
22
+ import com.facebook.react.uimanager.UIManagerHelper
23
+ import com.google.android.material.bottomsheet.BottomSheetBehavior
24
+ import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
25
+ import com.swmansion.rnscreens.InsetsObserverProxy
26
+ import com.swmansion.rnscreens.KeyboardDidHide
27
+ import com.swmansion.rnscreens.KeyboardNotVisible
28
+ import com.swmansion.rnscreens.KeyboardState
29
+ import com.swmansion.rnscreens.KeyboardVisible
30
+ import com.swmansion.rnscreens.NativeDismissalObserver
31
+ import com.swmansion.rnscreens.R
32
+ import com.swmansion.rnscreens.Screen
33
+ import com.swmansion.rnscreens.ScreenContainer
34
+ import com.swmansion.rnscreens.ScreenFragment
35
+ import com.swmansion.rnscreens.ScreenFragmentWrapper
36
+ import com.swmansion.rnscreens.ScreenStack
37
+ import com.swmansion.rnscreens.ScreenStackFragment
38
+ import com.swmansion.rnscreens.ScreenStackFragmentWrapper
39
+ import com.swmansion.rnscreens.events.ScreenDismissedEvent
40
+
41
+ /**
42
+ * This fragment aims to provide dimming view functionality behind the nested fragment.
43
+ * Useful when nested fragment is transparent / uses some kind of non-fullscreen presentation,
44
+ * such as `formSheet`.
45
+ */
46
+ class DimmingFragment(
47
+ val nestedFragment: ScreenFragmentWrapper,
48
+ ) : Fragment(),
49
+ LifecycleEventObserver,
50
+ ScreenStackFragmentWrapper,
51
+ Animation.AnimationListener,
52
+ OnApplyWindowInsetsListener,
53
+ NativeDismissalObserver {
54
+ private lateinit var dimmingView: DimmingView
55
+ private lateinit var containerView: GestureTransparentViewGroup
56
+
57
+ private val maxAlpha: Float = 0.15F
58
+
59
+ private var isKeyboardVisible: Boolean = false
60
+ private var keyboardState: KeyboardState = KeyboardNotVisible
61
+
62
+ private var dimmingViewCallback: BottomSheetCallback? = null
63
+
64
+ private val container: ScreenStack?
65
+ get() = screen.container as? ScreenStack
66
+
67
+ private val insetsProxy = InsetsObserverProxy
68
+
69
+ init {
70
+ assert(
71
+ nestedFragment.fragment is ScreenStackFragment,
72
+ ) { "[RNScreens] Dimming fragment is intended for use only with ScreenStackFragment" }
73
+ val fragment = nestedFragment.fragment as ScreenStackFragment
74
+
75
+ // We register for our child lifecycle as we want to know when it starts, because bottom sheet
76
+ // behavior is attached only then & we want to attach our own callbacks to it.
77
+ fragment.lifecycle.addObserver(this)
78
+ fragment.nativeDismissalObserver = this
79
+ }
80
+
81
+ /**
82
+ * This bottom sheet callback is responsible for animating alpha of the dimming view.
83
+ */
84
+ private class AnimateDimmingViewCallback(
85
+ val screen: Screen,
86
+ val viewToAnimate: View,
87
+ val maxAlpha: Float,
88
+ ) : BottomSheetCallback() {
89
+ // largest *slide offset* that is yet undimmed
90
+ private var largestUndimmedOffset: Float =
91
+ computeOffsetFromDetentIndex(screen.sheetLargestUndimmedDetentIndex)
92
+
93
+ // first *slide offset* that should be fully dimmed
94
+ private var firstDimmedOffset: Float =
95
+ computeOffsetFromDetentIndex(
96
+ (screen.sheetLargestUndimmedDetentIndex + 1).coerceIn(
97
+ 0,
98
+ screen.sheetDetents.count() - 1,
99
+ ),
100
+ )
101
+
102
+ // interval that we interpolate the alpha value over
103
+ private var intervalLength = firstDimmedOffset - largestUndimmedOffset
104
+ private val animator =
105
+ ValueAnimator.ofFloat(0F, maxAlpha).apply {
106
+ duration = 1 // Driven manually
107
+ addUpdateListener {
108
+ viewToAnimate.alpha = it.animatedValue as Float
109
+ }
110
+ }
111
+
112
+ override fun onStateChanged(
113
+ bottomSheet: View,
114
+ newState: Int,
115
+ ) {
116
+ if (newState == BottomSheetBehavior.STATE_DRAGGING || newState == BottomSheetBehavior.STATE_SETTLING) {
117
+ largestUndimmedOffset =
118
+ computeOffsetFromDetentIndex(screen.sheetLargestUndimmedDetentIndex)
119
+ firstDimmedOffset =
120
+ computeOffsetFromDetentIndex(
121
+ (screen.sheetLargestUndimmedDetentIndex + 1).coerceIn(
122
+ 0,
123
+ screen.sheetDetents.count() - 1,
124
+ ),
125
+ )
126
+ assert(firstDimmedOffset >= largestUndimmedOffset) {
127
+ "[RNScreens] Invariant violation: firstDimmedOffset ($firstDimmedOffset) < largestDimmedOffset ($largestUndimmedOffset)"
128
+ }
129
+ intervalLength = firstDimmedOffset - largestUndimmedOffset
130
+ }
131
+ }
132
+
133
+ override fun onSlide(
134
+ bottomSheet: View,
135
+ slideOffset: Float,
136
+ ) {
137
+ if (largestUndimmedOffset < slideOffset && slideOffset < firstDimmedOffset) {
138
+ val fraction = (slideOffset - largestUndimmedOffset) / intervalLength
139
+ animator.setCurrentFraction(fraction)
140
+ }
141
+ }
142
+
143
+ /**
144
+ * This method does compute slide offset (see [BottomSheetCallback.onSlide] docs) for detent
145
+ * at given index in the detents array.
146
+ */
147
+ private fun computeOffsetFromDetentIndex(index: Int): Float =
148
+ when (screen.sheetDetents.size) {
149
+ 1 -> // Only 1 detent present in detents array
150
+ when (index) {
151
+ -1 -> -1F // hidden
152
+ 0 -> 1F // fully expanded
153
+ else -> -1F // unexpected, default
154
+ }
155
+
156
+ 2 ->
157
+ when (index) {
158
+ -1 -> -1F // hidden
159
+ 0 -> 0F // collapsed
160
+ 1 -> 1F // expanded
161
+ else -> -1F
162
+ }
163
+
164
+ 3 ->
165
+ when (index) {
166
+ -1 -> -1F // hidden
167
+ 0 -> 0F // collapsed
168
+ 1 -> screen.sheetBehavior!!.halfExpandedRatio // half
169
+ 2 -> 1F // expanded
170
+ else -> -1F
171
+ }
172
+
173
+ else -> -1F
174
+ }
175
+ }
176
+
177
+ override fun onCreateAnimation(
178
+ transit: Int,
179
+ enter: Boolean,
180
+ nextAnim: Int,
181
+ ): Animation? =
182
+ // We want dimming view to have always fade animation in current usages.
183
+ AnimationUtils.loadAnimation(
184
+ context,
185
+ if (enter) R.anim.rns_fade_in else R.anim.rns_fade_out,
186
+ )
187
+
188
+ override fun onCreateView(
189
+ inflater: LayoutInflater,
190
+ container: ViewGroup?,
191
+ savedInstanceState: Bundle?,
192
+ ): View {
193
+ initViewHierarchy()
194
+ return containerView
195
+ }
196
+
197
+ override fun onViewCreated(
198
+ view: View,
199
+ savedInstanceState: Bundle?,
200
+ ) {
201
+ if (screen.sheetInitialDetentIndex <= screen.sheetLargestUndimmedDetentIndex) {
202
+ dimmingView.alpha = 0.0F
203
+ } else {
204
+ dimmingView.alpha = maxAlpha
205
+ }
206
+ }
207
+
208
+ override fun onStart() {
209
+ // This is the earliest we can access child fragment manager & present another fragment
210
+ super.onStart()
211
+ insetsProxy.registerOnView(requireDecorView())
212
+ presentNestedFragment()
213
+ }
214
+
215
+ override fun onResume() {
216
+ insetsProxy.addOnApplyWindowInsetsListener(this)
217
+ super.onResume()
218
+ }
219
+
220
+ override fun onPause() {
221
+ super.onPause()
222
+ insetsProxy.removeOnApplyWindowInsetsListener(this)
223
+ }
224
+
225
+ override fun onStateChanged(
226
+ source: LifecycleOwner,
227
+ event: Lifecycle.Event,
228
+ ) {
229
+ when (event) {
230
+ Lifecycle.Event.ON_START -> {
231
+ nestedFragment.screen.sheetBehavior?.let {
232
+ dimmingViewCallback =
233
+ AnimateDimmingViewCallback(nestedFragment.screen, dimmingView, maxAlpha)
234
+ it.addBottomSheetCallback(dimmingViewCallback!!)
235
+ }
236
+ }
237
+
238
+ else -> {}
239
+ }
240
+ }
241
+
242
+ private fun presentNestedFragment() {
243
+ childFragmentManager.commit(allowStateLoss = true) {
244
+ setReorderingAllowed(true)
245
+ add(requireView().id, nestedFragment.fragment, null)
246
+ }
247
+ }
248
+
249
+ private fun cleanRegisteredCallbacks() {
250
+ dimmingViewCallback?.let {
251
+ nestedFragment.screen.sheetBehavior?.removeBottomSheetCallback(it)
252
+ }
253
+ dimmingView.setOnClickListener(null)
254
+ nestedFragment.fragment.lifecycle.removeObserver(this)
255
+ insetsProxy.removeOnApplyWindowInsetsListener(this)
256
+ }
257
+
258
+ private fun dismissSelf(emitDismissedEvent: Boolean = false) {
259
+ if (!this.isRemoving) {
260
+ if (emitDismissedEvent) {
261
+ val reactContext = nestedFragment.screen.reactContext
262
+ val surfaceId = UIManagerHelper.getSurfaceId(reactContext)
263
+ UIManagerHelper
264
+ .getEventDispatcherForReactTag(reactContext, screen.id)
265
+ ?.dispatchEvent(ScreenDismissedEvent(surfaceId, screen.id))
266
+ }
267
+ cleanRegisteredCallbacks()
268
+ dismissFromContainer()
269
+ }
270
+ }
271
+
272
+ private fun initViewHierarchy() {
273
+ initContainerView()
274
+ initDimmingView()
275
+ containerView.addView(dimmingView)
276
+ }
277
+
278
+ private fun initContainerView() {
279
+ containerView =
280
+ GestureTransparentViewGroup(requireContext()).apply {
281
+ // These do not guarantee fullscreen width & height, TODO: find a way to guarantee that
282
+ layoutParams =
283
+ ViewGroup.LayoutParams(
284
+ ViewGroup.LayoutParams.MATCH_PARENT,
285
+ ViewGroup.LayoutParams.MATCH_PARENT,
286
+ )
287
+ setBackgroundColor(Color.TRANSPARENT)
288
+ // This is purely native view, React does not know of it, thus there should be no conflict with ids.
289
+ id = View.generateViewId()
290
+ }
291
+ }
292
+
293
+ private fun initDimmingView() {
294
+ dimmingView =
295
+ DimmingView(requireContext(), maxAlpha).apply {
296
+ // These do not guarantee fullscreen width & height, TODO: find a way to guarantee that
297
+ layoutParams =
298
+ ViewGroup.LayoutParams(
299
+ ViewGroup.LayoutParams.MATCH_PARENT,
300
+ ViewGroup.LayoutParams.MATCH_PARENT,
301
+ )
302
+ setOnClickListener {
303
+ if (screen.sheetClosesOnTouchOutside) {
304
+ dismissSelf(true)
305
+ }
306
+ }
307
+ }
308
+ }
309
+
310
+ private fun requireDecorView(): View =
311
+ checkNotNull(screen.reactContext.currentActivity) { "[RNScreens] Attempt to access activity on detached context" }
312
+ .window.decorView
313
+
314
+ // TODO: Move these methods related to toolbar to separate interface
315
+ override fun removeToolbar() = Unit
316
+
317
+ override fun setToolbar(toolbar: Toolbar) = Unit
318
+
319
+ override fun setToolbarShadowHidden(hidden: Boolean) = Unit
320
+
321
+ override fun setToolbarTranslucent(translucent: Boolean) = Unit
322
+
323
+ // Dimming view should never be bottom-most fragment
324
+ override fun canNavigateBack(): Boolean = true
325
+
326
+ override fun dismissFromContainer() {
327
+ container?.dismiss(this)
328
+ }
329
+
330
+ override var screen: Screen
331
+ get() = nestedFragment.screen
332
+ set(value) {
333
+ nestedFragment.screen = value
334
+ }
335
+
336
+ override val childScreenContainers: List<ScreenContainer> = nestedFragment.childScreenContainers
337
+
338
+ override fun addChildScreenContainer(container: ScreenContainer) {
339
+ nestedFragment.addChildScreenContainer(container)
340
+ }
341
+
342
+ override fun removeChildScreenContainer(container: ScreenContainer) {
343
+ nestedFragment.removeChildScreenContainer(container)
344
+ }
345
+
346
+ override fun onContainerUpdate() {
347
+ nestedFragment.onContainerUpdate()
348
+ }
349
+
350
+ override fun onViewAnimationStart() {
351
+ nestedFragment.onViewAnimationStart()
352
+ }
353
+
354
+ override fun onViewAnimationEnd() {
355
+ nestedFragment.onViewAnimationEnd()
356
+ }
357
+
358
+ override fun tryGetActivity(): Activity? = activity
359
+
360
+ override fun tryGetContext(): ReactContext? = context as? ReactContext?
361
+
362
+ override val fragment: Fragment
363
+ get() = this
364
+
365
+ override fun canDispatchLifecycleEvent(event: ScreenFragment.ScreenLifecycleEvent): Boolean {
366
+ TODO("Not yet implemented")
367
+ }
368
+
369
+ override fun updateLastEventDispatched(event: ScreenFragment.ScreenLifecycleEvent) {
370
+ TODO("Not yet implemented")
371
+ }
372
+
373
+ override fun dispatchLifecycleEvent(
374
+ event: ScreenFragment.ScreenLifecycleEvent,
375
+ fragmentWrapper: ScreenFragmentWrapper,
376
+ ) {
377
+ TODO("Not yet implemented")
378
+ }
379
+
380
+ override fun dispatchLifecycleEventInChildContainers(event: ScreenFragment.ScreenLifecycleEvent) {
381
+ TODO("Not yet implemented")
382
+ }
383
+
384
+ override fun dispatchHeaderBackButtonClickedEvent() {
385
+ TODO("Not yet implemented")
386
+ }
387
+
388
+ override fun dispatchTransitionProgressEvent(
389
+ alpha: Float,
390
+ closing: Boolean,
391
+ ) {
392
+ TODO("Not yet implemented")
393
+ }
394
+
395
+ override fun onAnimationStart(animation: Animation?) = Unit
396
+
397
+ override fun onAnimationEnd(animation: Animation?) {
398
+ dismissFromContainer()
399
+ }
400
+
401
+ override fun onAnimationRepeat(animation: Animation?) = Unit
402
+
403
+ companion object {
404
+ const val TAG = "DimmingFragment"
405
+ }
406
+
407
+ // This is View.OnApplyWindowInsetsListener method, not view's own!
408
+ override fun onApplyWindowInsets(
409
+ v: View,
410
+ insets: WindowInsetsCompat,
411
+ ): WindowInsetsCompat {
412
+ val isImeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
413
+ val imeInset = insets.getInsets(WindowInsetsCompat.Type.ime())
414
+
415
+ if (isImeVisible) {
416
+ isKeyboardVisible = true
417
+ keyboardState = KeyboardVisible(imeInset.bottom)
418
+ screen.sheetBehavior?.let {
419
+ (nestedFragment as ScreenStackFragment).configureBottomSheetBehaviour(
420
+ it,
421
+ KeyboardVisible(imeInset.bottom),
422
+ )
423
+ }
424
+
425
+ if (this.isRemoving) {
426
+ return insets
427
+ }
428
+
429
+ val prevInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
430
+ return WindowInsetsCompat
431
+ .Builder(insets)
432
+ .setInsets(
433
+ WindowInsetsCompat.Type.navigationBars(),
434
+ Insets.of(
435
+ prevInsets.left,
436
+ prevInsets.top,
437
+ prevInsets.right,
438
+ 0,
439
+ ),
440
+ ).build()
441
+ } else {
442
+ if (this.isRemoving) {
443
+ val prevInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
444
+ return WindowInsetsCompat
445
+ .Builder(insets)
446
+ .setInsets(
447
+ WindowInsetsCompat.Type.navigationBars(),
448
+ Insets.of(
449
+ prevInsets.left,
450
+ prevInsets.top,
451
+ prevInsets.right,
452
+ 0,
453
+ ),
454
+ ).build()
455
+ }
456
+
457
+ screen.sheetBehavior?.let {
458
+ if (isKeyboardVisible) {
459
+ (nestedFragment as ScreenStackFragment).configureBottomSheetBehaviour(
460
+ it,
461
+ KeyboardDidHide,
462
+ )
463
+ } else if (keyboardState != KeyboardNotVisible) {
464
+ (nestedFragment as ScreenStackFragment).configureBottomSheetBehaviour(
465
+ it,
466
+ KeyboardNotVisible,
467
+ )
468
+ } else {
469
+ }
470
+ }
471
+
472
+ keyboardState = KeyboardNotVisible
473
+ isKeyboardVisible = false
474
+
475
+ val prevInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
476
+ return WindowInsetsCompat
477
+ .Builder(insets)
478
+ .setInsets(
479
+ WindowInsetsCompat.Type.navigationBars(),
480
+ Insets.of(
481
+ prevInsets.left,
482
+ prevInsets.top,
483
+ prevInsets.right,
484
+ 0,
485
+ ),
486
+ ).build()
487
+ }
488
+ }
489
+
490
+ override fun onNativeDismiss(dismissed: ScreenStackFragmentWrapper) {
491
+ dismissSelf(emitDismissedEvent = true)
492
+ }
493
+ }
@@ -0,0 +1,66 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.content.Context
5
+ import android.graphics.Color
6
+ import android.view.MotionEvent
7
+ import android.view.ViewGroup
8
+ import com.facebook.react.uimanager.PointerEvents
9
+ import com.facebook.react.uimanager.ReactCompoundViewGroup
10
+ import com.facebook.react.uimanager.ReactPointerEventsView
11
+ import com.swmansion.rnscreens.ext.equalWithRespectToEps
12
+
13
+ /**
14
+ * Serves as dimming view that can be used as background for some view that not fully fills
15
+ * the viewport.
16
+ *
17
+ * This dimming view has one more additional feature: it blocks gestures if its alpha > 0.
18
+ */
19
+ @SuppressLint("ViewConstructor") // Only we instantiate this view
20
+ class DimmingView(
21
+ context: Context,
22
+ initialAlpha: Float = 0.6F,
23
+ ) : ViewGroup(context),
24
+ ReactCompoundViewGroup,
25
+ ReactPointerEventsView {
26
+ private val blockGestures
27
+ get() = !alpha.equalWithRespectToEps(0F)
28
+
29
+ init {
30
+ setBackgroundColor(Color.BLACK)
31
+ alpha = initialAlpha
32
+ }
33
+
34
+ // This view group is not supposed to have any children, however we need it to be a view group
35
+ override fun onLayout(
36
+ changed: Boolean,
37
+ l: Int,
38
+ t: Int,
39
+ r: Int,
40
+ b: Int,
41
+ ) = Unit
42
+
43
+ override fun onTouchEvent(event: MotionEvent?): Boolean {
44
+ if (blockGestures) {
45
+ callOnClick()
46
+ }
47
+ return blockGestures
48
+ }
49
+
50
+ override fun reactTagForTouch(
51
+ x: Float,
52
+ y: Float,
53
+ ): Int = throw IllegalStateException("[RNScreens] $TAG should never be asked for the view tag!")
54
+
55
+ override fun interceptsTouchEvent(
56
+ x: Float,
57
+ y: Float,
58
+ ) = blockGestures
59
+
60
+ override fun getPointerEvents(): PointerEvents =
61
+ if (blockGestures) PointerEvents.AUTO else PointerEvents.NONE
62
+
63
+ companion object {
64
+ const val TAG = "DimmingView"
65
+ }
66
+ }
@@ -0,0 +1,24 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.content.Context
4
+ import android.widget.FrameLayout
5
+ import com.facebook.react.uimanager.PointerEvents
6
+ import com.facebook.react.uimanager.ReactPointerEventsView
7
+
8
+ /**
9
+ * View group that will be ignored by RN event system, and won't be target of touches.
10
+ *
11
+ * Currently used as container for the form sheet, so that user can interact with the view
12
+ * under the sheet (otherwise RN captures the gestures).
13
+ */
14
+ class GestureTransparentViewGroup(
15
+ context: Context,
16
+ ) : FrameLayout(context),
17
+ ReactPointerEventsView {
18
+
19
+ override fun getPointerEvents(): PointerEvents = PointerEvents.BOX_NONE
20
+
21
+ companion object {
22
+ const val TAG = "GestureTransparentFrameLayout"
23
+ }
24
+ }