UNPKG

2.75 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _jsxRuntime = require("react/jsx-runtime");
14/**
15 * @ignore - internal component.
16 */function Ripple(props) {
17 const {
18 className,
19 classes,
20 pulsate = false,
21 rippleX,
22 rippleY,
23 rippleSize,
24 in: inProp,
25 onExited,
26 timeout
27 } = props;
28 const [leaving, setLeaving] = React.useState(false);
29 const rippleClassName = (0, _clsx.default)(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);
30 const rippleStyles = {
31 width: rippleSize,
32 height: rippleSize,
33 top: -(rippleSize / 2) + rippleY,
34 left: -(rippleSize / 2) + rippleX
35 };
36 const childClassName = (0, _clsx.default)(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);
37 if (!inProp && !leaving) {
38 setLeaving(true);
39 }
40 React.useEffect(() => {
41 if (!inProp && onExited != null) {
42 // react-transition-group#onExited
43 const timeoutId = setTimeout(onExited, timeout);
44 return () => {
45 clearTimeout(timeoutId);
46 };
47 }
48 return undefined;
49 }, [onExited, inProp, timeout]);
50 return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
51 className: rippleClassName,
52 style: rippleStyles,
53 children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
54 className: childClassName
55 })
56 });
57}
58process.env.NODE_ENV !== "production" ? Ripple.propTypes /* remove-proptypes */ = {
59 /**
60 * Override or extend the styles applied to the component.
61 */
62 classes: _propTypes.default.object.isRequired,
63 className: _propTypes.default.string,
64 /**
65 * @ignore - injected from TransitionGroup
66 */
67 in: _propTypes.default.bool,
68 /**
69 * @ignore - injected from TransitionGroup
70 */
71 onExited: _propTypes.default.func,
72 /**
73 * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.
74 */
75 pulsate: _propTypes.default.bool,
76 /**
77 * Diameter of the ripple.
78 */
79 rippleSize: _propTypes.default.number,
80 /**
81 * Horizontal position of the ripple center.
82 */
83 rippleX: _propTypes.default.number,
84 /**
85 * Vertical position of the ripple center.
86 */
87 rippleY: _propTypes.default.number,
88 /**
89 * exit delay
90 */
91 timeout: _propTypes.default.number.isRequired
92} : void 0;
93var _default = exports.default = Ripple;
\No newline at end of file