@kietpt2003/react-native-core-ui
Version:
React Native Core UI components by KietPT
30 lines (29 loc) • 1.26 kB
JavaScript
import React from "react";
import { useDerivedValue, useSharedValue, withSpring, } from "react-native-reanimated";
import { DEFAULT_ANIMATION_CONFIG } from "../../constants/DraggableFlatList/constants";
import { useAnimatedValues } from "../../context/DraggableFlatList/animatedValueContext";
import { useIsActive } from "../../context/DraggableFlatList/cellContext";
import { WEB } from "../../utils/getOS";
export function useOnCellActiveAnimation({ animationConfig } = { animationConfig: {} }) {
const animationConfigRef = useSharedValue(animationConfig);
React.useEffect(() => {
animationConfigRef.value = animationConfig;
}, [animationConfig]);
const isActive = useIsActive();
// Web version - simplified without Reanimated
if (WEB) {
return {
isActive,
onActiveAnim: { value: isActive ? 1 : 0 },
};
}
const { isTouchActiveNative } = useAnimatedValues();
const onActiveAnim = useDerivedValue(() => {
const toVal = isActive && isTouchActiveNative.value ? 1 : 0;
return withSpring(toVal, Object.assign(Object.assign({}, DEFAULT_ANIMATION_CONFIG), animationConfigRef.value));
}, [isActive]);
return {
isActive,
onActiveAnim,
};
}