import _extends from "@babel/runtime/helpers/esm/extends";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
var _class, _TooltipMenu;
import React from 'react';
import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
import { ThemeContext } from "../../../lib/theming/ThemeContext";
import { PopupMenu } from "../../../internal/PopupMenu";
import { isProductionEnv, isTestEnv } from "../../../lib/currentEnvironment";
import { CommonWrapper } from "../../../internal/CommonWrapper";
import { rootNode } from "../../../lib/rootNode";
import { createPropsGetter } from "../../../lib/createPropsGetter";
export var TooltipMenuDataTids = {
  root: 'TooltipMenu__root'
};

/**
 * Меню `TooltipMenu` раскрывается по клику на переданный в `caption` элемент.
 *
 * Положение меню задаётся с помощью массива `positions` и работает так:
 * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
 * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
 *
 * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
 *
 * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
 */
export var TooltipMenu = rootNode(_class = (_TooltipMenu = /*#__PURE__*/function (_React$Component) {
  function TooltipMenu(props) {
    var _this;
    _this = _React$Component.call(this, props) || this;
    _this.getProps = createPropsGetter(TooltipMenu.defaultProps);
    if (!props.caption && !isProductionEnv) {
      throw new Error('Prop "caption" is required!!!');
    }
    return _this;
  }
  _inheritsLoose(TooltipMenu, _React$Component);
  var _proto = TooltipMenu.prototype;
  _proto.render = function render() {
    var _this2 = this;
    return /*#__PURE__*/(
      React.createElement(ThemeContext.Consumer, null, function (theme) {
        return /*#__PURE__*/(
          React.createElement(ThemeContext.Provider, {
            value: 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.createElement(CommonWrapper, _extends({
        rootNodeRef: this.setRootNode
      }, this.props), /*#__PURE__*/
      React.createElement(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.Component), _TooltipMenu.__KONTUR_REACT_UI__ = 'TooltipMenu', _TooltipMenu.displayName = 'TooltipMenu', _TooltipMenu.defaultProps = {
  disableAnimations: isTestEnv
}, _TooltipMenu)) || _class;