@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
@@ -0,0 +1,216 @@
1
+ import React, { forwardRef, useState } from "react";
2
+ import { Platform } from "react-native";
3
+ import Reanimated, {
4
+ runOnJS,
5
+ useAnimatedProps,
6
+ useAnimatedReaction,
7
+ useDerivedValue,
8
+ useSharedValue,
9
+ } from "react-native-reanimated";
10
+
11
+ import { ClippingScrollView } from "../../bindings";
12
+
13
+ import styles from "./styles";
14
+
15
+ import type { ScrollViewProps } from "react-native";
16
+ import type { SharedValue } from "react-native-reanimated";
17
+
18
+ const OS = Platform.OS;
19
+ const ReanimatedClippingScrollView =
20
+ OS === "android" || (OS as string) === "harmony"
21
+ ? Reanimated.createAnimatedComponent(ClippingScrollView)
22
+ : ClippingScrollView;
23
+
24
+ type AnimatedScrollViewProps = React.ComponentProps<
25
+ typeof Reanimated.ScrollView
26
+ >;
27
+
28
+ export type AnimatedScrollViewComponent = React.ForwardRefExoticComponent<
29
+ AnimatedScrollViewProps & React.RefAttributes<Reanimated.ScrollView>
30
+ >;
31
+
32
+ export type ScrollViewContentInsets = {
33
+ top: number;
34
+ bottom: number;
35
+ left: number;
36
+ right: number;
37
+ };
38
+
39
+ type ScrollViewWithBottomPaddingProps = {
40
+ ScrollViewComponent: AnimatedScrollViewComponent;
41
+ children?: React.ReactNode;
42
+ inverted?: boolean;
43
+ bottomPadding: SharedValue<number>;
44
+ /** Padding for scroll indicator insets (excludes blankSpace). Falls back to bottomPadding when not provided. */
45
+ scrollIndicatorPadding?: SharedValue<number>;
46
+ /** Absolute Y content offset (iOS only, for KeyboardChatScrollView). */
47
+ contentOffsetY?: SharedValue<number>;
48
+ applyWorkaroundForContentInsetHitTestBug?: boolean;
49
+ /**
50
+ * Fires whenever the effective content inset changes (combines the static `contentInset`
51
+ * prop with the dynamic keyboard-driven padding). Useful on Android where the synthetic
52
+ * inset is not reflected in `onScroll` events.
53
+ */
54
+ onContentInsetChange?: (insets: ScrollViewContentInsets) => void;
55
+ } & ScrollViewProps;
56
+
57
+ const ScrollViewWithBottomPadding = forwardRef<
58
+ Reanimated.ScrollView,
59
+ ScrollViewWithBottomPaddingProps
60
+ >(
61
+ (
62
+ {
63
+ ScrollViewComponent,
64
+ bottomPadding,
65
+ scrollIndicatorPadding,
66
+ contentInset,
67
+ scrollIndicatorInsets,
68
+ inverted,
69
+ contentOffsetY,
70
+ applyWorkaroundForContentInsetHitTestBug,
71
+ onContentInsetChange,
72
+ contentContainerStyle,
73
+ children,
74
+ ...rest
75
+ },
76
+ ref,
77
+ ) => {
78
+ const prevContentOffsetY = useSharedValue<number | null>(null);
79
+
80
+ // HarmonyOS workaround: ArkUI ScrollView's scrollable range only follows
81
+ // contentSize (contentInset prop is dropped, padding/scrollToOverflowEnabled
82
+ // don't extend it). So we mirror the keyboard-driven bottomPadding into the
83
+ // inner ScrollView's contentContainerStyle.paddingBottom to actually expand
84
+ // contentSize, letting the worklet's scrollTo reach the keyboard area.
85
+ const isHarmony = (OS as string) === "harmony";
86
+ const [harmonyKbPad, setHarmonyKbPad] = useState(0);
87
+ useAnimatedReaction(
88
+ () => (isHarmony ? bottomPadding.value : 0),
89
+ (cur, prev) => {
90
+ if (isHarmony && cur !== prev) {
91
+ runOnJS(setHarmonyKbPad)(Math.round(cur));
92
+ }
93
+ },
94
+ [isHarmony],
95
+ );
96
+
97
+ const insets = useDerivedValue(() => {
98
+ const dynamicTop = inverted ? bottomPadding.value : 0;
99
+ const dynamicBottom = !inverted ? bottomPadding.value : 0;
100
+
101
+ return {
102
+ dynamic: {
103
+ top: dynamicTop,
104
+ bottom: dynamicBottom,
105
+ },
106
+ effective: {
107
+ top: dynamicTop + (contentInset?.top || 0),
108
+ bottom: dynamicBottom + (contentInset?.bottom || 0),
109
+ left: contentInset?.left || 0,
110
+ right: contentInset?.right || 0,
111
+ } as ScrollViewContentInsets,
112
+ };
113
+ }, [
114
+ inverted,
115
+ contentInset?.top,
116
+ contentInset?.bottom,
117
+ contentInset?.left,
118
+ contentInset?.right,
119
+ ]);
120
+
121
+ useAnimatedReaction(
122
+ () => insets.value.effective,
123
+ (current, previous) => {
124
+ if (!onContentInsetChange) {
125
+ return;
126
+ }
127
+ if (
128
+ previous &&
129
+ current.top === previous.top &&
130
+ current.bottom === previous.bottom &&
131
+ current.left === previous.left &&
132
+ current.right === previous.right
133
+ ) {
134
+ return;
135
+ }
136
+ runOnJS(onContentInsetChange)(current);
137
+ },
138
+ [onContentInsetChange],
139
+ );
140
+
141
+ const animatedProps = useAnimatedProps(() => {
142
+ const { dynamic, effective } = insets.value;
143
+
144
+ const indicatorPadding = scrollIndicatorPadding ?? bottomPadding;
145
+ const indicatorTop =
146
+ (inverted ? indicatorPadding.value : 0) +
147
+ (scrollIndicatorInsets?.top || 0);
148
+ const indicatorBottom =
149
+ (!inverted ? indicatorPadding.value : 0) +
150
+ (scrollIndicatorInsets?.bottom || 0);
151
+
152
+ const result: Record<string, unknown> = {
153
+ // iOS prop
154
+ contentInset: effective,
155
+ scrollIndicatorInsets: {
156
+ bottom: indicatorBottom,
157
+ top: indicatorTop,
158
+ right: scrollIndicatorInsets?.right,
159
+ left: scrollIndicatorInsets?.left,
160
+ },
161
+ // Android prop
162
+ contentInsetBottom: dynamic.bottom,
163
+ contentInsetTop: dynamic.top,
164
+ };
165
+
166
+ if (contentOffsetY) {
167
+ const curr = contentOffsetY.value;
168
+
169
+ if (curr !== prevContentOffsetY.value) {
170
+ // eslint-disable-next-line react-compiler/react-compiler
171
+ prevContentOffsetY.value = curr;
172
+ result.contentOffset = { x: 0, y: curr };
173
+ }
174
+ }
175
+
176
+ return result;
177
+ }, [
178
+ scrollIndicatorInsets?.bottom,
179
+ scrollIndicatorInsets?.top,
180
+ scrollIndicatorInsets?.right,
181
+ scrollIndicatorInsets?.left,
182
+ inverted,
183
+ contentOffsetY,
184
+ ]);
185
+
186
+ return (
187
+ <ReanimatedClippingScrollView
188
+ animatedProps={animatedProps}
189
+ applyWorkaroundForContentInsetHitTestBug={
190
+ applyWorkaroundForContentInsetHitTestBug
191
+ }
192
+ style={styles.container}
193
+ >
194
+ <ScrollViewComponent
195
+ ref={ref}
196
+ animatedProps={animatedProps}
197
+ {...rest}
198
+ contentContainerStyle={
199
+ isHarmony
200
+ ? [
201
+ contentContainerStyle,
202
+ inverted
203
+ ? { paddingTop: harmonyKbPad }
204
+ : { paddingBottom: harmonyKbPad },
205
+ ]
206
+ : contentContainerStyle
207
+ }
208
+ >
209
+ {children}
210
+ </ScrollViewComponent>
211
+ </ReanimatedClippingScrollView>
212
+ );
213
+ },
214
+ );
215
+
216
+ export default ScrollViewWithBottomPadding;
@@ -0,0 +1,10 @@
1
+ import { StyleSheet } from "react-native";
2
+
3
+ const styles = StyleSheet.create({
4
+ container: {
5
+ flexGrow: 1,
6
+ flexShrink: 1,
7
+ },
8
+ });
9
+
10
+ export default styles;
@@ -1,6 +1,6 @@
1
- import { useColorScheme as useColorSchemeRN } from "react-native";
2
-
3
- const useColorScheme = (): "light" | "dark" =>
4
- useColorSchemeRN() === "dark" ? "dark" : "light";
5
-
6
- export default useColorScheme;
1
+ import { useColorScheme as useColorSchemeRN } from "react-native";
2
+
3
+ const useColorScheme = (): "light" | "dark" =>
4
+ useColorSchemeRN() === "dark" ? "dark" : "light";
5
+
6
+ export default useColorScheme;
@@ -0,0 +1,22 @@
1
+ import { useCallback } from "react";
2
+
3
+ import type { MutableRefObject, Ref, RefCallback } from "react";
4
+
5
+ const useCombinedRef = <T>(...refs: Ref<T>[]): RefCallback<T> => {
6
+ return useCallback((value: T | null) => {
7
+ for (const ref of refs) {
8
+ if (!ref) {
9
+ continue;
10
+ }
11
+
12
+ if (typeof ref === "function") {
13
+ ref(value);
14
+ } else {
15
+ (ref as MutableRefObject<T | null>).current = value;
16
+ }
17
+ }
18
+ // eslint-disable-next-line react-compiler/react-compiler
19
+ }, refs);
20
+ };
21
+
22
+ export default useCombinedRef;
@@ -0,0 +1,81 @@
1
+ import { useCallback, useEffect } from "react";
2
+ import { useEvent, useSharedValue } from "react-native-reanimated";
3
+
4
+ import { useEventHandlerRegistration } from "../../internal";
5
+
6
+ import type { LayoutChangeEvent } from "react-native";
7
+ import type { AnimatedRef } from "react-native-reanimated";
8
+ import type Reanimated from "react-native-reanimated";
9
+
10
+ const NATIVE_SCROLL_EVENT_NAMES = [
11
+ "onScroll",
12
+ "onScrollBeginDrag",
13
+ "onScrollEndDrag",
14
+ "onMomentumScrollBegin",
15
+ "onMomentumScrollEnd",
16
+ ];
17
+
18
+ type ScrollEvent = {
19
+ contentOffset: {
20
+ x: number;
21
+ y: number;
22
+ };
23
+ layoutMeasurement: {
24
+ width: number;
25
+ height: number;
26
+ };
27
+ contentSize: {
28
+ width: number;
29
+ height: number;
30
+ };
31
+ };
32
+
33
+ const useScrollState = (ref: AnimatedRef<Reanimated.ScrollView>) => {
34
+ const offset = useSharedValue(0);
35
+ const layout = useSharedValue({ width: 0, height: 0 });
36
+ const size = useSharedValue({ width: 0, height: 0 });
37
+
38
+ const register = useEventHandlerRegistration(ref);
39
+
40
+ const eventHandler = useEvent((event: ScrollEvent) => {
41
+ "worklet";
42
+
43
+ // eslint-disable-next-line react-compiler/react-compiler
44
+ offset.value = event.contentOffset.y;
45
+ layout.value = event.layoutMeasurement;
46
+ size.value = event.contentSize;
47
+ }, NATIVE_SCROLL_EVENT_NAMES);
48
+
49
+ useEffect(() => {
50
+ const cleanup = register(eventHandler);
51
+
52
+ return () => {
53
+ cleanup();
54
+ };
55
+ }, []);
56
+
57
+ // `onContentSizeChange` is synthesized in JS (from the content container's
58
+ // onLayout) and `onLayout` has a different payload shape than scroll events,
59
+ // so neither can be reliably captured via native event registration.
60
+ // Instead we expose callbacks for the consumer to attach as props.
61
+ const onLayout = useCallback(
62
+ (e: LayoutChangeEvent) => {
63
+ layout.value = {
64
+ width: e.nativeEvent.layout.width,
65
+ height: e.nativeEvent.layout.height,
66
+ };
67
+ },
68
+ [layout],
69
+ );
70
+
71
+ const onContentSizeChange = useCallback(
72
+ (w: number, h: number) => {
73
+ size.value = { width: w, height: h };
74
+ },
75
+ [size],
76
+ );
77
+
78
+ return { offset, layout, size, onLayout, onContentSizeChange };
79
+ };
80
+
81
+ export default useScrollState;
@@ -1,11 +1,14 @@
1
- export { default as KeyboardAvoidingView } from "./KeyboardAvoidingView";
2
- export { default as KeyboardStickyView } from "./KeyboardStickyView";
3
- export { default as KeyboardAwareScrollView } from "./KeyboardAwareScrollView";
4
- export {
5
- default as KeyboardToolbar,
6
- DefaultKeyboardToolbarTheme,
7
- } from "./KeyboardToolbar";
8
- export type { KeyboardAvoidingViewProps } from "./KeyboardAvoidingView";
9
- export type { KeyboardStickyViewProps } from "./KeyboardStickyView";
10
- export type { KeyboardAwareScrollViewProps } from "./KeyboardAwareScrollView";
11
- export type { KeyboardToolbarProps } from "./KeyboardToolbar";
1
+ export { default as KeyboardAvoidingView } from "./KeyboardAvoidingView";
2
+ export { default as KeyboardStickyView } from "./KeyboardStickyView";
3
+ export { default as KeyboardAwareScrollView } from "./KeyboardAwareScrollView";
4
+ export { default as KeyboardChatScrollView } from "./KeyboardChatScrollView";
5
+ export {
6
+ default as KeyboardToolbar,
7
+ DefaultKeyboardToolbarTheme,
8
+ } from "./KeyboardToolbar";
9
+ export type { KeyboardAvoidingViewProps } from "./KeyboardAvoidingView";
10
+ export type { KeyboardStickyViewProps } from "./KeyboardStickyView";
11
+ export type { KeyboardAwareScrollViewProps } from "./KeyboardAwareScrollView";
12
+ export type { KeyboardAwareScrollViewRef } from "./KeyboardAwareScrollView";
13
+ export type { KeyboardChatScrollViewProps } from "./KeyboardChatScrollView/types";
14
+ export type { KeyboardToolbarProps } from "./KeyboardToolbar";
package/src/constants.ts CHANGED
@@ -1,19 +1,23 @@
1
- // copied from `android.view.WindowManager.LayoutParams`
2
- export enum AndroidSoftInputModes {
3
- SOFT_INPUT_ADJUST_NOTHING = 48,
4
- SOFT_INPUT_ADJUST_PAN = 32,
5
- SOFT_INPUT_ADJUST_RESIZE = 16,
6
- SOFT_INPUT_ADJUST_UNSPECIFIED = 0,
7
- SOFT_INPUT_IS_FORWARD_NAVIGATION = 256,
8
- SOFT_INPUT_MASK_ADJUST = 240,
9
- SOFT_INPUT_MASK_STATE = 15,
10
- SOFT_INPUT_MODE_CHANGED = 512,
11
- SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3,
12
- SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5,
13
- SOFT_INPUT_STATE_HIDDEN = 2,
14
- SOFT_INPUT_STATE_UNCHANGED = 1,
15
- // temporarily disable this rule to avoid breaking changes.
16
- // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
17
- SOFT_INPUT_STATE_UNSPECIFIED = 0,
18
- SOFT_INPUT_STATE_VISIBLE = 4,
19
- }
1
+ import { KeyboardControllerNative } from "./bindings";
2
+
3
+ // copied from `android.view.WindowManager.LayoutParams`
4
+ export enum AndroidSoftInputModes {
5
+ SOFT_INPUT_ADJUST_NOTHING = 48,
6
+ SOFT_INPUT_ADJUST_PAN = 32,
7
+ SOFT_INPUT_ADJUST_RESIZE = 16,
8
+ SOFT_INPUT_ADJUST_UNSPECIFIED = 0,
9
+ SOFT_INPUT_IS_FORWARD_NAVIGATION = 256,
10
+ SOFT_INPUT_MASK_ADJUST = 240,
11
+ SOFT_INPUT_MASK_STATE = 15,
12
+ SOFT_INPUT_MODE_CHANGED = 512,
13
+ SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3,
14
+ SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5,
15
+ SOFT_INPUT_STATE_HIDDEN = 2,
16
+ SOFT_INPUT_STATE_UNCHANGED = 1,
17
+ // temporarily disable this rule to avoid breaking changes.
18
+ // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
19
+ SOFT_INPUT_STATE_UNSPECIFIED = 0,
20
+ SOFT_INPUT_STATE_VISIBLE = 4,
21
+ }
22
+ export const KEYBOARD_BORDER_RADIUS =
23
+ KeyboardControllerNative.getConstants().keyboardBorderRadius;
package/src/context.ts CHANGED
@@ -1,68 +1,70 @@
1
- import { createContext, useContext } from "react";
2
- import { Animated } from "react-native";
3
-
4
- import type {
5
- FocusedInputHandlers,
6
- FocusedInputLayoutChangedEvent,
7
- KeyboardHandlers,
8
- } from "./types";
9
- import type React from "react";
10
- import type { SharedValue } from "react-native-reanimated";
11
-
12
- export type AnimatedContext = {
13
- progress: Animated.Value;
14
- height: Animated.AnimatedMultiplication<number>;
15
- };
16
- export type ReanimatedContext = {
17
- progress: SharedValue<number>;
18
- height: SharedValue<number>;
19
- };
20
- export type KeyboardAnimationContext = {
21
- enabled: boolean;
22
- animated: AnimatedContext;
23
- reanimated: ReanimatedContext;
24
- layout: SharedValue<FocusedInputLayoutChangedEvent | null>;
25
- setKeyboardHandlers: (handlers: KeyboardHandlers) => void;
26
- setInputHandlers: (handlers: FocusedInputHandlers) => void;
27
- setEnabled: React.Dispatch<React.SetStateAction<boolean>>;
28
- };
29
- const NOOP = () => {};
30
- const NESTED_NOOP = () => NOOP;
31
- const withSharedValue = <T>(value: T): SharedValue<T> => ({
32
- value,
33
- addListener: NOOP,
34
- removeListener: NOOP,
35
- modify: NOOP,
36
- get: () => value,
37
- set: NOOP,
38
- });
39
- const DEFAULT_SHARED_VALUE = withSharedValue(0);
40
- const DEFAULT_LAYOUT = withSharedValue<FocusedInputLayoutChangedEvent | null>(
41
- null,
42
- );
43
- const defaultContext: KeyboardAnimationContext = {
44
- enabled: true,
45
- animated: {
46
- progress: new Animated.Value(0),
47
- height: new Animated.Value(0),
48
- },
49
- reanimated: {
50
- progress: DEFAULT_SHARED_VALUE,
51
- height: DEFAULT_SHARED_VALUE,
52
- },
53
- layout: DEFAULT_LAYOUT,
54
- setKeyboardHandlers: NESTED_NOOP,
55
- setInputHandlers: NESTED_NOOP,
56
- setEnabled: NOOP,
57
- };
58
- export const KeyboardContext = createContext(defaultContext);
59
- export const useKeyboardContext = () => {
60
- const context = useContext(KeyboardContext);
61
- if (__DEV__ && context === defaultContext) {
62
- console.warn(
63
- "Couldn't find real values for `KeyboardContext`. Please make sure you're inside of `KeyboardProvider` - otherwise functionality of `react-native-keyboard-controller` will not work.",
64
- );
65
- }
66
-
67
- return context;
68
- };
1
+ import { createContext, useContext } from "react";
2
+ import { Animated } from "react-native";
3
+
4
+ import type {
5
+ FocusedInputHandlers,
6
+ FocusedInputLayoutChangedEvent,
7
+ KeyboardHandlers,
8
+ } from "./types";
9
+ import type React from "react";
10
+ import type { SharedValue } from "react-native-reanimated";
11
+
12
+ export type AnimatedContext = {
13
+ progress: Animated.Value;
14
+ height: Animated.AnimatedMultiplication<number>;
15
+ };
16
+ export type ReanimatedContext = {
17
+ progress: SharedValue<number>;
18
+ height: SharedValue<number>;
19
+ };
20
+ export type KeyboardAnimationContext = {
21
+ enabled: boolean;
22
+ animated: AnimatedContext;
23
+ reanimated: ReanimatedContext;
24
+ layout: SharedValue<FocusedInputLayoutChangedEvent | null>;
25
+ update: () => Promise<void>;
26
+ setKeyboardHandlers: (handlers: KeyboardHandlers) => void;
27
+ setInputHandlers: (handlers: FocusedInputHandlers) => void;
28
+ setEnabled: React.Dispatch<React.SetStateAction<boolean>>;
29
+ };
30
+ const NOOP = () => {};
31
+ const NESTED_NOOP = () => NOOP;
32
+ const withSharedValue = <T>(value: T): SharedValue<T> => ({
33
+ value,
34
+ addListener: NOOP,
35
+ removeListener: NOOP,
36
+ modify: NOOP,
37
+ get: () => value,
38
+ set: NOOP,
39
+ });
40
+ const DEFAULT_SHARED_VALUE = withSharedValue(0);
41
+ const DEFAULT_LAYOUT = withSharedValue<FocusedInputLayoutChangedEvent | null>(
42
+ null,
43
+ );
44
+ const defaultContext: KeyboardAnimationContext = {
45
+ enabled: true,
46
+ animated: {
47
+ progress: new Animated.Value(0),
48
+ height: new Animated.Value(0),
49
+ },
50
+ reanimated: {
51
+ progress: DEFAULT_SHARED_VALUE,
52
+ height: DEFAULT_SHARED_VALUE,
53
+ },
54
+ layout: DEFAULT_LAYOUT,
55
+ update: () => Promise.resolve(),
56
+ setKeyboardHandlers: NESTED_NOOP,
57
+ setInputHandlers: NESTED_NOOP,
58
+ setEnabled: NOOP,
59
+ };
60
+ export const KeyboardContext = createContext(defaultContext);
61
+ export const useKeyboardContext = () => {
62
+ const context = useContext(KeyboardContext);
63
+ if (__DEV__ && context === defaultContext) {
64
+ console.warn(
65
+ "Couldn't find real values for `KeyboardContext`. Please make sure you're inside of `KeyboardProvider` - otherwise functionality of `react-native-keyboard-controller` will not work.",
66
+ );
67
+ }
68
+
69
+ return context;
70
+ };