var _tests$SIMPLE_EXAMPLE;

function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

function _extends() { _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; }; return _extends.apply(this, arguments); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

/*
Copyright (c) 2018 Uber Technologies, Inc.

This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
import * as React from 'react';
import { styled } from '../styles/index.js';
import { ProgressBar } from './index.js';
export var suite = 'ProgressBar Test Suite';
export var tests = {
  SIMPLE_EXAMPLE: 'ProgressBar component',
  STYLE_PROPS_OVERRIDES: 'ProgressBar style and props overrides',
  CUSTOM_SUCCESS_VALUE: 'ProgressBar with custom success value of 2000',
  SIMPLE_EXAMPLE_WITH_LABEL: 'ProgressBar with label'
};
var updateProgress;

var ProgressBarContainer =
/*#__PURE__*/
function (_React$Component) {
  _inherits(ProgressBarContainer, _React$Component);

  function ProgressBarContainer() {
    var _getPrototypeOf2;

    var _this;

    _classCallCheck(this, ProgressBarContainer);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ProgressBarContainer)).call.apply(_getPrototypeOf2, [this].concat(args)));

    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "state", {
      value: _this.props.value
    });

    return _this;
  }

  _createClass(ProgressBarContainer, [{
    key: "componentDidMount",
    value: function componentDidMount() {
      var _this2 = this;

      updateProgress = setInterval(function () {
        var newValue = _this2.state.value < _this2.props.successValue ? (_this2.state.value + Math.round(Math.random() * 10 * _this2.props.successValue / 100)) % _this2.props.successValue : 0;

        _this2.setState({
          value: newValue
        });
      }, 1000);
    }
  }, {
    key: "componentWillUnmount",
    value: function componentWillUnmount() {
      clearInterval(updateProgress);
    }
  }, {
    key: "render",
    value: function render() {
      var _this$props = this.props,
          getProgressLabel = _this$props.getProgressLabel,
          showLabel = _this$props.showLabel;
      var extraProps = getProgressLabel ? {
        getProgressLabel: getProgressLabel
      } : {};
      return React.createElement(Centered, null, React.createElement(ProgressBar, _extends({
        showLabel: showLabel,
        overrides: this.props.overrides,
        value: this.state.value,
        successValue: this.props.successValue
      }, extraProps)));
    }
  }]);

  return ProgressBarContainer;
}(React.Component);

_defineProperty(ProgressBarContainer, "defaultProps", {
  value: 0,
  successValue: 100,
  showLabel: false,
  overrides: {}
});

var Centered = styled('div', {
  display: 'flex',
  alignItems: 'center',
  height: '90vh'
});
Centered.displayName = "Centered";
export default (_tests$SIMPLE_EXAMPLE = {}, _defineProperty(_tests$SIMPLE_EXAMPLE, tests.SIMPLE_EXAMPLE, function Story1() {
  return React.createElement(ProgressBarContainer, null);
}), _defineProperty(_tests$SIMPLE_EXAMPLE, tests.CUSTOM_SUCCESS_VALUE, function Story2() {
  return React.createElement(ProgressBarContainer, {
    successValue: 2000,
    getProgressLabel: function getProgressLabel(value, successValue) {
      return "".concat(value, " out of ").concat(successValue, " loaded");
    }
  });
}), _defineProperty(_tests$SIMPLE_EXAMPLE, tests.SIMPLE_EXAMPLE_WITH_LABEL, function Story3() {
  return React.createElement(ProgressBarContainer, {
    showLabel: true
  });
}), _defineProperty(_tests$SIMPLE_EXAMPLE, tests.STYLE_PROPS_OVERRIDES, function Story4() {
  return React.createElement(ProgressBarContainer, {
    getProgressLabel: function getProgressLabel(value, successValue) {
      return "".concat(Math.round(value / successValue * 100), "% Loaded Successfully");
    },
    overrides: {
      BarProgress: {
        style: function style(_ref) {
          var $theme = _ref.$theme,
              $value = _ref.$value;
          return {
            backgroundColor: 'red',
            position: 'relative',
            ':after': {
              position: 'absolute',
              content: "\"".concat($value, "%\""),
              right: '0px'
            }
          };
        }
      },
      Bar: {
        style: function style(_ref2) {
          var $theme = _ref2.$theme,
              $value = _ref2.$value;
          return {
            height: '20px'
          };
        }
      }
    }
  });
}), _tests$SIMPLE_EXAMPLE);