@applicaster/zapp-react-native-ui-components
Version:
Applicaster Zapp React Native ui components for the Quick Brick App
58 lines (48 loc) • 1.26 kB
text/typescript
import { Animated, Easing, EasingFunction, StyleProp } from "react-native";
type AnimatedInterpolatedStyle =
| Animated.AnimatedInterpolation
| [{ [Key: string]: Animated.AnimatedInterpolation }];
type AnimationConfig = {
duration: number;
easing: EasingFunction;
styles: (animatedValue: Animated.Value) => {
[Key: string]: AnimatedInterpolatedStyle | StyleProp<any>;
};
delay?: number;
onAnimationEnd?: () => void;
};
export type AnimatedInConfig =
| AnimationConfig
| {
in: AnimationConfig;
out: AnimationConfig;
};
const IN_DURATION = 1000;
const OUT_DURATION = 1000;
const easing = Easing.in(Easing.bezier(0.25, 0.1, 0.25, 1.0));
const interpolate = (
animatedValue: Animated.Value,
from: number = 0,
to: number = 1
): Animated.AnimatedInterpolation =>
animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [from, to],
});
const fadeInOpacityStyles = (animatedValue: Animated.Value) => ({
opacity: interpolate(animatedValue),
});
export const overlayFadeIn: AnimatedInConfig = {
in: {
styles: fadeInOpacityStyles,
easing,
duration: IN_DURATION,
delay: 0,
},
out: {
styles: fadeInOpacityStyles,
easing,
duration: OUT_DURATION,
delay: 0,
},
};