react-native-external-keyboard 0.9.1 → 1.0.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 (372) hide show
  1. package/README.md +95 -600
  2. package/android/build.gradle +0 -18
  3. package/android/src/main/java/com/externalkeyboard/ExternalKeyboardViewPackage.java +24 -22
  4. package/android/src/main/java/com/externalkeyboard/events/EventHelper.java +10 -13
  5. package/android/src/main/java/com/externalkeyboard/helper/FocusHelper.java +1 -2
  6. package/android/src/main/java/com/externalkeyboard/services/FocusMemoryService.java +64 -0
  7. package/android/src/main/java/com/externalkeyboard/services/KeyboardFocusService.java +41 -0
  8. package/android/src/main/java/com/externalkeyboard/services/KeyboardService.java +4 -13
  9. package/android/src/main/java/com/externalkeyboard/views/ExternalKeyboardView/ExternalKeyboardView.java +2 -8
  10. package/android/src/main/java/com/externalkeyboard/views/ExternalKeyboardView/ExternalKeyboardViewManager.java +20 -13
  11. package/android/src/main/java/com/externalkeyboard/views/TextInputFocusWrapper/TextInputFocusWrapper.java +99 -21
  12. package/android/src/main/java/com/externalkeyboard/views/TextInputFocusWrapper/TextInputFocusWrapperManager.java +11 -0
  13. package/android/src/main/java/com/externalkeyboard/views/base/FocusHighlightBase.java +11 -5
  14. package/android/src/main/java/com/externalkeyboard/views/base/FocusableBase.java +36 -0
  15. package/android/src/main/java/com/externalkeyboard/views/base/keyboard/ViewFocusChangeBase.java +2 -3
  16. package/android/src/main/java/com/externalkeyboard/views/base/keyboard/ViewFocusRequestBase.java +10 -61
  17. package/android/src/newarch/ExternalKeyboardLockViewManagerInterface.java +11 -0
  18. package/android/src/newarch/ExternalKeyboardLockViewManagerSpec.java +0 -1
  19. package/android/src/newarch/ExternalKeyboardViewManagerInterface.java +42 -0
  20. package/android/src/newarch/ExternalKeyboardViewManagerSpec.java +0 -1
  21. package/android/src/newarch/KeyboardFocusGroupManagerInterface.java +12 -0
  22. package/android/src/newarch/KeyboardFocusGroupManagerSpec.java +0 -1
  23. package/android/src/newarch/TextInputFocusWrapperManagerInterface.java +34 -0
  24. package/android/src/newarch/TextInputFocusWrapperManagerSpec.java +0 -10
  25. package/android/src/newarch/helper/ReactNativeEventDispatcher.java +28 -0
  26. package/android/src/oldarch/ExternalKeyboardViewManagerSpec.java +6 -4
  27. package/android/src/oldarch/TextInputFocusWrapperManagerSpec.java +4 -0
  28. package/android/src/oldarch/helper/ReactNativeEventDispatcher.java +15 -0
  29. package/ios/Delegates/RNCEKVFocusDelegate/RNCEKVFocusDelegate.mm +1 -1
  30. package/ios/Delegates/RNCEKVFocusDelegate/RNCEKVFocusProtocol.h +1 -1
  31. package/ios/Delegates/RNCEKVHaloDelegate/RNCEKVHaloDelegate.h +2 -1
  32. package/ios/Delegates/RNCEKVHaloDelegate/RNCEKVHaloDelegate.mm +41 -5
  33. package/ios/Delegates/RNCEKVHaloDelegate/RNCEKVHaloProtocol.h +1 -0
  34. package/ios/Extensions/RCTCustomScrollView+RNCEKVExternalKeyboard.mm +5 -6
  35. package/ios/Extensions/RCTEnhancedScrollView+RNCEKVExternalKeyboard.mm +8 -9
  36. package/ios/Extensions/RCTTextInputComponentView+RNCEKVExternalKeyboard.mm +1 -1
  37. package/ios/Extensions/RCTViewComponentView+RNCEKVExternalKeyboard.h +0 -1
  38. package/ios/Extensions/RCTViewComponentView+RNCEKVExternalKeyboard.mm +16 -4
  39. package/ios/Extensions/UIViewController+RNCEKVExternalKeyboard.mm +7 -10
  40. package/ios/Helpers/RNCEKVNativeProps/RNCEKVNativeProps.h +4 -4
  41. package/ios/Helpers/RNCEKVSwizzleInstanceMethod/RNCEKVSwizzleInstanceMethod.h +19 -0
  42. package/ios/Protocols/RNCEKVCustomFocusEffectProtocol.h +1 -1
  43. package/ios/Services/RNCEKVFocusMemoryService.h +39 -0
  44. package/ios/Services/RNCEKVFocusMemoryService.mm +42 -0
  45. package/ios/Services/RNCEKVKeyboardFocusService.h +28 -0
  46. package/ios/Services/RNCEKVKeyboardFocusService.mm +54 -0
  47. package/ios/Views/Base/FocusChange/RNCEKVViewFocusChangeBase.h +2 -0
  48. package/ios/Views/Base/FocusChange/RNCEKVViewFocusChangeBase.mm +12 -10
  49. package/ios/Views/Base/FocusRequest/RNCEKVViewFocusRequestBase.h +1 -1
  50. package/ios/Views/Base/FocusRequest/RNCEKVViewFocusRequestBase.mm +6 -17
  51. package/ios/Views/Base/KeyboardHallo/RNCEKVExternalKeyboardHalloBase.h +1 -0
  52. package/ios/Views/Base/KeyboardHallo/RNCEKVExternalKeyboardHalloBase.mm +146 -6
  53. package/ios/Views/Base/ViewGroup/RNCEKVViewGroupBase.h +2 -0
  54. package/ios/Views/Base/ViewGroup/RNCEKVViewGroupBase.mm +4 -0
  55. package/ios/Views/RNCEKVExternalKeyboardView/RNCEKVExternalKeyboardView.h +1 -1
  56. package/ios/Views/RNCEKVExternalKeyboardView/RNCEKVExternalKeyboardView.mm +8 -4
  57. package/ios/Views/RNCEKVExternalKeyboardView/RNCEKVExternalKeyboardViewManager.mm +22 -11
  58. package/ios/Views/RNCEKVTextInputFocusWrapper/RNCEKVTextInputFocusWrapper.mm +17 -0
  59. package/ios/Views/RNCEKVTextInputFocusWrapper/RNCEKVTextInputFocusWrapperManager.mm +12 -0
  60. package/lib/commonjs/components/BaseKeyboardView/BaseKeyboardView.js +67 -65
  61. package/lib/commonjs/components/BaseKeyboardView/BaseKeyboardView.js.map +1 -1
  62. package/lib/commonjs/components/KeyboardExtendedInput/KeyboardExtendedInput.js +49 -97
  63. package/lib/commonjs/components/KeyboardExtendedInput/KeyboardExtendedInput.js.map +1 -1
  64. package/lib/commonjs/components/KeyboardFocusGroup/KeyboardFocusGroup.android.js.map +1 -1
  65. package/lib/commonjs/components/KeyboardFocusGroup/KeyboardFocusGroup.ios.js.map +1 -1
  66. package/lib/commonjs/components/KeyboardFocusGroup/KeyboardFocusGroup.js.map +1 -1
  67. package/lib/commonjs/components/{KeyboardExtendedInput/KeyboardExtendedInput.types.js → KeyboardFocusGroup/KeyboardFocusGroup.types.js} +1 -1
  68. package/lib/commonjs/components/KeyboardFocusGroup/KeyboardFocusGroup.types.js.map +1 -0
  69. package/lib/commonjs/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.js +2 -1
  70. package/lib/commonjs/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.js.map +1 -1
  71. package/lib/commonjs/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.js +2 -1
  72. package/lib/commonjs/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.js.map +1 -1
  73. package/lib/commonjs/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.js +2 -1
  74. package/lib/commonjs/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.js.map +1 -1
  75. package/lib/commonjs/components/KeyboardFocusView/KeyboardFocusView.js +14 -51
  76. package/lib/commonjs/components/KeyboardFocusView/KeyboardFocusView.js.map +1 -1
  77. package/lib/commonjs/components/index.js +47 -0
  78. package/lib/commonjs/components/index.js.map +1 -1
  79. package/lib/commonjs/index.js +37 -19
  80. package/lib/commonjs/index.js.map +1 -1
  81. package/lib/commonjs/nativeSpec/ExternalKeyboardLockViewNativeComponent.ts +1 -3
  82. package/lib/commonjs/nativeSpec/ExternalKeyboardViewNativeComponent.ts +12 -9
  83. package/lib/commonjs/nativeSpec/KeyboardFocusGroupNativeComponent.ts +5 -3
  84. package/lib/commonjs/nativeSpec/TextInputFocusWrapperNativeComponent.ts +7 -3
  85. package/lib/commonjs/types/KeyboardFocusLock.types.js +13 -0
  86. package/lib/commonjs/types/KeyboardFocusLock.types.js.map +1 -1
  87. package/lib/commonjs/types/baseKeyboardView.types.js +6 -0
  88. package/lib/commonjs/types/baseKeyboardView.types.js.map +1 -0
  89. package/lib/commonjs/types/{FocusStyle.js → focus.types.js} +1 -1
  90. package/lib/commonjs/types/{FocusStyle.js.map → focus.types.js.map} +1 -1
  91. package/lib/commonjs/types/focusOrder.types.js +33 -0
  92. package/lib/commonjs/types/focusOrder.types.js.map +1 -0
  93. package/lib/commonjs/types/{WithKeyboardFocus.js → focusStyle.types.js} +1 -1
  94. package/lib/commonjs/types/{WithKeyboardFocus.js.map → focusStyle.types.js.map} +1 -1
  95. package/lib/commonjs/types/index.js +18 -0
  96. package/lib/commonjs/types/index.js.map +1 -1
  97. package/lib/commonjs/types/keyPress.types.js +6 -0
  98. package/lib/{module/types/WithKeyboardFocus.js.map → commonjs/types/keyPress.types.js.map} +1 -1
  99. package/lib/commonjs/types/keyboardInput.types.js +6 -0
  100. package/lib/commonjs/types/keyboardInput.types.js.map +1 -0
  101. package/lib/commonjs/types/withKeyboardFocus.types.js +6 -0
  102. package/lib/commonjs/types/withKeyboardFocus.types.js.map +1 -0
  103. package/lib/commonjs/utils/mapLockFocus.js +37 -0
  104. package/lib/commonjs/utils/mapLockFocus.js.map +1 -0
  105. package/lib/commonjs/utils/useFocusStyle.js +4 -21
  106. package/lib/commonjs/utils/useFocusStyle.js.map +1 -1
  107. package/lib/commonjs/utils/useKeyboardFocusContainer.js +79 -0
  108. package/lib/commonjs/utils/useKeyboardFocusContainer.js.map +1 -0
  109. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.android.js +4 -7
  110. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.android.js.map +1 -1
  111. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.ios.js +3 -6
  112. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.ios.js.map +1 -1
  113. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.js +9 -7
  114. package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.js.map +1 -1
  115. package/lib/commonjs/utils/useKeyboardPressState.js +65 -0
  116. package/lib/commonjs/utils/useKeyboardPressState.js.map +1 -0
  117. package/lib/commonjs/utils/useOnFocusChange.js +1 -1
  118. package/lib/commonjs/utils/useOnFocusChange.js.map +1 -1
  119. package/lib/commonjs/utils/useOrderValidation.js +35 -0
  120. package/lib/commonjs/utils/useOrderValidation.js.map +1 -0
  121. package/lib/commonjs/utils/useRenderedChildren.js +34 -0
  122. package/lib/commonjs/utils/useRenderedChildren.js.map +1 -0
  123. package/lib/commonjs/utils/useWrappedOrderProps.js +35 -0
  124. package/lib/commonjs/utils/useWrappedOrderProps.js.map +1 -0
  125. package/lib/commonjs/utils/withKeyboardFocus.js +81 -96
  126. package/lib/commonjs/utils/withKeyboardFocus.js.map +1 -1
  127. package/lib/module/components/BaseKeyboardView/BaseKeyboardView.js +57 -55
  128. package/lib/module/components/BaseKeyboardView/BaseKeyboardView.js.map +1 -1
  129. package/lib/module/components/KeyboardExtendedInput/KeyboardExtendedInput.js +51 -99
  130. package/lib/module/components/KeyboardExtendedInput/KeyboardExtendedInput.js.map +1 -1
  131. package/lib/module/components/KeyboardFocusGroup/KeyboardFocusGroup.android.js.map +1 -1
  132. package/lib/module/components/KeyboardFocusGroup/KeyboardFocusGroup.ios.js.map +1 -1
  133. package/lib/module/components/KeyboardFocusGroup/KeyboardFocusGroup.js.map +1 -1
  134. package/lib/module/components/KeyboardFocusGroup/KeyboardFocusGroup.types.js +4 -0
  135. package/lib/module/components/KeyboardFocusGroup/KeyboardFocusGroup.types.js.map +1 -0
  136. package/lib/module/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.js +2 -1
  137. package/lib/module/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.js.map +1 -1
  138. package/lib/module/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.js +2 -1
  139. package/lib/module/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.js.map +1 -1
  140. package/lib/module/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.js +2 -1
  141. package/lib/module/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.js.map +1 -1
  142. package/lib/module/components/KeyboardFocusView/KeyboardFocusView.js +16 -53
  143. package/lib/module/components/KeyboardFocusView/KeyboardFocusView.js.map +1 -1
  144. package/lib/module/components/index.js +5 -0
  145. package/lib/module/components/index.js.map +1 -1
  146. package/lib/module/index.js +20 -7
  147. package/lib/module/index.js.map +1 -1
  148. package/lib/module/nativeSpec/ExternalKeyboardLockViewNativeComponent.ts +1 -3
  149. package/lib/module/nativeSpec/ExternalKeyboardViewNativeComponent.ts +12 -9
  150. package/lib/module/nativeSpec/KeyboardFocusGroupNativeComponent.ts +5 -3
  151. package/lib/module/nativeSpec/TextInputFocusWrapperNativeComponent.ts +7 -3
  152. package/lib/module/types/KeyboardFocusLock.types.js +12 -1
  153. package/lib/module/types/KeyboardFocusLock.types.js.map +1 -1
  154. package/lib/module/types/baseKeyboardView.types.js +4 -0
  155. package/lib/module/types/baseKeyboardView.types.js.map +1 -0
  156. package/lib/module/types/focus.types.js +4 -0
  157. package/lib/module/types/{FocusStyle.js.map → focus.types.js.map} +1 -1
  158. package/lib/module/types/focusOrder.types.js +31 -0
  159. package/lib/module/types/focusOrder.types.js.map +1 -0
  160. package/lib/module/types/focusStyle.types.js +4 -0
  161. package/lib/module/types/focusStyle.types.js.map +1 -0
  162. package/lib/module/types/index.js +3 -0
  163. package/lib/module/types/index.js.map +1 -1
  164. package/lib/module/types/keyPress.types.js +4 -0
  165. package/lib/module/types/keyPress.types.js.map +1 -0
  166. package/lib/module/types/keyboardInput.types.js +4 -0
  167. package/lib/module/types/keyboardInput.types.js.map +1 -0
  168. package/lib/module/types/withKeyboardFocus.types.js +4 -0
  169. package/lib/module/types/withKeyboardFocus.types.js.map +1 -0
  170. package/lib/module/utils/mapLockFocus.js +32 -0
  171. package/lib/module/utils/mapLockFocus.js.map +1 -0
  172. package/lib/module/utils/useFocusStyle.js +4 -21
  173. package/lib/module/utils/useFocusStyle.js.map +1 -1
  174. package/lib/module/utils/useKeyboardFocusContainer.js +74 -0
  175. package/lib/module/utils/useKeyboardFocusContainer.js.map +1 -0
  176. package/lib/module/utils/useKeyboardPress/useKeyboardPress.android.js +4 -7
  177. package/lib/module/utils/useKeyboardPress/useKeyboardPress.android.js.map +1 -1
  178. package/lib/module/utils/useKeyboardPress/useKeyboardPress.ios.js +3 -6
  179. package/lib/module/utils/useKeyboardPress/useKeyboardPress.ios.js.map +1 -1
  180. package/lib/module/utils/useKeyboardPress/useKeyboardPress.js +9 -7
  181. package/lib/module/utils/useKeyboardPress/useKeyboardPress.js.map +1 -1
  182. package/lib/module/utils/useKeyboardPressState.js +60 -0
  183. package/lib/module/utils/useKeyboardPressState.js.map +1 -0
  184. package/lib/module/utils/useOnFocusChange.js +1 -1
  185. package/lib/module/utils/useOnFocusChange.js.map +1 -1
  186. package/lib/module/utils/useOrderValidation.js +30 -0
  187. package/lib/module/utils/useOrderValidation.js.map +1 -0
  188. package/lib/module/utils/useRenderedChildren.js +29 -0
  189. package/lib/module/utils/useRenderedChildren.js.map +1 -0
  190. package/lib/module/utils/useWrappedOrderProps.js +30 -0
  191. package/lib/module/utils/useWrappedOrderProps.js.map +1 -0
  192. package/lib/module/utils/withKeyboardFocus.js +84 -99
  193. package/lib/module/utils/withKeyboardFocus.js.map +1 -1
  194. package/lib/typescript/src/components/BaseKeyboardView/BaseKeyboardView.d.ts +30 -10
  195. package/lib/typescript/src/components/BaseKeyboardView/BaseKeyboardView.d.ts.map +1 -1
  196. package/lib/typescript/src/components/KeyboardExtendedInput/KeyboardExtendedInput.d.ts +187 -12
  197. package/lib/typescript/src/components/KeyboardExtendedInput/KeyboardExtendedInput.d.ts.map +1 -1
  198. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.android.d.ts +4 -146
  199. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.android.d.ts.map +1 -1
  200. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.d.ts +2 -12
  201. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.d.ts.map +1 -1
  202. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.ios.d.ts +4 -146
  203. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.ios.d.ts.map +1 -1
  204. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.types.d.ts +13 -0
  205. package/lib/typescript/src/components/KeyboardFocusGroup/KeyboardFocusGroup.types.d.ts.map +1 -0
  206. package/lib/typescript/src/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.d.ts +1 -1
  207. package/lib/typescript/src/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.d.ts.map +1 -1
  208. package/lib/typescript/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.d.ts +1 -1
  209. package/lib/typescript/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.d.ts.map +1 -1
  210. package/lib/typescript/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.d.ts +1 -1
  211. package/lib/typescript/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.d.ts.map +1 -1
  212. package/lib/typescript/src/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.d.ts +1 -1
  213. package/lib/typescript/src/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.d.ts.map +1 -1
  214. package/lib/typescript/src/components/KeyboardFocusView/KeyboardFocusView.d.ts +28 -18
  215. package/lib/typescript/src/components/KeyboardFocusView/KeyboardFocusView.d.ts.map +1 -1
  216. package/lib/typescript/src/components/Touchable/Pressable.d.ts +14 -14
  217. package/lib/typescript/src/components/Touchable/Pressable.d.ts.map +1 -1
  218. package/lib/typescript/src/components/index.d.ts +5 -0
  219. package/lib/typescript/src/components/index.d.ts.map +1 -1
  220. package/lib/typescript/src/index.d.ts +694 -9
  221. package/lib/typescript/src/index.d.ts.map +1 -1
  222. package/lib/typescript/src/nativeSpec/ExternalKeyboardLockViewNativeComponent.d.ts +2 -4
  223. package/lib/typescript/src/nativeSpec/ExternalKeyboardLockViewNativeComponent.d.ts.map +1 -1
  224. package/lib/typescript/src/nativeSpec/ExternalKeyboardViewNativeComponent.d.ts +6 -7
  225. package/lib/typescript/src/nativeSpec/ExternalKeyboardViewNativeComponent.d.ts.map +1 -1
  226. package/lib/typescript/src/nativeSpec/KeyboardFocusGroupNativeComponent.d.ts +2 -4
  227. package/lib/typescript/src/nativeSpec/KeyboardFocusGroupNativeComponent.d.ts.map +1 -1
  228. package/lib/typescript/src/nativeSpec/TextInputFocusWrapperNativeComponent.d.ts +4 -4
  229. package/lib/typescript/src/nativeSpec/TextInputFocusWrapperNativeComponent.d.ts.map +1 -1
  230. package/lib/typescript/src/types/KeyboardFocusLock.types.d.ts +15 -1
  231. package/lib/typescript/src/types/KeyboardFocusLock.types.d.ts.map +1 -1
  232. package/lib/typescript/src/types/KeyboardFocusView.types.d.ts +16 -14
  233. package/lib/typescript/src/types/KeyboardFocusView.types.d.ts.map +1 -1
  234. package/lib/typescript/src/types/baseKeyboardView.types.d.ts +119 -0
  235. package/lib/typescript/src/types/baseKeyboardView.types.d.ts.map +1 -0
  236. package/lib/typescript/src/types/focus.types.d.ts +35 -0
  237. package/lib/typescript/src/types/focus.types.d.ts.map +1 -0
  238. package/lib/typescript/src/types/focusOrder.types.d.ts +57 -0
  239. package/lib/typescript/src/types/focusOrder.types.d.ts.map +1 -0
  240. package/lib/typescript/src/types/focusStyle.types.d.ts +11 -0
  241. package/lib/typescript/src/types/focusStyle.types.d.ts.map +1 -0
  242. package/lib/typescript/src/types/index.d.ts +11 -2
  243. package/lib/typescript/src/types/index.d.ts.map +1 -1
  244. package/lib/typescript/src/types/keyPress.types.d.ts +7 -0
  245. package/lib/typescript/src/types/keyPress.types.d.ts.map +1 -0
  246. package/lib/typescript/src/types/keyboardInput.types.d.ts +53 -0
  247. package/lib/typescript/src/types/keyboardInput.types.d.ts.map +1 -0
  248. package/lib/typescript/src/types/withKeyboardFocus.types.d.ts +109 -0
  249. package/lib/typescript/src/types/withKeyboardFocus.types.d.ts.map +1 -0
  250. package/lib/typescript/src/utils/mapLockFocus.d.ts +3 -0
  251. package/lib/typescript/src/utils/mapLockFocus.d.ts.map +1 -0
  252. package/lib/typescript/src/utils/useFocusStyle.d.ts +26 -34
  253. package/lib/typescript/src/utils/useFocusStyle.d.ts.map +1 -1
  254. package/lib/typescript/src/utils/useKeyboardFocusContainer.d.ts +898 -0
  255. package/lib/typescript/src/utils/useKeyboardFocusContainer.d.ts.map +1 -0
  256. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.android.d.ts +2 -2
  257. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.android.d.ts.map +1 -1
  258. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.d.ts +4 -3
  259. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.d.ts.map +1 -1
  260. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.ios.d.ts +3 -3
  261. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.ios.d.ts.map +1 -1
  262. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.types.d.ts +1 -2
  263. package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.types.d.ts.map +1 -1
  264. package/lib/typescript/src/utils/useKeyboardPressState.d.ts +29 -0
  265. package/lib/typescript/src/utils/useKeyboardPressState.d.ts.map +1 -0
  266. package/lib/typescript/src/utils/useOnFocusChange.d.ts +3 -3
  267. package/lib/typescript/src/utils/useOnFocusChange.d.ts.map +1 -1
  268. package/lib/typescript/src/utils/useOrderValidation.d.ts +8 -0
  269. package/lib/typescript/src/utils/useOrderValidation.d.ts.map +1 -0
  270. package/lib/typescript/src/utils/useRenderedChildren.d.ts +18 -0
  271. package/lib/typescript/src/utils/useRenderedChildren.d.ts.map +1 -0
  272. package/lib/typescript/src/utils/useWrappedOrderProps.d.ts +13 -0
  273. package/lib/typescript/src/utils/useWrappedOrderProps.d.ts.map +1 -0
  274. package/lib/typescript/src/utils/withKeyboardFocus.d.ts +3 -4
  275. package/lib/typescript/src/utils/withKeyboardFocus.d.ts.map +1 -1
  276. package/package.json +4 -2
  277. package/src/components/BaseKeyboardView/BaseKeyboardView.tsx +74 -94
  278. package/src/components/KeyboardExtendedInput/KeyboardExtendedInput.tsx +49 -149
  279. package/src/components/KeyboardFocusGroup/KeyboardFocusGroup.android.tsx +23 -32
  280. package/src/components/KeyboardFocusGroup/KeyboardFocusGroup.ios.tsx +32 -41
  281. package/src/components/KeyboardFocusGroup/KeyboardFocusGroup.tsx +3 -14
  282. package/src/components/KeyboardFocusGroup/KeyboardFocusGroup.types.ts +15 -0
  283. package/src/components/KeyboardFocusLock/FocusFrame/FocusFrame.android.tsx +2 -2
  284. package/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.android.tsx +2 -2
  285. package/src/components/KeyboardFocusLock/FocusTrap/FocusTrap.tsx +1 -1
  286. package/src/components/KeyboardFocusLock/KeyboardFocusLockBase/KeyboardFocusLockBase.tsx +2 -2
  287. package/src/components/KeyboardFocusView/KeyboardFocusView.tsx +29 -68
  288. package/src/components/Touchable/Pressable.tsx +2 -2
  289. package/src/components/index.ts +12 -0
  290. package/src/index.tsx +44 -32
  291. package/src/nativeSpec/ExternalKeyboardLockViewNativeComponent.ts +1 -3
  292. package/src/nativeSpec/ExternalKeyboardViewNativeComponent.ts +12 -9
  293. package/src/nativeSpec/KeyboardFocusGroupNativeComponent.ts +5 -3
  294. package/src/nativeSpec/TextInputFocusWrapperNativeComponent.ts +7 -3
  295. package/src/types/KeyboardFocusLock.types.ts +16 -1
  296. package/src/types/KeyboardFocusView.types.ts +17 -18
  297. package/src/types/baseKeyboardView.types.ts +122 -0
  298. package/src/types/focus.types.ts +40 -0
  299. package/src/types/focusOrder.types.ts +59 -0
  300. package/src/types/{FocusStyle.ts → focusStyle.types.ts} +5 -0
  301. package/src/types/index.ts +32 -2
  302. package/src/types/keyPress.types.ts +8 -0
  303. package/src/types/keyboardInput.types.ts +81 -0
  304. package/src/types/withKeyboardFocus.types.ts +178 -0
  305. package/src/utils/mapLockFocus.ts +31 -0
  306. package/src/utils/useFocusStyle.tsx +13 -41
  307. package/src/utils/useKeyboardFocusContainer.ts +102 -0
  308. package/src/utils/useKeyboardPress/useKeyboardPress.android.ts +4 -7
  309. package/src/utils/useKeyboardPress/useKeyboardPress.ios.ts +3 -6
  310. package/src/utils/useKeyboardPress/useKeyboardPress.ts +9 -7
  311. package/src/utils/useKeyboardPress/useKeyboardPress.types.ts +1 -2
  312. package/src/utils/useKeyboardPressState.ts +81 -0
  313. package/src/utils/useOnFocusChange.ts +4 -7
  314. package/src/utils/useOrderValidation.ts +74 -0
  315. package/src/utils/useRenderedChildren.ts +42 -0
  316. package/src/utils/useWrappedOrderProps.ts +48 -0
  317. package/src/utils/withKeyboardFocus.tsx +105 -125
  318. package/lib/commonjs/components/KeyboardExtendedInput/KeyboardExtendedInput.types.js.map +0 -1
  319. package/lib/commonjs/components/KeyboardFocusView/hooks/index.js +0 -13
  320. package/lib/commonjs/components/KeyboardFocusView/hooks/index.js.map +0 -1
  321. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/index.js +0 -13
  322. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/index.js.map +0 -1
  323. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.js +0 -33
  324. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.js.map +0 -1
  325. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.js +0 -39
  326. package/lib/commonjs/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.js.map +0 -1
  327. package/lib/commonjs/components/RenderPropComponent/RenderPropComponent.js +0 -23
  328. package/lib/commonjs/components/RenderPropComponent/RenderPropComponent.js.map +0 -1
  329. package/lib/commonjs/types/BaseKeyboardView.js +0 -18
  330. package/lib/commonjs/types/BaseKeyboardView.js.map +0 -1
  331. package/lib/module/components/KeyboardExtendedInput/KeyboardExtendedInput.types.js +0 -4
  332. package/lib/module/components/KeyboardExtendedInput/KeyboardExtendedInput.types.js.map +0 -1
  333. package/lib/module/components/KeyboardFocusView/hooks/index.js +0 -4
  334. package/lib/module/components/KeyboardFocusView/hooks/index.js.map +0 -1
  335. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/index.js +0 -4
  336. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/index.js.map +0 -1
  337. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.js +0 -28
  338. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.js.map +0 -1
  339. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.js +0 -34
  340. package/lib/module/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.js.map +0 -1
  341. package/lib/module/components/RenderPropComponent/RenderPropComponent.js +0 -17
  342. package/lib/module/components/RenderPropComponent/RenderPropComponent.js.map +0 -1
  343. package/lib/module/types/BaseKeyboardView.js +0 -14
  344. package/lib/module/types/BaseKeyboardView.js.map +0 -1
  345. package/lib/module/types/FocusStyle.js +0 -4
  346. package/lib/module/types/WithKeyboardFocus.js +0 -4
  347. package/lib/typescript/src/components/KeyboardExtendedInput/KeyboardExtendedInput.types.d.ts +0 -45
  348. package/lib/typescript/src/components/KeyboardExtendedInput/KeyboardExtendedInput.types.d.ts.map +0 -1
  349. package/lib/typescript/src/components/KeyboardFocusView/hooks/index.d.ts +0 -2
  350. package/lib/typescript/src/components/KeyboardFocusView/hooks/index.d.ts.map +0 -1
  351. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/index.d.ts +0 -2
  352. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/index.d.ts.map +0 -1
  353. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.d.ts +0 -175
  354. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.d.ts.map +0 -1
  355. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.d.ts +0 -181
  356. package/lib/typescript/src/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.d.ts.map +0 -1
  357. package/lib/typescript/src/components/RenderPropComponent/RenderPropComponent.d.ts +0 -6
  358. package/lib/typescript/src/components/RenderPropComponent/RenderPropComponent.d.ts.map +0 -1
  359. package/lib/typescript/src/types/BaseKeyboardView.d.ts +0 -70
  360. package/lib/typescript/src/types/BaseKeyboardView.d.ts.map +0 -1
  361. package/lib/typescript/src/types/FocusStyle.d.ts +0 -6
  362. package/lib/typescript/src/types/FocusStyle.d.ts.map +0 -1
  363. package/lib/typescript/src/types/WithKeyboardFocus.d.ts +0 -47
  364. package/lib/typescript/src/types/WithKeyboardFocus.d.ts.map +0 -1
  365. package/src/components/KeyboardExtendedInput/KeyboardExtendedInput.types.ts +0 -73
  366. package/src/components/KeyboardFocusView/hooks/index.ts +0 -1
  367. package/src/components/KeyboardFocusView/hooks/useFocusStyle/index.ts +0 -1
  368. package/src/components/KeyboardFocusView/hooks/useFocusStyle/useFocusStyle.ts +0 -34
  369. package/src/components/KeyboardFocusView/hooks/useFocusStyle/useTintStyle.ts +0 -41
  370. package/src/components/RenderPropComponent/RenderPropComponent.tsx +0 -18
  371. package/src/types/BaseKeyboardView.ts +0 -74
  372. package/src/types/WithKeyboardFocus.ts +0 -115
@@ -1,49 +1,16 @@
1
- import React, { useEffect, useMemo } from 'react';
2
- import { View, TextInput, Platform, StyleSheet } from 'react-native';
1
+ import React, { useMemo } from 'react';
2
+ import { TextInput, Platform } from 'react-native';
3
3
 
4
4
  import { TextInputFocusWrapperNative } from '../../nativeSpec';
5
5
  import { useFocusStyle } from '../../utils/useFocusStyle';
6
6
  import { focusEventMapper } from '../../utils/focusEventMapper';
7
- import { RenderPropComponent } from '../RenderPropComponent/RenderPropComponent';
8
7
  import { useGroupIdentifierContext } from '../../context/GroupIdentifierContext';
9
8
  import { useOrderFocusGroup } from '../../context/OrderFocusContext';
10
- import type { KeyboardInputProps } from './KeyboardExtendedInput.types';
9
+ import { mapLockFocus } from '../../utils/mapLockFocus';
10
+ import { useOrderValidation } from '../../utils/useOrderValidation';
11
+ import { useWrappedOrderProps } from '../../utils/useWrappedOrderProps';
12
+ import type { KeyboardInputProps } from '../../types';
11
13
  import { blurMap, focusMap } from './KeyboardExtendedInput.consts';
12
- import { wrapOrderPrefix } from '../../utils/wrapOrderPrefix';
13
- import {
14
- LockFocusEnum,
15
- type LockFocusType,
16
- } from '../../types/BaseKeyboardView';
17
-
18
- enum BITS {
19
- BIT_01 = 0b1,
20
- BIT_02 = 0b10,
21
- BIT_03 = 0b100,
22
- BIT_04 = 0b1000,
23
- BIT_05 = 0b10000,
24
- BIT_06 = 0b100000,
25
- BIT_07 = 0b1000000,
26
- BIT_08 = 0b10000000,
27
- BIT_09 = 0b100000000,
28
- BIT_10 = 0b1000000000,
29
- }
30
-
31
- const focusBinaryValue: Record<LockFocusEnum, number> = {
32
- [LockFocusEnum.Up]: BITS.BIT_01,
33
- [LockFocusEnum.Down]: BITS.BIT_02,
34
- [LockFocusEnum.Left]: BITS.BIT_03,
35
- [LockFocusEnum.Right]: BITS.BIT_04,
36
- [LockFocusEnum.Forward]: BITS.BIT_05,
37
- [LockFocusEnum.Backward]: BITS.BIT_06,
38
- [LockFocusEnum.First]: BITS.BIT_09,
39
- [LockFocusEnum.Last]: BITS.BIT_10,
40
- };
41
-
42
- const mapLockFocus = (values: LockFocusType[] | undefined): number => {
43
- if (!values || !values.length) return 0;
44
- // eslint-disable-next-line no-bitwise
45
- return values.reduce((acc, item) => acc | focusBinaryValue[item], 0);
46
- };
47
14
 
48
15
  const isIOS = Platform.OS === 'ios';
49
16
 
@@ -60,12 +27,10 @@ export const KeyboardExtendedInput = React.forwardRef<
60
27
  focusStyle,
61
28
  style,
62
29
  haloEffect = true,
63
- canBeFocusable = true,
30
+ roundedHaloFix = false,
64
31
  focusable = true,
65
32
  containerFocusStyle,
66
33
  tintColor,
67
- tintType = 'default',
68
- FocusHoverComponent,
69
34
  onSubmitEditing,
70
35
  submitBehavior,
71
36
  groupIdentifier,
@@ -79,88 +44,51 @@ export const KeyboardExtendedInput = React.forwardRef<
79
44
  orderRight,
80
45
  orderUp,
81
46
  orderDown,
47
+ orderFirst,
48
+ orderLast,
82
49
  rejectResponderTermination,
83
50
  selectionHandleColor,
84
51
  cursorColor,
85
52
  maxFontSizeMultiplier,
86
- orderFirst,
87
- orderLast,
88
53
  defaultFocusHighlightEnabled = true,
54
+ tintType,
89
55
  orderPrefix: _orderPrefix,
90
56
  ...props
91
57
  },
92
58
  ref
93
59
  ) => {
94
60
  const {
95
- focused,
96
61
  containerFocusedStyle,
97
62
  componentFocusedStyle,
98
63
  onFocusChangeHandler,
99
- hoverColor,
100
64
  } = useFocusStyle({
101
65
  onFocusChange,
102
- tintColor,
103
66
  focusStyle,
104
67
  containerFocusStyle,
105
- tintType,
106
68
  });
107
69
 
108
70
  const contextIdentifier = useGroupIdentifierContext();
109
71
  const contextGroupId = useOrderFocusGroup();
110
72
  const groupId = orderGroup ?? contextGroupId;
111
-
112
73
  const orderPrefix = _orderPrefix ?? contextGroupId ?? '';
113
74
 
114
- const withHaloEffect = Platform.select({
115
- ios: tintType === 'default' && haloEffect,
116
- android: defaultFocusHighlightEnabled,
75
+ useOrderValidation({
76
+ groupId,
77
+ orderPrefix,
78
+ orderIndex,
79
+ orderId,
80
+ orderForward,
81
+ orderBackward,
82
+ orderFirst,
83
+ orderLast,
84
+ orderLeft,
85
+ orderRight,
86
+ orderUp,
87
+ orderDown,
117
88
  });
118
89
 
119
- const nativeFocusHandler = useMemo(
120
- () => focusEventMapper(onFocusChangeHandler),
121
- [onFocusChangeHandler]
122
- );
123
-
124
- const HoverComonent = useMemo(() => {
125
- if (FocusHoverComponent) return FocusHoverComponent;
126
- if (tintType === 'hover')
127
- return <View style={[hoverColor, styles.absolute, styles.opacity]} />;
128
-
129
- return undefined;
130
- }, [FocusHoverComponent, hoverColor, tintType]);
131
-
132
- const blurOnSubmit = submitBehavior
133
- ? submitBehavior === 'blurAndSubmit'
134
- : props.blurOnSubmit ?? true;
135
-
136
- useEffect(() => {
137
- if (!__DEV__) return;
138
- if (orderIndex !== undefined && !groupId)
139
- console.warn(
140
- '`orderIndex` must be declared alongside `orderGroup` for proper functionality. Ensure components are wrapped with `KeyboardOrderFocusGroup` or provide `orderGroup` directly.'
141
- );
142
- }, [groupId, orderIndex]);
143
-
144
- useEffect(() => {
145
- if (!__DEV__) return;
146
- const hasOrderLinkProp =
147
- orderId !== undefined ||
148
- orderForward !== undefined ||
149
- orderBackward !== undefined ||
150
- orderFirst !== undefined ||
151
- orderLast !== undefined ||
152
- orderLeft !== undefined ||
153
- orderRight !== undefined ||
154
- orderUp !== undefined ||
155
- orderDown !== undefined;
156
- if (hasOrderLinkProp && orderPrefix === '') {
157
- console.warn(
158
- '[react-native-external-keyboard] orderId, orderForward, orderBackward, orderFirst, orderLast, ' +
159
- 'orderLeft, orderRight, orderUp, and orderDown are global IDs. ' +
160
- 'Wrap the component in <KeyboardOrderFocusGroup> or pass orderPrefix to avoid ID collisions across screens.'
161
- );
162
- }
163
- }, [
90
+ const wrappedOrderProps = useWrappedOrderProps({
91
+ orderPrefix,
164
92
  orderId,
165
93
  orderForward,
166
94
  orderBackward,
@@ -170,55 +98,43 @@ export const KeyboardExtendedInput = React.forwardRef<
170
98
  orderRight,
171
99
  orderUp,
172
100
  orderDown,
173
- orderPrefix,
174
- ]);
101
+ });
175
102
 
176
- const wrapPrefix = useMemo(
177
- () => wrapOrderPrefix(orderPrefix),
178
- [orderPrefix]
103
+ const hasFocusListener = Boolean(
104
+ onFocusChange || focusStyle || containerFocusStyle
179
105
  );
180
106
 
181
- const wrappedOrderProps = useMemo(
182
- () => ({
183
- orderId: wrapPrefix(orderId),
184
- orderForward: wrapPrefix(orderForward),
185
- orderBackward: wrapPrefix(orderBackward),
186
- orderLeft: wrapPrefix(orderLeft),
187
- orderRight: wrapPrefix(orderRight),
188
- orderUp: wrapPrefix(orderUp),
189
- orderDown: wrapPrefix(orderDown),
190
- orderFirst: wrapPrefix(
191
- orderFirst === null ? undefined : orderFirst ?? orderForward
192
- ),
193
- orderLast: wrapPrefix(
194
- orderLast === null ? undefined : orderLast ?? orderBackward
195
- ),
196
- }),
197
- [
198
- wrapPrefix,
199
- orderId,
200
- orderForward,
201
- orderBackward,
202
- orderLeft,
203
- orderRight,
204
- orderUp,
205
- orderDown,
206
- orderFirst,
207
- orderLast,
208
- ]
107
+ const nativeFocusHandler = useMemo(
108
+ () => focusEventMapper(onFocusChangeHandler),
109
+ [onFocusChangeHandler]
209
110
  );
210
111
 
112
+ const blurOnSubmit = submitBehavior
113
+ ? submitBehavior === 'blurAndSubmit'
114
+ : props.blurOnSubmit ?? true;
115
+
116
+ const withHaloEffect =
117
+ tintType !== 'none' &&
118
+ Platform.select({
119
+ ios: haloEffect,
120
+ android: defaultFocusHighlightEnabled,
121
+ });
122
+
123
+ const isContainerFocusable = !isIOS && focusable ? undefined : false;
124
+
211
125
  return (
212
126
  <TextInputFocusWrapperNative
213
- onFocusChange={nativeFocusHandler as unknown as undefined} //ToDo update type
127
+ onFocusChange={hasFocusListener ? nativeFocusHandler : undefined}
128
+ hasOnFocusChanged={hasFocusListener}
214
129
  focusType={focusMap[focusType]}
215
130
  blurType={blurMap[blurType]}
216
131
  style={[containerStyle, containerFocusedStyle]}
217
132
  haloEffect={withHaloEffect}
133
+ roundedHaloFix={withHaloEffect === false && roundedHaloFix}
218
134
  multiline={props.multiline}
219
135
  blurOnSubmit={blurOnSubmit}
220
136
  onMultiplyTextSubmit={onSubmitEditing}
221
- canBeFocused={canBeFocusable && focusable}
137
+ canBeFocused={isContainerFocusable}
222
138
  tintColor={isIOS ? tintColor : undefined}
223
139
  groupIdentifier={groupIdentifier ?? contextIdentifier}
224
140
  lockFocus={mapLockFocus(lockFocus)}
@@ -228,7 +144,7 @@ export const KeyboardExtendedInput = React.forwardRef<
228
144
  >
229
145
  <TextInput
230
146
  ref={ref as React.RefObject<any>}
231
- editable={canBeFocusable && focusable}
147
+ editable={focusable}
232
148
  style={[style, componentFocusedStyle]}
233
149
  onSubmitEditing={onSubmitEditing}
234
150
  submitBehavior={submitBehavior}
@@ -238,23 +154,7 @@ export const KeyboardExtendedInput = React.forwardRef<
238
154
  maxFontSizeMultiplier={maxFontSizeMultiplier ?? undefined}
239
155
  {...props}
240
156
  />
241
- {focused && HoverComonent && (
242
- <RenderPropComponent render={HoverComonent} />
243
- )}
244
157
  </TextInputFocusWrapperNative>
245
158
  );
246
159
  }
247
160
  );
248
-
249
- const styles = StyleSheet.create({
250
- absolute: {
251
- position: 'absolute',
252
- top: 0,
253
- left: 0,
254
- right: 0,
255
- bottom: 0,
256
- },
257
- opacity: {
258
- opacity: 0.3,
259
- },
260
- });
@@ -1,39 +1,30 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type ColorValue, type ViewProps } from 'react-native';
1
+ import React from 'react';
3
2
  import { KeyboardFocusGroupNative } from '../../nativeSpec';
4
3
  import { useOnFocusChange } from '../../utils/useOnFocusChange';
5
4
  import { useFocusStyle } from '../../utils/useFocusStyle';
6
- import type { FocusStyle } from '../../types';
5
+ import type { KeyboardFocusGroupProps } from './KeyboardFocusGroup.types';
7
6
 
8
- export type KeyboardFocusGroupProps = PropsWithChildren<{
9
- groupIdentifier?: string;
10
- tintColor?: ColorValue;
11
- onFocus?: () => void;
12
- onBlur?: () => void;
13
- onFocusChange?: (isFocused: boolean) => void;
14
- orderGroup?: string;
15
- focusStyle?: FocusStyle;
16
- }>;
7
+ export type { KeyboardFocusGroupProps };
17
8
 
18
- export const KeyboardFocusGroup = React.memo<
19
- ViewProps & KeyboardFocusGroupProps
20
- >((props) => {
21
- const { containerFocusedStyle: focusStyle, onFocusChangeHandler } =
22
- useFocusStyle({
23
- onFocusChange: props.onFocusChange,
24
- containerFocusStyle: props.focusStyle,
25
- });
9
+ export const KeyboardFocusGroup = React.memo<KeyboardFocusGroupProps>(
10
+ (props) => {
11
+ const { containerFocusedStyle: focusStyle, onFocusChangeHandler } =
12
+ useFocusStyle({
13
+ onFocusChange: props.onFocusChange,
14
+ containerFocusStyle: props.focusStyle,
15
+ });
26
16
 
27
- const onGroupFocusChangeHandler = useOnFocusChange({
28
- ...props,
29
- onFocusChange: onFocusChangeHandler,
30
- });
17
+ const onGroupFocusChangeHandler = useOnFocusChange({
18
+ ...props,
19
+ onFocusChange: onFocusChangeHandler,
20
+ });
31
21
 
32
- return (
33
- <KeyboardFocusGroupNative
34
- {...props}
35
- style={[props.style, focusStyle]}
36
- onGroupFocusChange={onGroupFocusChangeHandler}
37
- />
38
- );
39
- });
22
+ return (
23
+ <KeyboardFocusGroupNative
24
+ {...props}
25
+ style={[props.style, focusStyle]}
26
+ onGroupFocusChange={onGroupFocusChangeHandler}
27
+ />
28
+ );
29
+ }
30
+ );
@@ -1,53 +1,44 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type ColorValue, type ViewProps } from 'react-native';
1
+ import React from 'react';
3
2
  import { KeyboardFocusGroupNative } from '../../nativeSpec';
4
3
  import { GroupIdentifierContext } from '../../context/GroupIdentifierContext';
5
4
  import { useOnFocusChange } from '../../utils/useOnFocusChange';
6
5
  import { useFocusStyle } from '../../utils/useFocusStyle';
7
- import type { FocusStyle } from '../../types';
6
+ import type { KeyboardFocusGroupProps } from './KeyboardFocusGroup.types';
8
7
 
9
- export type KeyboardFocusGroupProps = PropsWithChildren<{
10
- groupIdentifier?: string;
11
- tintColor?: ColorValue;
12
- onFocus?: () => void;
13
- onBlur?: () => void;
14
- onFocusChange?: (isFocused: boolean) => void;
15
- focusStyle?: FocusStyle;
16
- orderGroup?: string;
17
- }>;
8
+ export type { KeyboardFocusGroupProps };
18
9
 
19
- export const KeyboardFocusGroup = React.memo<
20
- ViewProps & KeyboardFocusGroupProps
21
- >((props) => {
22
- const { groupIdentifier } = props;
10
+ export const KeyboardFocusGroup = React.memo<KeyboardFocusGroupProps>(
11
+ (props) => {
12
+ const { groupIdentifier } = props;
23
13
 
24
- const { containerFocusedStyle: focusStyle, onFocusChangeHandler } =
25
- useFocusStyle({
26
- onFocusChange: props.onFocusChange,
27
- containerFocusStyle: props.focusStyle,
14
+ const { containerFocusedStyle: focusStyle, onFocusChangeHandler } =
15
+ useFocusStyle({
16
+ onFocusChange: props.onFocusChange,
17
+ containerFocusStyle: props.focusStyle,
18
+ });
19
+
20
+ const onGroupFocusChangeHandler = useOnFocusChange({
21
+ ...props,
22
+ onFocusChange: onFocusChangeHandler,
28
23
  });
29
24
 
30
- const onGroupFocusChangeHandler = useOnFocusChange({
31
- ...props,
32
- onFocusChange: onFocusChangeHandler,
33
- });
25
+ if (!groupIdentifier)
26
+ return (
27
+ <KeyboardFocusGroupNative
28
+ {...props}
29
+ style={[props.style, focusStyle]}
30
+ onGroupFocusChange={onGroupFocusChangeHandler}
31
+ />
32
+ );
34
33
 
35
- if (!groupIdentifier)
36
34
  return (
37
- <KeyboardFocusGroupNative
38
- {...props}
39
- style={[props.style, focusStyle]}
40
- onGroupFocusChange={onGroupFocusChangeHandler}
41
- />
35
+ <GroupIdentifierContext.Provider value={groupIdentifier}>
36
+ <KeyboardFocusGroupNative
37
+ {...props}
38
+ style={[props.style, focusStyle]}
39
+ onGroupFocusChange={onGroupFocusChangeHandler}
40
+ />
41
+ </GroupIdentifierContext.Provider>
42
42
  );
43
-
44
- return (
45
- <GroupIdentifierContext.Provider value={groupIdentifier}>
46
- <KeyboardFocusGroupNative
47
- {...props}
48
- style={[props.style, focusStyle]}
49
- onGroupFocusChange={onGroupFocusChangeHandler}
50
- />
51
- </GroupIdentifierContext.Provider>
52
- );
53
- });
43
+ }
44
+ );
@@ -1,18 +1,7 @@
1
- import { type PropsWithChildren } from 'react';
2
- import { type ColorValue, View, type ViewProps } from 'react-native';
3
- import type { FocusStyle } from '../../types';
1
+ import { View } from 'react-native';
2
+ import type { KeyboardFocusGroupProps } from './KeyboardFocusGroup.types';
4
3
 
5
- export type KeyboardFocusGroupProps = PropsWithChildren<
6
- ViewProps & {
7
- groupIdentifier?: string;
8
- tintColor?: ColorValue;
9
- onFocus?: () => void;
10
- onBlur?: () => void;
11
- onFocusChange?: (isFocused: boolean) => void;
12
- focusStyle?: FocusStyle;
13
- orderGroup?: string;
14
- }
15
- >;
4
+ export type { KeyboardFocusGroupProps };
16
5
 
17
6
  export const KeyboardFocusGroup =
18
7
  View as unknown as React.FC<KeyboardFocusGroupProps>;
@@ -0,0 +1,15 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import type { ColorValue, ViewProps } from 'react-native';
3
+ import type { FocusStyle } from '../../types';
4
+
5
+ export type KeyboardFocusGroupProps = PropsWithChildren<
6
+ ViewProps & {
7
+ groupIdentifier?: string;
8
+ tintColor?: ColorValue;
9
+ onFocus?: () => void;
10
+ onBlur?: () => void;
11
+ onFocusChange?: (isFocused: boolean) => void;
12
+ focusStyle?: FocusStyle;
13
+ orderGroup?: string;
14
+ }
15
+ >;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { FrameProvider } from '../../../context/FocusFrameProviderContext';
3
3
  import { KeyboardFocusLockBase } from '../KeyboardFocusLockBase/KeyboardFocusLockBase';
4
- import type { KeyboardFocusLockProps } from '../../../types/KeyboardFocusLock.types';
4
+ import { LockComponentType, type KeyboardFocusLockProps } from '../../../types';
5
5
 
6
6
  export const FocusFrame = React.memo<KeyboardFocusLockProps>(
7
7
  ({ lockDisabled = false, ...props }) => {
@@ -9,7 +9,7 @@ export const FocusFrame = React.memo<KeyboardFocusLockProps>(
9
9
  <FrameProvider>
10
10
  <KeyboardFocusLockBase
11
11
  {...props}
12
- componentType={1}
12
+ componentType={LockComponentType.Frame}
13
13
  lockDisabled={lockDisabled}
14
14
  />
15
15
  </FrameProvider>
@@ -2,14 +2,14 @@ import React from 'react';
2
2
 
3
3
  import { FocusTrapMountWrapper } from './FocusTrapMountWrapper';
4
4
  import { KeyboardFocusLockBase } from '../KeyboardFocusLockBase/KeyboardFocusLockBase';
5
- import type { KeyboardFocusLockProps } from '../../../types/KeyboardFocusLock.types';
5
+ import { LockComponentType, type KeyboardFocusLockProps } from '../../../types';
6
6
 
7
7
  export const FocusTrap = React.memo<KeyboardFocusLockProps>(
8
8
  ({ lockDisabled = false, ...props }) => (
9
9
  <FocusTrapMountWrapper>
10
10
  <KeyboardFocusLockBase
11
11
  {...props}
12
- componentType={0}
12
+ componentType={LockComponentType.Trap}
13
13
  lockDisabled={lockDisabled}
14
14
  />
15
15
  </FocusTrapMountWrapper>
@@ -1,6 +1,6 @@
1
1
  import { View } from 'react-native';
2
2
  import { FocusTrapMountWrapper } from './FocusTrapMountWrapper';
3
- import type { KeyboardFocusLockProps } from '../../../types/KeyboardFocusLock.types';
3
+ import type { KeyboardFocusLockProps } from '../../../types';
4
4
  import { KeyboardFocusLockBase } from '../KeyboardFocusLockBase/KeyboardFocusLockBase';
5
5
 
6
6
  export const FocusTrap = ({
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import ExternalKeyboardLockView from '../../../nativeSpec/ExternalKeyboardLockViewNativeComponent';
3
3
 
4
- import type { KeyboardFocusLockProps } from '../../../types/KeyboardFocusLock.types';
4
+ import { LockComponentType, type KeyboardFocusLockProps } from '../../../types';
5
5
 
6
6
  export const KeyboardFocusLockBase = React.memo<KeyboardFocusLockProps>(
7
7
  ({
8
8
  lockDisabled = false,
9
- componentType = 0,
9
+ componentType = LockComponentType.Trap,
10
10
  forceLock = false,
11
11
  ...props
12
12
  }) => {