tdesign-react
Version:
TDesign Component for React
226 lines (217 loc) • 9.99 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var defineProperty = require('../_chunks/dep-0006fcfa.js');
var slicedToArray = require('../_chunks/dep-8e4d656d.js');
var classNames = require('classnames');
var React = require('react');
var reactTransitionGroup = require('react-transition-group');
var common_Portal = require('../common/Portal.js');
var hooks_useAnimation = require('../hooks/useAnimation.js');
var hooks_useConfig = require('../hooks/useConfig.js');
var hooks_useDefaultProps = require('../hooks/useDefaultProps.js');
var hooks_useSwitch = require('../hooks/useSwitch.js');
var popup_utils_transition = require('../popup/utils/transition.js');
var tooltip_defaultProps = require('./defaultProps.js');
var throttle = require('../_chunks/dep-1438af5a.js');
require('../_chunks/dep-667ac7af.js');
require('../_chunks/dep-00b49251.js');
require('react-dom');
require('../_chunks/dep-381fa848.js');
require('../_chunks/dep-4ed9eda4.js');
require('../_chunks/dep-25585736.js');
require('../_chunks/dep-64577888.js');
require('../_chunks/dep-62e73936.js');
require('../hooks/useLayoutEffect.js');
require('../config-provider/ConfigContext.js');
require('../_chunks/dep-1df1dad8.js');
require('../_chunks/dep-5b5ab11b.js');
require('dayjs');
require('../_chunks/dep-f32c03f1.js');
require('../_chunks/dep-31c4bc3d.js');
require('../_chunks/dep-eea2872a.js');
require('../_chunks/dep-71455db7.js');
require('../_chunks/dep-9e5a468d.js');
require('../_chunks/dep-ec8d2dca.js');
require('../_chunks/dep-fc596d16.js');
require('../_chunks/dep-f26edb7b.js');
require('../_chunks/dep-f33c1939.js');
require('../_chunks/dep-21ece627.js');
require('../_chunks/dep-25e4aa84.js');
require('../_chunks/dep-e1fbe1c3.js');
require('../_chunks/dep-df2b541f.js');
require('../_chunks/dep-edd366db.js');
require('../_chunks/dep-a56c4939.js');
require('../_chunks/dep-6c297e20.js');
require('../_chunks/dep-b7ad4d54.js');
require('../_chunks/dep-a2cb9299.js');
require('../_chunks/dep-f981815b.js');
require('../hooks/usePersistFn.js');
require('../_chunks/dep-a231fdc5.js');
require('../_chunks/dep-cf14666e.js');
require('../_chunks/dep-79629634.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var getPosition = function getPosition(targetEle, contentEle, placement, clientX, clientY) {
var targetRect = targetEle.getBoundingClientRect();
var contentRect = contentEle.getBoundingClientRect();
var position = {
top: document.documentElement.scrollTop,
left: document.documentElement.scrollLeft
};
if (targetRect && contentRect) {
var dWidth = targetRect.width - contentRect.width;
switch (placement) {
case "top":
position.left += targetRect.left + dWidth / 2;
position.top += targetRect.top - contentRect.height - 16;
break;
case "bottom":
position.left += targetRect.left + dWidth / 2;
position.top += targetRect.top + targetRect.height;
break;
case "mouse":
position.left += Number(clientX);
position.top += typeof clientY !== "undefined" ? Number(clientY) + 16 : targetRect.top + targetRect.height + 8;
break;
}
if (placement === "mouse") {
var edges = {
top: document.documentElement.scrollTop,
left: document.documentElement.scrollLeft,
right: document.documentElement.scrollLeft + document.documentElement.clientWidth,
bottom: document.documentElement.scrollTop + document.documentElement.clientHeight
};
if (position.top > edges.bottom - contentRect.height) {
position.top = document.documentElement.scrollTop + targetRect.top - contentRect.height - 8;
}
if (position.left > edges.right - contentRect.width) {
position.left = edges.right - contentRect.width;
}
}
}
return position;
};
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DEFAULT_TRANSITION_TIMEOUT = 180;
var TooltipLite = function TooltipLite(originalProps) {
var props = hooks_useDefaultProps["default"](originalProps, tooltip_defaultProps.tooltipLiteDefaultProps);
var style = props.style,
className = props.className,
placement = props.placement,
showArrow = props.showArrow,
theme = props.theme,
children = props.children,
triggerElement = props.triggerElement,
content = props.content,
showShadow = props.showShadow;
var triggerRef = React.useRef(null);
var contentRef = React.useRef(null);
var popupRef = React.useRef(null);
var _useConfig = hooks_useConfig["default"](),
classPrefix = _useConfig.classPrefix;
var _useSwitch = hooks_useSwitch["default"](),
_useSwitch2 = slicedToArray._slicedToArray(_useSwitch, 2),
hover = _useSwitch2[0],
hoverAction = _useSwitch2[1];
var _useState = React.useState(0),
_useState2 = slicedToArray._slicedToArray(_useState, 2),
clientX = _useState2[0],
setHoverClientX = _useState2[1];
var _useState3 = React.useState(0),
_useState4 = slicedToArray._slicedToArray(_useState3, 2),
clientY = _useState4[0],
setHoverClientY = _useState4[1];
var _useState5 = React.useState(null),
_useState6 = slicedToArray._slicedToArray(_useState5, 2),
position = _useState6[0],
setPosition = _useState6[1];
var _useAnimation = hooks_useAnimation["default"](),
keepFade = _useAnimation.keepFade;
React.useEffect(function () {
if (triggerRef.current && contentRef.current) {
setPosition(getPosition(triggerRef.current, contentRef.current, placement, clientX, clientY));
}
}, [triggerRef.current, contentRef.current, placement, hover, clientX, clientY]);
var updatePosition = function updatePosition(position2) {
var clientX2 = position2.clientX,
clientY2 = position2.clientY;
setHoverClientX(clientX2);
setHoverClientY(clientY2);
};
var onSwitchHover = function onSwitchHover(action, e) {
var clientX2 = e.clientX,
clientY2 = e.clientY;
updatePosition({
clientX: clientX2,
clientY: clientY2
});
hoverAction.set(action === "on");
};
var showTipArrow = showArrow && placement !== "mouse";
var onSwitchMove = React.useCallback(throttle.throttle(function (e) {
return updatePosition(e);
}, 16.7, {
trailing: true
}), []);
var getTriggerChildren = function getTriggerChildren(children2) {
var appendProps = {
ref: triggerRef,
onMouseMove: function onMouseMove(e) {
var clientX2 = e.clientX,
clientY2 = e.clientY;
return onSwitchMove({
clientX: clientX2,
clientY: clientY2
});
},
onMouseEnter: function onMouseEnter(e) {
return onSwitchHover("on", e);
},
onMouseLeave: function onMouseLeave(e) {
return onSwitchHover("off", e);
}
};
if (! /*#__PURE__*/React__default["default"].isValidElement(children2)) {
return /*#__PURE__*/React__default["default"].cloneElement(/* @__PURE__ */React__default["default"].createElement("div", null, children2), _objectSpread({}, appendProps));
}
return /*#__PURE__*/React__default["default"].cloneElement(children2, _objectSpread({}, appendProps));
};
return /* @__PURE__ */React__default["default"].createElement("div", null, getTriggerChildren(children || triggerElement), hover && /* @__PURE__ */React__default["default"].createElement(common_Portal["default"], null, /* @__PURE__ */React__default["default"].createElement(reactTransitionGroup.CSSTransition, _objectSpread({
appear: true,
timeout: {
appear: DEFAULT_TRANSITION_TIMEOUT
},
"in": hover,
nodeRef: popupRef
}, popup_utils_transition.getTransitionParams({
classPrefix: classPrefix,
fadeAnimation: keepFade
})), /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"]("".concat(classPrefix, "-popup"), "".concat(classPrefix, "-tooltip"), defineProperty._defineProperty(defineProperty._defineProperty({}, "".concat(classPrefix, "-tooltip--").concat(theme), theme), "".concat(classPrefix, "-tooltip--noshadow"), !showShadow), className),
style: {
position: "absolute",
left: position === null || position === void 0 ? void 0 : position.left,
top: position === null || position === void 0 ? void 0 : position.top,
zIndex: props.zIndex
},
"data-popper-placement": placement,
ref: popupRef
}, /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"]("".concat(classPrefix, "-popup__content"), defineProperty._defineProperty({}, "".concat(classPrefix, "-popup__content--arrow"), showTipArrow)),
ref: contentRef,
style: style
}, content, showTipArrow && /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(classPrefix, "-popup__arrow")
}))))));
};
TooltipLite.displayName = "Tooltiplite";
var _TooltipLite = /*#__PURE__*/React__default["default"].memo(TooltipLite);
exports["default"] = _TooltipLite;
//# sourceMappingURL=TooltipLite.js.map