text: 'use strict';
  
  exports.__esModule = true;
  
  var _extends2 = require('babel-runtime/helpers/extends');
  
  var _extends3 = _interopRequireDefault(_extends2);
  
  var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
  
  var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
  
  var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  
  var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  
  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 _propTypes = require('prop-types');
  
  var _propTypes2 = _interopRequireDefault(_propTypes);
  
  var _PureRenderMixin = require('rc-util/lib/PureRenderMixin');
  
  var _PureRenderMixin2 = _interopRequireDefault(_PureRenderMixin);
  
  var _classnames = require('classnames');
  
  var _classnames2 = _interopRequireDefault(_classnames);
  
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  
  var Checkbox = function (_React$Component) {
    (0, _inherits3['default'])(Checkbox, _React$Component);
  
    function Checkbox(props) {
      (0, _classCallCheck3['default'])(this, Checkbox);
  
      var _this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call(this, props));
  
      _initialiseProps.call(_this);
  
      var checked = 'checked' in props ? props.checked : props.defaultChecked;
  
      _this.state = {
        checked: checked
      };
      return _this;
    }
  
    Checkbox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
      if ('checked' in nextProps) {
        this.setState({
          checked: nextProps.checked
        });
      }
    };
  
    Checkbox.prototype.shouldComponentUpdate = function shouldComponentUpdate() {
      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
  
      return _PureRenderMixin2['default'].shouldComponentUpdate.apply(this, args);
    };
  
    Checkbox.prototype.focus = function focus() {
      this.input.focus();
    };
  
    Checkbox.prototype.blur = function blur() {
      this.input.blur();
    };
  
    Checkbox.prototype.render = function render() {
      var _classNames;
  
      var _props = this.props,
          prefixCls = _props.prefixCls,
          className = _props.className,
          style = _props.style,
          name = _props.name,
          id = _props.id,
          type = _props.type,
          disabled = _props.disabled,
          readOnly = _props.readOnly,
          tabIndex = _props.tabIndex,
          onClick = _props.onClick,
          onFocus = _props.onFocus,
          onBlur = _props.onBlur,
          autoFocus = _props.autoFocus,
          value = _props.value,
          others = (0, _objectWithoutProperties3['default'])(_props, ['prefixCls', 'className', 'style', 'name', 'id', 'type', 'disabled', 'readOnly', 'tabIndex', 'onClick', 'onFocus', 'onBlur', 'autoFocus', 'value']);
  
  
      var globalProps = Object.keys(others).reduce(function (prev, key) {
        if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {
          prev[key] = others[key];
        }
        return prev;
      }, {});
  
      var checked = this.state.checked;
  
      var classString = (0, _classnames2['default'])(prefixCls, className, (_classNames = {}, _classNames[prefixCls + '-checked'] = checked, _classNames[prefixCls + '-disabled'] = disabled, _classNames));
  
      return _react2['default'].createElement(
        'span',
        { className: classString, style: style },
        _react2['default'].createElement('input', (0, _extends3['default'])({
          name: name,
          id: id,
          type: type,
          readOnly: readOnly,
          disabled: disabled,
          tabIndex: tabIndex,
          className: prefixCls + '-input',
          checked: !!checked,
          onClick: onClick,
          onFocus: onFocus,
          onBlur: onBlur,
          onChange: this.handleChange,
          autoFocus: autoFocus,
          ref: this.saveInput,
          value: value
        }, globalProps)),
        _react2['default'].createElement('span', { className: prefixCls + '-inner' })
      );
    };
  
    return Checkbox;
  }(_react2['default'].Component);
  
  Checkbox.propTypes = {
    prefixCls: _propTypes2['default'].string,
    className: _propTypes2['default'].string,
    style: _propTypes2['default'].object,
    name: _propTypes2['default'].string,
    id: _propTypes2['default'].string,
    type: _propTypes2['default'].string,
    defaultChecked: _propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].bool]),
    checked: _propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].bool]),
    disabled: _propTypes2['default'].bool,
    onFocus: _propTypes2['default'].func,
    onBlur: _propTypes2['default'].func,
    onChange: _propTypes2['default'].func,
    onClick: _propTypes2['default'].func,
    tabIndex: _propTypes2['default'].string,
    readOnly: _propTypes2['default'].bool,
    autoFocus: _propTypes2['default'].bool,
    value: _propTypes2['default'].any
  };
  Checkbox.defaultProps = {
    prefixCls: 'rc-checkbox',
    className: '',
    style: {},
    type: 'checkbox',
    defaultChecked: false,
    onFocus: function onFocus() {},
    onBlur: function onBlur() {},
    onChange: function onChange() {}
  };
  
  var _initialiseProps = function _initialiseProps() {
    var _this2 = this;
  
    this.handleChange = function (e) {
      var props = _this2.props;
  
      if (props.disabled) {
        return;
      }
      if (!('checked' in props)) {
        _this2.setState({
          checked: e.target.checked
        });
      }
      props.onChange({
        target: (0, _extends3['default'])({}, props, {
          checked: e.target.checked
        }),
        stopPropagation: function stopPropagation() {
          e.stopPropagation();
        },
        preventDefault: function preventDefault() {
          e.preventDefault();
        },
  
        nativeEvent: e.nativeEvent
      });
    };
  
    this.saveInput = function (node) {
      _this2.input = node;
    };
  };
  
  exports['default'] = Checkbox;
  module.exports = exports['default'];