react-native-keyboard-controller 1.9.5 → 1.10.1

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 (169) hide show
  1. package/README.md +1 -1
  2. package/android/src/fabric/java/com/reactnativekeyboardcontroller/KeyboardControllerModule.kt +4 -0
  3. package/android/src/main/java/com/reactnativekeyboardcontroller/events/FocusedInputTextChangedEvent.kt +20 -0
  4. package/android/src/main/java/com/reactnativekeyboardcontroller/extensions/EditText.kt +36 -0
  5. package/android/src/main/java/com/reactnativekeyboardcontroller/extensions/WindowInsetsAnimationCompat.kt +7 -0
  6. package/android/src/main/java/com/reactnativekeyboardcontroller/listeners/FocusedInputObserver.kt +17 -0
  7. package/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt +12 -0
  8. package/android/src/main/java/com/reactnativekeyboardcontroller/managers/KeyboardControllerViewManagerImpl.kt +2 -0
  9. package/android/src/main/java/com/reactnativekeyboardcontroller/modules/KeyboardControllerModuleImpl.kt +13 -0
  10. package/android/src/paper/java/com/reactnativekeyboardcontroller/KeyboardControllerModule.kt +5 -0
  11. package/ios/.clang-format +30 -30
  12. package/ios/.swiftlint.yml +1 -1
  13. package/ios/KeyboardController.xcodeproj/project.pbxproj +10 -0
  14. package/ios/KeyboardControllerModule.mm +14 -0
  15. package/ios/events/FocusedInputTextChangedEvent.h +16 -0
  16. package/ios/events/FocusedInputTextChangedEvent.m +72 -0
  17. package/ios/observers/FocusedInputObserver.swift +29 -14
  18. package/ios/observers/TextChangeObserver.swift +41 -0
  19. package/ios/views/KeyboardControllerView.mm +53 -31
  20. package/ios/views/KeyboardControllerViewManager.mm +1 -0
  21. package/ios/views/KeyboardControllerViewManager.swift +21 -10
  22. package/jest/index.js +6 -4
  23. package/lib/commonjs/animated.js +33 -27
  24. package/lib/commonjs/animated.js.map +1 -1
  25. package/lib/commonjs/bindings.js +1 -0
  26. package/lib/commonjs/bindings.js.map +1 -1
  27. package/lib/commonjs/bindings.native.js +6 -6
  28. package/lib/commonjs/bindings.native.js.map +1 -1
  29. package/lib/commonjs/components/KeyboardAvoidingView/hooks.js +5 -3
  30. package/lib/commonjs/components/KeyboardAvoidingView/hooks.js.map +1 -1
  31. package/lib/commonjs/components/KeyboardAvoidingView/index.js +17 -9
  32. package/lib/commonjs/components/KeyboardAvoidingView/index.js.map +1 -1
  33. package/lib/commonjs/components/KeyboardAwareScrollView/index.js +199 -0
  34. package/lib/commonjs/components/KeyboardAwareScrollView/index.js.map +1 -0
  35. package/lib/commonjs/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js +100 -0
  36. package/lib/commonjs/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js.map +1 -0
  37. package/lib/commonjs/components/KeyboardAwareScrollView/utils.js +28 -0
  38. package/lib/commonjs/components/KeyboardAwareScrollView/utils.js.map +1 -0
  39. package/lib/commonjs/components/KeyboardStickyView/index.js +7 -4
  40. package/lib/commonjs/components/KeyboardStickyView/index.js.map +1 -1
  41. package/lib/commonjs/components/hooks/useKeyboardInterpolation.js +81 -0
  42. package/lib/commonjs/components/hooks/useKeyboardInterpolation.js.map +1 -0
  43. package/lib/commonjs/components/index.js +7 -0
  44. package/lib/commonjs/components/index.js.map +1 -1
  45. package/lib/commonjs/constants.js.map +1 -1
  46. package/lib/commonjs/context.js +2 -1
  47. package/lib/commonjs/context.js.map +1 -1
  48. package/lib/commonjs/hooks.js +17 -2
  49. package/lib/commonjs/hooks.js.map +1 -1
  50. package/lib/commonjs/index.js +8 -1
  51. package/lib/commonjs/index.js.map +1 -1
  52. package/lib/commonjs/internal.js +3 -6
  53. package/lib/commonjs/internal.js.map +1 -1
  54. package/lib/commonjs/monkey-patch.android.js +1 -1
  55. package/lib/commonjs/monkey-patch.android.js.map +1 -1
  56. package/lib/commonjs/monkey-patch.js.map +1 -1
  57. package/lib/commonjs/reanimated.js +5 -3
  58. package/lib/commonjs/reanimated.js.map +1 -1
  59. package/lib/commonjs/reanimated.native.js +29 -12
  60. package/lib/commonjs/reanimated.native.js.map +1 -1
  61. package/lib/commonjs/replicas.js +7 -5
  62. package/lib/commonjs/replicas.js.map +1 -1
  63. package/lib/commonjs/specs/KeyboardControllerViewNativeComponent.js +1 -1
  64. package/lib/commonjs/specs/KeyboardControllerViewNativeComponent.js.map +1 -1
  65. package/lib/commonjs/specs/KeyboardGestureAreaNativeComponent.js +2 -2
  66. package/lib/commonjs/specs/KeyboardGestureAreaNativeComponent.js.map +1 -1
  67. package/lib/commonjs/specs/NativeKeyboardController.js +1 -1
  68. package/lib/commonjs/specs/NativeKeyboardController.js.map +1 -1
  69. package/lib/commonjs/specs/NativeStatusBarManagerCompat.js +1 -1
  70. package/lib/commonjs/specs/NativeStatusBarManagerCompat.js.map +1 -1
  71. package/lib/commonjs/types.js.map +1 -1
  72. package/lib/commonjs/utils.js.map +1 -1
  73. package/lib/module/animated.js +41 -35
  74. package/lib/module/animated.js.map +1 -1
  75. package/lib/module/bindings.js +2 -1
  76. package/lib/module/bindings.js.map +1 -1
  77. package/lib/module/bindings.native.js +7 -7
  78. package/lib/module/bindings.native.js.map +1 -1
  79. package/lib/module/components/KeyboardAvoidingView/hooks.js +7 -5
  80. package/lib/module/components/KeyboardAvoidingView/hooks.js.map +1 -1
  81. package/lib/module/components/KeyboardAvoidingView/index.js +20 -13
  82. package/lib/module/components/KeyboardAvoidingView/index.js.map +1 -1
  83. package/lib/module/components/KeyboardAwareScrollView/index.js +190 -0
  84. package/lib/module/components/KeyboardAwareScrollView/index.js.map +1 -0
  85. package/lib/module/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js +93 -0
  86. package/lib/module/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.js.map +1 -0
  87. package/lib/module/components/KeyboardAwareScrollView/utils.js +21 -0
  88. package/lib/module/components/KeyboardAwareScrollView/utils.js.map +1 -0
  89. package/lib/module/components/KeyboardStickyView/index.js +9 -7
  90. package/lib/module/components/KeyboardStickyView/index.js.map +1 -1
  91. package/lib/module/components/hooks/useKeyboardInterpolation.js +74 -0
  92. package/lib/module/components/hooks/useKeyboardInterpolation.js.map +1 -0
  93. package/lib/module/components/index.js +3 -2
  94. package/lib/module/components/index.js.map +1 -1
  95. package/lib/module/context.js +4 -3
  96. package/lib/module/context.js.map +1 -1
  97. package/lib/module/hooks.js +21 -7
  98. package/lib/module/hooks.js.map +1 -1
  99. package/lib/module/index.js +8 -8
  100. package/lib/module/index.js.map +1 -1
  101. package/lib/module/internal.js +6 -9
  102. package/lib/module/internal.js.map +1 -1
  103. package/lib/module/monkey-patch.android.js +2 -2
  104. package/lib/module/monkey-patch.android.js.map +1 -1
  105. package/lib/module/monkey-patch.js.map +1 -1
  106. package/lib/module/reanimated.js +2 -1
  107. package/lib/module/reanimated.js.map +1 -1
  108. package/lib/module/reanimated.native.js +27 -11
  109. package/lib/module/reanimated.native.js.map +1 -1
  110. package/lib/module/replicas.js +13 -11
  111. package/lib/module/replicas.js.map +1 -1
  112. package/lib/module/specs/KeyboardControllerViewNativeComponent.js +2 -2
  113. package/lib/module/specs/KeyboardControllerViewNativeComponent.js.map +1 -1
  114. package/lib/module/specs/KeyboardGestureAreaNativeComponent.js +3 -3
  115. package/lib/module/specs/KeyboardGestureAreaNativeComponent.js.map +1 -1
  116. package/lib/module/specs/NativeKeyboardController.js +2 -2
  117. package/lib/module/specs/NativeKeyboardController.js.map +1 -1
  118. package/lib/module/specs/NativeStatusBarManagerCompat.js +2 -2
  119. package/lib/module/specs/NativeStatusBarManagerCompat.js.map +1 -1
  120. package/lib/module/types.js.map +1 -1
  121. package/lib/module/utils.js.map +1 -1
  122. package/lib/typescript/animated.d.ts +1 -1
  123. package/lib/typescript/bindings.d.ts +1 -1
  124. package/lib/typescript/bindings.native.d.ts +1 -1
  125. package/lib/typescript/components/KeyboardAvoidingView/index.d.ts +4 -4
  126. package/lib/typescript/components/KeyboardAwareScrollView/index.d.ts +45 -0
  127. package/lib/typescript/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.d.ts +6 -0
  128. package/lib/typescript/components/KeyboardAwareScrollView/utils.d.ts +1 -0
  129. package/lib/typescript/components/KeyboardStickyView/index.d.ts +2 -2
  130. package/lib/typescript/components/hooks/useKeyboardInterpolation.d.ts +20 -0
  131. package/lib/typescript/components/index.d.ts +3 -2
  132. package/lib/typescript/context.d.ts +6 -5
  133. package/lib/typescript/hooks.d.ts +4 -3
  134. package/lib/typescript/index.d.ts +8 -8
  135. package/lib/typescript/internal.d.ts +9 -6
  136. package/lib/typescript/reanimated.d.ts +3 -2
  137. package/lib/typescript/reanimated.native.d.ts +3 -2
  138. package/lib/typescript/replicas.d.ts +1 -1
  139. package/lib/typescript/specs/KeyboardControllerViewNativeComponent.d.ts +7 -3
  140. package/lib/typescript/specs/KeyboardGestureAreaNativeComponent.d.ts +4 -4
  141. package/lib/typescript/specs/NativeKeyboardController.d.ts +2 -1
  142. package/lib/typescript/specs/NativeStatusBarManagerCompat.d.ts +1 -1
  143. package/lib/typescript/types.d.ts +18 -5
  144. package/package.json +12 -11
  145. package/react-native-keyboard-controller.podspec +1 -1
  146. package/src/animated.tsx +59 -42
  147. package/src/bindings.native.ts +11 -11
  148. package/src/bindings.ts +4 -3
  149. package/src/components/KeyboardAvoidingView/hooks.ts +9 -6
  150. package/src/components/KeyboardAvoidingView/index.tsx +30 -27
  151. package/src/components/KeyboardAwareScrollView/index.tsx +262 -0
  152. package/src/components/KeyboardAwareScrollView/useSmoothKeyboardHandler.ts +123 -0
  153. package/src/components/KeyboardAwareScrollView/utils.ts +26 -0
  154. package/src/components/KeyboardStickyView/index.tsx +12 -18
  155. package/src/components/hooks/useKeyboardInterpolation.ts +96 -0
  156. package/src/components/index.ts +3 -2
  157. package/src/context.ts +15 -9
  158. package/src/hooks.ts +30 -13
  159. package/src/index.ts +12 -8
  160. package/src/internal.ts +22 -13
  161. package/src/monkey-patch.android.ts +2 -2
  162. package/src/reanimated.native.ts +43 -18
  163. package/src/reanimated.ts +9 -3
  164. package/src/replicas.ts +18 -17
  165. package/src/specs/KeyboardControllerViewNativeComponent.ts +12 -5
  166. package/src/specs/KeyboardGestureAreaNativeComponent.ts +7 -7
  167. package/src/specs/NativeKeyboardController.ts +4 -3
  168. package/src/specs/NativeStatusBarManagerCompat.ts +3 -3
  169. package/src/types.ts +45 -19
@@ -1,6 +1,6 @@
1
- import { TurboModuleRegistry } from 'react-native';
1
+ import { TurboModuleRegistry } from "react-native";
2
2
 
3
- import type { TurboModule } from 'react-native';
3
+ import type { TurboModule } from "react-native";
4
4
 
5
5
  export interface Spec extends TurboModule {
6
6
  readonly getConstants: () => {};
@@ -11,4 +11,4 @@ export interface Spec extends TurboModule {
11
11
  setStyle(style: string): void;
12
12
  }
13
13
 
14
- export default TurboModuleRegistry.get<Spec>('StatusBarManagerCompat');
14
+ export default TurboModuleRegistry.get<Spec>("StatusBarManagerCompat");
package/src/types.ts CHANGED
@@ -2,7 +2,7 @@ import type {
2
2
  EmitterSubscription,
3
3
  NativeSyntheticEvent,
4
4
  ViewProps,
5
- } from 'react-native';
5
+ } from "react-native";
6
6
 
7
7
  // DirectEventHandler events declaration
8
8
  export type NativeEvent = {
@@ -22,41 +22,52 @@ export type FocusedInputLayoutChangedEvent = {
22
22
  absoluteY: number;
23
23
  };
24
24
  };
25
+ export type FocusedInputTextChangedEvent = {
26
+ text: string;
27
+ };
25
28
  export type EventWithName<T> = {
26
29
  eventName: string;
27
30
  } & T;
28
31
 
29
32
  // native View/Module declarations
30
33
  export type KeyboardControllerProps = {
31
- enabled?: boolean;
34
+ // callback props
32
35
  onKeyboardMoveStart?: (
33
- e: NativeSyntheticEvent<EventWithName<NativeEvent>>
36
+ e: NativeSyntheticEvent<EventWithName<NativeEvent>>,
34
37
  ) => void;
35
38
  onKeyboardMove?: (
36
- e: NativeSyntheticEvent<EventWithName<NativeEvent>>
39
+ e: NativeSyntheticEvent<EventWithName<NativeEvent>>,
37
40
  ) => void;
38
41
  onKeyboardMoveEnd?: (
39
- e: NativeSyntheticEvent<EventWithName<NativeEvent>>
42
+ e: NativeSyntheticEvent<EventWithName<NativeEvent>>,
40
43
  ) => void;
41
44
  onKeyboardMoveInteractive?: (
42
- e: NativeSyntheticEvent<EventWithName<NativeEvent>>
45
+ e: NativeSyntheticEvent<EventWithName<NativeEvent>>,
43
46
  ) => void;
44
47
  onFocusedInputLayoutChanged?: (
45
- e: NativeSyntheticEvent<EventWithName<FocusedInputLayoutChangedEvent>>
48
+ e: NativeSyntheticEvent<EventWithName<FocusedInputLayoutChangedEvent>>,
49
+ ) => void;
50
+ onFocusedInputTextChanged?: (
51
+ e: NativeSyntheticEvent<EventWithName<FocusedInputTextChangedEvent>>,
46
52
  ) => void;
47
53
  // fake props used to activate reanimated bindings
48
54
  onKeyboardMoveReanimated?: (
49
- e: NativeSyntheticEvent<EventWithName<NativeEvent>>
55
+ e: NativeSyntheticEvent<EventWithName<NativeEvent>>,
50
56
  ) => void;
51
57
  onFocusedInputLayoutChangedReanimated?: (
52
- e: NativeSyntheticEvent<EventWithName<FocusedInputLayoutChangedEvent>>
58
+ e: NativeSyntheticEvent<EventWithName<FocusedInputLayoutChangedEvent>>,
53
59
  ) => void;
60
+ onFocusedInputTextChangedReanimated?: (
61
+ e: NativeSyntheticEvent<EventWithName<FocusedInputTextChangedEvent>>,
62
+ ) => void;
63
+ // props
54
64
  statusBarTranslucent?: boolean;
55
65
  navigationBarTranslucent?: boolean;
66
+ enabled?: boolean;
56
67
  } & ViewProps;
57
68
 
58
69
  export type KeyboardGestureAreaProps = {
59
- interpolator: 'ios' | 'linear';
70
+ interpolator: "ios" | "linear";
60
71
  /**
61
72
  * Whether to allow to show a keyboard from dismissed state by swipe up.
62
73
  * Default to `false`.
@@ -74,6 +85,8 @@ export type KeyboardControllerModule = {
74
85
  // android only
75
86
  setDefaultMode: () => void;
76
87
  setInputMode: (mode: number) => void;
88
+ // all platforms
89
+ dismiss: () => void;
77
90
  // native event module stuff
78
91
  addListener: (eventName: string) => void;
79
92
  removeListeners: (count: number) => void;
@@ -81,10 +94,10 @@ export type KeyboardControllerModule = {
81
94
 
82
95
  // Event module declarations
83
96
  export type KeyboardControllerEvents =
84
- | 'keyboardWillShow'
85
- | 'keyboardDidShow'
86
- | 'keyboardWillHide'
87
- | 'keyboardDidHide';
97
+ | "keyboardWillShow"
98
+ | "keyboardDidShow"
99
+ | "keyboardWillHide"
100
+ | "keyboardDidHide";
88
101
  export type KeyboardEventData = {
89
102
  height: number;
90
103
  duration: number;
@@ -94,7 +107,7 @@ export type KeyboardEventData = {
94
107
  export type KeyboardEventsModule = {
95
108
  addListener: (
96
109
  name: KeyboardControllerEvents,
97
- cb: (e: KeyboardEventData) => void
110
+ cb: (e: KeyboardEventData) => void,
98
111
  ) => EmitterSubscription;
99
112
  };
100
113
 
@@ -106,16 +119,25 @@ export type KeyboardHandlerHook<TContext, Event> = (
106
119
  onKeyboardMoveEnd?: (e: NativeEvent, context: TContext) => void;
107
120
  onKeyboardMoveInteractive?: (e: NativeEvent, context: TContext) => void;
108
121
  },
109
- dependencies?: unknown[]
122
+ dependencies?: unknown[],
110
123
  ) => (e: NativeSyntheticEvent<Event>) => void;
111
- export type FocusedInputHandlerHook<TContext, Event> = (
124
+ export type FocusedInputLayoutHandlerHook<TContext, Event> = (
112
125
  handlers: {
113
126
  onFocusedInputLayoutChanged?: (
114
127
  e: FocusedInputLayoutChangedEvent,
115
- context: TContext
128
+ context: TContext,
116
129
  ) => void;
117
130
  },
118
- dependencies?: unknown[]
131
+ dependencies?: unknown[],
132
+ ) => (e: NativeSyntheticEvent<Event>) => void;
133
+ export type FocusedInputTextHandlerHook<TContext, Event> = (
134
+ handlers: {
135
+ onFocusedInputTextChanged?: (
136
+ e: FocusedInputTextChangedEvent,
137
+ context: TContext,
138
+ ) => void;
139
+ },
140
+ dependencies?: unknown[],
119
141
  ) => (e: NativeSyntheticEvent<Event>) => void;
120
142
 
121
143
  // package types
@@ -127,3 +149,7 @@ export type KeyboardHandler = Partial<{
127
149
  onInteractive: (e: NativeEvent) => void;
128
150
  }>;
129
151
  export type KeyboardHandlers = Handlers<KeyboardHandler>;
152
+ export type FocusedInputHandler = Partial<{
153
+ onChangeText: (e: FocusedInputTextChangedEvent) => void;
154
+ }>;
155
+ export type FocusedInputHandlers = Handlers<FocusedInputHandler>;