'use strict';

var antd = require('antd');
var cs = require('classnames');
var React = require('react');
var EllipsisTooltipContent = require('./EllipsisTooltipContent.js');

function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }

var cs__default = /*#__PURE__*/_interopDefault(cs);
var React__default = /*#__PURE__*/_interopDefault(React);

var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
  enumerable: true,
  configurable: true,
  writable: true,
  value
}) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
    if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
  }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) {
    if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop];
  }
  return target;
};
let componentId = 0;
const TooltipDefaultClass = "E_4100_0_7_t1m2x205";
const InternalTooltip = props => {
  const _a = props,
    {
      followMouse,
      overlayClassName,
      overlayStyle,
      children
    } = _a,
    restProps = __objRest(_a, ["followMouse", "overlayClassName", "overlayStyle", "children"]);
  const id = React.useRef(++componentId);
  const uniquePopupClass = `kit-popup-${id.current}`;
  const uniqueContainerClass = `kit-tooltip-${id.current}`;
  const _children = React.useMemo(() => {
    if (followMouse) {
      const child = React__default.default.isValidElement(children) ? children : /* @__PURE__ */React__default.default.createElement("span", null, children);
      return React__default.default.cloneElement(child, {
        className: cs__default.default(child.props.className, uniqueContainerClass)
      });
    } else {
      return children;
    }
  }, [children, followMouse, uniqueContainerClass]);
  const onmousemove = React.useCallback(event => {
    const popup = document.querySelector(`.${uniquePopupClass}`);
    if (!popup) return;
    popup.style.left = event.pageX + "px";
    popup.style.top = event.pageY + "px";
  }, [uniquePopupClass]);
  React.useEffect(() => {
    if (followMouse) {
      const container = document.querySelector(`.${uniqueContainerClass}`);
      container == null ? void 0 : container.addEventListener("mousemove", onmousemove);
      return () => {
        container == null ? void 0 : container.removeEventListener("mousemove", onmousemove);
      };
    }
  }, [followMouse, onmousemove, uniqueContainerClass]);
  return /* @__PURE__ */React__default.default.createElement(antd.Tooltip, __spreadProps(__spreadValues({}, restProps), {
    overlayClassName: cs__default.default({
      [uniquePopupClass]: followMouse
    }, TooltipDefaultClass, overlayClassName),
    children: _children,
    overlayStyle: followMouse ? __spreadValues({
      transform: "translate(-50%, -100%)",
      pointerEvents: "none"
    }, overlayStyle) : overlayStyle
  }));
};
const Tooltip = InternalTooltip;
Tooltip.EllipsisContent = EllipsisTooltipContent;
var Tooltip$1 = Tooltip;

module.exports = Tooltip$1;
