import _createClass from "@babel/runtime/helpers/esm/createClass";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { defaultLangCode } from "../constants";
import { LocaleContext } from "../LocaleContext";
export function locale(controlName, localeHelper) {
  return function (constructor) {
    var _Class;
    var LocaleDecorator = (_Class = /*#__PURE__*/function (_constructor) {
      function LocaleDecorator() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _constructor.call.apply(_constructor, [this].concat(args)) || this;
        _this.controlName = controlName;
        _this.localeHelper = localeHelper;
        return _this;
      }
      _inheritsLoose(LocaleDecorator, _constructor);
      return _createClass(LocaleDecorator, [{
        key: "locale",
        get: function get() {
          var _this$context$locale;
          var localeFromContext = (_this$context$locale = this.context.locale) == null ? void 0 : _this$context$locale[this.controlName];
          return Object.assign({}, this.localeHelper.get(this.context.langCode), localeFromContext);
        },
        set: function set(l) {

          // TODO альтернативная транспиляция декораторов ломает тесты
        }
      }, {
        key: "langCode",
        get: function get() {
          var _this$context$langCod;
          return (_this$context$langCod = this.context.langCode) != null ? _this$context$langCod : defaultLangCode;
        }
      }]);
    }(constructor), _Class.contextType = LocaleContext, _Class);
    var nameDescriptor = Object.getOwnPropertyDescriptor(LocaleDecorator, 'name');
    if (!nameDescriptor || nameDescriptor.configurable) {
      Object.defineProperty(LocaleDecorator, 'name', {
        value: constructor.name
      });
    }
    return LocaleDecorator;
  };
}