@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
@@ -1,62 +1,97 @@
1
- import { NativeEventEmitter, Platform } from "react-native";
2
-
3
- import type {
4
- FocusedInputEventsModule,
5
- KeyboardControllerNativeModule,
6
- KeyboardControllerProps,
7
- KeyboardEventsModule,
8
- KeyboardGestureAreaProps,
9
- OverKeyboardViewProps,
10
- WindowDimensionsEventsModule,
11
- } from "./types";
12
-
13
- const LINKING_ERROR =
14
- `The package 'react-native-keyboard-controller' doesn't seem to be linked. Make sure: \n\n` +
15
- Platform.select({ ios: "- You have run 'pod install'\n", default: "" }) +
16
- "- You rebuilt the app after installing the package\n" +
17
- "- You are not using Expo Go\n";
18
-
19
- const RCTKeyboardController =
20
- require("./specs/NativeKeyboardController").default;
21
-
22
- export const KeyboardControllerNative = (
23
- RCTKeyboardController
24
- ? RCTKeyboardController
25
- : new Proxy(
26
- {},
27
- {
28
- get() {
29
- throw new Error(LINKING_ERROR);
30
- },
31
- },
32
- )
33
- ) as KeyboardControllerNativeModule;
34
-
35
- const KEYBOARD_CONTROLLER_NAMESPACE = "KeyboardController::";
36
- const eventEmitter = new NativeEventEmitter(KeyboardControllerNative);
37
-
38
- export const KeyboardEvents: KeyboardEventsModule = {
39
- addListener: (name, cb) =>
40
- eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
41
- };
42
-
43
- /**
44
- * This API is not documented, it's for internal usage only (for now), and is a subject to potential breaking changes in future.
45
- * Use it with cautious.
46
- */
47
- export const FocusedInputEvents: FocusedInputEventsModule = {
48
- addListener: (name, cb) =>
49
- eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
50
- };
51
- export const WindowDimensionsEvents: WindowDimensionsEventsModule = {
52
- addListener: (name, cb) =>
53
- eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
54
- };
55
- export const KeyboardControllerView: React.FC<KeyboardControllerProps> =
56
- require("./specs/KeyboardControllerViewNativeComponent").default;
57
- export const KeyboardGestureArea: React.FC<KeyboardGestureAreaProps> =
58
- (Platform.OS === "android" && Platform.Version >= 30) || Platform.OS === "ios"
59
- ? require("./specs/KeyboardGestureAreaNativeComponent").default
60
- : ({ children }: KeyboardGestureAreaProps) => children;
61
- export const RCTOverKeyboardView: React.FC<OverKeyboardViewProps> =
62
- require("./specs/OverKeyboardViewNativeComponent").default;
1
+ import React from "react";
2
+ import {
3
+ NativeEventEmitter,
4
+ Platform,
5
+ useColorScheme,
6
+ View,
7
+ } from "react-native";
8
+
9
+ import type {
10
+ ClippingScrollViewProps,
11
+ FocusedInputEventsModule,
12
+ KeyboardBackgroundViewProps,
13
+ KeyboardControllerNativeModule,
14
+ KeyboardControllerProps,
15
+ KeyboardEventsModule,
16
+ KeyboardExtenderProps,
17
+ KeyboardGestureAreaProps,
18
+ KeyboardToolbarGroupViewProps,
19
+ OverKeyboardViewProps,
20
+ WindowDimensionsEventsModule,
21
+ } from "./types";
22
+ import type { View as RNView } from "react-native";
23
+
24
+ const LINKING_ERROR =
25
+ `The package 'react-native-keyboard-controller' doesn't seem to be linked. Make sure: \n\n` +
26
+ Platform.select({ ios: "- You have run 'pod install'\n", default: "" }) +
27
+ "- You rebuilt the app after installing the package\n" +
28
+ "- You are not using Expo Go\n";
29
+
30
+ const KeyboardControllerViewNativeComponentModule = require("./specs/KeyboardControllerViewNativeComponent");
31
+ const RCTKeyboardController =
32
+ require("./specs/NativeKeyboardController").default;
33
+
34
+ export const KeyboardControllerNative = (
35
+ RCTKeyboardController
36
+ ? RCTKeyboardController
37
+ : new Proxy(
38
+ {},
39
+ {
40
+ get() {
41
+ throw new Error(LINKING_ERROR);
42
+ },
43
+ },
44
+ )
45
+ ) as KeyboardControllerNativeModule;
46
+
47
+ const KEYBOARD_CONTROLLER_NAMESPACE = "KeyboardController::";
48
+ const eventEmitter = new NativeEventEmitter(KeyboardControllerNative);
49
+
50
+ export const KeyboardEvents: KeyboardEventsModule = {
51
+ addListener: (name, cb) =>
52
+ eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
53
+ };
54
+
55
+ /**
56
+ * This API is not documented, it's for internal usage only (for now), and is a subject to potential breaking changes in future.
57
+ * Use it with cautious.
58
+ */
59
+ export const FocusedInputEvents: FocusedInputEventsModule = {
60
+ addListener: (name, cb) =>
61
+ eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
62
+ };
63
+ export const WindowDimensionsEvents: WindowDimensionsEventsModule = {
64
+ addListener: (name, cb) =>
65
+ eventEmitter.addListener(KEYBOARD_CONTROLLER_NAMESPACE + name, cb),
66
+ };
67
+ export const KeyboardControllerView: React.FC<KeyboardControllerProps> =
68
+ KeyboardControllerViewNativeComponentModule.default;
69
+ export const KeyboardControllerViewCommands =
70
+ KeyboardControllerViewNativeComponentModule.Commands;
71
+ export const KeyboardGestureArea: React.FC<KeyboardGestureAreaProps> =
72
+ (Platform.OS === "android" && Platform.Version >= 30) || Platform.OS === "ios"
73
+ ? require("./specs/KeyboardGestureAreaNativeComponent").default
74
+ : ({ children }: KeyboardGestureAreaProps) => children;
75
+ export const RCTOverKeyboardView: React.FC<OverKeyboardViewProps> =
76
+ require("./specs/OverKeyboardViewNativeComponent").default;
77
+ export const ClippingScrollView: React.FC<ClippingScrollViewProps> =
78
+ Platform.OS === "android" || (Platform.OS as string) === "harmony"
79
+ ? require("./specs/ClippingScrollViewDecoratorViewNativeComponent").default
80
+ : ({ children }: ClippingScrollViewProps) => children;
81
+ export const KeyboardBackgroundView = React.forwardRef<
82
+ RNView,
83
+ KeyboardBackgroundViewProps
84
+ >(({ style, ...props }, ref) => {
85
+ const colorScheme = useColorScheme();
86
+ const backgroundColor = colorScheme === "dark" ? "#2c2c2e" : "#eceff3";
87
+
88
+ return React.createElement(View, {
89
+ ref,
90
+ style: [{ backgroundColor }, style],
91
+ ...props,
92
+ });
93
+ });
94
+ export const RCTKeyboardExtender =
95
+ View as unknown as React.FC<KeyboardExtenderProps>;
96
+ export const RCTKeyboardToolbarGroupView: React.FC<KeyboardToolbarGroupViewProps> =
97
+ require("./specs/KeyboardToolbarGroupViewNativeComponent").default;
package/src/bindings.ts CHANGED
@@ -1,42 +1,81 @@
1
- import { View } from "react-native";
2
-
3
- import type {
4
- FocusedInputEventsModule,
5
- KeyboardControllerNativeModule,
6
- KeyboardControllerProps,
7
- KeyboardEventsModule,
8
- KeyboardGestureAreaProps,
9
- OverKeyboardViewProps,
10
- WindowDimensionsEventsModule,
11
- } from "./types";
12
- import type { EmitterSubscription } from "react-native";
13
-
14
- const NOOP = () => {};
15
-
16
- export const KeyboardControllerNative: KeyboardControllerNativeModule = {
17
- setDefaultMode: NOOP,
18
- setInputMode: NOOP,
19
- dismiss: NOOP,
20
- setFocusTo: NOOP,
21
- addListener: NOOP,
22
- removeListeners: NOOP,
23
- };
24
- export const KeyboardEvents: KeyboardEventsModule = {
25
- addListener: () => ({ remove: NOOP } as EmitterSubscription),
26
- };
27
- /**
28
- * This API is not documented, it's for internal usage only (for now), and is a subject to potential breaking changes in future.
29
- * Use it with cautious.
30
- */
31
- export const FocusedInputEvents: FocusedInputEventsModule = {
32
- addListener: () => ({ remove: NOOP } as EmitterSubscription),
33
- };
34
- export const WindowDimensionsEvents: WindowDimensionsEventsModule = {
35
- addListener: () => ({ remove: NOOP } as EmitterSubscription),
36
- };
37
- export const KeyboardControllerView =
38
- View as unknown as React.FC<KeyboardControllerProps>;
39
- export const KeyboardGestureArea =
40
- View as unknown as React.FC<KeyboardGestureAreaProps>;
41
- export const RCTOverKeyboardView =
42
- View as unknown as React.FC<OverKeyboardViewProps>;
1
+ import React from "react";
2
+ import { useColorScheme, View } from "react-native";
3
+
4
+ import type {
5
+ ClippingScrollViewProps,
6
+ FocusedInputEventsModule,
7
+ KeyboardBackgroundViewProps,
8
+ KeyboardControllerNativeModule,
9
+ KeyboardControllerProps,
10
+ KeyboardEventsModule,
11
+ KeyboardExtenderProps,
12
+ KeyboardGestureAreaProps,
13
+ KeyboardToolbarGroupViewProps,
14
+ OverKeyboardViewProps,
15
+ WindowDimensionsEventsModule,
16
+ } from "./types";
17
+ import type { EmitterSubscription } from "react-native";
18
+ import type { View as RNView } from "react-native";
19
+
20
+ const NOOP = () => {};
21
+
22
+ export const KeyboardControllerNative: KeyboardControllerNativeModule = {
23
+ setDefaultMode: NOOP,
24
+ setInputMode: NOOP,
25
+ preload: NOOP,
26
+ dismiss: NOOP,
27
+ setFocusTo: NOOP,
28
+ viewPositionInWindow: () =>
29
+ Promise.resolve({ x: 0, y: 0, width: 0, height: 0 }),
30
+ addListener: NOOP,
31
+ removeListeners: NOOP,
32
+ getConstants: () => ({
33
+ keyboardBorderRadius: 0,
34
+ }),
35
+ };
36
+ export const KeyboardEvents: KeyboardEventsModule = {
37
+ addListener: () => ({ remove: NOOP } as EmitterSubscription),
38
+ };
39
+ /**
40
+ * This API is not documented, it's for internal usage only (for now), and is a subject to potential breaking changes in future.
41
+ * Use it with cautious.
42
+ */
43
+ export const FocusedInputEvents: FocusedInputEventsModule = {
44
+ addListener: () => ({ remove: NOOP } as EmitterSubscription),
45
+ };
46
+ export const WindowDimensionsEvents: WindowDimensionsEventsModule = {
47
+ addListener: () => ({ remove: NOOP } as EmitterSubscription),
48
+ };
49
+ export const KeyboardControllerView =
50
+ View as unknown as React.FC<KeyboardControllerProps>;
51
+ export const KeyboardControllerViewCommands = {
52
+ synchronizeFocusedInputLayout: (
53
+ _ref: React.Component<KeyboardControllerProps> | null,
54
+ ) => {},
55
+ };
56
+ export const KeyboardGestureArea =
57
+ View as unknown as React.FC<KeyboardGestureAreaProps>;
58
+ export const RCTOverKeyboardView =
59
+ View as unknown as React.FC<OverKeyboardViewProps>;
60
+ export const ClippingScrollView =
61
+ View as unknown as React.FC<ClippingScrollViewProps>;
62
+ export const KeyboardBackgroundView = React.forwardRef<
63
+ RNView,
64
+ KeyboardBackgroundViewProps
65
+ >(({ style, ...props }, ref) => {
66
+ const colorScheme = useColorScheme();
67
+ const backgroundColor = colorScheme === "dark" ? "#2c2c2e" : "#eceff3";
68
+
69
+ return React.createElement(View, {
70
+ ref,
71
+ style: [{ backgroundColor }, style],
72
+ ...props,
73
+ });
74
+ });
75
+ export const RCTKeyboardExtender =
76
+ View as unknown as React.FC<KeyboardExtenderProps>;
77
+ /**
78
+ * A View that defines a group of `TextInput`s for toolbar navigation.
79
+ */
80
+ export const RCTKeyboardToolbarGroupView =
81
+ View as unknown as React.FC<KeyboardToolbarGroupViewProps>;
package/src/compat.ts ADDED
@@ -0,0 +1,44 @@
1
+ import { useSharedValue } from "react-native-reanimated";
2
+
3
+ import { useKeyboardHandler } from "./hooks";
4
+
5
+ export const KeyboardState = {
6
+ UNKNOWN: 0,
7
+ OPENING: 1,
8
+ OPEN: 2,
9
+ CLOSING: 3,
10
+ CLOSED: 4,
11
+ };
12
+
13
+ /** Compatibility layer for migrating from Reanimated's useAnimatedKeyboard. */
14
+ export const useAnimatedKeyboard = () => {
15
+ const height = useSharedValue(0);
16
+ const state = useSharedValue(KeyboardState.UNKNOWN);
17
+
18
+ useKeyboardHandler(
19
+ {
20
+ onStart: (event) => {
21
+ "worklet";
22
+ state.value =
23
+ event.height > 0 ? KeyboardState.OPENING : KeyboardState.CLOSING;
24
+ },
25
+ onMove: (event) => {
26
+ "worklet";
27
+ height.value = event.height;
28
+ },
29
+ onInteractive: (event) => {
30
+ "worklet";
31
+ height.value = event.height;
32
+ },
33
+ onEnd: (event) => {
34
+ "worklet";
35
+ state.value =
36
+ event.height > 0 ? KeyboardState.OPEN : KeyboardState.CLOSED;
37
+ height.value = event.height;
38
+ },
39
+ },
40
+ [],
41
+ );
42
+
43
+ return { height, state };
44
+ };
@@ -1,123 +1,130 @@
1
- import { useSharedValue } from "react-native-reanimated";
2
-
3
- import {useKeyboardHandler} from "../../hooks";
4
- import {useKeyboardContext} from "../../context";
5
- import { useState } from "react";
6
- import { Platform } from "react-native";
7
-
8
- const OS = Platform.OS;
9
-
10
- export const useKeyboardAnimation = () => {
11
- const { reanimated } = useKeyboardContext();
12
- // calculate it only once on mount, to avoid `SharedValue` reads during a render
13
- const [initialHeight] = useState(() => -reanimated.height.value);
14
- const [initialProgress] = useState(() => reanimated.progress.value);
15
-
16
- const heightWhenOpened = useSharedValue(initialHeight);
17
- const height = useSharedValue(initialHeight);
18
- const progress = useSharedValue(initialProgress);
19
- const isClosed = useSharedValue(initialProgress === 0);
20
-
21
- useKeyboardHandler(
22
- {
23
- onStart: (e) => {
24
- "worklet";
25
-
26
- if (e.height > 0) {
27
- // eslint-disable-next-line react-compiler/react-compiler
28
- isClosed.value = false;
29
- heightWhenOpened.value = e.height;
30
- }
31
- },
32
- onMove: (e) => {
33
- "worklet";
34
-
35
- progress.value = e.progress;
36
- height.value = e.height;
37
- },
38
- onInteractive: (e) => {
39
- "worklet";
40
-
41
- progress.value = e.progress;
42
- height.value = e.height;
43
- },
44
- onEnd: (e) => {
45
- "worklet";
46
- if(Platform.OS as string === 'harmony'){
47
- heightWhenOpened.value = e.height;
48
- }
49
-
50
- isClosed.value = e.height === 0;
51
-
52
- // `height` update happens in `onMove` handler
53
- // in `onEnd` we need to update only if `onMove`
54
- // wasn't called (i. e. duration === 0)
55
- //
56
- // we can not call this code without condition below
57
- // because in some corner cases (iOS with `secureTextEntry`)
58
- // `onEnd` can be emitted before `onMove` and in this case
59
- // it may lead to choppy/glitchy/jumpy UI
60
- // see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/327
61
- if (e.duration === 0) {
62
- progress.value = e.progress;
63
- height.value = e.height;
64
- }
65
- },
66
- },
67
- [],
68
- );
69
-
70
- return { height, progress, heightWhenOpened, isClosed };
71
- };
72
-
73
- export const useTranslateAnimation = () => {
74
- const { reanimated } = useKeyboardContext();
75
-
76
- // calculate it only once on mount, to avoid `SharedValue` reads during a render
77
- const [initialProgress] = useState(() => reanimated.progress.value);
78
-
79
- const padding = useSharedValue(initialProgress);
80
- const translate = useSharedValue(0);
81
-
82
- useKeyboardHandler(
83
- {
84
- onStart: (e) => {
85
- "worklet";
86
-
87
- if (e.height === 0) {
88
- // eslint-disable-next-line react-compiler/react-compiler
89
- padding.value = 0;
90
- }
91
- if (OS === "ios") {
92
- translate.value = e.progress;
93
- }
94
- },
95
- onMove: (e) => {
96
- "worklet";
97
-
98
- if (OS === "android") {
99
- translate.value = e.progress;
100
- }
101
- },
102
- onInteractive: (e) => {
103
- "worklet";
104
-
105
- padding.value = 0;
106
-
107
- translate.value = e.progress;
108
- },
109
- onEnd: (e) => {
110
- "worklet";
111
-
112
- padding.value = e.progress;
113
-
114
- if (OS === "android") {
115
- translate.value = e.progress;
116
- }
117
- },
118
- },
119
- [],
120
- );
121
-
122
- return { translate, padding };
123
- };
1
+ import { useSharedValue } from "react-native-reanimated";
2
+
3
+ import {useKeyboardHandler} from "../../hooks";
4
+ import {useKeyboardContext} from "../../context";
5
+ import { useLayoutEffect } from "react";
6
+ import { Platform } from "react-native";
7
+
8
+ const OS = Platform.OS;
9
+
10
+ export const useKeyboardAnimation = () => {
11
+ const { reanimated } = useKeyboardContext();
12
+ const heightWhenOpened = useSharedValue(0);
13
+ const height = useSharedValue(0);
14
+ const progress = useSharedValue(0);
15
+ const isClosed = useSharedValue(true);
16
+
17
+ useLayoutEffect(() => {
18
+ const initialHeight = -reanimated.height.value;
19
+ const initialProgress = reanimated.progress.value;
20
+
21
+ // eslint-disable-next-line react-compiler/react-compiler
22
+ heightWhenOpened.value = initialHeight;
23
+ height.value = initialHeight;
24
+ progress.value = initialProgress;
25
+ isClosed.value = initialProgress === 0;
26
+ }, []);
27
+
28
+ useKeyboardHandler(
29
+ {
30
+ onStart: (e) => {
31
+ "worklet";
32
+
33
+ if (e.height > 0) {
34
+ isClosed.value = false;
35
+ heightWhenOpened.value = e.height;
36
+ }
37
+ },
38
+ onMove: (e) => {
39
+ "worklet";
40
+
41
+ progress.value = e.progress;
42
+ height.value = e.height;
43
+ },
44
+ onInteractive: (e) => {
45
+ "worklet";
46
+
47
+ progress.value = e.progress;
48
+ height.value = e.height;
49
+ },
50
+ onEnd: (e) => {
51
+ "worklet";
52
+ if(Platform.OS as string === 'harmony'){
53
+ heightWhenOpened.value = e.height;
54
+ }
55
+
56
+ isClosed.value = e.height === 0;
57
+
58
+ // `height` update happens in `onMove` handler
59
+ // in `onEnd` we need to update only if `onMove`
60
+ // wasn't called (i. e. duration === 0)
61
+ //
62
+ // we can not call this code without condition below
63
+ // because in some corner cases (iOS with `secureTextEntry`)
64
+ // `onEnd` can be emitted before `onMove` and in this case
65
+ // it may lead to choppy/glitchy/jumpy UI
66
+ // see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/327
67
+ if (e.duration === 0) {
68
+ progress.value = e.progress;
69
+ height.value = e.height;
70
+ }
71
+ },
72
+ },
73
+ [],
74
+ );
75
+
76
+ return { height, progress, heightWhenOpened, isClosed };
77
+ };
78
+
79
+ export const useTranslateAnimation = () => {
80
+ const { reanimated } = useKeyboardContext();
81
+
82
+ const padding = useSharedValue(0);
83
+ const translate = useSharedValue(0);
84
+
85
+ useLayoutEffect(() => {
86
+ // eslint-disable-next-line react-compiler/react-compiler
87
+ padding.value = reanimated.progress.value;
88
+ }, []);
89
+
90
+ useKeyboardHandler(
91
+ {
92
+ onStart: (e) => {
93
+ "worklet";
94
+
95
+ if (e.height === 0) {
96
+ padding.value = 0;
97
+ }
98
+ if (OS === "ios") {
99
+ translate.value = e.progress;
100
+ }
101
+ },
102
+ onMove: (e) => {
103
+ "worklet";
104
+
105
+ if (OS !== "ios") {
106
+ translate.value = e.progress;
107
+ }
108
+ },
109
+ onInteractive: (e) => {
110
+ "worklet";
111
+
112
+ padding.value = 0;
113
+
114
+ translate.value = e.progress;
115
+ },
116
+ onEnd: (e) => {
117
+ "worklet";
118
+
119
+ padding.value = e.progress;
120
+
121
+ if (OS !== "ios") {
122
+ translate.value = e.progress;
123
+ }
124
+ },
125
+ },
126
+ [],
127
+ );
128
+
129
+ return { translate, padding };
130
+ };