@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
@@ -1,12 +1,15 @@
1
1
  package com.swmansion.rnscreens
2
2
 
3
+ import android.util.Log
3
4
  import com.facebook.react.bridge.JSApplicationIllegalArgumentException
4
- import com.facebook.react.bridge.ReadableArray
5
5
  import com.facebook.react.common.MapBuilder
6
6
  import com.facebook.react.module.annotations.ReactModule
7
7
  import com.facebook.react.uimanager.ThemedReactContext
8
8
  import com.facebook.react.uimanager.ViewGroupManager
9
+ import com.facebook.react.uimanager.ViewManagerDelegate
9
10
  import com.facebook.react.uimanager.annotations.ReactProp
11
+ import com.facebook.react.viewmanagers.RNSSearchBarManagerDelegate
12
+ import com.facebook.react.viewmanagers.RNSSearchBarManagerInterface
10
13
  import com.swmansion.rnscreens.events.SearchBarBlurEvent
11
14
  import com.swmansion.rnscreens.events.SearchBarChangeTextEvent
12
15
  import com.swmansion.rnscreens.events.SearchBarCloseEvent
@@ -15,119 +18,223 @@ import com.swmansion.rnscreens.events.SearchBarOpenEvent
15
18
  import com.swmansion.rnscreens.events.SearchBarSearchButtonPressEvent
16
19
 
17
20
  @ReactModule(name = SearchBarManager.REACT_CLASS)
18
- class SearchBarManager : ViewGroupManager<SearchBarView>() {
19
- override fun getName(): String {
20
- return REACT_CLASS
21
- }
21
+ class SearchBarManager :
22
+ ViewGroupManager<SearchBarView>(),
23
+ RNSSearchBarManagerInterface<SearchBarView> {
24
+ private val delegate: ViewManagerDelegate<SearchBarView>
22
25
 
23
- override fun createViewInstance(context: ThemedReactContext): SearchBarView {
24
- return SearchBarView(context)
26
+ init {
27
+ delegate = RNSSearchBarManagerDelegate<SearchBarView, SearchBarManager>(this)
25
28
  }
26
29
 
30
+ protected override fun getDelegate(): ViewManagerDelegate<SearchBarView> = delegate
31
+
32
+ override fun getName(): String = REACT_CLASS
33
+
34
+ override fun createViewInstance(context: ThemedReactContext): SearchBarView = SearchBarView(context)
35
+
27
36
  override fun onAfterUpdateTransaction(view: SearchBarView) {
28
37
  super.onAfterUpdateTransaction(view)
29
38
  view.onUpdate()
30
39
  }
31
40
 
32
41
  @ReactProp(name = "autoCapitalize")
33
- fun setAutoCapitalize(view: SearchBarView, autoCapitalize: String?) {
34
- view.autoCapitalize = when (autoCapitalize) {
35
- null, "none" -> SearchBarView.SearchBarAutoCapitalize.NONE
36
- "words" -> SearchBarView.SearchBarAutoCapitalize.WORDS
37
- "sentences" -> SearchBarView.SearchBarAutoCapitalize.SENTENCES
38
- "characters" -> SearchBarView.SearchBarAutoCapitalize.CHARACTERS
39
- else -> throw JSApplicationIllegalArgumentException(
40
- "Forbidden auto capitalize value passed"
41
- )
42
- }
42
+ override fun setAutoCapitalize(
43
+ view: SearchBarView,
44
+ autoCapitalize: String?,
45
+ ) {
46
+ view.autoCapitalize =
47
+ when (autoCapitalize) {
48
+ null, "none" -> SearchBarView.SearchBarAutoCapitalize.NONE
49
+ "words" -> SearchBarView.SearchBarAutoCapitalize.WORDS
50
+ "sentences" -> SearchBarView.SearchBarAutoCapitalize.SENTENCES
51
+ "characters" -> SearchBarView.SearchBarAutoCapitalize.CHARACTERS
52
+ else -> throw JSApplicationIllegalArgumentException(
53
+ "Forbidden auto capitalize value passed",
54
+ )
55
+ }
43
56
  }
44
57
 
45
58
  @ReactProp(name = "autoFocus")
46
- fun setAutoFocus(view: SearchBarView, autoFocus: Boolean?) {
59
+ fun setAutoFocus(
60
+ view: SearchBarView,
61
+ autoFocus: Boolean?,
62
+ ) {
47
63
  view.autoFocus = autoFocus ?: false
48
64
  }
49
65
 
50
66
  @ReactProp(name = "barTintColor", customType = "Color")
51
- fun setTintColor(view: SearchBarView, color: Int?) {
67
+ override fun setBarTintColor(
68
+ view: SearchBarView,
69
+ color: Int?,
70
+ ) {
52
71
  view.tintColor = color
53
72
  }
54
73
 
55
74
  @ReactProp(name = "disableBackButtonOverride")
56
- fun setDisableBackButtonOverride(view: SearchBarView, disableBackButtonOverride: Boolean?) {
75
+ override fun setDisableBackButtonOverride(
76
+ view: SearchBarView,
77
+ disableBackButtonOverride: Boolean,
78
+ ) {
57
79
  view.shouldOverrideBackButton = disableBackButtonOverride != true
58
80
  }
59
81
 
60
82
  @ReactProp(name = "inputType")
61
- fun setInputType(view: SearchBarView, inputType: String?) {
62
- view.inputType = when (inputType) {
63
- null, "text" -> SearchBarView.SearchBarInputTypes.TEXT
64
- "phone" -> SearchBarView.SearchBarInputTypes.PHONE
65
- "number" -> SearchBarView.SearchBarInputTypes.NUMBER
66
- "email" -> SearchBarView.SearchBarInputTypes.EMAIL
67
- else -> throw JSApplicationIllegalArgumentException(
68
- "Forbidden input type value"
69
- )
70
- }
83
+ override fun setInputType(
84
+ view: SearchBarView,
85
+ inputType: String?,
86
+ ) {
87
+ view.inputType =
88
+ when (inputType) {
89
+ null, "text" -> SearchBarView.SearchBarInputTypes.TEXT
90
+ "phone" -> SearchBarView.SearchBarInputTypes.PHONE
91
+ "number" -> SearchBarView.SearchBarInputTypes.NUMBER
92
+ "email" -> SearchBarView.SearchBarInputTypes.EMAIL
93
+ else -> throw JSApplicationIllegalArgumentException(
94
+ "Forbidden input type value",
95
+ )
96
+ }
71
97
  }
72
98
 
73
99
  @ReactProp(name = "placeholder")
74
- fun setPlaceholder(view: SearchBarView, placeholder: String?) {
100
+ override fun setPlaceholder(
101
+ view: SearchBarView,
102
+ placeholder: String?,
103
+ ) {
75
104
  if (placeholder != null) {
76
105
  view.placeholder = placeholder
77
106
  }
78
107
  }
79
108
 
80
109
  @ReactProp(name = "textColor", customType = "Color")
81
- fun setTextColor(view: SearchBarView, color: Int?) {
110
+ override fun setTextColor(
111
+ view: SearchBarView,
112
+ color: Int?,
113
+ ) {
82
114
  view.textColor = color
83
115
  }
84
116
 
85
117
  @ReactProp(name = "headerIconColor", customType = "Color")
86
- fun setHeaderIconColor(view: SearchBarView, color: Int?) {
118
+ override fun setHeaderIconColor(
119
+ view: SearchBarView,
120
+ color: Int?,
121
+ ) {
87
122
  view.headerIconColor = color
88
123
  }
89
124
 
90
125
  @ReactProp(name = "hintTextColor", customType = "Color")
91
- fun setHintTextColor(view: SearchBarView, color: Int?) {
126
+ override fun setHintTextColor(
127
+ view: SearchBarView,
128
+ color: Int?,
129
+ ) {
92
130
  view.hintTextColor = color
93
131
  }
94
132
 
95
133
  @ReactProp(name = "shouldShowHintSearchIcon")
96
- fun setShouldShowHintSearchIcon(view: SearchBarView, shouldShowHintSearchIcon: Boolean?) {
134
+ override fun setShouldShowHintSearchIcon(
135
+ view: SearchBarView,
136
+ shouldShowHintSearchIcon: Boolean,
137
+ ) {
97
138
  view.shouldShowHintSearchIcon = shouldShowHintSearchIcon ?: true
98
139
  }
99
140
 
100
- fun setPlacement(view: SearchBarView, placeholder: String?) = Unit
101
-
102
- override fun receiveCommand(root: SearchBarView, commandId: String?, args: ReadableArray?) {
103
- when (commandId) {
104
- "focus" -> root.handleFocusJsRequest()
105
- "blur" -> root.handleBlurJsRequest()
106
- "clearText" -> root.handleClearTextJsRequest()
107
- "toggleCancelButton" -> root.handleToggleCancelButtonJsRequest(false) // just a dummy argument
108
- "setText" -> root.handleSetTextJsRequest(args?.getString(0))
109
- else -> throw JSApplicationIllegalArgumentException("Unsupported native command received: $commandId")
110
- }
111
- }
112
-
113
- override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
114
- return MapBuilder.of(
141
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? =
142
+ MapBuilder.of(
115
143
  SearchBarBlurEvent.EVENT_NAME,
116
- MapBuilder.of("registrationName", "onBlur"),
144
+ MapBuilder.of("registrationName", "onSearchBlur"),
117
145
  SearchBarChangeTextEvent.EVENT_NAME,
118
146
  MapBuilder.of("registrationName", "onChangeText"),
119
147
  SearchBarCloseEvent.EVENT_NAME,
120
148
  MapBuilder.of("registrationName", "onClose"),
121
149
  SearchBarFocusEvent.EVENT_NAME,
122
- MapBuilder.of("registrationName", "onFocus"),
150
+ MapBuilder.of("registrationName", "onSearchFocus"),
123
151
  SearchBarOpenEvent.EVENT_NAME,
124
152
  MapBuilder.of("registrationName", "onOpen"),
125
153
  SearchBarSearchButtonPressEvent.EVENT_NAME,
126
154
  MapBuilder.of("registrationName", "onSearchButtonPress"),
127
155
  )
128
- }
129
156
 
130
157
  companion object {
131
158
  const val REACT_CLASS = "RNSSearchBar"
132
159
  }
160
+
161
+ private fun logNotAvailable(propName: String) {
162
+ Log.w("[RNScreens]", "$propName prop is not available on Android")
163
+ }
164
+
165
+ // NativeCommands
166
+
167
+ override fun blur(view: SearchBarView?) {
168
+ view?.handleBlurJsRequest()
169
+ }
170
+
171
+ override fun focus(view: SearchBarView?) {
172
+ view?.handleFocusJsRequest()
173
+ }
174
+
175
+ override fun clearText(view: SearchBarView?) {
176
+ view?.handleClearTextJsRequest()
177
+ }
178
+
179
+ override fun toggleCancelButton(
180
+ view: SearchBarView?,
181
+ flag: Boolean,
182
+ ) {
183
+ view?.handleToggleCancelButtonJsRequest(flag)
184
+ }
185
+
186
+ override fun setText(
187
+ view: SearchBarView?,
188
+ text: String?,
189
+ ) {
190
+ view?.handleSetTextJsRequest(text)
191
+ }
192
+
193
+ override fun cancelSearch(view: SearchBarView?) {
194
+ view?.handleFocusJsRequest()
195
+ }
196
+
197
+ // iOS only
198
+
199
+ override fun setPlacement(
200
+ view: SearchBarView,
201
+ placeholder: String?,
202
+ ) {
203
+ logNotAvailable("setPlacement")
204
+ }
205
+
206
+ override fun setHideWhenScrolling(
207
+ view: SearchBarView?,
208
+ value: Boolean,
209
+ ) {
210
+ logNotAvailable("hideWhenScrolling")
211
+ }
212
+
213
+ override fun setObscureBackground(
214
+ view: SearchBarView?,
215
+ value: Boolean,
216
+ ) {
217
+ logNotAvailable("hideNavigationBar")
218
+ }
219
+
220
+ override fun setHideNavigationBar(
221
+ view: SearchBarView?,
222
+ value: Boolean,
223
+ ) {
224
+ logNotAvailable("hideNavigationBar")
225
+ }
226
+
227
+ override fun setCancelButtonText(
228
+ view: SearchBarView?,
229
+ value: String?,
230
+ ) {
231
+ logNotAvailable("cancelButtonText")
232
+ }
233
+
234
+ override fun setTintColor(
235
+ view: SearchBarView?,
236
+ value: Int?,
237
+ ) {
238
+ logNotAvailable("tintColor")
239
+ }
133
240
  }
@@ -16,7 +16,9 @@ import com.swmansion.rnscreens.events.SearchBarOpenEvent
16
16
  import com.swmansion.rnscreens.events.SearchBarSearchButtonPressEvent
17
17
 
18
18
  @SuppressLint("ViewConstructor")
19
- class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext) {
19
+ class SearchBarView(
20
+ reactContext: ReactContext?,
21
+ ) : ReactViewGroup(reactContext) {
20
22
  var inputType: SearchBarInputTypes = SearchBarInputTypes.TEXT
21
23
  var autoCapitalize: SearchBarAutoCapitalize = SearchBarAutoCapitalize.NONE
22
24
  var textColor: Int? = null
@@ -28,19 +30,23 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
28
30
  var autoFocus: Boolean = false
29
31
  var shouldShowHintSearchIcon: Boolean = true
30
32
 
31
- private var mSearchViewFormatter: SearchViewFormatter? = null
33
+ private var searchViewFormatter: SearchViewFormatter? = null
32
34
 
33
- private var mAreListenersSet: Boolean = false
35
+ private var areListenersSet: Boolean = false
34
36
 
35
- private val screenStackFragment: ScreenStackFragment?
37
+ private val headerConfig: ScreenStackHeaderConfig?
36
38
  get() {
37
39
  val currentParent = parent
38
40
  if (currentParent is ScreenStackHeaderSubview) {
39
- return currentParent.config?.screenFragment
41
+ return currentParent.config
40
42
  }
43
+
41
44
  return null
42
45
  }
43
46
 
47
+ private val screenStackFragment: ScreenStackFragment?
48
+ get() = headerConfig?.screenFragment
49
+
44
50
  fun onUpdate() {
45
51
  setSearchViewProps()
46
52
  }
@@ -48,17 +54,17 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
48
54
  private fun setSearchViewProps() {
49
55
  val searchView = screenStackFragment?.searchView
50
56
  if (searchView != null) {
51
- if (!mAreListenersSet) {
57
+ if (!areListenersSet) {
52
58
  setSearchViewListeners(searchView)
53
- mAreListenersSet = true
59
+ areListenersSet = true
54
60
  }
55
61
 
56
62
  searchView.inputType = inputType.toAndroidInputType(autoCapitalize)
57
- mSearchViewFormatter?.setTextColor(textColor)
58
- mSearchViewFormatter?.setTintColor(tintColor)
59
- mSearchViewFormatter?.setHeaderIconColor(headerIconColor)
60
- mSearchViewFormatter?.setHintTextColor(hintTextColor)
61
- mSearchViewFormatter?.setPlaceholder(placeholder, shouldShowHintSearchIcon)
63
+ searchViewFormatter?.setTextColor(textColor)
64
+ searchViewFormatter?.setTintColor(tintColor)
65
+ searchViewFormatter?.setHeaderIconColor(headerIconColor)
66
+ searchViewFormatter?.setHintTextColor(hintTextColor)
67
+ searchViewFormatter?.setPlaceholder(placeholder, shouldShowHintSearchIcon)
62
68
  searchView.overrideBackAction = shouldOverrideBackButton
63
69
  }
64
70
  }
@@ -67,8 +73,10 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
67
73
  super.onAttachedToWindow()
68
74
 
69
75
  screenStackFragment?.onSearchViewCreate = { newSearchView ->
70
- if (mSearchViewFormatter == null) mSearchViewFormatter =
71
- SearchViewFormatter(newSearchView)
76
+ if (searchViewFormatter == null) {
77
+ searchViewFormatter =
78
+ SearchViewFormatter(newSearchView)
79
+ }
72
80
  setSearchViewProps()
73
81
  if (autoFocus) {
74
82
  screenStackFragment?.searchView?.focus()
@@ -77,17 +85,19 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
77
85
  }
78
86
 
79
87
  private fun setSearchViewListeners(searchView: SearchView) {
80
- searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
81
- override fun onQueryTextChange(newText: String?): Boolean {
82
- handleTextChange(newText)
83
- return true
84
- }
88
+ searchView.setOnQueryTextListener(
89
+ object : SearchView.OnQueryTextListener {
90
+ override fun onQueryTextChange(newText: String?): Boolean {
91
+ handleTextChange(newText)
92
+ return true
93
+ }
85
94
 
86
- override fun onQueryTextSubmit(query: String?): Boolean {
87
- handleTextSubmit(query)
88
- return true
89
- }
90
- })
95
+ override fun onQueryTextSubmit(query: String?): Boolean {
96
+ handleTextSubmit(query)
97
+ return true
98
+ }
99
+ },
100
+ )
91
101
  searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
92
102
  handleFocusChange(hasFocus)
93
103
  }
@@ -110,10 +120,12 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
110
120
 
111
121
  private fun handleClose() {
112
122
  sendEvent(SearchBarCloseEvent(surfaceId, id))
123
+ setToolbarElementsVisibility(VISIBLE)
113
124
  }
114
125
 
115
126
  private fun handleOpen() {
116
127
  sendEvent(SearchBarOpenEvent(surfaceId, id))
128
+ setToolbarElementsVisibility(GONE)
117
129
  }
118
130
 
119
131
  private fun handleTextSubmit(newText: String?) {
@@ -144,10 +156,26 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
144
156
  text?.let { screenStackFragment?.searchView?.setText(it) }
145
157
  }
146
158
 
159
+ fun handleCancelSearchJsRequest() {
160
+ screenStackFragment?.searchView?.cancelSearch()
161
+ }
162
+
163
+ private fun setToolbarElementsVisibility(visibility: Int) {
164
+ for (i in 0..(headerConfig?.configSubviewsCount?.minus(1) ?: 0)) {
165
+ val subview = headerConfig?.getConfigSubview(i)
166
+ if (subview?.type != ScreenStackHeaderSubview.Type.SEARCH_BAR) {
167
+ subview?.visibility = visibility
168
+ }
169
+ }
170
+ }
171
+
147
172
  private val surfaceId = UIManagerHelper.getSurfaceId(this)
148
173
 
149
174
  enum class SearchBarAutoCapitalize {
150
- NONE, WORDS, SENTENCES, CHARACTERS
175
+ NONE,
176
+ WORDS,
177
+ SENTENCES,
178
+ CHARACTERS,
151
179
  }
152
180
 
153
181
  enum class SearchBarInputTypes {
@@ -161,17 +189,14 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
161
189
  }
162
190
  },
163
191
  PHONE {
164
- override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
165
- InputType.TYPE_CLASS_PHONE
192
+ override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_CLASS_PHONE
166
193
  },
167
194
  NUMBER {
168
- override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
169
- InputType.TYPE_CLASS_NUMBER
195
+ override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_CLASS_NUMBER
170
196
  },
171
197
  EMAIL {
172
- override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
173
- InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
174
- };
198
+ override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
199
+ }, ;
175
200
 
176
201
  abstract fun toAndroidInputType(capitalize: SearchBarAutoCapitalize): Int
177
202
  }
@@ -7,9 +7,11 @@ import android.widget.ImageView
7
7
  import androidx.appcompat.R
8
8
  import androidx.appcompat.widget.SearchView
9
9
 
10
- class SearchViewFormatter(var searchView: SearchView) {
11
- private var mDefaultTextColor: Int? = null
12
- private var mDefaultTintBackground: Drawable? = null
10
+ class SearchViewFormatter(
11
+ var searchView: SearchView,
12
+ ) {
13
+ private var defaultTextColor: Int? = null
14
+ private var defaultTintBackground: Drawable? = null
13
15
 
14
16
  private val searchEditText
15
17
  get() = searchView.findViewById<View>(R.id.search_src_text) as? EditText
@@ -21,10 +23,10 @@ class SearchViewFormatter(var searchView: SearchView) {
21
23
  get() = searchView.findViewById<ImageView>(R.id.search_close_btn)
22
24
 
23
25
  fun setTextColor(textColor: Int?) {
24
- val currentDefaultTextColor = mDefaultTextColor
26
+ val currentDefaultTextColor = defaultTextColor
25
27
  if (textColor != null) {
26
- if (mDefaultTextColor == null) {
27
- mDefaultTextColor = searchEditText?.textColors?.defaultColor
28
+ if (defaultTextColor == null) {
29
+ defaultTextColor = searchEditText?.textColors?.defaultColor
28
30
  }
29
31
  searchEditText?.setTextColor(textColor)
30
32
  } else if (currentDefaultTextColor != null) {
@@ -33,10 +35,10 @@ class SearchViewFormatter(var searchView: SearchView) {
33
35
  }
34
36
 
35
37
  fun setTintColor(tintColor: Int?) {
36
- val currentDefaultTintColor = mDefaultTintBackground
38
+ val currentDefaultTintColor = defaultTintBackground
37
39
  if (tintColor != null) {
38
- if (mDefaultTintBackground == null) {
39
- mDefaultTintBackground = searchTextPlate.background
40
+ if (defaultTintBackground == null) {
41
+ defaultTintBackground = searchTextPlate.background
40
42
  }
41
43
  searchTextPlate.setBackgroundColor(tintColor)
42
44
  } else if (currentDefaultTintColor != null) {
@@ -57,7 +59,10 @@ class SearchViewFormatter(var searchView: SearchView) {
57
59
  }
58
60
  }
59
61
 
60
- fun setPlaceholder(placeholder: String, shouldShowHintSearchIcon: Boolean) {
62
+ fun setPlaceholder(
63
+ placeholder: String,
64
+ shouldShowHintSearchIcon: Boolean,
65
+ ) {
61
66
  if (shouldShowHintSearchIcon) {
62
67
  searchView.queryHint = placeholder
63
68
  } else {
@@ -0,0 +1,42 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.view.View
4
+ import com.google.android.material.bottomsheet.BottomSheetBehavior
5
+
6
+ internal fun <T : View> BottomSheetBehavior<T>.useSingleDetent(height: Int? = null, forceExpandedState: Boolean = true): BottomSheetBehavior<T> {
7
+ this.skipCollapsed = true
8
+ this.isFitToContents = true
9
+ if (forceExpandedState) {
10
+ this.state = BottomSheetBehavior.STATE_EXPANDED
11
+ }
12
+ height?.let { maxHeight = height }
13
+ return this
14
+ }
15
+
16
+ internal fun <T : View> BottomSheetBehavior<T>.useTwoDetents(
17
+ @BottomSheetBehavior.StableState state: Int? = null,
18
+ firstHeight: Int? = null,
19
+ secondHeight: Int? = null
20
+ ): BottomSheetBehavior<T> {
21
+ skipCollapsed = false
22
+ isFitToContents = true
23
+ state?.let { this.state = state }
24
+ firstHeight?.let { peekHeight = firstHeight }
25
+ secondHeight?.let { maxHeight = secondHeight }
26
+ return this
27
+ }
28
+
29
+ internal fun <T : View> BottomSheetBehavior<T>.useThreeDetents(
30
+ @BottomSheetBehavior.StableState state: Int? = null,
31
+ firstHeight: Int? = null,
32
+ halfExpandedRatio: Float? = null,
33
+ expandedOffsetFromTop: Int? = null
34
+ ): BottomSheetBehavior<T> {
35
+ skipCollapsed = false
36
+ isFitToContents = false
37
+ state?.let { this.state = state }
38
+ firstHeight?.let { this.peekHeight = firstHeight }
39
+ halfExpandedRatio?.let { this.halfExpandedRatio = halfExpandedRatio }
40
+ expandedOffsetFromTop?.let { this.expandedOffset = expandedOffsetFromTop }
41
+ return this
42
+ }
@@ -0,0 +1,104 @@
1
+ package com.swmansion.rnscreens.bottomsheet
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.view.MotionEvent
5
+ import android.view.View
6
+ import com.facebook.react.bridge.ReactContext
7
+ import com.facebook.react.config.ReactFeatureFlags
8
+ import com.facebook.react.uimanager.JSPointerDispatcher
9
+ import com.facebook.react.uimanager.JSTouchDispatcher
10
+ import com.facebook.react.uimanager.RootView
11
+ import com.facebook.react.uimanager.events.EventDispatcher
12
+ import com.facebook.react.views.view.ReactViewGroup
13
+
14
+ @SuppressLint("ViewConstructor")
15
+ class BottomSheetDialogRootView(
16
+ val reactContext: ReactContext?,
17
+ private val eventDispatcher: EventDispatcher,
18
+ ) : ReactViewGroup(reactContext),
19
+ RootView {
20
+ private val jsTouchDispatcher: JSTouchDispatcher = JSTouchDispatcher(this)
21
+ private var jsPointerDispatcher: JSPointerDispatcher? = null
22
+
23
+ init {
24
+ // Can we safely use ReactFeatureFlags?
25
+ if (ReactFeatureFlags.dispatchPointerEvents) {
26
+ jsPointerDispatcher = JSPointerDispatcher(this)
27
+ }
28
+ }
29
+
30
+ override fun onLayout(
31
+ changed: Boolean,
32
+ l: Int,
33
+ t: Int,
34
+ r: Int,
35
+ b: Int,
36
+ ) {
37
+ if (changed) {
38
+ // This view is used right now only in ScreenModalFragment, where it is injected
39
+ // to view hierarchy as a parent of a Screen.
40
+ assert(childCount == 1) { "[RNScreens] Expected only a single child view under ${TAG}, received: ${childCount}"}
41
+ getChildAt(0).layout(l, t, r, b)
42
+ }
43
+ }
44
+
45
+ override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
46
+ jsTouchDispatcher.handleTouchEvent(event, eventDispatcher)
47
+ jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, true)
48
+ return super.onInterceptTouchEvent(event)
49
+ }
50
+
51
+ override fun onTouchEvent(event: MotionEvent): Boolean {
52
+ jsTouchDispatcher.handleTouchEvent(event, eventDispatcher)
53
+ jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, false)
54
+ super.onTouchEvent(event)
55
+ return true
56
+ }
57
+
58
+ override fun onInterceptHoverEvent(event: MotionEvent): Boolean {
59
+ jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, true)
60
+ // This is how DialogRootViewGroup implements this, it might be a copy-paste mistake
61
+ // on their side.
62
+ return super.onHoverEvent(event)
63
+ }
64
+
65
+ override fun onHoverEvent(event: MotionEvent): Boolean {
66
+ jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, false)
67
+ return super.onHoverEvent(event)
68
+ }
69
+
70
+ override fun onChildStartedNativeGesture(
71
+ view: View,
72
+ event: MotionEvent,
73
+ ) {
74
+ jsTouchDispatcher.onChildStartedNativeGesture(event, eventDispatcher)
75
+ jsPointerDispatcher?.onChildStartedNativeGesture(view, event, eventDispatcher)
76
+ }
77
+
78
+ @Deprecated("Deprecated by React Native")
79
+ override fun onChildStartedNativeGesture(event: MotionEvent): Unit =
80
+ throw IllegalStateException("Deprecated onChildStartedNativeGesture was called")
81
+
82
+ override fun onChildEndedNativeGesture(
83
+ view: View,
84
+ event: MotionEvent,
85
+ ) {
86
+ jsTouchDispatcher.onChildEndedNativeGesture(event, eventDispatcher)
87
+ jsPointerDispatcher?.onChildEndedNativeGesture()
88
+ }
89
+
90
+ override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
91
+ // We do not pass through request of our child up the view hierarchy, as we
92
+ // need to keep receiving events.
93
+ }
94
+
95
+ override fun handleException(throwable: Throwable?) {
96
+ // TODO: I need ThemedReactContext here.
97
+ // TODO: Determine where it is initially created & verify its lifecycle
98
+ // reactContext?.reactApplicationContext?.handleException(RuntimeException(throwable))
99
+ }
100
+
101
+ companion object {
102
+ const val TAG = "BottomSheetDialogRootView"
103
+ }
104
+ }