import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
var _excluded = ["id", "_enableIconPadding", "children", "size"];
import React, { useContext } from 'react';
import { ThemeContext } from "../../../lib/theming/ThemeContext";
import { CommonWrapper } from "../../../internal/CommonWrapper";
import { cx } from "../../../lib/theming/Emotion";
import { MenuContext } from "../../../internal/Menu/MenuContext";
import { forwardRefAndName } from "../../../lib/forwardRefAndName";
import { styles } from "../MenuHeader.styles";
export var MenuHeaderDataTids = {
  root: 'MenuHeader__root'
};

/**
 * Заголовок меню `MenuHeader` используется для того, чтобы разделить элементы меню на категории в рамках одного меню.
 *
 * `MenuHeader`, в отличие от `MenuItem` нельзя затаргетить с клавиатуры.
 *
 * Сущности в которых может быть использован `MenuHeader`: DropdownMenu, Kebab, TooltipMenu и Select.
 */

var MenuHeader = forwardRefAndName('MenuHeader', function MenuHeader(_ref, ref) {
  var _cx;
  var id = _ref.id,
    _ref$_enableIconPaddi = _ref._enableIconPadding,
    _enableIconPadding = _ref$_enableIconPaddi === void 0 ? false : _ref$_enableIconPaddi,
    children = _ref.children,
    _ref$size = _ref.size,
    size = _ref$size === void 0 ? 'small' : _ref$size,
    rest = _objectWithoutPropertiesLoose(_ref, _excluded);
  var theme = useContext(ThemeContext);
  var menuContext = useContext(MenuContext);
  function getRootSizeClassName() {
    switch (size) {
      case 'large':
        return styles.rootLarge(theme);
      case 'medium':
        return styles.rootMedium(theme);
      case 'small':
      default:
        return styles.rootSmall(theme);
    }
  }
  function getWithLeftPaddingSizeClassName() {
    switch (size) {
      case 'large':
        return styles.withLeftPaddingSmall(theme);
      case 'medium':
        return styles.withLeftPaddingMedium(theme);
      case 'small':
      default:
        return styles.withLeftPaddingSmall(theme);
    }
  }
  return /*#__PURE__*/(
    React.createElement(CommonWrapper, rest, /*#__PURE__*/
    React.createElement("div", {
      ref: ref,
      id: id,
      "data-tid": MenuHeaderDataTids.root,
      className: cx(getRootSizeClassName(), (_cx = {}, _cx[styles.root(theme)] = true, _cx[getWithLeftPaddingSizeClassName()] = menuContext.enableIconPadding || _enableIconPadding, _cx))
    }, children))
  );
});

//@ts-ignore
MenuHeader.__MENU_HEADER__ = true;
export { MenuHeader };
export var isMenuHeader = function isMenuHeader(child) {
  return /*#__PURE__*/React.isValidElement(child) ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__') : false;
};