"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.SpinnerDataTids = exports.Spinner = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));


var _ThemeContext = require("../../lib/theming/ThemeContext");
var _SpinnerIcon = require("../../internal/SpinnerIcon/SpinnerIcon");

var _CommonWrapper = require("../../internal/CommonWrapper");
var _Emotion = require("../../lib/theming/Emotion");

var _rootNode = require("../../lib/rootNode");
var _createPropsGetter = require("../../lib/createPropsGetter");

var _Spinner2 = require("./Spinner.styles");var _class, _Spinner;

var types = ['big', 'mini', 'normal'];


























var SpinnerDataTids = exports.SpinnerDataTids = {
  root: 'Spinner__root'
};



/**
 * `Spinner` — это зацикленный индикатор, не отображающий прогресс выполнения задачи.
 *
 * Используйте `Spinner`, чтобы показать, что система выполняет команду, которую дал пользователь.
 * Не применяйте `Spinner` для заполнения паузы при загрузке контента, для этого предназначен GlobalLoader.
 *
 * Используйте компонент `Spinner`, если вам нужен спиннер, без дополнительного функционала, который предоставляет компонент Loader.
 */var

Spinner = exports.Spinner = (0, _rootNode.rootNode)(_class = (_Spinner = /*#__PURE__*/function (_React$Component) {function Spinner() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.







    getProps = (0, _createPropsGetter.createPropsGetter)(Spinner.defaultProps);_this.































    renderSpinner = function (type, dimmed, inline) {var _cx;
      return /*#__PURE__*/(
        _react.default.createElement(_SpinnerIcon.SpinnerIcon, {
          size: type,
          className: (0, _Emotion.cx)((_cx = {}, _cx[
          _Spinner2.styles.circle(_this.theme)] = !dimmed && !_this.props.color, _cx[
          _Spinner2.styles.circleDimmedColor(_this.theme)] = dimmed, _cx[
          _Spinner2.styles.circleWithoutColorAnimation()] = dimmed || !!_this.props.color, _cx)
          ),
          dimmed: dimmed,
          width: _this.props.width,
          color: _this.props.color,
          inline: inline }
        ));

    };_this.

    renderCaption = function (type, caption) {return /*#__PURE__*/(
        _react.default.createElement("span", { className: (0, _Emotion.cx)(_Spinner2.styles[type](_this.theme), _Spinner2.styles.captionColor(_this.theme)) }, caption));};return _this;}(0, _inheritsLoose2.default)(Spinner, _React$Component);var _proto = Spinner.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props = this.props,_this$props$caption = _this$props.caption,caption = _this$props$caption === void 0 ? null : _this$props$caption,dimmed = _this$props.dimmed,inline = _this$props.inline;var type = this.getProps().type;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": SpinnerDataTids.root, className: _Spinner2.styles.spinner() }, /*#__PURE__*/_react.default.createElement("span", { className: _Spinner2.styles.inner() }, this.renderSpinner(type, dimmed, inline)), caption && this.renderCaption(type, caption)));};return Spinner;}(_react.default.Component), _Spinner.__KONTUR_REACT_UI__ = 'Spinner', _Spinner.displayName = 'Spinner', _Spinner.defaultProps = { type: 'normal' }, _Spinner.Types = Object.assign.apply(Object, [{}].concat(types.map(function (type) {var _ref;return _ref = {}, _ref[type] = type, _ref;}))), _Spinner)) || _class;