react-native-ui-lib
Version:
<p align="center"> <img src="https://user-images.githubusercontent.com/1780255/105469025-56759000-5ca0-11eb-993d-3568c1fd54f4.png" height="250px" style="display:block"/> </p> <p align="center">UI Toolset & Components Library for React Native</p> <p a
54 lines (50 loc) • 1.88 kB
JavaScript
import React, { useCallback, useImperativeHandle } from 'react';
import Animated from 'react-native-reanimated';
import View from "../../components/view";
import { forwardRef } from "../../commons/new";
import useHiddenLocation from "../hooks/useHiddenLocation";
import { TransitionViewAnimationType } from "./useAnimationEndNotifier";
import { TransitionViewDirection, TransitionViewDirectionEnum } from "./useAnimatedTranslator";
import useAnimatedTransition from "./useAnimatedTransition";
const AnimatedView = Animated.createAnimatedComponent(View);
export { TransitionViewDirection, TransitionViewDirectionEnum, TransitionViewAnimationType }; // TODO: might need to create a file for types and create a fake component for docs
const TransitionView = props => {
const {
onAnimationStart,
onAnimationEnd,
enterFrom,
exitTo,
forwardedRef,
style: propsStyle,
onLayout: propsOnLayout,
...others
} = props;
const containerRef = React.createRef();
const {
onLayout: hiddenLocationOnLayout,
hiddenLocation
} = useHiddenLocation({
containerRef
});
const {
exit,
animatedStyle
} = useAnimatedTransition({
hiddenLocation,
enterFrom,
exitTo,
onAnimationStart,
onAnimationEnd
});
useImperativeHandle(forwardedRef, () => ({
animateOut: exit // TODO: should this be renamed as well?
}), [exit]);
const onLayout = useCallback(event => {
hiddenLocationOnLayout(event);
propsOnLayout?.(event); // eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return <AnimatedView {...others} onLayout={onLayout} style={[propsStyle, animatedStyle]} ref={containerRef} />;
};
TransitionView.displayName = 'TransitionView';
TransitionView.directions = TransitionViewDirectionEnum; // @ts-expect-error TODO: should this be fixed in forwardRef?
export default forwardRef(TransitionView);