@react-native-ohos/react-native-keyboard-controller 1.17.0-beta.2 → 1.17.0

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 (408) hide show
  1. package/LICENSE +21 -21
  2. package/README.OpenSource +11 -11
  3. package/README.md +686 -19
  4. package/harmony/keyboard_controller/BuildProfile.ets +16 -16
  5. package/harmony/keyboard_controller/Index.ets +29 -28
  6. package/harmony/keyboard_controller/build-profile.json5 +31 -31
  7. package/harmony/keyboard_controller/hvigorfile.ts +6 -6
  8. package/harmony/keyboard_controller/obfuscation-rules.txt +17 -17
  9. package/harmony/keyboard_controller/oh-package-lock.json5 +28 -18
  10. package/harmony/keyboard_controller/oh-package.json5 +10 -10
  11. package/harmony/keyboard_controller/src/main/cpp/CMakeLists.txt +7 -7
  12. package/harmony/keyboard_controller/src/main/cpp/ClippingScrollViewComponentDescriptor.h +86 -0
  13. package/harmony/keyboard_controller/src/main/cpp/ClippingScrollViewComponentInstance.cpp +104 -0
  14. package/harmony/keyboard_controller/src/main/cpp/ClippingScrollViewComponentInstance.h +64 -0
  15. package/harmony/keyboard_controller/src/main/cpp/ClippingScrollViewJSIBinder.h +60 -0
  16. package/harmony/keyboard_controller/src/main/cpp/EventEmitters.cpp +119 -96
  17. package/harmony/keyboard_controller/src/main/cpp/EventEmitters.h +111 -111
  18. package/harmony/keyboard_controller/src/main/cpp/KeyboardControllerViewComponentDescriptor.h +94 -94
  19. package/harmony/keyboard_controller/src/main/cpp/KeyboardControllerViewComponentInstance.cpp +840 -288
  20. package/harmony/keyboard_controller/src/main/cpp/KeyboardControllerViewComponentInstance.h +169 -103
  21. package/harmony/keyboard_controller/src/main/cpp/KeyboardControllerViewJSIBinder.h +65 -65
  22. package/harmony/keyboard_controller/src/main/cpp/KeyboardGestureAreaComponentDescriptor.h +79 -79
  23. package/harmony/keyboard_controller/src/main/cpp/KeyboardGestureAreaComponentInstance.cpp +108 -108
  24. package/harmony/keyboard_controller/src/main/cpp/KeyboardGestureAreaComponentInstance.h +83 -83
  25. package/harmony/keyboard_controller/src/main/cpp/KeyboardGestureAreaJSIBinder.h +60 -60
  26. package/harmony/keyboard_controller/src/main/cpp/KeyboardToolbarGroupViewComponentDescriptor.h +46 -0
  27. package/harmony/keyboard_controller/src/main/cpp/KeyboardToolbarGroupViewComponentInstance.cpp +37 -0
  28. package/harmony/keyboard_controller/src/main/cpp/KeyboardToolbarGroupViewComponentInstance.h +32 -0
  29. package/harmony/keyboard_controller/src/main/cpp/KeyboardToolbarGroupViewJSIBinder.h +23 -0
  30. package/harmony/keyboard_controller/src/main/cpp/RNKeyboardController.cpp +103 -46
  31. package/harmony/keyboard_controller/src/main/cpp/RNKeyboardController.h +48 -48
  32. package/harmony/keyboard_controller/src/main/cpp/RNKeyboardControllerPackage.h +20 -0
  33. package/harmony/keyboard_controller/src/main/cpp/RNStatusBarManagerCompat.cpp +45 -45
  34. package/harmony/keyboard_controller/src/main/cpp/RNStatusBarManagerCompat.h +49 -49
  35. package/harmony/keyboard_controller/src/main/cpp/ViewHierarchyNavigator.cpp +207 -186
  36. package/harmony/keyboard_controller/src/main/cpp/ViewHierarchyNavigator.h +131 -112
  37. package/harmony/keyboard_controller/src/main/cpp/keyboardControllerPackage.cpp +77 -64
  38. package/harmony/keyboard_controller/src/main/cpp/keyboardControllerPackage.h +85 -77
  39. package/harmony/keyboard_controller/src/main/ets/Logger.ts +66 -66
  40. package/harmony/keyboard_controller/src/main/ets/{RNKeyboardControllerPackage.ts → RNKeyboardControllerPackage.ets} +70 -66
  41. package/harmony/keyboard_controller/src/main/ets/RNKeyboardControllerTurboModule.ts +465 -273
  42. package/harmony/keyboard_controller/src/main/ets/RNStatusBarManagerCompatTurboModule.ts +128 -119
  43. package/harmony/keyboard_controller/src/main/ets/Type.ts +63 -62
  44. package/harmony/keyboard_controller/src/main/module.json5 +11 -11
  45. package/harmony/keyboard_controller/src/main/resources/base/element/string.json +8 -8
  46. package/harmony/keyboard_controller/src/main/resources/en_US/element/string.json +8 -8
  47. package/harmony/keyboard_controller/src/main/resources/zh_CN/element/string.json +8 -8
  48. package/harmony/keyboard_controller/{ts.ts → ts.ets} +29 -29
  49. package/harmony/keyboard_controller.har +0 -0
  50. package/lib/commonjs/animated.js +22 -11
  51. package/lib/commonjs/animated.js.map +1 -1
  52. package/lib/commonjs/architecture.js +8 -0
  53. package/lib/commonjs/architecture.js.map +1 -0
  54. package/lib/commonjs/bindings.js +40 -5
  55. package/lib/commonjs/bindings.js.map +1 -1
  56. package/lib/commonjs/bindings.native.js +28 -5
  57. package/lib/commonjs/bindings.native.js.map +1 -1
  58. package/lib/commonjs/compat.js +50 -0
  59. package/lib/commonjs/compat.js.map +1 -0
  60. package/lib/commonjs/components/KeyboardAvoidingView/hooks.js +21 -15
  61. package/lib/commonjs/components/KeyboardAvoidingView/hooks.js.map +1 -1
  62. package/lib/commonjs/components/KeyboardAvoidingView/index.js +39 -14
  63. package/lib/commonjs/components/KeyboardAvoidingView/index.js.map +1 -1
  64. package/lib/commonjs/components/KeyboardAwareScrollView/index.js +94 -57
  65. package/lib/commonjs/components/KeyboardAwareScrollView/index.js.map +1 -1
  66. package/lib/commonjs/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js +5 -5
  67. package/lib/commonjs/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js.map +1 -1
  68. package/lib/commonjs/components/KeyboardAwareScrollView/utils.js.map +1 -1
  69. package/lib/commonjs/components/KeyboardChatScrollView/hooks.js +13 -0
  70. package/lib/commonjs/components/KeyboardChatScrollView/hooks.js.map +1 -0
  71. package/lib/commonjs/components/KeyboardChatScrollView/index.js +122 -0
  72. package/lib/commonjs/components/KeyboardChatScrollView/index.js.map +1 -0
  73. package/lib/commonjs/components/KeyboardChatScrollView/types.js +6 -0
  74. package/lib/commonjs/components/KeyboardChatScrollView/types.js.map +1 -0
  75. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/helpers.js +221 -0
  76. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/helpers.js.map +1 -0
  77. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/index.ios.js +149 -0
  78. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/index.ios.js.map +1 -0
  79. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/index.js +240 -0
  80. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/index.js.map +1 -0
  81. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/types.js +6 -0
  82. package/lib/commonjs/components/KeyboardChatScrollView/useChatKeyboard/types.js.map +1 -0
  83. package/lib/commonjs/components/KeyboardChatScrollView/useEndVisible.js +40 -0
  84. package/lib/commonjs/components/KeyboardChatScrollView/useEndVisible.js.map +1 -0
  85. package/lib/commonjs/components/KeyboardChatScrollView/useExtraContentPadding/index.js +92 -0
  86. package/lib/commonjs/components/KeyboardChatScrollView/useExtraContentPadding/index.js.map +1 -0
  87. package/lib/commonjs/components/KeyboardStickyView/index.js.map +1 -1
  88. package/lib/commonjs/components/KeyboardToolbar/Arrow.js +2 -3
  89. package/lib/commonjs/components/KeyboardToolbar/Arrow.js.map +1 -1
  90. package/lib/commonjs/components/KeyboardToolbar/Button.js +2 -3
  91. package/lib/commonjs/components/KeyboardToolbar/Button.js.map +1 -1
  92. package/lib/commonjs/components/KeyboardToolbar/colors.js.map +1 -1
  93. package/lib/commonjs/components/KeyboardToolbar/colors.native.js.map +1 -1
  94. package/lib/commonjs/components/KeyboardToolbar/compound/components/Background.js +13 -0
  95. package/lib/commonjs/components/KeyboardToolbar/compound/components/Background.js.map +1 -0
  96. package/lib/commonjs/components/KeyboardToolbar/compound/components/Content.js +25 -0
  97. package/lib/commonjs/components/KeyboardToolbar/compound/components/Content.js.map +1 -0
  98. package/lib/commonjs/components/KeyboardToolbar/compound/components/Done.js +58 -0
  99. package/lib/commonjs/components/KeyboardToolbar/compound/components/Done.js.map +1 -0
  100. package/lib/commonjs/components/KeyboardToolbar/compound/components/Next.js +49 -0
  101. package/lib/commonjs/components/KeyboardToolbar/compound/components/Next.js.map +1 -0
  102. package/lib/commonjs/components/KeyboardToolbar/compound/components/Prev.js +49 -0
  103. package/lib/commonjs/components/KeyboardToolbar/compound/components/Prev.js.map +1 -0
  104. package/lib/commonjs/components/KeyboardToolbar/compound/components/index.js +42 -0
  105. package/lib/commonjs/components/KeyboardToolbar/compound/components/index.js.map +1 -0
  106. package/lib/commonjs/components/KeyboardToolbar/compound/components/types.js +6 -0
  107. package/lib/commonjs/components/KeyboardToolbar/compound/components/types.js.map +1 -0
  108. package/lib/commonjs/components/KeyboardToolbar/compound/context.js +17 -0
  109. package/lib/commonjs/components/KeyboardToolbar/compound/context.js.map +1 -0
  110. package/lib/commonjs/components/KeyboardToolbar/constants.js +17 -0
  111. package/lib/commonjs/components/KeyboardToolbar/constants.js.map +1 -0
  112. package/lib/commonjs/components/KeyboardToolbar/index.js +98 -87
  113. package/lib/commonjs/components/KeyboardToolbar/index.js.map +1 -1
  114. package/lib/commonjs/components/KeyboardToolbar/types.js.map +1 -1
  115. package/lib/commonjs/components/ScrollViewWithBottomPadding/index.js +120 -0
  116. package/lib/commonjs/components/ScrollViewWithBottomPadding/index.js.map +1 -0
  117. package/lib/commonjs/components/ScrollViewWithBottomPadding/styles.js +15 -0
  118. package/lib/commonjs/components/ScrollViewWithBottomPadding/styles.js.map +1 -0
  119. package/lib/commonjs/components/hooks/useColorScheme.js.map +1 -1
  120. package/lib/commonjs/components/hooks/useCombinedRef.js +24 -0
  121. package/lib/commonjs/components/hooks/useCombinedRef.js.map +1 -0
  122. package/lib/commonjs/components/hooks/useScrollState.js +62 -0
  123. package/lib/commonjs/components/hooks/useScrollState.js.map +1 -0
  124. package/lib/commonjs/components/index.js +7 -0
  125. package/lib/commonjs/components/index.js.map +1 -1
  126. package/lib/commonjs/constants.js +3 -1
  127. package/lib/commonjs/constants.js.map +1 -1
  128. package/lib/commonjs/context.js +1 -0
  129. package/lib/commonjs/context.js.map +1 -1
  130. package/lib/commonjs/hooks/index.js +14 -1
  131. package/lib/commonjs/hooks/index.js.map +1 -1
  132. package/lib/commonjs/hooks/useKeyboardState/index.js +39 -0
  133. package/lib/commonjs/hooks/useKeyboardState/index.js.map +1 -0
  134. package/lib/commonjs/hooks/useWindowDimensions/index.android.js.map +1 -1
  135. package/lib/commonjs/hooks/useWindowDimensions/index.js.map +1 -1
  136. package/lib/commonjs/index.js +27 -1
  137. package/lib/commonjs/index.js.map +1 -1
  138. package/lib/commonjs/internal.js +54 -18
  139. package/lib/commonjs/internal.js.map +1 -1
  140. package/lib/commonjs/module.js +21 -12
  141. package/lib/commonjs/module.js.map +1 -1
  142. package/lib/commonjs/reanimated.js.map +1 -1
  143. package/lib/commonjs/reanimated.native.js.map +1 -1
  144. package/lib/commonjs/specs/ClippingScrollViewDecoratorViewNativeComponent.js +12 -0
  145. package/lib/commonjs/specs/ClippingScrollViewDecoratorViewNativeComponent.js.map +1 -0
  146. package/lib/commonjs/specs/KeyboardControllerViewNativeComponent.js +8 -2
  147. package/lib/commonjs/specs/KeyboardControllerViewNativeComponent.js.map +1 -1
  148. package/lib/commonjs/specs/KeyboardGestureAreaNativeComponent.js +2 -1
  149. package/lib/commonjs/specs/KeyboardGestureAreaNativeComponent.js.map +1 -1
  150. package/lib/commonjs/specs/KeyboardToolbarGroupViewNativeComponent.js +12 -0
  151. package/lib/commonjs/specs/KeyboardToolbarGroupViewNativeComponent.js.map +1 -0
  152. package/lib/commonjs/specs/NativeKeyboardController.js.map +1 -1
  153. package/lib/commonjs/specs/NativeStatusBarManagerCompat.js.map +1 -1
  154. package/lib/commonjs/specs/OverKeyboardViewNativeComponent.js.map +1 -1
  155. package/lib/commonjs/types.js.map +1 -1
  156. package/lib/commonjs/utils/findNodeHandle/index.js +9 -0
  157. package/lib/commonjs/utils/findNodeHandle/index.js.map +1 -0
  158. package/lib/commonjs/utils/findNodeHandle/index.native.js +13 -0
  159. package/lib/commonjs/utils/findNodeHandle/index.native.js.map +1 -0
  160. package/lib/commonjs/utils.js.map +1 -1
  161. package/lib/commonjs/views/KeyboardExtender/index.js +30 -0
  162. package/lib/commonjs/views/KeyboardExtender/index.js.map +1 -0
  163. package/lib/commonjs/views/OverKeyboardView/index.js.map +1 -1
  164. package/lib/commonjs/views/index.js +7 -0
  165. package/lib/commonjs/views/index.js.map +1 -1
  166. package/lib/module/animated.js +24 -13
  167. package/lib/module/animated.js.map +1 -1
  168. package/lib/module/architecture.js +2 -0
  169. package/lib/module/architecture.js.map +1 -0
  170. package/lib/module/bindings.js +39 -5
  171. package/lib/module/bindings.js.map +1 -1
  172. package/lib/module/bindings.native.js +27 -5
  173. package/lib/module/bindings.native.js.map +1 -1
  174. package/lib/module/compat.js +43 -0
  175. package/lib/module/compat.js.map +1 -0
  176. package/lib/module/components/KeyboardAvoidingView/hooks.js +22 -16
  177. package/lib/module/components/KeyboardAvoidingView/hooks.js.map +1 -1
  178. package/lib/module/components/KeyboardAvoidingView/index.js +38 -14
  179. package/lib/module/components/KeyboardAvoidingView/index.js.map +1 -1
  180. package/lib/module/components/KeyboardAwareScrollView/index.js +97 -60
  181. package/lib/module/components/KeyboardAwareScrollView/index.js.map +1 -1
  182. package/lib/module/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js +5 -5
  183. package/lib/module/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js.map +1 -1
  184. package/lib/module/components/KeyboardAwareScrollView/utils.js.map +1 -1
  185. package/lib/module/components/KeyboardChatScrollView/hooks.js +2 -0
  186. package/lib/module/components/KeyboardChatScrollView/hooks.js.map +1 -0
  187. package/lib/module/components/KeyboardChatScrollView/index.js +115 -0
  188. package/lib/module/components/KeyboardChatScrollView/index.js.map +1 -0
  189. package/lib/module/components/KeyboardChatScrollView/types.js +2 -0
  190. package/lib/module/components/KeyboardChatScrollView/types.js.map +1 -0
  191. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/helpers.js +207 -0
  192. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/helpers.js.map +1 -0
  193. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/index.ios.js +143 -0
  194. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/index.ios.js.map +1 -0
  195. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/index.js +234 -0
  196. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/index.js.map +1 -0
  197. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/types.js +2 -0
  198. package/lib/module/components/KeyboardChatScrollView/useChatKeyboard/types.js.map +1 -0
  199. package/lib/module/components/KeyboardChatScrollView/useEndVisible.js +33 -0
  200. package/lib/module/components/KeyboardChatScrollView/useEndVisible.js.map +1 -0
  201. package/lib/module/components/KeyboardChatScrollView/useExtraContentPadding/index.js +87 -0
  202. package/lib/module/components/KeyboardChatScrollView/useExtraContentPadding/index.js.map +1 -0
  203. package/lib/module/components/KeyboardStickyView/index.js.map +1 -1
  204. package/lib/module/components/KeyboardToolbar/Arrow.js +2 -2
  205. package/lib/module/components/KeyboardToolbar/Arrow.js.map +1 -1
  206. package/lib/module/components/KeyboardToolbar/Button.js +2 -2
  207. package/lib/module/components/KeyboardToolbar/Button.js.map +1 -1
  208. package/lib/module/components/KeyboardToolbar/colors.js.map +1 -1
  209. package/lib/module/components/KeyboardToolbar/colors.native.js.map +1 -1
  210. package/lib/module/components/KeyboardToolbar/compound/components/Background.js +6 -0
  211. package/lib/module/components/KeyboardToolbar/compound/components/Background.js.map +1 -0
  212. package/lib/module/components/KeyboardToolbar/compound/components/Content.js +18 -0
  213. package/lib/module/components/KeyboardToolbar/compound/components/Content.js.map +1 -0
  214. package/lib/module/components/KeyboardToolbar/compound/components/Done.js +50 -0
  215. package/lib/module/components/KeyboardToolbar/compound/components/Done.js.map +1 -0
  216. package/lib/module/components/KeyboardToolbar/compound/components/Next.js +41 -0
  217. package/lib/module/components/KeyboardToolbar/compound/components/Next.js.map +1 -0
  218. package/lib/module/components/KeyboardToolbar/compound/components/Prev.js +41 -0
  219. package/lib/module/components/KeyboardToolbar/compound/components/Prev.js.map +1 -0
  220. package/lib/module/components/KeyboardToolbar/compound/components/index.js +6 -0
  221. package/lib/module/components/KeyboardToolbar/compound/components/index.js.map +1 -0
  222. package/lib/module/components/KeyboardToolbar/compound/components/types.js +2 -0
  223. package/lib/module/components/KeyboardToolbar/compound/components/types.js.map +1 -0
  224. package/lib/module/components/KeyboardToolbar/compound/context.js +10 -0
  225. package/lib/module/components/KeyboardToolbar/compound/context.js.map +1 -0
  226. package/lib/module/components/KeyboardToolbar/constants.js +11 -0
  227. package/lib/module/components/KeyboardToolbar/constants.js.map +1 -0
  228. package/lib/module/components/KeyboardToolbar/index.js +98 -88
  229. package/lib/module/components/KeyboardToolbar/index.js.map +1 -1
  230. package/lib/module/components/KeyboardToolbar/types.js.map +1 -1
  231. package/lib/module/components/ScrollViewWithBottomPadding/index.js +112 -0
  232. package/lib/module/components/ScrollViewWithBottomPadding/index.js.map +1 -0
  233. package/lib/module/components/ScrollViewWithBottomPadding/styles.js +9 -0
  234. package/lib/module/components/ScrollViewWithBottomPadding/styles.js.map +1 -0
  235. package/lib/module/components/hooks/useColorScheme.js.map +1 -1
  236. package/lib/module/components/hooks/useCombinedRef.js +18 -0
  237. package/lib/module/components/hooks/useCombinedRef.js.map +1 -0
  238. package/lib/module/components/hooks/useScrollState.js +56 -0
  239. package/lib/module/components/hooks/useScrollState.js.map +1 -0
  240. package/lib/module/components/index.js +1 -0
  241. package/lib/module/components/index.js.map +1 -1
  242. package/lib/module/constants.js +3 -0
  243. package/lib/module/constants.js.map +1 -1
  244. package/lib/module/context.js +1 -0
  245. package/lib/module/context.js.map +1 -1
  246. package/lib/module/hooks/index.js +3 -1
  247. package/lib/module/hooks/index.js.map +1 -1
  248. package/lib/module/hooks/useKeyboardState/index.js +33 -0
  249. package/lib/module/hooks/useKeyboardState/index.js.map +1 -0
  250. package/lib/module/hooks/useWindowDimensions/index.android.js.map +1 -1
  251. package/lib/module/hooks/useWindowDimensions/index.js.map +1 -1
  252. package/lib/module/index.js +3 -2
  253. package/lib/module/index.js.map +1 -1
  254. package/lib/module/internal.js +53 -18
  255. package/lib/module/internal.js.map +1 -1
  256. package/lib/module/module.js +21 -12
  257. package/lib/module/module.js.map +1 -1
  258. package/lib/module/reanimated.js.map +1 -1
  259. package/lib/module/reanimated.native.js.map +1 -1
  260. package/lib/module/specs/ClippingScrollViewDecoratorViewNativeComponent.js +6 -0
  261. package/lib/module/specs/ClippingScrollViewDecoratorViewNativeComponent.js.map +1 -0
  262. package/lib/module/specs/KeyboardControllerViewNativeComponent.js +7 -1
  263. package/lib/module/specs/KeyboardControllerViewNativeComponent.js.map +1 -1
  264. package/lib/module/specs/KeyboardGestureAreaNativeComponent.js +2 -1
  265. package/lib/module/specs/KeyboardGestureAreaNativeComponent.js.map +1 -1
  266. package/lib/module/specs/KeyboardToolbarGroupViewNativeComponent.js +5 -0
  267. package/lib/module/specs/KeyboardToolbarGroupViewNativeComponent.js.map +1 -0
  268. package/lib/module/specs/NativeKeyboardController.js.map +1 -1
  269. package/lib/module/specs/NativeStatusBarManagerCompat.js.map +1 -1
  270. package/lib/module/specs/OverKeyboardViewNativeComponent.js.map +1 -1
  271. package/lib/module/types.js.map +1 -1
  272. package/lib/module/utils/findNodeHandle/index.js +2 -0
  273. package/lib/module/utils/findNodeHandle/index.js.map +1 -0
  274. package/lib/module/utils/findNodeHandle/index.native.js +3 -0
  275. package/lib/module/utils/findNodeHandle/index.native.js.map +1 -0
  276. package/lib/module/utils.js.map +1 -1
  277. package/lib/module/views/KeyboardExtender/index.js +23 -0
  278. package/lib/module/views/KeyboardExtender/index.js.map +1 -0
  279. package/lib/module/views/OverKeyboardView/index.js.map +1 -1
  280. package/lib/module/views/index.js +1 -0
  281. package/lib/module/views/index.js.map +1 -1
  282. package/lib/typescript/animated.d.ts +2 -38
  283. package/lib/typescript/architecture.d.ts +1 -0
  284. package/lib/typescript/bindings.d.ts +15 -1
  285. package/lib/typescript/bindings.native.d.ts +10 -1
  286. package/lib/typescript/compat.d.ts +12 -0
  287. package/lib/typescript/components/KeyboardAvoidingView/index.d.ts +5 -0
  288. package/lib/typescript/components/KeyboardAwareScrollView/index.d.ts +4 -1
  289. package/lib/typescript/components/KeyboardChatScrollView/hooks.d.ts +2 -0
  290. package/lib/typescript/components/KeyboardChatScrollView/index.d.ts +17 -0
  291. package/lib/typescript/components/KeyboardChatScrollView/types.d.ts +113 -0
  292. package/lib/typescript/components/KeyboardChatScrollView/useChatKeyboard/helpers.d.ts +132 -0
  293. package/lib/typescript/components/KeyboardChatScrollView/useChatKeyboard/index.d.ts +18 -0
  294. package/lib/typescript/components/KeyboardChatScrollView/useChatKeyboard/index.ios.d.ts +21 -0
  295. package/lib/typescript/components/KeyboardChatScrollView/useChatKeyboard/types.d.ts +37 -0
  296. package/lib/typescript/components/KeyboardChatScrollView/useEndVisible.d.ts +17 -0
  297. package/lib/typescript/components/KeyboardChatScrollView/useExtraContentPadding/index.d.ts +45 -0
  298. package/lib/typescript/components/KeyboardToolbar/Button.d.ts +2 -2
  299. package/lib/typescript/components/KeyboardToolbar/compound/components/Background.d.ts +6 -0
  300. package/lib/typescript/components/KeyboardToolbar/compound/components/Content.d.ts +7 -0
  301. package/lib/typescript/components/KeyboardToolbar/compound/components/Done.d.ts +7 -0
  302. package/lib/typescript/components/KeyboardToolbar/compound/components/Next.d.ts +4 -0
  303. package/lib/typescript/components/KeyboardToolbar/compound/components/Prev.d.ts +4 -0
  304. package/lib/typescript/components/KeyboardToolbar/compound/components/index.d.ts +5 -0
  305. package/lib/typescript/components/KeyboardToolbar/compound/components/types.d.ts +14 -0
  306. package/lib/typescript/components/KeyboardToolbar/compound/context.d.ts +9 -0
  307. package/lib/typescript/components/KeyboardToolbar/constants.d.ts +10 -0
  308. package/lib/typescript/components/KeyboardToolbar/index.d.ts +12 -45
  309. package/lib/typescript/components/KeyboardToolbar/types.d.ts +24 -1
  310. package/lib/typescript/components/ScrollViewWithBottomPadding/index.d.ts +30 -0
  311. package/lib/typescript/components/ScrollViewWithBottomPadding/styles.d.ts +7 -0
  312. package/lib/typescript/components/hooks/useCombinedRef.d.ts +3 -0
  313. package/lib/typescript/components/hooks/useScrollState.d.ts +17 -0
  314. package/lib/typescript/components/index.d.ts +3 -0
  315. package/lib/typescript/constants.d.ts +1 -0
  316. package/lib/typescript/context.d.ts +1 -0
  317. package/lib/typescript/hooks/index.d.ts +2 -0
  318. package/lib/typescript/hooks/useKeyboardState/index.d.ts +4 -0
  319. package/lib/typescript/index.d.ts +4 -3
  320. package/lib/typescript/internal.d.ts +4 -0
  321. package/lib/typescript/specs/ClippingScrollViewDecoratorViewNativeComponent.d.ts +10 -0
  322. package/lib/typescript/specs/KeyboardControllerViewNativeComponent.d.ts +4 -0
  323. package/lib/typescript/specs/KeyboardToolbarGroupViewNativeComponent.d.ts +6 -0
  324. package/lib/typescript/specs/NativeKeyboardController.d.ts +6 -2
  325. package/lib/typescript/types.d.ts +81 -5
  326. package/lib/typescript/utils/findNodeHandle/index.d.ts +4 -0
  327. package/lib/typescript/utils/findNodeHandle/index.native.d.ts +2 -0
  328. package/lib/typescript/views/KeyboardExtender/index.d.ts +5 -0
  329. package/lib/typescript/views/index.d.ts +1 -0
  330. package/package.json +183 -174
  331. package/src/animated.tsx +248 -255
  332. package/src/architecture.ts +1 -0
  333. package/src/bindings.native.ts +97 -62
  334. package/src/bindings.ts +81 -42
  335. package/src/compat.ts +44 -0
  336. package/src/components/KeyboardAvoidingView/hooks.ts +130 -123
  337. package/src/components/KeyboardAvoidingView/index.tsx +232 -188
  338. package/src/components/KeyboardAwareScrollView/index.tsx +452 -389
  339. package/src/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.ts +133 -133
  340. package/src/components/KeyboardAwareScrollView/utils.ts +41 -41
  341. package/src/components/KeyboardChatScrollView/hooks.ts +2 -0
  342. package/src/components/KeyboardChatScrollView/index.tsx +164 -0
  343. package/src/components/KeyboardChatScrollView/types.ts +117 -0
  344. package/src/components/KeyboardChatScrollView/useChatKeyboard/helpers.ts +268 -0
  345. package/src/components/KeyboardChatScrollView/useChatKeyboard/index.ios.ts +260 -0
  346. package/src/components/KeyboardChatScrollView/useChatKeyboard/index.ts +374 -0
  347. package/src/components/KeyboardChatScrollView/useChatKeyboard/types.ts +39 -0
  348. package/src/components/KeyboardChatScrollView/useEndVisible.ts +66 -0
  349. package/src/components/KeyboardChatScrollView/useExtraContentPadding/index.ts +149 -0
  350. package/src/components/KeyboardStickyView/index.tsx +66 -66
  351. package/src/components/KeyboardToolbar/Arrow.tsx +80 -80
  352. package/src/components/KeyboardToolbar/Button.tsx +98 -98
  353. package/src/components/KeyboardToolbar/colors.native.ts +37 -37
  354. package/src/components/KeyboardToolbar/colors.ts +16 -16
  355. package/src/components/KeyboardToolbar/compound/components/Background.tsx +9 -0
  356. package/src/components/KeyboardToolbar/compound/components/Content.tsx +25 -0
  357. package/src/components/KeyboardToolbar/compound/components/Done.tsx +57 -0
  358. package/src/components/KeyboardToolbar/compound/components/Next.tsx +49 -0
  359. package/src/components/KeyboardToolbar/compound/components/Prev.tsx +49 -0
  360. package/src/components/KeyboardToolbar/compound/components/index.ts +5 -0
  361. package/src/components/KeyboardToolbar/compound/components/types.ts +15 -0
  362. package/src/components/KeyboardToolbar/compound/context.ts +25 -0
  363. package/src/components/KeyboardToolbar/constants.ts +14 -0
  364. package/src/components/KeyboardToolbar/index.tsx +220 -223
  365. package/src/components/KeyboardToolbar/types.ts +72 -40
  366. package/src/components/ScrollViewWithBottomPadding/index.tsx +216 -0
  367. package/src/components/ScrollViewWithBottomPadding/styles.ts +10 -0
  368. package/src/components/hooks/useColorScheme.ts +6 -6
  369. package/src/components/hooks/useCombinedRef.ts +22 -0
  370. package/src/components/hooks/useScrollState.ts +81 -0
  371. package/src/components/index.ts +14 -11
  372. package/src/constants.ts +23 -19
  373. package/src/context.ts +70 -68
  374. package/src/hooks/index.ts +91 -90
  375. package/src/hooks/useKeyboardState/index.ts +52 -0
  376. package/src/hooks/useWindowDimensions/index.android.ts +38 -38
  377. package/src/hooks/useWindowDimensions/index.ts +1 -1
  378. package/src/index.ts +27 -23
  379. package/src/internal.ts +146 -84
  380. package/src/module.ts +64 -52
  381. package/src/reanimated.native.ts +132 -132
  382. package/src/reanimated.ts +29 -29
  383. package/src/specs/ClippingScrollViewDecoratorViewNativeComponent.ts +19 -0
  384. package/src/specs/KeyboardControllerViewNativeComponent.ts +82 -71
  385. package/src/specs/KeyboardGestureAreaNativeComponent.ts +21 -20
  386. package/src/specs/KeyboardToolbarGroupViewNativeComponent.ts +10 -0
  387. package/src/specs/NativeKeyboardController.ts +23 -19
  388. package/src/specs/NativeStatusBarManagerCompat.ts +14 -14
  389. package/src/specs/OverKeyboardViewNativeComponent.ts +12 -12
  390. package/src/types.ts +330 -243
  391. package/src/utils/findNodeHandle/index.native.ts +3 -0
  392. package/src/utils/findNodeHandle/index.ts +6 -0
  393. package/src/utils.ts +1 -1
  394. package/src/views/KeyboardExtender/index.tsx +30 -0
  395. package/src/views/OverKeyboardView/index.tsx +43 -43
  396. package/src/views/index.ts +2 -1
  397. package/lib/commonjs/monkey-patch.android.js +0 -57
  398. package/lib/commonjs/monkey-patch.android.js.map +0 -1
  399. package/lib/commonjs/monkey-patch.js +0 -11
  400. package/lib/commonjs/monkey-patch.js.map +0 -1
  401. package/lib/module/monkey-patch.android.js +0 -47
  402. package/lib/module/monkey-patch.android.js.map +0 -1
  403. package/lib/module/monkey-patch.js +0 -5
  404. package/lib/module/monkey-patch.js.map +0 -1
  405. package/lib/typescript/monkey-patch.android.d.ts +0 -2
  406. package/lib/typescript/monkey-patch.d.ts +0 -2
  407. package/src/monkey-patch.android.ts +0 -44
  408. package/src/monkey-patch.ts +0 -4
package/src/animated.tsx CHANGED
@@ -1,255 +1,248 @@
1
- import React, { useEffect, useMemo, useState } from "react";
2
- import { Animated, Platform, StyleSheet } from "react-native";
3
- import Reanimated, { useSharedValue } from "react-native-reanimated";
4
-
5
- import { KeyboardControllerView } from "./bindings";
6
- import { KeyboardContext } from "./context";
7
- import { useAnimatedValue, useSharedHandlers } from "./internal";
8
- import { applyMonkeyPatch, revertMonkeyPatch } from "./monkey-patch";
9
- import {
10
- useAnimatedKeyboardHandler,
11
- useFocusedInputLayoutHandler,
12
- useFocusedInputSelectionHandler,
13
- useFocusedInputTextHandler,
14
- } from "./reanimated";
15
-
16
- import type { KeyboardAnimationContext } from "./context";
17
- import type {
18
- FocusedInputHandler,
19
- FocusedInputLayoutChangedEvent,
20
- KeyboardControllerProps,
21
- KeyboardHandler,
22
- NativeEvent,
23
- } from "./types";
24
- import type { ViewStyle } from "react-native";
25
-
26
- const KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(
27
- Animated.createAnimatedComponent(
28
- KeyboardControllerView,
29
- ) as React.FC<KeyboardControllerProps>,
30
- );
31
-
32
- type Styles = {
33
- container: ViewStyle;
34
- hidden: ViewStyle;
35
- };
36
-
37
- const styles = StyleSheet.create<Styles>({
38
- container: {
39
- flex: 1,
40
- },
41
- hidden: {
42
- display: "none",
43
- position: "absolute",
44
- },
45
- });
46
-
47
- type KeyboardProviderProps = {
48
- children: React.ReactNode;
49
- /**
50
- * Set the value to `true`, if you use translucent status bar on Android.
51
- * If you already control status bar translucency via `react-native-screens`
52
- * or `StatusBar` component from `react-native`, you can ignore it.
53
- * Defaults to `false`.
54
- *
55
- * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/14
56
- * @platform android
57
- */
58
- statusBarTranslucent?: boolean;
59
- /**
60
- * Set the value to `true`, if you use translucent navigation bar on Android.
61
- * Defaults to `false`.
62
- *
63
- * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/119
64
- * @platform android
65
- */
66
- navigationBarTranslucent?: boolean;
67
- /**
68
- * A boolean property indicating whether to keep edge-to-edge mode always enabled (even when you disable the module).
69
- * Defaults to `false`.
70
- *
71
- * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/592
72
- * @platform android
73
- */
74
- preserveEdgeToEdge?: boolean;
75
- /**
76
- * A boolean prop indicating whether the module is enabled. It indicate only initial state,
77
- * i. e. if you try to change this prop after component mount it will not have any effect.
78
- * To change the property in runtime use `useKeyboardController` hook and `setEnabled` method.
79
- * Defaults to `true`.
80
- */
81
- enabled?: boolean;
82
- };
83
-
84
- // capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package
85
- // see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details
86
- const OS = Platform.OS;
87
-
88
- export const KeyboardProvider = ({
89
- children,
90
- statusBarTranslucent,
91
- navigationBarTranslucent,
92
- preserveEdgeToEdge,
93
- enabled: initiallyEnabled = true,
94
- }: KeyboardProviderProps) => {
95
- // state
96
- const [enabled, setEnabled] = useState(initiallyEnabled);
97
- // animated values
98
- const progress = useAnimatedValue(0);
99
- const height = useAnimatedValue(0);
100
- // shared values
101
- const progressSV = useSharedValue(0);
102
- const heightSV = useSharedValue(0);
103
- const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);
104
- const [setKeyboardHandlers, broadcastKeyboardEvents] =
105
- useSharedHandlers<KeyboardHandler>();
106
- const [setInputHandlers, broadcastInputEvents] =
107
- useSharedHandlers<FocusedInputHandler>();
108
- // memo
109
- const context = useMemo<KeyboardAnimationContext>(
110
- () => ({
111
- enabled,
112
- animated: { progress: progress, height: Animated.multiply(height,-1) },
113
- reanimated: { progress: progressSV, height: heightSV },
114
- layout,
115
- setKeyboardHandlers,
116
- setInputHandlers,
117
- setEnabled,
118
- }),
119
- [enabled],
120
- );
121
- const style = useMemo(
122
- () => [
123
- styles.hidden,
124
- { transform: [{ translateX: height }, { translateY: progress }] },
125
- ],
126
- [],
127
- );
128
- const onKeyboardMove = useMemo(
129
- () =>
130
- Animated.event(
131
- [
132
- {
133
- nativeEvent: {
134
- progress,
135
- height,
136
- },
137
- },
138
- ],
139
- { useNativeDriver:Platform.OS as string=='harmony'?false:true },
140
- ),
141
- [],
142
- );
143
- // handlers
144
- const updateSharedValues = (event: NativeEvent, platforms: string[]) => {
145
- "worklet";
146
-
147
- if (platforms.includes(OS)) {
148
- // eslint-disable-next-line react-compiler/react-compiler
149
- progressSV.value = event.progress;
150
- heightSV.value = -event.height;
151
- }
152
- };
153
- const keyboardHandler = useAnimatedKeyboardHandler(
154
- {
155
- onKeyboardMoveStart: (event: NativeEvent) => {
156
- "worklet";
157
-
158
- broadcastKeyboardEvents("onStart", event);
159
- updateSharedValues(event, ["ios"]);
160
- },
161
- onKeyboardMove: (event: NativeEvent) => {
162
- "worklet";
163
-
164
- broadcastKeyboardEvents("onMove", event);
165
- updateSharedValues(event, ["android"]);
166
- },
167
- onKeyboardMoveEnd: (event: NativeEvent) => {
168
- "worklet";
169
- broadcastKeyboardEvents("onEnd", event);
170
- updateSharedValues(event, ['harmony']);
171
- },
172
- onKeyboardMoveInteractive: (event: NativeEvent) => {
173
- "worklet";
174
-
175
- updateSharedValues(event, ["android", "ios"]);
176
- broadcastKeyboardEvents("onInteractive", event);
177
- },
178
- },
179
- [],
180
- );
181
- const inputLayoutHandler = useFocusedInputLayoutHandler(
182
- {
183
- onFocusedInputLayoutChanged: (e) => {
184
- "worklet";
185
-
186
- if (e.target !== -1) {
187
- layout.value = e;
188
- } else {
189
- layout.value = null;
190
- }
191
- },
192
- },
193
- [],
194
- );
195
- const inputTextHandler = useFocusedInputTextHandler(
196
- {
197
- onFocusedInputTextChanged: (e) => {
198
- "worklet";
199
-
200
- broadcastInputEvents("onChangeText", e);
201
- },
202
- },
203
- [],
204
- );
205
- const inputSelectionHandler = useFocusedInputSelectionHandler(
206
- {
207
- onFocusedInputSelectionChanged: (e) => {
208
- "worklet";
209
- broadcastInputEvents("onSelectionChange", e);
210
- },
211
- },
212
- [],
213
- );
214
- // effects
215
- useEffect(() => {
216
- if (enabled) {
217
- applyMonkeyPatch();
218
- } else {
219
- revertMonkeyPatch();
220
- }
221
- }, [enabled]);
222
-
223
- return (
224
- <KeyboardContext.Provider value={context}>
225
- <KeyboardControllerViewAnimated
226
- enabled={enabled}
227
- onKeyboardMoveReanimated={keyboardHandler}
228
- onKeyboardMoveStart={OS === "ios" ? onKeyboardMove : undefined}
229
- onKeyboardMove={OS === "android" ? onKeyboardMove : undefined}
230
- onKeyboardMoveInteractive={onKeyboardMove}
231
- onKeyboardMoveEnd={ OS as string === "harmony"?onKeyboardMove:undefined}
232
- onFocusedInputLayoutChangedReanimated={inputLayoutHandler}
233
- onFocusedInputTextChangedReanimated={inputTextHandler}
234
- onFocusedInputSelectionChangedReanimated={inputSelectionHandler}
235
- navigationBarTranslucent={navigationBarTranslucent}
236
- statusBarTranslucent={statusBarTranslucent}
237
- preserveEdgeToEdge={preserveEdgeToEdge}
238
- style={styles.container}
239
- >
240
- {children}
241
- </KeyboardControllerViewAnimated>
242
- <Animated.View
243
- // we are using this small hack, because if the component (where
244
- // animated value has been used) is unmounted, then animation will
245
- // stop receiving events (seems like it's react-native optimization).
246
- // So we need to keep a reference to the animated value, to keep it's
247
- // always mounted (keep a reference to an animated value).
248
- //
249
- // To test why it's needed, try to open screen which consumes Animated.Value
250
- // then close it and open it again (for example 'Animated transition').
251
- style={style}
252
- />
253
- </KeyboardContext.Provider>
254
- );
255
- };
1
+ import React, {
2
+ useCallback,
3
+ useEffect,
4
+ useMemo,
5
+ useRef,
6
+ useState,
7
+ } from "react";
8
+ import { Animated, Platform, StyleSheet } from "react-native";
9
+ import Reanimated, { useSharedValue } from "react-native-reanimated";
10
+
11
+ import {
12
+ FocusedInputEvents,
13
+ KeyboardControllerView,
14
+ KeyboardControllerViewCommands,
15
+ } from "./bindings";
16
+ import { KeyboardContext } from "./context";
17
+ import { useAnimatedValue, useSharedHandlers } from "./internal";
18
+ import { KeyboardController } from "./module";
19
+ import {
20
+ useAnimatedKeyboardHandler,
21
+ useFocusedInputLayoutHandler,
22
+ useFocusedInputSelectionHandler,
23
+ useFocusedInputTextHandler,
24
+ } from "./reanimated";
25
+
26
+ import type { KeyboardAnimationContext } from "./context";
27
+ import type {
28
+ FocusedInputHandler,
29
+ FocusedInputLayoutChangedEvent,
30
+ KeyboardControllerProps,
31
+ KeyboardHandler,
32
+ KeyboardProviderProps,
33
+ NativeEvent,
34
+ } from "./types";
35
+ import type { ViewStyle } from "react-native";
36
+
37
+ const KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(
38
+ Animated.createAnimatedComponent(
39
+ KeyboardControllerView,
40
+ ) as React.FC<KeyboardControllerProps>,
41
+ ) as React.ComponentType<
42
+ KeyboardControllerProps &
43
+ React.RefAttributes<React.Component<KeyboardControllerProps>>
44
+ >;
45
+
46
+ type Styles = {
47
+ container: ViewStyle;
48
+ hidden: ViewStyle;
49
+ };
50
+
51
+ const styles = StyleSheet.create<Styles>({
52
+ container: {
53
+ flex: 1,
54
+ },
55
+ hidden: {
56
+ display: "none",
57
+ position: "absolute",
58
+ },
59
+ });
60
+
61
+ // capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package
62
+ // see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details
63
+ const OS = Platform.OS;
64
+
65
+ export const KeyboardProvider = ({
66
+ children,
67
+ statusBarTranslucent,
68
+ navigationBarTranslucent,
69
+ preserveEdgeToEdge,
70
+ enabled: initiallyEnabled = true,
71
+ preload = true,
72
+ }: KeyboardProviderProps) => {
73
+ const viewRef = useRef<React.Component<KeyboardControllerProps>>(null);
74
+ // state
75
+ const [enabled, setEnabled] = useState(initiallyEnabled);
76
+ // animated values
77
+ const progress = useAnimatedValue(0);
78
+ const height = useAnimatedValue(0);
79
+ // shared values
80
+ const progressSV = useSharedValue(0);
81
+ const heightSV = useSharedValue(0);
82
+ const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);
83
+ const [setKeyboardHandlers, broadcastKeyboardEvents] =
84
+ useSharedHandlers<KeyboardHandler>();
85
+ const [setInputHandlers, broadcastInputEvents] =
86
+ useSharedHandlers<FocusedInputHandler>();
87
+ const update = useCallback(async () => {
88
+ KeyboardControllerViewCommands.synchronizeFocusedInputLayout(
89
+ viewRef.current,
90
+ );
91
+
92
+ await new Promise((resolve) => {
93
+ const subscription = FocusedInputEvents.addListener(
94
+ "layoutDidSynchronize",
95
+ () => {
96
+ subscription.remove();
97
+ resolve(null);
98
+ },
99
+ );
100
+ });
101
+ }, []);
102
+ // memo
103
+ const context = useMemo<KeyboardAnimationContext>(
104
+ () => ({
105
+ enabled,
106
+ animated: { progress: progress, height: Animated.multiply(height,-1) },
107
+ reanimated: { progress: progressSV, height: heightSV },
108
+ layout,
109
+ update,
110
+ setKeyboardHandlers,
111
+ setInputHandlers,
112
+ setEnabled,
113
+ }),
114
+ [enabled, update],
115
+ );
116
+ const style = useMemo(
117
+ () => [
118
+ styles.hidden,
119
+ { transform: [{ translateX: height }, { translateY: progress }] },
120
+ ],
121
+ [],
122
+ );
123
+ const onKeyboardMove = useMemo(
124
+ () =>
125
+ Animated.event(
126
+ [
127
+ {
128
+ nativeEvent: {
129
+ progress,
130
+ height,
131
+ },
132
+ },
133
+ ],
134
+ { useNativeDriver:Platform.OS as string=='harmony'?false:true },
135
+ ),
136
+ [],
137
+ );
138
+ // handlers
139
+ const updateSharedValues = (event: NativeEvent, platforms: string[]) => {
140
+ "worklet";
141
+
142
+ if (platforms.includes(OS)) {
143
+ // eslint-disable-next-line react-compiler/react-compiler
144
+ progressSV.value = event.progress;
145
+ heightSV.value = -event.height;
146
+ }
147
+ };
148
+ const keyboardHandler = useAnimatedKeyboardHandler(
149
+ {
150
+ onKeyboardMoveStart: (event: NativeEvent) => {
151
+ "worklet";
152
+
153
+ broadcastKeyboardEvents("onStart", event);
154
+ updateSharedValues(event, ["ios"]);
155
+ },
156
+ onKeyboardMove: (event: NativeEvent) => {
157
+ "worklet";
158
+
159
+ broadcastKeyboardEvents("onMove", event);
160
+ updateSharedValues(event, ["android", "harmony"]);
161
+ },
162
+ onKeyboardMoveEnd: (event: NativeEvent) => {
163
+ "worklet";
164
+ broadcastKeyboardEvents("onEnd", event);
165
+ updateSharedValues(event, ["android", "harmony"]);
166
+ },
167
+ onKeyboardMoveInteractive: (event: NativeEvent) => {
168
+ "worklet";
169
+
170
+ updateSharedValues(event, ["android", "ios"]);
171
+ broadcastKeyboardEvents("onInteractive", event);
172
+ },
173
+ },
174
+ [],
175
+ );
176
+ const inputLayoutHandler = useFocusedInputLayoutHandler(
177
+ {
178
+ onFocusedInputLayoutChanged: (e) => {
179
+ "worklet";
180
+
181
+ if (e.target !== -1) {
182
+ layout.value = e;
183
+ } else {
184
+ layout.value = null;
185
+ }
186
+ },
187
+ },
188
+ [],
189
+ );
190
+ const inputTextHandler = useFocusedInputTextHandler(
191
+ {
192
+ onFocusedInputTextChanged: (e) => {
193
+ "worklet";
194
+
195
+ broadcastInputEvents("onChangeText", e);
196
+ },
197
+ },
198
+ [],
199
+ );
200
+ const inputSelectionHandler = useFocusedInputSelectionHandler(
201
+ {
202
+ onFocusedInputSelectionChanged: (e) => {
203
+ "worklet";
204
+ broadcastInputEvents("onSelectionChange", e);
205
+ },
206
+ },
207
+ [],
208
+ );
209
+ useEffect(() => {
210
+ if (preload) {
211
+ KeyboardController.preload();
212
+ }
213
+ }, [preload]);
214
+
215
+ return (
216
+ <KeyboardContext.Provider value={context}>
217
+ <KeyboardControllerViewAnimated
218
+ ref={viewRef}
219
+ enabled={enabled}
220
+ onKeyboardMoveReanimated={keyboardHandler}
221
+ onKeyboardMoveStart={OS === "ios" ? onKeyboardMove : undefined}
222
+ onKeyboardMove={OS === "android" ? onKeyboardMove : undefined}
223
+ onKeyboardMoveInteractive={onKeyboardMove}
224
+ onKeyboardMoveEnd={ OS as string === "harmony"?onKeyboardMove:undefined}
225
+ onFocusedInputLayoutChangedReanimated={inputLayoutHandler}
226
+ onFocusedInputTextChangedReanimated={inputTextHandler}
227
+ onFocusedInputSelectionChangedReanimated={inputSelectionHandler}
228
+ navigationBarTranslucent={navigationBarTranslucent}
229
+ statusBarTranslucent={statusBarTranslucent}
230
+ preserveEdgeToEdge={preserveEdgeToEdge}
231
+ style={styles.container}
232
+ >
233
+ {children}
234
+ </KeyboardControllerViewAnimated>
235
+ <Animated.View
236
+ // we are using this small hack, because if the component (where
237
+ // animated value has been used) is unmounted, then animation will
238
+ // stop receiving events (seems like it's react-native optimization).
239
+ // So we need to keep a reference to the animated value, to keep it's
240
+ // always mounted (keep a reference to an animated value).
241
+ //
242
+ // To test why it's needed, try to open screen which consumes Animated.Value
243
+ // then close it and open it again (for example 'Animated transition').
244
+ style={style}
245
+ />
246
+ </KeyboardContext.Provider>
247
+ );
248
+ };
@@ -0,0 +1 @@
1
+ export const IS_FABRIC = "nativeFabricUIManager" in global;