UNPKG

7.04 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
16var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
18var React = _interopRequireWildcard(require("react"));
19
20var _propTypes = _interopRequireDefault(require("prop-types"));
21
22var _reactTransitionGroup = require("react-transition-group");
23
24var _transitions = require("../styles/transitions");
25
26var _useTheme = _interopRequireDefault(require("../styles/useTheme"));
27
28var _utils = require("../transitions/utils");
29
30var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
31
32var styles = {
33 entering: {
34 opacity: 1
35 },
36 entered: {
37 opacity: 1
38 }
39};
40var defaultTimeout = {
41 enter: _transitions.duration.enteringScreen,
42 exit: _transitions.duration.leavingScreen
43};
44/**
45 * The Fade transition is used by the [Modal](/components/modal/) component.
46 * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
47 */
48
49var Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {
50 var children = props.children,
51 _props$disableStrictM = props.disableStrictModeCompat,
52 disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,
53 inProp = props.in,
54 onEnter = props.onEnter,
55 onEntered = props.onEntered,
56 onEntering = props.onEntering,
57 onExit = props.onExit,
58 onExited = props.onExited,
59 onExiting = props.onExiting,
60 style = props.style,
61 _props$TransitionComp = props.TransitionComponent,
62 TransitionComponent = _props$TransitionComp === void 0 ? _reactTransitionGroup.Transition : _props$TransitionComp,
63 _props$timeout = props.timeout,
64 timeout = _props$timeout === void 0 ? defaultTimeout : _props$timeout,
65 other = (0, _objectWithoutProperties2.default)(props, ["children", "disableStrictModeCompat", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "TransitionComponent", "timeout"]);
66 var theme = (0, _useTheme.default)();
67 var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;
68 var nodeRef = React.useRef(null);
69 var foreignRef = (0, _useForkRef.default)(children.ref, ref);
70 var handleRef = (0, _useForkRef.default)(enableStrictModeCompat ? nodeRef : undefined, foreignRef);
71
72 var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {
73 return function (nodeOrAppearing, maybeAppearing) {
74 if (callback) {
75 var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],
76 _ref2 = (0, _slicedToArray2.default)(_ref, 2),
77 node = _ref2[0],
78 isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.
79
80
81 if (isAppearing === undefined) {
82 callback(node);
83 } else {
84 callback(node, isAppearing);
85 }
86 }
87 };
88 };
89
90 var handleEntering = normalizedTransitionCallback(onEntering);
91 var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {
92 (0, _utils.reflow)(node); // So the animation always start from the start.
93
94 var transitionProps = (0, _utils.getTransitionProps)({
95 style: style,
96 timeout: timeout
97 }, {
98 mode: 'enter'
99 });
100 node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);
101 node.style.transition = theme.transitions.create('opacity', transitionProps);
102
103 if (onEnter) {
104 onEnter(node, isAppearing);
105 }
106 });
107 var handleEntered = normalizedTransitionCallback(onEntered);
108 var handleExiting = normalizedTransitionCallback(onExiting);
109 var handleExit = normalizedTransitionCallback(function (node) {
110 var transitionProps = (0, _utils.getTransitionProps)({
111 style: style,
112 timeout: timeout
113 }, {
114 mode: 'exit'
115 });
116 node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);
117 node.style.transition = theme.transitions.create('opacity', transitionProps);
118
119 if (onExit) {
120 onExit(node);
121 }
122 });
123 var handleExited = normalizedTransitionCallback(onExited);
124 return /*#__PURE__*/React.createElement(TransitionComponent, (0, _extends2.default)({
125 appear: true,
126 in: inProp,
127 nodeRef: enableStrictModeCompat ? nodeRef : undefined,
128 onEnter: handleEnter,
129 onEntered: handleEntered,
130 onEntering: handleEntering,
131 onExit: handleExit,
132 onExited: handleExited,
133 onExiting: handleExiting,
134 timeout: timeout
135 }, other), function (state, childProps) {
136 return /*#__PURE__*/React.cloneElement(children, (0, _extends2.default)({
137 style: (0, _extends2.default)({
138 opacity: 0,
139 visibility: state === 'exited' && !inProp ? 'hidden' : undefined
140 }, styles[state], style, children.props.style),
141 ref: handleRef
142 }, childProps));
143 });
144});
145process.env.NODE_ENV !== "production" ? Fade.propTypes = {
146 // ----------------------------- Warning --------------------------------
147 // | These PropTypes are generated from the TypeScript type definitions |
148 // | To update them edit the d.ts file and run "yarn proptypes" |
149 // ----------------------------------------------------------------------
150
151 /**
152 * A single child content element.
153 */
154 children: _propTypes.default.element,
155
156 /**
157 * Enable this prop if you encounter 'Function components cannot be given refs',
158 * use `unstable_createStrictModeTheme`,
159 * and can't forward the ref in the child component.
160 */
161 disableStrictModeCompat: _propTypes.default.bool,
162
163 /**
164 * If `true`, the component will transition in.
165 */
166 in: _propTypes.default.bool,
167
168 /**
169 * @ignore
170 */
171 onEnter: _propTypes.default.func,
172
173 /**
174 * @ignore
175 */
176 onEntered: _propTypes.default.func,
177
178 /**
179 * @ignore
180 */
181 onEntering: _propTypes.default.func,
182
183 /**
184 * @ignore
185 */
186 onExit: _propTypes.default.func,
187
188 /**
189 * @ignore
190 */
191 onExited: _propTypes.default.func,
192
193 /**
194 * @ignore
195 */
196 onExiting: _propTypes.default.func,
197
198 /**
199 * @ignore
200 */
201 style: _propTypes.default.object,
202
203 /**
204 * The duration for the transition, in milliseconds.
205 * You may specify a single timeout for all transitions, or individually with an object.
206 */
207 timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({
208 appear: _propTypes.default.number,
209 enter: _propTypes.default.number,
210 exit: _propTypes.default.number
211 })])
212} : void 0;
213var _default = Fade;
214exports.default = _default;
\No newline at end of file