UNPKG

@kietpt2003/react-native-core-ui

Version:
30 lines (29 loc) 1.26 kB
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, }; }