UNPKG

1.51 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
4var _fadeStyles;
5
6import classNames from 'classnames';
7import React, { useCallback } from 'react';
8import Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';
9import transitionEndListener from './transitionEndListener';
10import triggerBrowserReflow from './triggerBrowserReflow';
11var defaultProps = {
12 in: false,
13 timeout: 300,
14 mountOnEnter: false,
15 unmountOnExit: false,
16 appear: false
17};
18var fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);
19var Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20 var className = _ref.className,
21 children = _ref.children,
22 props = _objectWithoutPropertiesLoose(_ref, ["className", "children"]);
23
24 var handleEnter = useCallback(function (node) {
25 triggerBrowserReflow(node);
26 if (props.onEnter) props.onEnter(node);
27 }, [props]);
28 return /*#__PURE__*/React.createElement(Transition, _extends({
29 ref: ref,
30 addEndListener: transitionEndListener
31 }, props, {
32 onEnter: handleEnter
33 }), function (status, innerProps) {
34 return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {
35 className: classNames('fade', className, children.props.className, fadeStyles[status])
36 }));
37 });
38});
39Fade.defaultProps = defaultProps;
40Fade.displayName = 'Fade';
41export default Fade;
\No newline at end of file