Skip to content

Commit aa0c069

Browse files
committed
feat: migrate KeyboardStickyView to reanimated
1 parent 6c25251 commit aa0c069

1 file changed

Lines changed: 17 additions & 18 deletions

File tree

src/components/KeyboardStickyView/index.tsx

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import React, { forwardRef, useMemo } from "react";
2-
import { Animated } from "react-native";
2+
import Reanimated, {
3+
interpolate,
4+
useAnimatedStyle,
5+
} from "react-native-reanimated";
36

4-
import { useKeyboardAnimation } from "../../hooks";
7+
import { useReanimatedKeyboardAnimation } from "../../hooks";
58

69
import type { View, ViewProps } from "react-native";
710

@@ -51,29 +54,25 @@ const KeyboardStickyView = forwardRef<
5154
},
5255
ref,
5356
) => {
54-
const { height, progress } = useKeyboardAnimation();
57+
const { height, progress } = useReanimatedKeyboardAnimation();
5558

56-
const offset = progress.interpolate({
57-
inputRange: [0, 1],
58-
outputRange: [closed, opened],
59-
});
59+
const stickyViewStyle = useAnimatedStyle(() => {
60+
const offset = interpolate(progress.value, [0, 1], [closed, opened]);
61+
62+
return {
63+
transform: [{ translateY: enabled ? height.value + offset : closed }],
64+
};
65+
}, [closed, opened, enabled]);
6066

6167
const styles = useMemo(
62-
() => [
63-
{
64-
transform: [
65-
{ translateY: enabled ? Animated.add(height, offset) : closed },
66-
],
67-
},
68-
style,
69-
],
70-
[closed, enabled, height, offset, style],
68+
() => [style, stickyViewStyle],
69+
[style, stickyViewStyle],
7170
);
7271

7372
return (
74-
<Animated.View ref={ref} style={styles} {...props}>
73+
<Reanimated.View ref={ref} style={styles} {...props}>
7574
{children}
76-
</Animated.View>
75+
</Reanimated.View>
7776
);
7877
},
7978
);

0 commit comments

Comments
 (0)