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

var _ThemeFactory = require("../../lib/theming/ThemeFactory");
var _ThemeContext = require("../../lib/theming/ThemeContext");

var _PopupMenu = require("../../internal/PopupMenu");

var _currentEnvironment = require("../../lib/currentEnvironment");



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

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





























var TooltipMenuDataTids = exports.TooltipMenuDataTids = {
  root: 'TooltipMenu__root'
};



/**
 * Меню `TooltipMenu` раскрывается по клику на переданный в `caption` элемент.
 *
 * Положение меню задаётся с помощью массива `positions` и работает так:
 * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
 * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
 *
 * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
 *
 * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
 */var

TooltipMenu = exports.TooltipMenu = (0, _rootNode.rootNode)(_class = (_TooltipMenu = /*#__PURE__*/function (_React$Component) {












  function TooltipMenu(props) {var _this;
    _this = _React$Component.call(this, props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(TooltipMenu.defaultProps);

    if (!props.caption && !_currentEnvironment.isProductionEnv) {
      throw new Error('Prop "caption" is required!!!');
    }return _this;
  }(0, _inheritsLoose2.default)(TooltipMenu, _React$Component);var _proto = TooltipMenu.prototype;_proto.

  render = function render() {var _this2 = this;
    return /*#__PURE__*/(
      _react.default.createElement(_ThemeContext.ThemeContext.Consumer, null,
      function (theme) {
        return /*#__PURE__*/(
          _react.default.createElement(_ThemeContext.ThemeContext.Provider, {
            value: _ThemeFactory.ThemeFactory.create(
              {
                popupPinOffsetX: theme.tooltipMenuPinOffsetX,
                popupPinOffsetY: theme.tooltipMenuPinOffsetY,
                popupMargin: theme.tooltipMenuMargin,
                popupPinSize: theme.tooltipMenuPinSize
              },
              theme
            ) },

          _this2.renderMain()
          ));

      }
      ));

  };_proto.

  renderMain = function renderMain() {
    if (!this.props.caption) {
      return null;
    }

    var _this$getProps = this.getProps(),disableAnimations = _this$getProps.disableAnimations;

    return /*#__PURE__*/(
      _react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/
      _react.default.createElement(_PopupMenu.PopupMenu, {
        "aria-label": this.props['aria-label'],
        "data-tid": TooltipMenuDataTids.root,
        menuMaxHeight: this.props.menuMaxHeight,
        menuWidth: this.props.menuWidth,
        caption: this.props.caption,
        header: this.props.header,
        footer: this.props.footer,
        preventIconsOffset: this.props.preventIconsOffset,
        positions: this.props.positions,
        onOpen: this.props.onOpen,
        onClose: this.props.onClose,
        popupHasPin: true,
        disableAnimations: disableAnimations },

      this.props.children
      )
      ));

  };return TooltipMenu;}(_react.default.Component), _TooltipMenu.__KONTUR_REACT_UI__ = 'TooltipMenu', _TooltipMenu.displayName = 'TooltipMenu', _TooltipMenu.defaultProps = { disableAnimations: _currentEnvironment.isTestEnv }, _TooltipMenu)) || _class;