@react-native-ohos/react-native-keyboard-controller 1.12.8-rc.4 → 1.12.8-rc.6
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.
- package/harmony/keyboard_controller/BuildProfile.ets +16 -16
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/.ts_checker_cache +5166 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/.tsbuildinfo +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/.tsbuildinfo.linter +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/compileInfo.json +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/Index.ets-96716712ed80a95f9b3cb8c16433a37c.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/Logger.ts-21e5e905df1c99fc6e6ca37bbbfcb51e.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/RNKeyboardControllerPackage.ets-c2108552e32e54da4e2ee2cd039239a4.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/RNKeyboardControllerTurboModule.ts-7c42679e7e488d1a60c8b4d54f079abb.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/RNStatusBarManagerCompatTurboModule.ts-c9b80946df3cc584c8042691aeb9fbb1.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/Type.ts-8709f2f912199ff74f40eb894b697a77.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/modules/ts.ets-70cab636273e777c0f945b068fe2fec4.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/other/pkgName2SourceRoots.msgpack +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/compiler.cache/plugins/plugins.msgpack +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@HarCompileArkTS/esmodule/debug/dep_info.json +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/BuildProfile.ets +17 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/Index.ets +9 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/ResourceTable.txt +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/build-profile.json5 +31 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/consumer-rules.txt +0 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/hvigorfile.ts +6 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/obfuscation-rules.txt +18 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/oh-package-lock.json5 +20 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/oh-package.json5 +1 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/CMakeLists.txt +7 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/EventEmitters.cpp +96 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/EventEmitters.h +90 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardControllerViewComponentDescriptor.h +77 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardControllerViewComponentInstance.cpp +158 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardControllerViewComponentInstance.h +74 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardControllerViewJSIBinder.h +43 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardGestureAreaComponentDescriptor.h +64 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardGestureAreaComponentInstance.cpp +89 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardGestureAreaComponentInstance.h +63 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/KeyboardGestureAreaJSIBinder.h +39 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNKeyboardController.cpp +25 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNKeyboardController.h +27 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNKeyboardControllerPackage.cpp +43 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNKeyboardControllerPackage.h +56 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNStatusBarManagerCompat.cpp +24 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/RNStatusBarManagerCompat.h +28 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/keyboardControllerPackage.cpp +43 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/cpp/keyboardControllerPackage.h +56 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/ets/Logger.ts +46 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/ets/RNKeyboardControllerPackage.ets +46 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/ets/RNKeyboardControllerTurboModule.ts +210 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/ets/RNStatusBarManagerCompatTurboModule.ts +98 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/ets/Type.ts +41 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/module.json +32 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/resources/base/element/string.json +8 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/keyboard_controller/build/default/cache/default/default@PackageHar/ts.ets +9 -0
- package/harmony/keyboard_controller/build/default/generated/pm/default/oh-package.json5 +1 -0
- package/harmony/keyboard_controller/build/default/generated/r/default/ResourceTable.h +24 -0
- package/harmony/keyboard_controller/build/default/intermediates/loader/default/loader.json +28 -0
- package/harmony/keyboard_controller/build/default/intermediates/merge_profile/default/module.json +29 -0
- package/harmony/keyboard_controller/build/default/intermediates/patch/default/base_native_libs.json +1 -0
- package/harmony/keyboard_controller/build/default/intermediates/process_profile/default/module.json +32 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/ResourceTable.txt +1 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/ark_module.json +1 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/ids_map/id_defined.json +7 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/module.json +28 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/opt-compression.json +1 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/resConfig.json +1 -0
- package/harmony/keyboard_controller/build/default/intermediates/res/default/resources.index +0 -0
- package/harmony/keyboard_controller/build/default/outputs/default/keyboard_controller.har +0 -0
- package/harmony/keyboard_controller/oh-package-lock.json5 +20 -0
- package/harmony/keyboard_controller/oh-package.json5 +2 -2
- package/harmony/keyboard_controller.har +0 -0
- package/lib/commonjs/animated.js +11 -2
- package/lib/commonjs/animated.js.map +1 -1
- package/lib/module/animated.js +12 -3
- package/lib/module/animated.js.map +1 -1
- package/package.json +1 -1
- package/src/animated.tsx +6 -3
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"stableOrder": true,
|
|
4
|
+
"enableUnifiedLockfile": false
|
|
5
|
+
},
|
|
6
|
+
"lockfileVersion": 3,
|
|
7
|
+
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
|
|
8
|
+
"specifiers": {
|
|
9
|
+
"@rnoh/react-native-openharmony@../../../../code/reanimated/tester/harmony/react-native-openharmony-0.72.59.har": "@rnoh/react-native-openharmony@../../../../code/reanimated/tester/harmony/react-native-openharmony-0.72.59.har"
|
|
10
|
+
},
|
|
11
|
+
"packages": {
|
|
12
|
+
"@rnoh/react-native-openharmony@../../../../code/reanimated/tester/harmony/react-native-openharmony-0.72.59.har": {
|
|
13
|
+
"name": "",
|
|
14
|
+
"version": "0.72.59",
|
|
15
|
+
"integrity": "",
|
|
16
|
+
"resolved": "",
|
|
17
|
+
"registryType": "local"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-ohos/react-native-keyboard-controller",
|
|
3
|
-
"version": "1.12.8-rc.
|
|
3
|
+
"version": "1.12.8-rc.6",
|
|
4
4
|
"description": " control keyboard show or hide",
|
|
5
5
|
"main": "Index.ets",
|
|
6
6
|
"author": "",
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@rnoh/react-native-openharmony": "file:../react_native_openharmony",
|
|
10
10
|
}
|
|
11
|
-
}
|
|
11
|
+
}
|
|
Binary file
|
package/lib/commonjs/animated.js
CHANGED
|
@@ -80,8 +80,17 @@ const KeyboardProvider = ({
|
|
|
80
80
|
|
|
81
81
|
if (platforms.includes(OS)) {
|
|
82
82
|
// eslint-disable-next-line react-compiler/react-compiler
|
|
83
|
-
progressSV.value = event.progress;
|
|
84
|
-
heightSV.value = -event.height;
|
|
83
|
+
// progressSV.value = event.progress;
|
|
84
|
+
// heightSV.value = -event.height;
|
|
85
|
+
const dur = 460;
|
|
86
|
+
progressSV.value = (0, _reactNativeReanimated.withTiming)(event.progress, {
|
|
87
|
+
duration: dur,
|
|
88
|
+
easing: _reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.exp)
|
|
89
|
+
});
|
|
90
|
+
heightSV.value = (0, _reactNativeReanimated.withTiming)(-event.height, {
|
|
91
|
+
duration: dur,
|
|
92
|
+
easing: _reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.exp)
|
|
93
|
+
});
|
|
85
94
|
}
|
|
86
95
|
};
|
|
87
96
|
const keyboardHandler = (0, _reanimated.useAnimatedKeyboardHandler)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_bindings","_context","_internal","_monkeyPatch","_reanimated","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","KeyboardControllerViewAnimated","Reanimated","createAnimatedComponent","Animated","KeyboardControllerView","styles","StyleSheet","create","container","flex","hidden","display","position","OS","Platform","KeyboardProvider","children","statusBarTranslucent","navigationBarTranslucent","enabled","initiallyEnabled","setEnabled","useState","progress","useAnimatedValue","height","progressSV","useSharedValue","heightSV","layout","setKeyboardHandlers","broadcastKeyboardEvents","useSharedHandlers","setInputHandlers","broadcastInputEvents","context","useMemo","animated","multiply","reanimated","style","transform","translateX","translateY","onKeyboardMove","event","nativeEvent","useNativeDriver","updateSharedValues","platforms","includes","value","keyboardHandler","useAnimatedKeyboardHandler","onKeyboardMoveStart","onKeyboardMoveEnd","onKeyboardMoveInteractive","inputLayoutHandler","useFocusedInputLayoutHandler","onFocusedInputLayoutChanged","target","inputTextHandler","useFocusedInputTextHandler","onFocusedInputTextChanged","inputSelectionHandler","useFocusedInputSelectionHandler","onFocusedInputSelectionChanged","useEffect","applyMonkeyPatch","revertMonkeyPatch","createElement","KeyboardContext","Provider","onKeyboardMoveReanimated","undefined","onFocusedInputLayoutChangedReanimated","onFocusedInputTextChangedReanimated","onFocusedInputSelectionChangedReanimated","View","exports"],"sources":["animated.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Animated, Platform, StyleSheet } from \"react-native\";\r\nimport Reanimated, { useSharedValue } from \"react-native-reanimated\";\r\n\r\nimport { KeyboardControllerView } from \"./bindings\";\r\nimport { KeyboardContext } from \"./context\";\r\nimport { useAnimatedValue, useSharedHandlers } from \"./internal\";\r\nimport { applyMonkeyPatch, revertMonkeyPatch } from \"./monkey-patch\";\r\nimport {\r\n useAnimatedKeyboardHandler,\r\n useFocusedInputLayoutHandler,\r\n useFocusedInputSelectionHandler,\r\n useFocusedInputTextHandler,\r\n} from \"./reanimated\";\r\n\r\nimport type { KeyboardAnimationContext } from \"./context\";\r\nimport type {\r\n FocusedInputHandler,\r\n FocusedInputLayoutChangedEvent,\r\n KeyboardControllerProps,\r\n KeyboardHandler,\r\n NativeEvent,\r\n} from \"./types\";\r\nimport type { ViewStyle } from \"react-native\";\r\n\r\nconst KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(\r\n Animated.createAnimatedComponent(\r\n KeyboardControllerView,\r\n ) as React.FC<KeyboardControllerProps>,\r\n);\r\n\r\ntype Styles = {\r\n container: ViewStyle;\r\n hidden: ViewStyle;\r\n};\r\n\r\nconst styles = StyleSheet.create<Styles>({\r\n container: {\r\n flex: 1,\r\n },\r\n hidden: {\r\n display: \"none\",\r\n position: \"absolute\",\r\n },\r\n});\r\n\r\ntype KeyboardProviderProps = {\r\n children: React.ReactNode;\r\n /**\r\n * Set the value to `true`, if you use translucent status bar on Android.\r\n * If you already control status bar translucency via `react-native-screens`\r\n * or `StatusBar` component from `react-native`, you can ignore it.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/14\r\n * @platform android\r\n */\r\n statusBarTranslucent?: boolean;\r\n /**\r\n * Set the value to `true`, if you use translucent navigation bar on Android.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/119\r\n * @platform android\r\n */\r\n navigationBarTranslucent?: boolean;\r\n /**\r\n * A boolean prop indicating whether the module is enabled. It indicate only initial state,\r\n * i. e. if you try to change this prop after component mount it will not have any effect.\r\n * To change the property in runtime use `useKeyboardController` hook and `setEnabled` method.\r\n * Defaults to `true`.\r\n */\r\n enabled?: boolean;\r\n};\r\n\r\n// capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package\r\n// see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details\r\nconst OS = Platform.OS;\r\n\r\nexport const KeyboardProvider = ({\r\n children,\r\n statusBarTranslucent,\r\n navigationBarTranslucent,\r\n enabled: initiallyEnabled = true,\r\n}: KeyboardProviderProps) => {\r\n // state\r\n const [enabled, setEnabled] = useState(initiallyEnabled);\r\n // animated values\r\n const progress = useAnimatedValue(0);\r\n const height = useAnimatedValue(0);\r\n // shared values\r\n const progressSV = useSharedValue(0);\r\n const heightSV = useSharedValue(0);\r\n const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);\r\n const [setKeyboardHandlers, broadcastKeyboardEvents] =\r\n useSharedHandlers<KeyboardHandler>();\r\n const [setInputHandlers, broadcastInputEvents] =\r\n useSharedHandlers<FocusedInputHandler>();\r\n // memo\r\n const context = useMemo<KeyboardAnimationContext>(\r\n () => ({\r\n enabled,\r\n animated: { progress: progress, height: Animated.multiply(height,-1) },\r\n reanimated: { progress: progressSV, height: heightSV },\r\n layout,\r\n setKeyboardHandlers,\r\n setInputHandlers,\r\n setEnabled,\r\n }),\r\n [enabled],\r\n );\r\n const style = useMemo(\r\n () => [\r\n styles.hidden,\r\n { transform: [{ translateX: height }, { translateY: progress }] },\r\n ],\r\n [],\r\n );\r\n const onKeyboardMove = useMemo(\r\n () =>\r\n Animated.event(\r\n [\r\n {\r\n nativeEvent: {\r\n progress,\r\n height,\r\n },\r\n },\r\n ],\r\n { useNativeDriver:Platform.OS as string=='harmony'?false:true },\r\n ),\r\n [],\r\n );\r\n // handlers\r\n const updateSharedValues = (event: NativeEvent, platforms: string[]) => {\r\n \"worklet\";\r\n\r\n if (platforms.includes(OS)) {\r\n // eslint-disable-next-line react-compiler/react-compiler\r\n progressSV.value = event.progress;\r\n heightSV.value = -event.height;\r\n }\r\n };\r\n const keyboardHandler = useAnimatedKeyboardHandler(\r\n {\r\n onKeyboardMoveStart: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onStart\", event);\r\n updateSharedValues(event, [\"ios\"]);\r\n },\r\n onKeyboardMove: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onMove\", event);\r\n updateSharedValues(event, [\"android\"]);\r\n },\r\n onKeyboardMoveEnd: (event: NativeEvent) => {\r\n \"worklet\";\r\n broadcastKeyboardEvents(\"onEnd\", event);\r\n updateSharedValues(event, ['harmony']);\r\n },\r\n onKeyboardMoveInteractive: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n updateSharedValues(event, [\"android\", \"ios\"]);\r\n broadcastKeyboardEvents(\"onInteractive\", event);\r\n },\r\n },\r\n [],\r\n );\r\n const inputLayoutHandler = useFocusedInputLayoutHandler(\r\n {\r\n onFocusedInputLayoutChanged: (e) => {\r\n \"worklet\";\r\n\r\n if (e.target !== -1) {\r\n layout.value = e;\r\n } else {\r\n layout.value = null;\r\n }\r\n },\r\n },\r\n [],\r\n );\r\n const inputTextHandler = useFocusedInputTextHandler(\r\n {\r\n onFocusedInputTextChanged: (e) => {\r\n \"worklet\";\r\n\r\n broadcastInputEvents(\"onChangeText\", e);\r\n },\r\n },\r\n [],\r\n );\r\n const inputSelectionHandler = useFocusedInputSelectionHandler(\r\n {\r\n onFocusedInputSelectionChanged: (e) => {\r\n \"worklet\";\r\n broadcastInputEvents(\"onSelectionChange\", e);\r\n },\r\n },\r\n [],\r\n );\r\n // effects\r\n useEffect(() => {\r\n if (enabled) {\r\n applyMonkeyPatch();\r\n } else {\r\n revertMonkeyPatch();\r\n }\r\n }, [enabled]);\r\n\r\n return (\r\n <KeyboardContext.Provider value={context}>\r\n <KeyboardControllerViewAnimated\r\n enabled={enabled}\r\n onKeyboardMoveReanimated={keyboardHandler}\r\n onKeyboardMoveStart={OS === \"ios\" ? onKeyboardMove : undefined}\r\n onKeyboardMove={OS === \"android\" ? onKeyboardMove : undefined}\r\n onKeyboardMoveInteractive={onKeyboardMove}\r\n onKeyboardMoveEnd={ OS as string === \"harmony\"?onKeyboardMove:undefined}\r\n onFocusedInputLayoutChangedReanimated={inputLayoutHandler}\r\n onFocusedInputTextChangedReanimated={inputTextHandler}\r\n onFocusedInputSelectionChangedReanimated={inputSelectionHandler}\r\n navigationBarTranslucent={navigationBarTranslucent}\r\n statusBarTranslucent={statusBarTranslucent}\r\n style={styles.container}\r\n >\r\n <Reanimated.View style={styles.container}>{children}</Reanimated.View>\r\n {/* {children} */}\r\n </KeyboardControllerViewAnimated>\r\n <Animated.View\r\n // we are using this small hack, because if the component (where\r\n // animated value has been used) is unmounted, then animation will\r\n // stop receiving events (seems like it's react-native optimization).\r\n // So we need to keep a reference to the animated value, to keep it's\r\n // always mounted (keep a reference to an animated value).\r\n //\r\n // To test why it's needed, try to open screen which consumes Animated.Value\r\n // then close it and open it again (for example 'Animated transition').\r\n style={style}\r\n />\r\n </KeyboardContext.Provider>\r\n );\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_bindings","_context","_internal","_monkeyPatch","_reanimated","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","KeyboardControllerViewAnimated","Reanimated","createAnimatedComponent","Animated","KeyboardControllerView","styles","StyleSheet","create","container","flex","hidden","display","position","OS","Platform","KeyboardProvider","children","statusBarTranslucent","navigationBarTranslucent","enabled","initiallyEnabled","setEnabled","useState","progress","useAnimatedValue","height","progressSV","useSharedValue","heightSV","layout","setKeyboardHandlers","broadcastKeyboardEvents","useSharedHandlers","setInputHandlers","broadcastInputEvents","context","useMemo","animated","multiply","reanimated","style","transform","translateX","translateY","onKeyboardMove","event","nativeEvent","useNativeDriver","updateSharedValues","platforms","includes","dur","value","withTiming","duration","easing","Easing","out","exp","keyboardHandler","useAnimatedKeyboardHandler","onKeyboardMoveStart","onKeyboardMoveEnd","onKeyboardMoveInteractive","inputLayoutHandler","useFocusedInputLayoutHandler","onFocusedInputLayoutChanged","target","inputTextHandler","useFocusedInputTextHandler","onFocusedInputTextChanged","inputSelectionHandler","useFocusedInputSelectionHandler","onFocusedInputSelectionChanged","useEffect","applyMonkeyPatch","revertMonkeyPatch","createElement","KeyboardContext","Provider","onKeyboardMoveReanimated","undefined","onFocusedInputLayoutChangedReanimated","onFocusedInputTextChangedReanimated","onFocusedInputSelectionChangedReanimated","View","exports"],"sources":["animated.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Animated, Platform, StyleSheet } from \"react-native\";\r\nimport Reanimated, { useSharedValue, Easing, withTiming } from \"react-native-reanimated\";\r\n\r\nimport { KeyboardControllerView } from \"./bindings\";\r\nimport { KeyboardContext } from \"./context\";\r\nimport { useAnimatedValue, useSharedHandlers } from \"./internal\";\r\nimport { applyMonkeyPatch, revertMonkeyPatch } from \"./monkey-patch\";\r\nimport {\r\n useAnimatedKeyboardHandler,\r\n useFocusedInputLayoutHandler,\r\n useFocusedInputSelectionHandler,\r\n useFocusedInputTextHandler,\r\n} from \"./reanimated\";\r\n\r\nimport type { KeyboardAnimationContext } from \"./context\";\r\nimport type {\r\n FocusedInputHandler,\r\n FocusedInputLayoutChangedEvent,\r\n KeyboardControllerProps,\r\n KeyboardHandler,\r\n NativeEvent,\r\n} from \"./types\";\r\nimport type { ViewStyle } from \"react-native\";\r\n\r\nconst KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(\r\n Animated.createAnimatedComponent(\r\n KeyboardControllerView,\r\n ) as React.FC<KeyboardControllerProps>,\r\n);\r\n\r\ntype Styles = {\r\n container: ViewStyle;\r\n hidden: ViewStyle;\r\n};\r\n\r\nconst styles = StyleSheet.create<Styles>({\r\n container: {\r\n flex: 1,\r\n },\r\n hidden: {\r\n display: \"none\",\r\n position: \"absolute\",\r\n },\r\n});\r\n\r\ntype KeyboardProviderProps = {\r\n children: React.ReactNode;\r\n /**\r\n * Set the value to `true`, if you use translucent status bar on Android.\r\n * If you already control status bar translucency via `react-native-screens`\r\n * or `StatusBar` component from `react-native`, you can ignore it.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/14\r\n * @platform android\r\n */\r\n statusBarTranslucent?: boolean;\r\n /**\r\n * Set the value to `true`, if you use translucent navigation bar on Android.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/119\r\n * @platform android\r\n */\r\n navigationBarTranslucent?: boolean;\r\n /**\r\n * A boolean prop indicating whether the module is enabled. It indicate only initial state,\r\n * i. e. if you try to change this prop after component mount it will not have any effect.\r\n * To change the property in runtime use `useKeyboardController` hook and `setEnabled` method.\r\n * Defaults to `true`.\r\n */\r\n enabled?: boolean;\r\n};\r\n\r\n// capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package\r\n// see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details\r\nconst OS = Platform.OS;\r\n\r\nexport const KeyboardProvider = ({\r\n children,\r\n statusBarTranslucent,\r\n navigationBarTranslucent,\r\n enabled: initiallyEnabled = true,\r\n}: KeyboardProviderProps) => {\r\n // state\r\n const [enabled, setEnabled] = useState(initiallyEnabled);\r\n // animated values\r\n const progress = useAnimatedValue(0);\r\n const height = useAnimatedValue(0);\r\n // shared values\r\n const progressSV = useSharedValue(0);\r\n const heightSV = useSharedValue(0);\r\n const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);\r\n const [setKeyboardHandlers, broadcastKeyboardEvents] =\r\n useSharedHandlers<KeyboardHandler>();\r\n const [setInputHandlers, broadcastInputEvents] =\r\n useSharedHandlers<FocusedInputHandler>();\r\n // memo\r\n const context = useMemo<KeyboardAnimationContext>(\r\n () => ({\r\n enabled,\r\n animated: { progress: progress, height: Animated.multiply(height,-1) },\r\n reanimated: { progress: progressSV, height: heightSV },\r\n layout,\r\n setKeyboardHandlers,\r\n setInputHandlers,\r\n setEnabled,\r\n }),\r\n [enabled],\r\n );\r\n const style = useMemo(\r\n () => [\r\n styles.hidden,\r\n { transform: [{ translateX: height }, { translateY: progress }] },\r\n ],\r\n [],\r\n );\r\n const onKeyboardMove = useMemo(\r\n () =>\r\n Animated.event(\r\n [\r\n {\r\n nativeEvent: {\r\n progress,\r\n height,\r\n },\r\n },\r\n ],\r\n { useNativeDriver:Platform.OS as string=='harmony'?false:true },\r\n ),\r\n [],\r\n );\r\n // handlers\r\n const updateSharedValues = (event: NativeEvent, platforms: string[]) => {\r\n \"worklet\";\r\n\r\n if (platforms.includes(OS)) {\r\n // eslint-disable-next-line react-compiler/react-compiler\r\n // progressSV.value = event.progress;\r\n // heightSV.value = -event.height;\r\n const dur = 460\r\n progressSV.value = withTiming(event.progress, { duration: dur, easing: Easing.out(Easing.exp) });\r\n heightSV.value = withTiming(-event.height,{ duration: dur, easing: Easing.out(Easing.exp)});\r\n }\r\n };\r\n const keyboardHandler = useAnimatedKeyboardHandler(\r\n {\r\n onKeyboardMoveStart: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onStart\", event);\r\n updateSharedValues(event, [\"ios\"]);\r\n },\r\n onKeyboardMove: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onMove\", event);\r\n updateSharedValues(event, [\"android\"]);\r\n },\r\n onKeyboardMoveEnd: (event: NativeEvent) => {\r\n \"worklet\";\r\n broadcastKeyboardEvents(\"onEnd\", event);\r\n updateSharedValues(event, ['harmony']);\r\n },\r\n onKeyboardMoveInteractive: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n updateSharedValues(event, [\"android\", \"ios\"]);\r\n broadcastKeyboardEvents(\"onInteractive\", event);\r\n },\r\n },\r\n [],\r\n );\r\n const inputLayoutHandler = useFocusedInputLayoutHandler(\r\n {\r\n onFocusedInputLayoutChanged: (e) => {\r\n \"worklet\";\r\n\r\n if (e.target !== -1) {\r\n layout.value = e;\r\n } else {\r\n layout.value = null;\r\n }\r\n },\r\n },\r\n [],\r\n );\r\n const inputTextHandler = useFocusedInputTextHandler(\r\n {\r\n onFocusedInputTextChanged: (e) => {\r\n \"worklet\";\r\n\r\n broadcastInputEvents(\"onChangeText\", e);\r\n },\r\n },\r\n [],\r\n );\r\n const inputSelectionHandler = useFocusedInputSelectionHandler(\r\n {\r\n onFocusedInputSelectionChanged: (e) => {\r\n \"worklet\";\r\n broadcastInputEvents(\"onSelectionChange\", e);\r\n },\r\n },\r\n [],\r\n );\r\n // effects\r\n useEffect(() => {\r\n if (enabled) {\r\n applyMonkeyPatch();\r\n } else {\r\n revertMonkeyPatch();\r\n }\r\n }, [enabled]);\r\n\r\n return (\r\n <KeyboardContext.Provider value={context}>\r\n <KeyboardControllerViewAnimated\r\n enabled={enabled}\r\n onKeyboardMoveReanimated={keyboardHandler}\r\n onKeyboardMoveStart={OS === \"ios\" ? onKeyboardMove : undefined}\r\n onKeyboardMove={OS === \"android\" ? onKeyboardMove : undefined}\r\n onKeyboardMoveInteractive={onKeyboardMove}\r\n onKeyboardMoveEnd={ OS as string === \"harmony\"?onKeyboardMove:undefined}\r\n onFocusedInputLayoutChangedReanimated={inputLayoutHandler}\r\n onFocusedInputTextChangedReanimated={inputTextHandler}\r\n onFocusedInputSelectionChangedReanimated={inputSelectionHandler}\r\n navigationBarTranslucent={navigationBarTranslucent}\r\n statusBarTranslucent={statusBarTranslucent}\r\n style={styles.container}\r\n >\r\n <Reanimated.View style={styles.container}>{children}</Reanimated.View>\r\n {/* {children} */}\r\n </KeyboardControllerViewAnimated>\r\n <Animated.View\r\n // we are using this small hack, because if the component (where\r\n // animated value has been used) is unmounted, then animation will\r\n // stop receiving events (seems like it's react-native optimization).\r\n // So we need to keep a reference to the animated value, to keep it's\r\n // always mounted (keep a reference to an animated value).\r\n //\r\n // To test why it's needed, try to open screen which consumes Animated.Value\r\n // then close it and open it again (for example 'Animated transition').\r\n style={style}\r\n />\r\n </KeyboardContext.Provider>\r\n );\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
package/lib/module/animated.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useState } from "react";
|
|
2
2
|
import { Animated, Platform, StyleSheet } from "react-native";
|
|
3
|
-
import Reanimated, { useSharedValue } from "react-native-reanimated";
|
|
3
|
+
import Reanimated, { useSharedValue, Easing, withTiming } from "react-native-reanimated";
|
|
4
4
|
import { KeyboardControllerView } from "./bindings";
|
|
5
5
|
import { KeyboardContext } from "./context";
|
|
6
6
|
import { useAnimatedValue, useSharedHandlers } from "./internal";
|
|
@@ -73,8 +73,17 @@ export const KeyboardProvider = ({
|
|
|
73
73
|
|
|
74
74
|
if (platforms.includes(OS)) {
|
|
75
75
|
// eslint-disable-next-line react-compiler/react-compiler
|
|
76
|
-
progressSV.value = event.progress;
|
|
77
|
-
heightSV.value = -event.height;
|
|
76
|
+
// progressSV.value = event.progress;
|
|
77
|
+
// heightSV.value = -event.height;
|
|
78
|
+
const dur = 460;
|
|
79
|
+
progressSV.value = withTiming(event.progress, {
|
|
80
|
+
duration: dur,
|
|
81
|
+
easing: Easing.out(Easing.exp)
|
|
82
|
+
});
|
|
83
|
+
heightSV.value = withTiming(-event.height, {
|
|
84
|
+
duration: dur,
|
|
85
|
+
easing: Easing.out(Easing.exp)
|
|
86
|
+
});
|
|
78
87
|
}
|
|
79
88
|
};
|
|
80
89
|
const keyboardHandler = useAnimatedKeyboardHandler({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useState","Animated","Platform","StyleSheet","Reanimated","useSharedValue","KeyboardControllerView","KeyboardContext","useAnimatedValue","useSharedHandlers","applyMonkeyPatch","revertMonkeyPatch","useAnimatedKeyboardHandler","useFocusedInputLayoutHandler","useFocusedInputSelectionHandler","useFocusedInputTextHandler","KeyboardControllerViewAnimated","createAnimatedComponent","styles","create","container","flex","hidden","display","position","OS","KeyboardProvider","children","statusBarTranslucent","navigationBarTranslucent","enabled","initiallyEnabled","setEnabled","progress","height","progressSV","heightSV","layout","setKeyboardHandlers","broadcastKeyboardEvents","setInputHandlers","broadcastInputEvents","context","animated","multiply","reanimated","style","transform","translateX","translateY","onKeyboardMove","event","nativeEvent","useNativeDriver","updateSharedValues","platforms","includes","value","keyboardHandler","onKeyboardMoveStart","onKeyboardMoveEnd","onKeyboardMoveInteractive","inputLayoutHandler","onFocusedInputLayoutChanged","e","target","inputTextHandler","onFocusedInputTextChanged","inputSelectionHandler","onFocusedInputSelectionChanged","createElement","Provider","onKeyboardMoveReanimated","undefined","onFocusedInputLayoutChangedReanimated","onFocusedInputTextChangedReanimated","onFocusedInputSelectionChangedReanimated","View"],"sources":["animated.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Animated, Platform, StyleSheet } from \"react-native\";\r\nimport Reanimated, { useSharedValue } from \"react-native-reanimated\";\r\n\r\nimport { KeyboardControllerView } from \"./bindings\";\r\nimport { KeyboardContext } from \"./context\";\r\nimport { useAnimatedValue, useSharedHandlers } from \"./internal\";\r\nimport { applyMonkeyPatch, revertMonkeyPatch } from \"./monkey-patch\";\r\nimport {\r\n useAnimatedKeyboardHandler,\r\n useFocusedInputLayoutHandler,\r\n useFocusedInputSelectionHandler,\r\n useFocusedInputTextHandler,\r\n} from \"./reanimated\";\r\n\r\nimport type { KeyboardAnimationContext } from \"./context\";\r\nimport type {\r\n FocusedInputHandler,\r\n FocusedInputLayoutChangedEvent,\r\n KeyboardControllerProps,\r\n KeyboardHandler,\r\n NativeEvent,\r\n} from \"./types\";\r\nimport type { ViewStyle } from \"react-native\";\r\n\r\nconst KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(\r\n Animated.createAnimatedComponent(\r\n KeyboardControllerView,\r\n ) as React.FC<KeyboardControllerProps>,\r\n);\r\n\r\ntype Styles = {\r\n container: ViewStyle;\r\n hidden: ViewStyle;\r\n};\r\n\r\nconst styles = StyleSheet.create<Styles>({\r\n container: {\r\n flex: 1,\r\n },\r\n hidden: {\r\n display: \"none\",\r\n position: \"absolute\",\r\n },\r\n});\r\n\r\ntype KeyboardProviderProps = {\r\n children: React.ReactNode;\r\n /**\r\n * Set the value to `true`, if you use translucent status bar on Android.\r\n * If you already control status bar translucency via `react-native-screens`\r\n * or `StatusBar` component from `react-native`, you can ignore it.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/14\r\n * @platform android\r\n */\r\n statusBarTranslucent?: boolean;\r\n /**\r\n * Set the value to `true`, if you use translucent navigation bar on Android.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/119\r\n * @platform android\r\n */\r\n navigationBarTranslucent?: boolean;\r\n /**\r\n * A boolean prop indicating whether the module is enabled. It indicate only initial state,\r\n * i. e. if you try to change this prop after component mount it will not have any effect.\r\n * To change the property in runtime use `useKeyboardController` hook and `setEnabled` method.\r\n * Defaults to `true`.\r\n */\r\n enabled?: boolean;\r\n};\r\n\r\n// capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package\r\n// see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details\r\nconst OS = Platform.OS;\r\n\r\nexport const KeyboardProvider = ({\r\n children,\r\n statusBarTranslucent,\r\n navigationBarTranslucent,\r\n enabled: initiallyEnabled = true,\r\n}: KeyboardProviderProps) => {\r\n // state\r\n const [enabled, setEnabled] = useState(initiallyEnabled);\r\n // animated values\r\n const progress = useAnimatedValue(0);\r\n const height = useAnimatedValue(0);\r\n // shared values\r\n const progressSV = useSharedValue(0);\r\n const heightSV = useSharedValue(0);\r\n const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);\r\n const [setKeyboardHandlers, broadcastKeyboardEvents] =\r\n useSharedHandlers<KeyboardHandler>();\r\n const [setInputHandlers, broadcastInputEvents] =\r\n useSharedHandlers<FocusedInputHandler>();\r\n // memo\r\n const context = useMemo<KeyboardAnimationContext>(\r\n () => ({\r\n enabled,\r\n animated: { progress: progress, height: Animated.multiply(height,-1) },\r\n reanimated: { progress: progressSV, height: heightSV },\r\n layout,\r\n setKeyboardHandlers,\r\n setInputHandlers,\r\n setEnabled,\r\n }),\r\n [enabled],\r\n );\r\n const style = useMemo(\r\n () => [\r\n styles.hidden,\r\n { transform: [{ translateX: height }, { translateY: progress }] },\r\n ],\r\n [],\r\n );\r\n const onKeyboardMove = useMemo(\r\n () =>\r\n Animated.event(\r\n [\r\n {\r\n nativeEvent: {\r\n progress,\r\n height,\r\n },\r\n },\r\n ],\r\n { useNativeDriver:Platform.OS as string=='harmony'?false:true },\r\n ),\r\n [],\r\n );\r\n // handlers\r\n const updateSharedValues = (event: NativeEvent, platforms: string[]) => {\r\n \"worklet\";\r\n\r\n if (platforms.includes(OS)) {\r\n // eslint-disable-next-line react-compiler/react-compiler\r\n progressSV.value = event.progress;\r\n heightSV.value = -event.height;\r\n }\r\n };\r\n const keyboardHandler = useAnimatedKeyboardHandler(\r\n {\r\n onKeyboardMoveStart: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onStart\", event);\r\n updateSharedValues(event, [\"ios\"]);\r\n },\r\n onKeyboardMove: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onMove\", event);\r\n updateSharedValues(event, [\"android\"]);\r\n },\r\n onKeyboardMoveEnd: (event: NativeEvent) => {\r\n \"worklet\";\r\n broadcastKeyboardEvents(\"onEnd\", event);\r\n updateSharedValues(event, ['harmony']);\r\n },\r\n onKeyboardMoveInteractive: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n updateSharedValues(event, [\"android\", \"ios\"]);\r\n broadcastKeyboardEvents(\"onInteractive\", event);\r\n },\r\n },\r\n [],\r\n );\r\n const inputLayoutHandler = useFocusedInputLayoutHandler(\r\n {\r\n onFocusedInputLayoutChanged: (e) => {\r\n \"worklet\";\r\n\r\n if (e.target !== -1) {\r\n layout.value = e;\r\n } else {\r\n layout.value = null;\r\n }\r\n },\r\n },\r\n [],\r\n );\r\n const inputTextHandler = useFocusedInputTextHandler(\r\n {\r\n onFocusedInputTextChanged: (e) => {\r\n \"worklet\";\r\n\r\n broadcastInputEvents(\"onChangeText\", e);\r\n },\r\n },\r\n [],\r\n );\r\n const inputSelectionHandler = useFocusedInputSelectionHandler(\r\n {\r\n onFocusedInputSelectionChanged: (e) => {\r\n \"worklet\";\r\n broadcastInputEvents(\"onSelectionChange\", e);\r\n },\r\n },\r\n [],\r\n );\r\n // effects\r\n useEffect(() => {\r\n if (enabled) {\r\n applyMonkeyPatch();\r\n } else {\r\n revertMonkeyPatch();\r\n }\r\n }, [enabled]);\r\n\r\n return (\r\n <KeyboardContext.Provider value={context}>\r\n <KeyboardControllerViewAnimated\r\n enabled={enabled}\r\n onKeyboardMoveReanimated={keyboardHandler}\r\n onKeyboardMoveStart={OS === \"ios\" ? onKeyboardMove : undefined}\r\n onKeyboardMove={OS === \"android\" ? onKeyboardMove : undefined}\r\n onKeyboardMoveInteractive={onKeyboardMove}\r\n onKeyboardMoveEnd={ OS as string === \"harmony\"?onKeyboardMove:undefined}\r\n onFocusedInputLayoutChangedReanimated={inputLayoutHandler}\r\n onFocusedInputTextChangedReanimated={inputTextHandler}\r\n onFocusedInputSelectionChangedReanimated={inputSelectionHandler}\r\n navigationBarTranslucent={navigationBarTranslucent}\r\n statusBarTranslucent={statusBarTranslucent}\r\n style={styles.container}\r\n >\r\n <Reanimated.View style={styles.container}>{children}</Reanimated.View>\r\n {/* {children} */}\r\n </KeyboardControllerViewAnimated>\r\n <Animated.View\r\n // we are using this small hack, because if the component (where\r\n // animated value has been used) is unmounted, then animation will\r\n // stop receiving events (seems like it's react-native optimization).\r\n // So we need to keep a reference to the animated value, to keep it's\r\n // always mounted (keep a reference to an animated value).\r\n //\r\n // To test why it's needed, try to open screen which consumes Animated.Value\r\n // then close it and open it again (for example 'Animated transition').\r\n style={style}\r\n />\r\n </KeyboardContext.Provider>\r\n );\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useState","Animated","Platform","StyleSheet","Reanimated","useSharedValue","Easing","withTiming","KeyboardControllerView","KeyboardContext","useAnimatedValue","useSharedHandlers","applyMonkeyPatch","revertMonkeyPatch","useAnimatedKeyboardHandler","useFocusedInputLayoutHandler","useFocusedInputSelectionHandler","useFocusedInputTextHandler","KeyboardControllerViewAnimated","createAnimatedComponent","styles","create","container","flex","hidden","display","position","OS","KeyboardProvider","children","statusBarTranslucent","navigationBarTranslucent","enabled","initiallyEnabled","setEnabled","progress","height","progressSV","heightSV","layout","setKeyboardHandlers","broadcastKeyboardEvents","setInputHandlers","broadcastInputEvents","context","animated","multiply","reanimated","style","transform","translateX","translateY","onKeyboardMove","event","nativeEvent","useNativeDriver","updateSharedValues","platforms","includes","dur","value","duration","easing","out","exp","keyboardHandler","onKeyboardMoveStart","onKeyboardMoveEnd","onKeyboardMoveInteractive","inputLayoutHandler","onFocusedInputLayoutChanged","e","target","inputTextHandler","onFocusedInputTextChanged","inputSelectionHandler","onFocusedInputSelectionChanged","createElement","Provider","onKeyboardMoveReanimated","undefined","onFocusedInputLayoutChangedReanimated","onFocusedInputTextChangedReanimated","onFocusedInputSelectionChangedReanimated","View"],"sources":["animated.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Animated, Platform, StyleSheet } from \"react-native\";\r\nimport Reanimated, { useSharedValue, Easing, withTiming } from \"react-native-reanimated\";\r\n\r\nimport { KeyboardControllerView } from \"./bindings\";\r\nimport { KeyboardContext } from \"./context\";\r\nimport { useAnimatedValue, useSharedHandlers } from \"./internal\";\r\nimport { applyMonkeyPatch, revertMonkeyPatch } from \"./monkey-patch\";\r\nimport {\r\n useAnimatedKeyboardHandler,\r\n useFocusedInputLayoutHandler,\r\n useFocusedInputSelectionHandler,\r\n useFocusedInputTextHandler,\r\n} from \"./reanimated\";\r\n\r\nimport type { KeyboardAnimationContext } from \"./context\";\r\nimport type {\r\n FocusedInputHandler,\r\n FocusedInputLayoutChangedEvent,\r\n KeyboardControllerProps,\r\n KeyboardHandler,\r\n NativeEvent,\r\n} from \"./types\";\r\nimport type { ViewStyle } from \"react-native\";\r\n\r\nconst KeyboardControllerViewAnimated = Reanimated.createAnimatedComponent(\r\n Animated.createAnimatedComponent(\r\n KeyboardControllerView,\r\n ) as React.FC<KeyboardControllerProps>,\r\n);\r\n\r\ntype Styles = {\r\n container: ViewStyle;\r\n hidden: ViewStyle;\r\n};\r\n\r\nconst styles = StyleSheet.create<Styles>({\r\n container: {\r\n flex: 1,\r\n },\r\n hidden: {\r\n display: \"none\",\r\n position: \"absolute\",\r\n },\r\n});\r\n\r\ntype KeyboardProviderProps = {\r\n children: React.ReactNode;\r\n /**\r\n * Set the value to `true`, if you use translucent status bar on Android.\r\n * If you already control status bar translucency via `react-native-screens`\r\n * or `StatusBar` component from `react-native`, you can ignore it.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/14\r\n * @platform android\r\n */\r\n statusBarTranslucent?: boolean;\r\n /**\r\n * Set the value to `true`, if you use translucent navigation bar on Android.\r\n * Defaults to `false`.\r\n *\r\n * @see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/119\r\n * @platform android\r\n */\r\n navigationBarTranslucent?: boolean;\r\n /**\r\n * A boolean prop indicating whether the module is enabled. It indicate only initial state,\r\n * i. e. if you try to change this prop after component mount it will not have any effect.\r\n * To change the property in runtime use `useKeyboardController` hook and `setEnabled` method.\r\n * Defaults to `true`.\r\n */\r\n enabled?: boolean;\r\n};\r\n\r\n// capture `Platform.OS` in separate variable to avoid deep workletization of entire RN package\r\n// see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/393 and https://github.com/kirillzyusko/react-native-keyboard-controller/issues/294 for more details\r\nconst OS = Platform.OS;\r\n\r\nexport const KeyboardProvider = ({\r\n children,\r\n statusBarTranslucent,\r\n navigationBarTranslucent,\r\n enabled: initiallyEnabled = true,\r\n}: KeyboardProviderProps) => {\r\n // state\r\n const [enabled, setEnabled] = useState(initiallyEnabled);\r\n // animated values\r\n const progress = useAnimatedValue(0);\r\n const height = useAnimatedValue(0);\r\n // shared values\r\n const progressSV = useSharedValue(0);\r\n const heightSV = useSharedValue(0);\r\n const layout = useSharedValue<FocusedInputLayoutChangedEvent | null>(null);\r\n const [setKeyboardHandlers, broadcastKeyboardEvents] =\r\n useSharedHandlers<KeyboardHandler>();\r\n const [setInputHandlers, broadcastInputEvents] =\r\n useSharedHandlers<FocusedInputHandler>();\r\n // memo\r\n const context = useMemo<KeyboardAnimationContext>(\r\n () => ({\r\n enabled,\r\n animated: { progress: progress, height: Animated.multiply(height,-1) },\r\n reanimated: { progress: progressSV, height: heightSV },\r\n layout,\r\n setKeyboardHandlers,\r\n setInputHandlers,\r\n setEnabled,\r\n }),\r\n [enabled],\r\n );\r\n const style = useMemo(\r\n () => [\r\n styles.hidden,\r\n { transform: [{ translateX: height }, { translateY: progress }] },\r\n ],\r\n [],\r\n );\r\n const onKeyboardMove = useMemo(\r\n () =>\r\n Animated.event(\r\n [\r\n {\r\n nativeEvent: {\r\n progress,\r\n height,\r\n },\r\n },\r\n ],\r\n { useNativeDriver:Platform.OS as string=='harmony'?false:true },\r\n ),\r\n [],\r\n );\r\n // handlers\r\n const updateSharedValues = (event: NativeEvent, platforms: string[]) => {\r\n \"worklet\";\r\n\r\n if (platforms.includes(OS)) {\r\n // eslint-disable-next-line react-compiler/react-compiler\r\n // progressSV.value = event.progress;\r\n // heightSV.value = -event.height;\r\n const dur = 460\r\n progressSV.value = withTiming(event.progress, { duration: dur, easing: Easing.out(Easing.exp) });\r\n heightSV.value = withTiming(-event.height,{ duration: dur, easing: Easing.out(Easing.exp)});\r\n }\r\n };\r\n const keyboardHandler = useAnimatedKeyboardHandler(\r\n {\r\n onKeyboardMoveStart: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onStart\", event);\r\n updateSharedValues(event, [\"ios\"]);\r\n },\r\n onKeyboardMove: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n broadcastKeyboardEvents(\"onMove\", event);\r\n updateSharedValues(event, [\"android\"]);\r\n },\r\n onKeyboardMoveEnd: (event: NativeEvent) => {\r\n \"worklet\";\r\n broadcastKeyboardEvents(\"onEnd\", event);\r\n updateSharedValues(event, ['harmony']);\r\n },\r\n onKeyboardMoveInteractive: (event: NativeEvent) => {\r\n \"worklet\";\r\n\r\n updateSharedValues(event, [\"android\", \"ios\"]);\r\n broadcastKeyboardEvents(\"onInteractive\", event);\r\n },\r\n },\r\n [],\r\n );\r\n const inputLayoutHandler = useFocusedInputLayoutHandler(\r\n {\r\n onFocusedInputLayoutChanged: (e) => {\r\n \"worklet\";\r\n\r\n if (e.target !== -1) {\r\n layout.value = e;\r\n } else {\r\n layout.value = null;\r\n }\r\n },\r\n },\r\n [],\r\n );\r\n const inputTextHandler = useFocusedInputTextHandler(\r\n {\r\n onFocusedInputTextChanged: (e) => {\r\n \"worklet\";\r\n\r\n broadcastInputEvents(\"onChangeText\", e);\r\n },\r\n },\r\n [],\r\n );\r\n const inputSelectionHandler = useFocusedInputSelectionHandler(\r\n {\r\n onFocusedInputSelectionChanged: (e) => {\r\n \"worklet\";\r\n broadcastInputEvents(\"onSelectionChange\", e);\r\n },\r\n },\r\n [],\r\n );\r\n // effects\r\n useEffect(() => {\r\n if (enabled) {\r\n applyMonkeyPatch();\r\n } else {\r\n revertMonkeyPatch();\r\n }\r\n }, [enabled]);\r\n\r\n return (\r\n <KeyboardContext.Provider value={context}>\r\n <KeyboardControllerViewAnimated\r\n enabled={enabled}\r\n onKeyboardMoveReanimated={keyboardHandler}\r\n onKeyboardMoveStart={OS === \"ios\" ? onKeyboardMove : undefined}\r\n onKeyboardMove={OS === \"android\" ? onKeyboardMove : undefined}\r\n onKeyboardMoveInteractive={onKeyboardMove}\r\n onKeyboardMoveEnd={ OS as string === \"harmony\"?onKeyboardMove:undefined}\r\n onFocusedInputLayoutChangedReanimated={inputLayoutHandler}\r\n onFocusedInputTextChangedReanimated={inputTextHandler}\r\n onFocusedInputSelectionChangedReanimated={inputSelectionHandler}\r\n navigationBarTranslucent={navigationBarTranslucent}\r\n statusBarTranslucent={statusBarTranslucent}\r\n style={styles.container}\r\n >\r\n <Reanimated.View style={styles.container}>{children}</Reanimated.View>\r\n {/* {children} */}\r\n </KeyboardControllerViewAnimated>\r\n <Animated.View\r\n // we are using this small hack, because if the component (where\r\n // animated value has been used) is unmounted, then animation will\r\n // stop receiving events (seems like it's react-native optimization).\r\n // So we need to keep a reference to the animated value, to keep it's\r\n // always mounted (keep a reference to an animated value).\r\n //\r\n // To test why it's needed, try to open screen which consumes Animated.Value\r\n // then close it and open it again (for example 'Animated transition').\r\n style={style}\r\n />\r\n </KeyboardContext.Provider>\r\n );\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-ohos/react-native-keyboard-controller",
|
|
3
|
-
"version": "1.12.8-rc.
|
|
3
|
+
"version": "1.12.8-rc.6",
|
|
4
4
|
"description": "Keyboard manager which works in identical way on iOS and Android and harmony",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/animated.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useState } from "react";
|
|
2
2
|
import { Animated, Platform, StyleSheet } from "react-native";
|
|
3
|
-
import Reanimated, { useSharedValue } from "react-native-reanimated";
|
|
3
|
+
import Reanimated, { useSharedValue, Easing, withTiming } from "react-native-reanimated";
|
|
4
4
|
|
|
5
5
|
import { KeyboardControllerView } from "./bindings";
|
|
6
6
|
import { KeyboardContext } from "./context";
|
|
@@ -137,8 +137,11 @@ export const KeyboardProvider = ({
|
|
|
137
137
|
|
|
138
138
|
if (platforms.includes(OS)) {
|
|
139
139
|
// eslint-disable-next-line react-compiler/react-compiler
|
|
140
|
-
progressSV.value = event.progress;
|
|
141
|
-
heightSV.value = -event.height;
|
|
140
|
+
// progressSV.value = event.progress;
|
|
141
|
+
// heightSV.value = -event.height;
|
|
142
|
+
const dur = 460
|
|
143
|
+
progressSV.value = withTiming(event.progress, { duration: dur, easing: Easing.out(Easing.exp) });
|
|
144
|
+
heightSV.value = withTiming(-event.height,{ duration: dur, easing: Easing.out(Easing.exp)});
|
|
142
145
|
}
|
|
143
146
|
};
|
|
144
147
|
const keyboardHandler = useAnimatedKeyboardHandler(
|