@amazon-devices/react-native-screens 2.0.1758683737

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +223 -0
  3. package/RNScreens.podspec +53 -0
  4. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.bundle +33668 -0
  5. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.map +1 -0
  6. package/SystemModules/amzn__react-native-screens.modules.txt +101 -0
  7. package/SystemModules/amzn__react-native-screens.private.modules.txt +244 -0
  8. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  9. package/THIRD_PARTY_NOTICES.txt +707 -0
  10. package/android/build.gradle +133 -0
  11. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +49 -0
  12. package/android/src/main/AndroidManifest.xml +5 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +77 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +7 -0
  15. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +29 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/FragmentHolder.kt +7 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +21 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +289 -0
  19. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +372 -0
  20. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +40 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +21 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +331 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +22 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +336 -0
  25. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +282 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +15 -0
  27. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +398 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +204 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +38 -0
  30. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +41 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +75 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +186 -0
  33. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +296 -0
  34. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +19 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +133 -0
  36. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +178 -0
  37. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +67 -0
  38. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +22 -0
  39. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +22 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +22 -0
  41. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +26 -0
  42. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +18 -0
  43. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +18 -0
  44. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +20 -0
  45. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +32 -0
  46. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +18 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +18 -0
  48. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +22 -0
  49. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +28 -0
  50. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +22 -0
  51. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +22 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +22 -0
  53. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +24 -0
  54. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +18 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +12 -0
  56. package/android/src/main/jni/CMakeLists.txt +72 -0
  57. package/android/src/main/jni/rnscreens.cpp +16 -0
  58. package/android/src/main/jni/rnscreens.h +28 -0
  59. package/android/src/main/res/base/anim/rns_default_enter_in.xml +18 -0
  60. package/android/src/main/res/base/anim/rns_default_enter_out.xml +19 -0
  61. package/android/src/main/res/base/anim/rns_default_exit_in.xml +17 -0
  62. package/android/src/main/res/base/anim/rns_default_exit_out.xml +18 -0
  63. package/android/src/main/res/base/anim/rns_fade_from_bottom.xml +14 -0
  64. package/android/src/main/res/base/anim/rns_fade_in.xml +7 -0
  65. package/android/src/main/res/base/anim/rns_fade_out.xml +7 -0
  66. package/android/src/main/res/base/anim/rns_fade_to_bottom.xml +15 -0
  67. package/android/src/main/res/base/anim/rns_no_animation_20.xml +6 -0
  68. package/android/src/main/res/base/anim/rns_no_animation_250.xml +7 -0
  69. package/android/src/main/res/base/anim/rns_no_animation_350.xml +6 -0
  70. package/android/src/main/res/base/anim/rns_no_animation_medium.xml +7 -0
  71. package/android/src/main/res/base/anim/rns_slide_in_from_bottom.xml +7 -0
  72. package/android/src/main/res/base/anim/rns_slide_in_from_left.xml +5 -0
  73. package/android/src/main/res/base/anim/rns_slide_in_from_right.xml +5 -0
  74. package/android/src/main/res/base/anim/rns_slide_out_to_bottom.xml +7 -0
  75. package/android/src/main/res/base/anim/rns_slide_out_to_left.xml +5 -0
  76. package/android/src/main/res/base/anim/rns_slide_out_to_right.xml +5 -0
  77. package/android/src/main/res/base/anim/rns_standard_accelerate_interpolator.xml +6 -0
  78. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +38 -0
  79. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +38 -0
  80. package/android/src/main/res/v33/anim-v33/rns_default_exit_in.xml +38 -0
  81. package/android/src/main/res/v33/anim-v33/rns_default_exit_out.xml +38 -0
  82. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +111 -0
  83. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +44 -0
  84. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +107 -0
  85. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +42 -0
  86. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +31 -0
  87. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +17 -0
  88. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +25 -0
  89. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +16 -0
  90. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +10 -0
  91. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +41 -0
  92. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +9 -0
  93. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +30 -0
  94. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +14 -0
  95. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +45 -0
  96. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.h +11 -0
  97. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.mm +14 -0
  98. package/ios/RNSConvert.h +36 -0
  99. package/ios/RNSConvert.mm +154 -0
  100. package/ios/RNSEnums.h +71 -0
  101. package/ios/RNSFullWindowOverlay.h +34 -0
  102. package/ios/RNSFullWindowOverlay.mm +241 -0
  103. package/ios/RNSScreen.h +144 -0
  104. package/ios/RNSScreen.mm +1599 -0
  105. package/ios/RNSScreenContainer.h +45 -0
  106. package/ios/RNSScreenContainer.mm +343 -0
  107. package/ios/RNSScreenNavigationContainer.h +16 -0
  108. package/ios/RNSScreenNavigationContainer.mm +66 -0
  109. package/ios/RNSScreenStack.h +37 -0
  110. package/ios/RNSScreenStack.mm +1111 -0
  111. package/ios/RNSScreenStackAnimator.h +8 -0
  112. package/ios/RNSScreenStackAnimator.mm +320 -0
  113. package/ios/RNSScreenStackHeaderConfig.h +74 -0
  114. package/ios/RNSScreenStackHeaderConfig.mm +967 -0
  115. package/ios/RNSScreenStackHeaderSubview.h +44 -0
  116. package/ios/RNSScreenStackHeaderSubview.mm +147 -0
  117. package/ios/RNSScreenWindowTraits.h +26 -0
  118. package/ios/RNSScreenWindowTraits.mm +266 -0
  119. package/ios/RNSSearchBar.h +43 -0
  120. package/ios/RNSSearchBar.mm +465 -0
  121. package/ios/RNScreens.xcodeproj/project.pbxproj +461 -0
  122. package/ios/UIViewController+RNScreens.h +9 -0
  123. package/ios/UIViewController+RNScreens.mm +78 -0
  124. package/ios/UIWindow+RNScreens.h +9 -0
  125. package/ios/UIWindow+RNScreens.mm +17 -0
  126. package/ios/events/RNSHeaderHeightChangeEvent.h +8 -0
  127. package/ios/events/RNSHeaderHeightChangeEvent.mm +44 -0
  128. package/ios/events/RNSScreenViewEvent.h +12 -0
  129. package/ios/events/RNSScreenViewEvent.mm +59 -0
  130. package/ios/utils/RNSUIBarButtonItem.h +5 -0
  131. package/ios/utils/RNSUIBarButtonItem.mm +22 -0
  132. package/kepler-compatibility.json +8 -0
  133. package/kepler-transformed-package-info.json +3 -0
  134. package/lib/commonjs/TransitionProgressContext.js +11 -0
  135. package/lib/commonjs/TransitionProgressContext.js.map +1 -0
  136. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +11 -0
  137. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  138. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +33 -0
  139. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -0
  140. package/lib/commonjs/fabric/ScreenNativeComponent.js +70 -0
  141. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -0
  142. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +11 -0
  143. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  144. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +31 -0
  145. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
  146. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +12 -0
  147. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
  148. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +35 -0
  149. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -0
  150. package/lib/commonjs/fabric/SearchBarNativeComponent.js +19 -0
  151. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -0
  152. package/lib/commonjs/index.js +147 -0
  153. package/lib/commonjs/index.js.map +1 -0
  154. package/lib/commonjs/index.native.js +407 -0
  155. package/lib/commonjs/index.native.js.map +1 -0
  156. package/lib/commonjs/native-stack/index.js +49 -0
  157. package/lib/commonjs/native-stack/index.js.map +1 -0
  158. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +75 -0
  159. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  160. package/lib/commonjs/native-stack/types.js +6 -0
  161. package/lib/commonjs/native-stack/types.js.map +1 -0
  162. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +12 -0
  163. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  164. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +12 -0
  165. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -0
  166. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +75 -0
  167. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -0
  168. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js +35 -0
  169. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -0
  170. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +19 -0
  171. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  172. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +54 -0
  173. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -0
  174. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +19 -0
  175. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -0
  176. package/lib/commonjs/native-stack/views/FontProcessor.js +21 -0
  177. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -0
  178. package/lib/commonjs/native-stack/views/HeaderConfig.js +141 -0
  179. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -0
  180. package/lib/commonjs/native-stack/views/NativeStackView.js +354 -0
  181. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -0
  182. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +12 -0
  183. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  184. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +101 -0
  185. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
  186. package/lib/commonjs/reanimated/ReanimatedScreen.js +22 -0
  187. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -0
  188. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +47 -0
  189. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -0
  190. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +12 -0
  191. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -0
  192. package/lib/commonjs/reanimated/index.js +28 -0
  193. package/lib/commonjs/reanimated/index.js.map +1 -0
  194. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +19 -0
  195. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  196. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +19 -0
  197. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -0
  198. package/lib/commonjs/types.js +6 -0
  199. package/lib/commonjs/types.js.map +1 -0
  200. package/lib/commonjs/useTransitionProgress.js +19 -0
  201. package/lib/commonjs/useTransitionProgress.js.map +1 -0
  202. package/lib/commonjs/utils.js +21 -0
  203. package/lib/commonjs/utils.js.map +1 -0
  204. package/lib/module/TransitionProgressContext.js +3 -0
  205. package/lib/module/TransitionProgressContext.js.map +1 -0
  206. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +4 -0
  207. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  208. package/lib/module/fabric/ScreenContainerNativeComponent.js +25 -0
  209. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -0
  210. package/lib/module/fabric/ScreenNativeComponent.js +63 -0
  211. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -0
  212. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +4 -0
  213. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  214. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +23 -0
  215. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
  216. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +7 -0
  217. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
  218. package/lib/module/fabric/ScreenStackNativeComponent.js +28 -0
  219. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -0
  220. package/lib/module/fabric/SearchBarNativeComponent.js +10 -0
  221. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -0
  222. package/lib/module/index.js +67 -0
  223. package/lib/module/index.js.map +1 -0
  224. package/lib/module/index.native.js +410 -0
  225. package/lib/module/index.native.js.map +1 -0
  226. package/lib/module/native-stack/index.js +22 -0
  227. package/lib/module/native-stack/index.js.map +1 -0
  228. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +72 -0
  229. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  230. package/lib/module/native-stack/types.js +2 -0
  231. package/lib/module/native-stack/types.js.map +1 -0
  232. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js +4 -0
  233. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
  234. package/lib/module/native-stack/utils/HeaderHeightContext.js +4 -0
  235. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -0
  236. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js +68 -0
  237. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -0
  238. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js +29 -0
  239. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -0
  240. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js +10 -0
  241. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  242. package/lib/module/native-stack/utils/useBackPressSubscription.js +47 -0
  243. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -0
  244. package/lib/module/native-stack/utils/useHeaderHeight.js +10 -0
  245. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -0
  246. package/lib/module/native-stack/views/FontProcessor.js +13 -0
  247. package/lib/module/native-stack/views/FontProcessor.js.map +1 -0
  248. package/lib/module/native-stack/views/HeaderConfig.js +132 -0
  249. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -0
  250. package/lib/module/native-stack/views/NativeStackView.js +355 -0
  251. package/lib/module/native-stack/views/NativeStackView.js.map +1 -0
  252. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js +5 -0
  253. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
  254. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +97 -0
  255. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
  256. package/lib/module/reanimated/ReanimatedScreen.js +17 -0
  257. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -0
  258. package/lib/module/reanimated/ReanimatedScreenProvider.js +40 -0
  259. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -0
  260. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js +5 -0
  261. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -0
  262. package/lib/module/reanimated/index.js +4 -0
  263. package/lib/module/reanimated/index.js.map +1 -0
  264. package/lib/module/reanimated/useReanimatedHeaderHeight.js +10 -0
  265. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -0
  266. package/lib/module/reanimated/useReanimatedTransitionProgress.js +10 -0
  267. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -0
  268. package/lib/module/types.js +2 -0
  269. package/lib/module/types.js.map +1 -0
  270. package/lib/module/useTransitionProgress.js +10 -0
  271. package/lib/module/useTransitionProgress.js.map +1 -0
  272. package/lib/module/utils.js +14 -0
  273. package/lib/module/utils.js.map +1 -0
  274. package/lib/typescript/TransitionProgressContext.d.ts +9 -0
  275. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +7 -0
  276. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +5 -0
  277. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +66 -0
  278. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +7 -0
  279. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +33 -0
  280. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +10 -0
  281. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +8 -0
  282. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +49 -0
  283. package/lib/typescript/index.d.ts +33 -0
  284. package/lib/typescript/index.native.d.ts +2 -0
  285. package/lib/typescript/native-stack/index.d.ts +19 -0
  286. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +6 -0
  287. package/lib/typescript/native-stack/types.d.ts +438 -0
  288. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +4 -0
  289. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +3 -0
  290. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +11 -0
  291. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +7 -0
  292. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
  293. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +16 -0
  294. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  295. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  296. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +8 -0
  297. package/lib/typescript/native-stack/views/NativeStackView.d.ts +10 -0
  298. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +4 -0
  299. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +5 -0
  300. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +5 -0
  301. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +2 -0
  302. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +9 -0
  303. package/lib/typescript/reanimated/index.d.ts +3 -0
  304. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +3 -0
  305. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +11 -0
  306. package/lib/typescript/types.d.ts +612 -0
  307. package/lib/typescript/useTransitionProgress.d.ts +5 -0
  308. package/lib/typescript/utils.d.ts +3 -0
  309. package/native-stack/README.md +814 -0
  310. package/native-stack/package.json +6 -0
  311. package/package.json +1 -0
  312. package/react-native.config.js +42 -0
  313. package/reanimated/package.json +6 -0
  314. package/src/TransitionProgressContext.tsx +12 -0
  315. package/src/fabric/FullWindowOverlayNativeComponent.ts +7 -0
  316. package/src/fabric/ScreenContainerNativeComponent.ts +28 -0
  317. package/src/fabric/ScreenNativeComponent.ts +158 -0
  318. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +10 -0
  319. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +61 -0
  320. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +22 -0
  321. package/src/fabric/ScreenStackNativeComponent.ts +33 -0
  322. package/src/fabric/SearchBarNativeComponent.ts +79 -0
  323. package/src/index.native.tsx +599 -0
  324. package/src/index.tsx +119 -0
  325. package/src/native-stack/index.tsx +27 -0
  326. package/src/native-stack/navigators/createNativeStackNavigator.tsx +107 -0
  327. package/src/native-stack/types.tsx +486 -0
  328. package/src/native-stack/utils/AnimatedHeaderHeightContext.tsx +8 -0
  329. package/src/native-stack/utils/HeaderHeightContext.tsx +5 -0
  330. package/src/native-stack/utils/SafeAreaProviderCompat.tsx +78 -0
  331. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +41 -0
  332. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +15 -0
  333. package/src/native-stack/utils/useBackPressSubscription.tsx +66 -0
  334. package/src/native-stack/utils/useHeaderHeight.tsx +15 -0
  335. package/src/native-stack/views/FontProcessor.tsx +14 -0
  336. package/src/native-stack/views/HeaderConfig.tsx +187 -0
  337. package/src/native-stack/views/NativeStackView.tsx +466 -0
  338. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +7 -0
  339. package/src/reanimated/ReanimatedNativeStackScreen.tsx +130 -0
  340. package/src/reanimated/ReanimatedScreen.tsx +25 -0
  341. package/src/reanimated/ReanimatedScreenProvider.tsx +42 -0
  342. package/src/reanimated/ReanimatedTransitionProgressContext.tsx +13 -0
  343. package/src/reanimated/index.tsx +3 -0
  344. package/src/reanimated/useReanimatedHeaderHeight.tsx +14 -0
  345. package/src/reanimated/useReanimatedTransitionProgress.tsx +14 -0
  346. package/src/types.tsx +699 -0
  347. package/src/useTransitionProgress.tsx +15 -0
  348. package/src/utils.ts +18 -0
  349. package/windows/README.md +25 -0
  350. package/windows/RNScreens/PropertySheet.props +16 -0
  351. package/windows/RNScreens/RNScreens.cpp +66 -0
  352. package/windows/RNScreens/RNScreens.def +3 -0
  353. package/windows/RNScreens/RNScreens.h +41 -0
  354. package/windows/RNScreens/RNScreens.idl +8 -0
  355. package/windows/RNScreens/RNScreens.vcxproj +187 -0
  356. package/windows/RNScreens/RNScreens.vcxproj.filters +52 -0
  357. package/windows/RNScreens/ReactPackageProvider.cpp +30 -0
  358. package/windows/RNScreens/ReactPackageProvider.h +17 -0
  359. package/windows/RNScreens/ReactPackageProvider.idl +9 -0
  360. package/windows/RNScreens/Screen.cpp +122 -0
  361. package/windows/RNScreens/Screen.h +64 -0
  362. package/windows/RNScreens/ScreenContainer.cpp +49 -0
  363. package/windows/RNScreens/ScreenContainer.h +23 -0
  364. package/windows/RNScreens/ScreenContainerViewManager.cpp +133 -0
  365. package/windows/RNScreens/ScreenContainerViewManager.h +78 -0
  366. package/windows/RNScreens/ScreenStack.cpp +65 -0
  367. package/windows/RNScreens/ScreenStack.h +23 -0
  368. package/windows/RNScreens/ScreenStackHeaderConfig.cpp +19 -0
  369. package/windows/RNScreens/ScreenStackHeaderConfig.h +14 -0
  370. package/windows/RNScreens/ScreenStackHeaderConfigViewManager.cpp +89 -0
  371. package/windows/RNScreens/ScreenStackHeaderConfigViewManager.h +62 -0
  372. package/windows/RNScreens/ScreenStackViewManager.cpp +132 -0
  373. package/windows/RNScreens/ScreenStackViewManager.h +78 -0
  374. package/windows/RNScreens/ScreenViewManager.cpp +154 -0
  375. package/windows/RNScreens/ScreenViewManager.h +78 -0
  376. package/windows/RNScreens/packages.config +4 -0
  377. package/windows/RNScreens/pch.cpp +1 -0
  378. package/windows/RNScreens/pch.h +9 -0
  379. package/windows/RNScreens62.sln +254 -0
  380. package/windows/RNScreens63.sln +225 -0
  381. package/windows/RNScreens65.sln +144 -0
@@ -0,0 +1,465 @@
1
+ #import <UIKit/UIKit.h>
2
+
3
+ #import "RNSSearchBar.h"
4
+
5
+ #import <React/RCTBridge.h>
6
+ #import <React/RCTComponent.h>
7
+ #import <React/RCTUIManager.h>
8
+
9
+ #ifdef RCT_NEW_ARCH_ENABLED
10
+ #import <React/RCTConversions.h>
11
+ #import <React/RCTFabricComponentsPlugins.h>
12
+ #import <react/renderer/components/rnscreens/ComponentDescriptors.h>
13
+ #import <react/renderer/components/rnscreens/EventEmitters.h>
14
+ #import <react/renderer/components/rnscreens/Props.h>
15
+ #import "RNSConvert.h"
16
+ #endif // RCT_NEW_ARCH_ENABLED
17
+
18
+ #ifdef RCT_NEW_ARCH_ENABLED
19
+ namespace react = facebook::react;
20
+ #endif // RCT_NEW_ARCH_ENABLED
21
+
22
+ @implementation RNSSearchBar {
23
+ __weak RCTBridge *_bridge;
24
+ UISearchController *_controller;
25
+ UIColor *_textColor;
26
+ }
27
+
28
+ @synthesize controller = _controller;
29
+
30
+ - (instancetype)initWithBridge:(RCTBridge *)bridge
31
+ {
32
+ if (self = [super init]) {
33
+ _bridge = bridge;
34
+ [self initCommonProps];
35
+ }
36
+ return self;
37
+ }
38
+
39
+ #ifdef RCT_NEW_ARCH_ENABLED
40
+ - (instancetype)init
41
+ {
42
+ if (self = [super init]) {
43
+ static const auto defaultProps = std::make_shared<const react::RNSSearchBarProps>();
44
+ _props = defaultProps;
45
+ [self initCommonProps];
46
+ }
47
+ return self;
48
+ }
49
+ #endif
50
+
51
+ - (void)initCommonProps
52
+ {
53
+ _controller = [[UISearchController alloc] initWithSearchResultsController:nil];
54
+ _controller.searchBar.delegate = self;
55
+ _hideWhenScrolling = YES;
56
+ _placement = RNSSearchBarPlacementStacked;
57
+ }
58
+
59
+ - (void)emitOnFocusEvent
60
+ {
61
+ #ifdef RCT_NEW_ARCH_ENABLED
62
+ if (_eventEmitter != nullptr) {
63
+ std::dynamic_pointer_cast<const react::RNSSearchBarEventEmitter>(_eventEmitter)
64
+ ->onFocus(react::RNSSearchBarEventEmitter::OnFocus{});
65
+ }
66
+ #else
67
+ if (self.onFocus) {
68
+ self.onFocus(@{});
69
+ }
70
+ #endif
71
+ }
72
+
73
+ - (void)emitOnBlurEvent
74
+ {
75
+ #ifdef RCT_NEW_ARCH_ENABLED
76
+ if (_eventEmitter != nullptr) {
77
+ std::dynamic_pointer_cast<const react::RNSSearchBarEventEmitter>(_eventEmitter)
78
+ ->onBlur(react::RNSSearchBarEventEmitter::OnBlur{});
79
+ }
80
+ #else
81
+ if (self.onBlur) {
82
+ self.onBlur(@{});
83
+ }
84
+ #endif
85
+ }
86
+
87
+ - (void)emitOnSearchButtonPressEventWithText:(NSString *)text
88
+ {
89
+ #ifdef RCT_NEW_ARCH_ENABLED
90
+ if (_eventEmitter != nullptr) {
91
+ std::dynamic_pointer_cast<const react::RNSSearchBarEventEmitter>(_eventEmitter)
92
+ ->onSearchButtonPress(
93
+ react::RNSSearchBarEventEmitter::OnSearchButtonPress{.text = RCTStringFromNSString(text)});
94
+ }
95
+ #else
96
+ if (self.onSearchButtonPress) {
97
+ self.onSearchButtonPress(@{
98
+ @"text" : text,
99
+ });
100
+ }
101
+ #endif
102
+ }
103
+
104
+ - (void)emitOnCancelButtonPressEvent
105
+ {
106
+ #ifdef RCT_NEW_ARCH_ENABLED
107
+ if (_eventEmitter != nullptr) {
108
+ std::dynamic_pointer_cast<const react::RNSSearchBarEventEmitter>(_eventEmitter)
109
+ ->onCancelButtonPress(react::RNSSearchBarEventEmitter::OnCancelButtonPress{});
110
+ }
111
+ #else
112
+ if (self.onCancelButtonPress) {
113
+ self.onCancelButtonPress(@{});
114
+ }
115
+ #endif
116
+ }
117
+
118
+ - (void)emitOnChangeTextEventWithText:(NSString *)text
119
+ {
120
+ #ifdef RCT_NEW_ARCH_ENABLED
121
+ if (_eventEmitter != nullptr) {
122
+ std::dynamic_pointer_cast<const react::RNSSearchBarEventEmitter>(_eventEmitter)
123
+ ->onChangeText(react::RNSSearchBarEventEmitter::OnChangeText{.text = RCTStringFromNSString(text)});
124
+ }
125
+ #else
126
+ if (self.onChangeText) {
127
+ self.onChangeText(@{
128
+ @"text" : text,
129
+ });
130
+ }
131
+ #endif
132
+ }
133
+
134
+ - (void)setObscureBackground:(BOOL)obscureBackground
135
+ {
136
+ if (@available(iOS 9.1, *)) {
137
+ [_controller setObscuresBackgroundDuringPresentation:obscureBackground];
138
+ }
139
+ }
140
+
141
+ - (void)setHideNavigationBar:(BOOL)hideNavigationBar
142
+ {
143
+ [_controller setHidesNavigationBarDuringPresentation:hideNavigationBar];
144
+ }
145
+
146
+ - (void)setHideWhenScrolling:(BOOL)hideWhenScrolling
147
+ {
148
+ _hideWhenScrolling = hideWhenScrolling;
149
+ }
150
+
151
+ - (void)setAutoCapitalize:(UITextAutocapitalizationType)autoCapitalize
152
+ {
153
+ [_controller.searchBar setAutocapitalizationType:autoCapitalize];
154
+ }
155
+
156
+ - (void)setPlaceholder:(NSString *)placeholder
157
+ {
158
+ [_controller.searchBar setPlaceholder:placeholder];
159
+ }
160
+
161
+ - (void)setBarTintColor:(UIColor *)barTintColor
162
+ {
163
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
164
+ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
165
+ if (@available(iOS 13.0, *)) {
166
+ [_controller.searchBar.searchTextField setBackgroundColor:barTintColor];
167
+ }
168
+ #endif
169
+ }
170
+
171
+ - (void)setTintColor:(UIColor *)tintColor
172
+ {
173
+ [_controller.searchBar setTintColor:tintColor];
174
+ }
175
+
176
+ - (void)setTextColor:(UIColor *)textColor
177
+ {
178
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
179
+ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
180
+ _textColor = textColor;
181
+ if (@available(iOS 13.0, *)) {
182
+ [_controller.searchBar.searchTextField setTextColor:_textColor];
183
+ }
184
+ #endif
185
+ }
186
+
187
+ - (void)setCancelButtonText:(NSString *)text
188
+ {
189
+ [_controller.searchBar setValue:text forKey:@"cancelButtonText"];
190
+ }
191
+
192
+ - (void)hideCancelButton
193
+ {
194
+ #if !TARGET_OS_TV
195
+ if (@available(iOS 13, *)) {
196
+ // On iOS 13+ UISearchController automatically shows/hides cancel button
197
+ // https://developer.apple.com/documentation/uikit/uisearchcontroller/3152926-automaticallyshowscancelbutton?language=objc
198
+ } else {
199
+ [_controller.searchBar setShowsCancelButton:NO animated:YES];
200
+ }
201
+ #endif
202
+ }
203
+
204
+ - (void)showCancelButton
205
+ {
206
+ #if !TARGET_OS_TV
207
+ if (@available(iOS 13, *)) {
208
+ // On iOS 13+ UISearchController automatically shows/hides cancel button
209
+ // https://developer.apple.com/documentation/uikit/uisearchcontroller/3152926-automaticallyshowscancelbutton?language=objc
210
+ } else {
211
+ [_controller.searchBar setShowsCancelButton:YES animated:YES];
212
+ }
213
+ #endif
214
+ }
215
+
216
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_16_0) && \
217
+ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_16_0 && !TARGET_OS_TV
218
+ - (UINavigationItemSearchBarPlacement)placementAsUINavigationItemSearchBarPlacement API_AVAILABLE(ios(16.0))
219
+ API_UNAVAILABLE(tvos, watchos)
220
+ {
221
+ switch (_placement) {
222
+ case RNSSearchBarPlacementStacked:
223
+ return UINavigationItemSearchBarPlacementStacked;
224
+ case RNSSearchBarPlacementAutomatic:
225
+ return UINavigationItemSearchBarPlacementAutomatic;
226
+ case RNSSearchBarPlacementInline:
227
+ return UINavigationItemSearchBarPlacementInline;
228
+ }
229
+ }
230
+ #endif // Check for iOS >= 16 && !TARGET_OS_TV
231
+
232
+ #pragma mark delegate methods
233
+
234
+ - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
235
+ {
236
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
237
+ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
238
+ if (@available(iOS 13.0, *)) {
239
+ // for some reason, the color does not change when set at the beginning,
240
+ // so we apply it again here
241
+ if (_textColor != nil) {
242
+ [_controller.searchBar.searchTextField setTextColor:_textColor];
243
+ }
244
+ }
245
+ #endif
246
+
247
+ [self showCancelButton];
248
+ [self becomeFirstResponder];
249
+ [self emitOnFocusEvent];
250
+ }
251
+
252
+ - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
253
+ {
254
+ [self emitOnBlurEvent];
255
+ [self hideCancelButton];
256
+ }
257
+
258
+ - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
259
+ {
260
+ [self emitOnChangeTextEventWithText:_controller.searchBar.text];
261
+ }
262
+
263
+ - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
264
+ {
265
+ [self emitOnSearchButtonPressEventWithText:_controller.searchBar.text];
266
+ }
267
+
268
+ #if !TARGET_OS_TV
269
+ - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
270
+ {
271
+ _controller.searchBar.text = @"";
272
+ [self resignFirstResponder];
273
+ [self hideCancelButton];
274
+
275
+ [self emitOnCancelButtonPressEvent];
276
+ [self emitOnChangeTextEventWithText:_controller.searchBar.text];
277
+ }
278
+ #endif // !TARGET_OS_TV
279
+
280
+ - (void)blur
281
+ {
282
+ [_controller.searchBar resignFirstResponder];
283
+ }
284
+
285
+ - (void)focus
286
+ {
287
+ [_controller.searchBar becomeFirstResponder];
288
+ }
289
+
290
+ - (void)clearText
291
+ {
292
+ [_controller.searchBar setText:@""];
293
+ }
294
+
295
+ - (void)toggleCancelButton:(BOOL)flag
296
+ {
297
+ #if !TARGET_OS_TV
298
+ [_controller.searchBar setShowsCancelButton:flag animated:YES];
299
+ #endif
300
+ }
301
+
302
+ - (void)setText:(NSString *)text
303
+ {
304
+ [_controller.searchBar setText:text];
305
+ }
306
+
307
+ #pragma mark-- Fabric specific
308
+
309
+ #ifdef RCT_NEW_ARCH_ENABLED
310
+ - (void)updateProps:(react::Props::Shared const &)props oldProps:(react::Props::Shared const &)oldProps
311
+ {
312
+ const auto &oldScreenProps = *std::static_pointer_cast<const react::RNSSearchBarProps>(_props);
313
+ const auto &newScreenProps = *std::static_pointer_cast<const react::RNSSearchBarProps>(props);
314
+
315
+ [self setHideWhenScrolling:newScreenProps.hideWhenScrolling];
316
+
317
+ if (oldScreenProps.cancelButtonText != newScreenProps.cancelButtonText) {
318
+ [self setCancelButtonText:RCTNSStringFromStringNilIfEmpty(newScreenProps.cancelButtonText)];
319
+ }
320
+
321
+ if (oldScreenProps.obscureBackground != newScreenProps.obscureBackground) {
322
+ [self setObscureBackground:newScreenProps.obscureBackground];
323
+ }
324
+
325
+ if (oldScreenProps.hideNavigationBar != newScreenProps.hideNavigationBar) {
326
+ [self setHideNavigationBar:newScreenProps.hideNavigationBar];
327
+ }
328
+
329
+ if (oldScreenProps.placeholder != newScreenProps.placeholder) {
330
+ [self setPlaceholder:RCTNSStringFromStringNilIfEmpty(newScreenProps.placeholder)];
331
+ }
332
+
333
+ if (oldScreenProps.autoCapitalize != newScreenProps.autoCapitalize) {
334
+ [self setAutoCapitalize:[RNSConvert UITextAutocapitalizationTypeFromCppEquivalent:newScreenProps.autoCapitalize]];
335
+ }
336
+
337
+ if (oldScreenProps.tintColor != newScreenProps.tintColor) {
338
+ [self setTintColor:RCTUIColorFromSharedColor(newScreenProps.tintColor)];
339
+ }
340
+
341
+ if (oldScreenProps.barTintColor != newScreenProps.barTintColor) {
342
+ [self setBarTintColor:RCTUIColorFromSharedColor(newScreenProps.barTintColor)];
343
+ }
344
+
345
+ if (oldScreenProps.textColor != newScreenProps.textColor) {
346
+ [self setTextColor:RCTUIColorFromSharedColor(newScreenProps.textColor)];
347
+ }
348
+
349
+ if (oldScreenProps.placement != newScreenProps.placement) {
350
+ self.placement = [RNSConvert RNSScreenSearchBarPlacementFromCppEquivalent:newScreenProps.placement];
351
+ }
352
+
353
+ [super updateProps:props oldProps:oldProps];
354
+ }
355
+
356
+ + (react::ComponentDescriptorProvider)componentDescriptorProvider
357
+ {
358
+ return react::concreteComponentDescriptorProvider<react::RNSSearchBarComponentDescriptor>();
359
+ }
360
+
361
+ - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args
362
+ {
363
+ RCTRNSSearchBarHandleCommand(self, commandName, args);
364
+ }
365
+
366
+ #else
367
+ #endif // RCT_NEW_ARCH_ENABLED
368
+
369
+ @end
370
+
371
+ #ifdef RCT_NEW_ARCH_ENABLED
372
+ Class<RCTComponentViewProtocol> RNSSearchBarCls(void)
373
+ {
374
+ return RNSSearchBar.class;
375
+ }
376
+ #endif
377
+
378
+ @implementation RNSSearchBarManager
379
+
380
+ RCT_EXPORT_MODULE()
381
+
382
+ #ifdef RCT_NEW_ARCH_ENABLED
383
+ #else
384
+ - (UIView *)view
385
+ {
386
+ return [[RNSSearchBar alloc] initWithBridge:self.bridge];
387
+ }
388
+ #endif
389
+
390
+ RCT_EXPORT_VIEW_PROPERTY(obscureBackground, BOOL)
391
+ RCT_EXPORT_VIEW_PROPERTY(hideNavigationBar, BOOL)
392
+ RCT_EXPORT_VIEW_PROPERTY(hideWhenScrolling, BOOL)
393
+ RCT_EXPORT_VIEW_PROPERTY(autoCapitalize, UITextAutocapitalizationType)
394
+ RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
395
+ RCT_EXPORT_VIEW_PROPERTY(barTintColor, UIColor)
396
+ RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor)
397
+ RCT_EXPORT_VIEW_PROPERTY(textColor, UIColor)
398
+ RCT_EXPORT_VIEW_PROPERTY(cancelButtonText, NSString)
399
+ RCT_EXPORT_VIEW_PROPERTY(placement, RNSSearchBarPlacement)
400
+
401
+ RCT_EXPORT_VIEW_PROPERTY(onChangeText, RCTBubblingEventBlock)
402
+ RCT_EXPORT_VIEW_PROPERTY(onCancelButtonPress, RCTBubblingEventBlock)
403
+ RCT_EXPORT_VIEW_PROPERTY(onSearchButtonPress, RCTBubblingEventBlock)
404
+ RCT_EXPORT_VIEW_PROPERTY(onFocus, RCTBubblingEventBlock)
405
+ RCT_EXPORT_VIEW_PROPERTY(onBlur, RCTBubblingEventBlock)
406
+
407
+ #ifndef RCT_NEW_ARCH_ENABLED
408
+
409
+ RCT_EXPORT_METHOD(focus : (NSNumber *_Nonnull)reactTag)
410
+ {
411
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) {
412
+ RNSSearchBar *searchBar = viewRegistry[reactTag];
413
+ [searchBar focus];
414
+ }];
415
+ }
416
+
417
+ RCT_EXPORT_METHOD(blur : (NSNumber *_Nonnull)reactTag)
418
+ {
419
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) {
420
+ RNSSearchBar *searchBar = viewRegistry[reactTag];
421
+ [searchBar blur];
422
+ }];
423
+ }
424
+
425
+ RCT_EXPORT_METHOD(clearText : (NSNumber *_Nonnull)reactTag)
426
+ {
427
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) {
428
+ RNSSearchBar *searchBar = viewRegistry[reactTag];
429
+ [searchBar clearText];
430
+ }];
431
+ }
432
+
433
+ RCT_EXPORT_METHOD(toggleCancelButton : (NSNumber *_Nonnull)reactTag flag : (BOOL)flag)
434
+ {
435
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) {
436
+ RNSSearchBar *searchBar = viewRegistry[reactTag];
437
+ [searchBar toggleCancelButton:flag];
438
+ }];
439
+ }
440
+
441
+ RCT_EXPORT_METHOD(setText : (NSNumber *_Nonnull)reactTag text : (NSString *)text)
442
+ {
443
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) {
444
+ RNSSearchBar *searchBar = viewRegistry[reactTag];
445
+ [searchBar setText:text];
446
+ }];
447
+ }
448
+
449
+ #endif /* !RCT_NEW_ARCH_ENABLED */
450
+
451
+ @end
452
+
453
+ @implementation RCTConvert (RNSScreen)
454
+
455
+ RCT_ENUM_CONVERTER(
456
+ RNSSearchBarPlacement,
457
+ (@{
458
+ @"automatic" : @(RNSSearchBarPlacementAutomatic),
459
+ @"inline" : @(RNSSearchBarPlacementInline),
460
+ @"stacked" : @(RNSSearchBarPlacementStacked),
461
+ }),
462
+ RNSSearchBarPlacementStacked,
463
+ integerValue)
464
+
465
+ @end