{"dependencies":[{"name":"babel-runtime/core-js/object/get-prototype-of","loc":{"line":7,"column":30}},{"name":"babel-runtime/helpers/classCallCheck","loc":{"line":11,"column":31}},{"name":"babel-runtime/helpers/createClass","loc":{"line":15,"column":28}},{"name":"babel-runtime/helpers/possibleConstructorReturn","loc":{"line":19,"column":42}},{"name":"babel-runtime/helpers/inherits","loc":{"line":23,"column":25}},{"name":"simple-assign","loc":{"line":27,"column":28}},{"name":"react","loc":{"line":31,"column":21}},{"name":"prop-types","loc":{"line":35,"column":25}},{"name":"react-dom","loc":{"line":39,"column":24}},{"name":"recompose/shallowEqual","loc":{"line":43,"column":28}},{"name":"../utils/autoPrefix","loc":{"line":47,"column":26}},{"name":"../styles/transitions","loc":{"line":51,"column":27}},{"name":"./ScaleIn","loc":{"line":55,"column":23}}],"generated":{"js":"'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _simpleAssign = require('simple-assign');\n\nvar _simpleAssign2 = _interopRequireDefault(_simpleAssign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _shallowEqual = require('recompose/shallowEqual');\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _autoPrefix = require('../utils/autoPrefix');\n\nvar _autoPrefix2 = _interopRequireDefault(_autoPrefix);\n\nvar _transitions = require('../styles/transitions');\n\nvar _transitions2 = _interopRequireDefault(_transitions);\n\nvar _ScaleIn = require('./ScaleIn');\n\nvar _ScaleIn2 = _interopRequireDefault(_ScaleIn);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : { default: obj };\n}\n\nvar pulsateDuration = 750;\n\nvar FocusRipple = function (_Component) {\n  (0, _inherits3.default)(FocusRipple, _Component);\n\n  function FocusRipple() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    (0, _classCallCheck3.default)(this, FocusRipple);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = FocusRipple.__proto__ || (0, _getPrototypeOf2.default)(FocusRipple)).call.apply(_ref, [this].concat(args))), _this), _this.pulsate = function () {\n      var innerCircle = _reactDom2.default.findDOMNode(_this.refs.innerCircle);\n      if (!innerCircle) return;\n\n      var startScale = 'scale(1)';\n      var endScale = 'scale(0.85)';\n      var currentScale = innerCircle.style.transform || startScale;\n      var nextScale = currentScale === startScale ? endScale : startScale;\n\n      _autoPrefix2.default.set(innerCircle.style, 'transform', nextScale);\n      _this.timeout = setTimeout(_this.pulsate, pulsateDuration);\n    }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n  }\n\n  (0, _createClass3.default)(FocusRipple, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      if (this.props.show) {\n        this.setRippleSize();\n        this.pulsate();\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      return !(0, _shallowEqual2.default)(this.props, nextProps) || !(0, _shallowEqual2.default)(this.state, nextState);\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      if (this.props.show) {\n        this.setRippleSize();\n        this.pulsate();\n      } else {\n        if (this.timeout) clearTimeout(this.timeout);\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this.timeout);\n    }\n  }, {\n    key: 'getRippleElement',\n    value: function getRippleElement(props) {\n      var color = props.color,\n          innerStyle = props.innerStyle,\n          opacity = props.opacity;\n      var _context$muiTheme = this.context.muiTheme,\n          prepareStyles = _context$muiTheme.prepareStyles,\n          ripple = _context$muiTheme.ripple;\n\n      var innerStyles = (0, _simpleAssign2.default)({\n        position: 'absolute',\n        height: '100%',\n        width: '100%',\n        borderRadius: '50%',\n        opacity: opacity ? opacity : 0.16,\n        backgroundColor: color || ripple.color,\n        transition: _transitions2.default.easeOut(pulsateDuration + 'ms', 'transform', null, _transitions2.default.easeInOutFunction)\n      }, innerStyle);\n\n      return _react2.default.createElement('div', { ref: 'innerCircle', style: prepareStyles((0, _simpleAssign2.default)({}, innerStyles)) });\n    }\n  }, {\n    key: 'setRippleSize',\n    value: function setRippleSize() {\n      var el = _reactDom2.default.findDOMNode(this.refs.innerCircle);\n      var height = el.offsetHeight;\n      var width = el.offsetWidth;\n      var size = Math.max(height, width);\n\n      var oldTop = 0;\n      // For browsers that don't support endsWith()\n      if (el.style.top.indexOf('px', el.style.top.length - 2) !== -1) {\n        oldTop = parseInt(el.style.top);\n      }\n      el.style.height = size + 'px';\n      el.style.top = height / 2 - size / 2 + oldTop + 'px';\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          show = _props.show,\n          style = _props.style;\n\n      var mergedRootStyles = (0, _simpleAssign2.default)({\n        height: '100%',\n        width: '100%',\n        position: 'absolute',\n        top: 0,\n        left: 0\n      }, style);\n\n      var ripple = show ? this.getRippleElement(this.props) : null;\n\n      return _react2.default.createElement(_ScaleIn2.default, {\n        maxScale: 0.85,\n        style: mergedRootStyles\n      }, ripple);\n    }\n  }]);\n  return FocusRipple;\n}(_react.Component);\n\nFocusRipple.contextTypes = {\n  muiTheme: _propTypes2.default.object.isRequired\n};\nFocusRipple.propTypes = \"development\" !== \"production\" ? {\n  color: _propTypes2.default.string,\n  innerStyle: _propTypes2.default.object,\n  opacity: _propTypes2.default.number,\n  show: _propTypes2.default.bool,\n  style: _propTypes2.default.object\n} : {};\nexports.default = FocusRipple;"},"hash":"e8faf1f5347f47750b5daf45215be609"}