'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var TouchFeedback = function (_React$Component) { (0, _inherits3['default'])(TouchFeedback, _React$Component); function TouchFeedback() { (0, _classCallCheck3['default'])(this, TouchFeedback); var _this = (0, _possibleConstructorReturn3['default'])(this, (TouchFeedback.__proto__ || Object.getPrototypeOf(TouchFeedback)).apply(this, arguments)); _this.state = { active: false }; _this.onTouchStart = function (e) { _this.triggerEvent('TouchStart', true, e); }; _this.onTouchMove = function (e) { _this.triggerEvent('TouchMove', false, e); }; _this.onTouchEnd = function (e) { _this.triggerEvent('TouchEnd', false, e); }; _this.onTouchCancel = function (e) { _this.triggerEvent('TouchCancel', false, e); }; _this.onMouseDown = function (e) { // pc simulate mobile _this.triggerEvent('MouseDown', true, e); }; _this.onMouseUp = function (e) { _this.triggerEvent('MouseUp', false, e); }; _this.onMouseLeave = function (e) { _this.triggerEvent('MouseLeave', false, e); }; return _this; } (0, _createClass3['default'])(TouchFeedback, [{ key: 'componentDidUpdate', value: function componentDidUpdate() { if (this.props.disabled && this.state.active) { this.setState({ active: false }); } } }, { key: 'triggerEvent', value: function triggerEvent(type, isActive, ev) { var eventType = 'on' + type; var children = this.props.children; if (children.props[eventType]) { children.props[eventType](ev); } if (isActive !== this.state.active) { this.setState({ active: isActive }); } } }, { key: 'render', value: function render() { var _props = this.props, children = _props.children, disabled = _props.disabled, activeClassName = _props.activeClassName, activeStyle = _props.activeStyle; var events = disabled ? undefined : { onTouchStart: this.onTouchStart, onTouchMove: this.onTouchMove, onTouchEnd: this.onTouchEnd, onTouchCancel: this.onTouchCancel, onMouseDown: this.onMouseDown, onMouseUp: this.onMouseUp, onMouseLeave: this.onMouseLeave }; var child = _react2['default'].Children.only(children); if (!disabled && this.state.active) { var _child$props = child.props, style = _child$props.style, className = _child$props.className; if (activeStyle !== false) { if (activeStyle) { style = (0, _extends3['default'])({}, style, activeStyle); } className = (0, _classnames2['default'])(className, activeClassName); } return _react2['default'].cloneElement(child, (0, _extends3['default'])({ className: className, style: style }, events)); } return _react2['default'].cloneElement(child, events); } }]); return TouchFeedback; }(_react2['default'].Component); exports['default'] = TouchFeedback; TouchFeedback.defaultProps = { disabled: false }; module.exports = exports['default'];