"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.FxInputDataTids = exports.FxInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireDefault(require("react"));
var _warning = _interopRequireDefault(require("warning"));

var _Group = require("../Group");

var _Input = require("../Input");

var _CurrencyInput = require("../CurrencyInput");

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


var _CommonWrapper = require("../../internal/CommonWrapper");

var _rootNode = require("../../lib/rootNode");
var _ThemeContext = require("../../lib/theming/ThemeContext");



var _MaskedInput = require("../MaskedInput");

var _featureFlagsContext = require("../../lib/featureFlagsContext");
var _ReactUIFeatureFlagsContext = require("../../lib/featureFlagsContext/ReactUIFeatureFlagsContext");
var _SizeDecorator = require("../../lib/size/SizeDecorator");

var _MathFunctionIcon = require("./MathFunctionIcon");
var _FxInputRestoreBtn = require("./FxInputRestoreBtn");var _excluded = ["type", "onRestore", "auto", "refInput", "value", "width", "size", "mask", "maskChar", "formatChars", "alwaysShowMask", "signed", "integerDigits", "fractionDigits", "hideTrailingZeros", "buttonAriaLabel", "corners"];var _class, _FxInput;







































var FxInputDataTids = exports.FxInputDataTids = {
  root: 'FxInput__root'
};




/** В автополе можно вывести автоматически рассчитанное цифровое значение. В него можно передавать итог любого вычисления, например, сумму других полей, процент или более сложную функцию.
 *
 * У поля есть иконка математической формулы и кнопка Restore — с её помощью пользователь может вернуть исходное значение, если редактировал поле. Видимость кнопки и поведение при нажатии нужно прописывать в компоненте самостоятельно.
 */var


FxInput = exports.FxInput = (0, _rootNode.rootNode)(_class = (0, _SizeDecorator.withSize)(_class = (_FxInput = /*#__PURE__*/function (_React$Component) {function FxInput() {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.












    input = null;_this.

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









































    renderMain = function (props) {
      var button = props.auto ? null : /*#__PURE__*/
      _react.default.createElement(_FxInputRestoreBtn.FxInputRestoreBtn, {
        size: props.size,
        onRestore: props.onRestore,
        corners: props.corners,
        disabled: props.disabled,
        borderless: props.borderless,
        "aria-label": props.buttonAriaLabel }
      );


      return /*#__PURE__*/(
        _react.default.createElement(_Group.Group, { "data-tid": FxInputDataTids.root, width: props.width },
        button,
        _this.getInput(props)
        ));

    };

    /** Программно устанавливает фокус на поле.
     * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
     * @public
     */_this.
    focus = function () {
      if (_this.input) {
        _this.input.focus();
      }
    };

    /** Программно снимает фокус с кнопки.
     * @public
     */_this.
    blur = function () {
      if (_this.input) {
        _this.input.blur();
      }
    };_this.

    refInput = function (element) {
      _this.input = element;

      if (_this.props.refInput) {
        _this.props.refInput(_this.input);
      }
    };_this.

    getLeftIcon = function (props) {
      if (!props.auto) {
        return null;
      }

      var iconSizes = {
        small: parseInt(_this.theme.inputIconSizeSmall),
        medium: parseInt(_this.theme.inputIconSizeMedium),
        large: parseInt(_this.theme.inputIconSizeLarge)
      };
      var size = _this.size;

      return /*#__PURE__*/_react.default.createElement(_MathFunctionIcon.MathFunctionIcon, { size: iconSizes[size] });
    };_this.

    getInput = function (props) {
      var
        type =

















        props.type,onRestore = props.onRestore,auto = props.auto,refInput = props.refInput,value = props.value,width = props.width,_size = props.size,mask = props.mask,maskChar = props.maskChar,formatChars = props.formatChars,alwaysShowMask = props.alwaysShowMask,signed = props.signed,integerDigits = props.integerDigits,fractionDigits = props.fractionDigits,hideTrailingZeros = props.hideTrailingZeros,buttonAriaLabel = props.buttonAriaLabel,originalCorners = props.corners,rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
      var corners = auto ?
      originalCorners : (0, _extends2.default)({
        borderBottomLeftRadius: 0, borderTopLeftRadius: 0 }, originalCorners);
      var size = _this.size;
      var commonInputProps = (0, _extends2.default)({
        corners: corners,
        size: size,
        width: '100%',
        ref: _this.refInput },
      rest);


      if (type === 'currency') {
        return /*#__PURE__*/(
          _react.default.createElement(_CurrencyInput.CurrencyInput, (0, _extends2.default)({},
          commonInputProps, {
            signed: signed,
            integerDigits: integerDigits,
            fractionDigits: fractionDigits,
            value: value,
            onValueChange: _this.props.onValueChange })
          ));

      }
      if (_this.featureFlags.fxInputUseMaskedInput && mask) {
        return /*#__PURE__*/(
          _react.default.createElement(_MaskedInput.MaskedInput, (0, _extends2.default)({},
          commonInputProps, {
            leftIcon: _this.getLeftIcon(props),
            align: "right",
            mask: mask,
            maskChar: maskChar,
            formatChars: formatChars,
            alwaysShowMask: alwaysShowMask,
            value: value,
            onValueChange: _this.props.onValueChange })
          ));

      }
      return /*#__PURE__*/(
        _react.default.createElement(_Input.Input, (0, _extends2.default)({},
        commonInputProps, {
          leftIcon: _this.getLeftIcon(props),
          align: "right",
          mask: mask,
          maskChar: maskChar,
          formatChars: formatChars,
          alwaysShowMask: alwaysShowMask,
          type: type,
          value: value,
          onValueChange: _this.props.onValueChange })
        ));

    };return _this;}(0, _inheritsLoose2.default)(FxInput, _React$Component);var _proto = FxInput.prototype;_proto.validateProps = function validateProps(props) {(0, _warning.default)(props.type !== 'currency' && props.mask !== undefined, '[FxInput]: Prop "mask" is not supported when type="currency"');};_proto.componentDidMount = function componentDidMount() {this.validateProps(this.getProps());};_proto.componentDidUpdate = function componentDidUpdate() {this.validateProps(this.getProps());};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ReactUIFeatureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {_this2.featureFlags = (0, _featureFlagsContext.getFullReactUIFlagsContext)(flags);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.getProps()), _this2.renderMain);});});};return FxInput;}(_react.default.Component), _FxInput.__KONTUR_REACT_UI__ = 'FxInput', _FxInput.displayName = 'FxInput', _FxInput.defaultProps = { width: 250, type: 'text', value: '', auto: false }, _FxInput)) || _class) || _class;