UNPKG

5.13 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
12
13var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
14
15var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
16
17var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
18
19var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
20
21var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
22
23var _createClass2 = require('babel-runtime/helpers/createClass');
24
25var _createClass3 = _interopRequireDefault(_createClass2);
26
27var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
28
29var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
30
31var _inherits2 = require('babel-runtime/helpers/inherits');
32
33var _inherits3 = _interopRequireDefault(_inherits2);
34
35var _simpleAssign = require('simple-assign');
36
37var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
38
39var _react = require('react');
40
41var _react2 = _interopRequireDefault(_react);
42
43var _propTypes = require('prop-types');
44
45var _propTypes2 = _interopRequireDefault(_propTypes);
46
47var _reactDom = require('react-dom');
48
49var _reactDom2 = _interopRequireDefault(_reactDom);
50
51var _autoPrefix = require('../utils/autoPrefix');
52
53var _autoPrefix2 = _interopRequireDefault(_autoPrefix);
54
55var _transitions = require('../styles/transitions');
56
57var _transitions2 = _interopRequireDefault(_transitions);
58
59function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
60
61var ScaleInChild = function (_Component) {
62 (0, _inherits3.default)(ScaleInChild, _Component);
63
64 function ScaleInChild() {
65 (0, _classCallCheck3.default)(this, ScaleInChild);
66 return (0, _possibleConstructorReturn3.default)(this, (ScaleInChild.__proto__ || (0, _getPrototypeOf2.default)(ScaleInChild)).apply(this, arguments));
67 }
68
69 (0, _createClass3.default)(ScaleInChild, [{
70 key: 'componentWillUnmount',
71 value: function componentWillUnmount() {
72 clearTimeout(this.enterTimer);
73 clearTimeout(this.leaveTimer);
74 }
75 }, {
76 key: 'componentWillAppear',
77 value: function componentWillAppear(callback) {
78 this.initializeAnimation(callback);
79 }
80 }, {
81 key: 'componentWillEnter',
82 value: function componentWillEnter(callback) {
83 this.initializeAnimation(callback);
84 }
85 }, {
86 key: 'componentDidAppear',
87 value: function componentDidAppear() {
88 this.animate();
89 }
90 }, {
91 key: 'componentDidEnter',
92 value: function componentDidEnter() {
93 this.animate();
94 }
95 }, {
96 key: 'componentWillLeave',
97 value: function componentWillLeave(callback) {
98 var style = _reactDom2.default.findDOMNode(this).style;
99
100 style.opacity = '0';
101 _autoPrefix2.default.set(style, 'transform', 'scale(' + this.props.minScale + ')');
102
103 this.leaveTimer = setTimeout(callback, 450);
104 }
105 }, {
106 key: 'animate',
107 value: function animate() {
108 var style = _reactDom2.default.findDOMNode(this).style;
109
110 style.opacity = '1';
111 _autoPrefix2.default.set(style, 'transform', 'scale(' + this.props.maxScale + ')');
112 }
113 }, {
114 key: 'initializeAnimation',
115 value: function initializeAnimation(callback) {
116 var style = _reactDom2.default.findDOMNode(this).style;
117
118 style.opacity = '0';
119 _autoPrefix2.default.set(style, 'transform', 'scale(0)');
120
121 this.enterTimer = setTimeout(callback, this.props.enterDelay);
122 }
123 }, {
124 key: 'render',
125 value: function render() {
126 var _props = this.props,
127 children = _props.children,
128 enterDelay = _props.enterDelay,
129 maxScale = _props.maxScale,
130 minScale = _props.minScale,
131 style = _props.style,
132 other = (0, _objectWithoutProperties3.default)(_props, ['children', 'enterDelay', 'maxScale', 'minScale', 'style']);
133 var prepareStyles = this.context.muiTheme.prepareStyles;
134
135
136 var mergedRootStyles = (0, _simpleAssign2.default)({}, {
137 position: 'absolute',
138 height: '100%',
139 width: '100%',
140 top: 0,
141 left: 0,
142 transition: _transitions2.default.easeOut(null, ['transform', 'opacity'])
143 }, style);
144
145 return _react2.default.createElement(
146 'div',
147 (0, _extends3.default)({}, other, { style: prepareStyles(mergedRootStyles) }),
148 children
149 );
150 }
151 }]);
152 return ScaleInChild;
153}(_react.Component);
154
155ScaleInChild.defaultProps = {
156 enterDelay: 0,
157 maxScale: 1,
158 minScale: 0
159};
160ScaleInChild.contextTypes = {
161 muiTheme: _propTypes2.default.object.isRequired
162};
163ScaleInChild.propTypes = process.env.NODE_ENV !== "production" ? {
164 children: _propTypes2.default.node,
165 enterDelay: _propTypes2.default.number,
166 maxScale: _propTypes2.default.number,
167 minScale: _propTypes2.default.number,
168 style: _propTypes2.default.object
169} : {};
170exports.default = ScaleInChild;
\No newline at end of file