'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var _react = require('react');

var _react2 = _interopRequireDefault(_react);

var _propTypes = require('prop-types');

var _propTypes2 = _interopRequireDefault(_propTypes);

var _styledComponents = require('styled-components');

var _styledComponents2 = _interopRequireDefault(_styledComponents);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

var BaseNumberInput = _styledComponents2.default.input.attrs({
  type: 'number'
}).withConfig({
  displayName: 'NumberInput__BaseNumberInput'
})(['display:block;width:100%;height:', ';min-height:', ';padding:6px 12px;box-sizing:border-box;font-size:14px;font-weight:300;color:', ';background-color:', ';font-family:\'Montserrat\',Helvetica,sans-serif;background-image:none;outline-width:0;user-select:text;border:1px solid  ', ';border-right:', ';&::placeholder{color:', ';opacity:0.4;}&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}'], function (props) {
  return props.height;
}, function (props) {
  return props.minHeight ? props.minHeight : '40px';
}, function (props) {
  return props.theme['gray-5'];
}, function (props) {
  return props.disabled ? props.theme['gray-1'] : props.theme['white'];
}, function (props) {
  return props.theme[props.borderColor];
}, function (props) {
  return props.borderRightNone ? 'none' : '';
}, function (props) {
  return props.theme['gray-3'];
});

var selectBorderColor = function selectBorderColor(state) {
  switch (state) {
    case 'initial':
      return 'gray-2';
    case 'invalid':
      return 'error';
    case 'valid':
      return 'success';
    default:
      return 'gray-2';
  }
};

var NumberInput = function NumberInput(props) {
  var errorState = props.errorState,
      rest = _objectWithoutProperties(props, ['errorState']);

  var borderColor = selectBorderColor(errorState);

  return _react2.default.createElement(BaseNumberInput, _extends({ borderColor: borderColor }, rest));
};

NumberInput.propTypes = {
  disabled: _propTypes2.default.bool,
  height: _propTypes2.default.string,
  minHeight: _propTypes2.default.string,
  step: _propTypes2.default.string
};

NumberInput.defaultProps = {
  disabled: false,
  height: '40px',
  minHeight: '40px',
  step: '0.01'
};

exports.default = NumberInput;