tdesign-react
Version:
TDesign Component for React
110 lines (104 loc) • 4.01 kB
JavaScript
/**
* tdesign v1.16.6
* (c) 2026 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var slicedToArray = require('../_chunks/dep-3281986a.js');
var _typeof = require('../_chunks/dep-90a93885.js');
var React = require('react');
var ReactDOM = require('react-dom');
var _util_style = require('../_chunks/dep-2bbded38.js');
var hooks_useConfig = require('../hooks/useConfig.js');
var hooks_useLayoutEffect = require('../hooks/useLayoutEffect.js');
require('../_chunks/dep-54373955.js');
require('../_chunks/dep-ef5bfcf1.js');
require('../_chunks/dep-202d6c73.js');
require('../_chunks/dep-615c149d.js');
require('../_chunks/dep-a8d5081a.js');
require('../_chunks/dep-0173c82c.js');
require('../config-provider/ConfigContext.js');
require('../_chunks/dep-1f6c39e3.js');
require('../_chunks/dep-875a5344.js');
require('../_chunks/dep-20f09a63.js');
require('dayjs');
require('../_chunks/dep-e691746e.js');
require('../_chunks/dep-9d3b1a05.js');
require('../_chunks/dep-1f8c969d.js');
require('../_chunks/dep-403f5edf.js');
require('../_chunks/dep-d24b94bc.js');
require('../_chunks/dep-6478e7e3.js');
require('../_chunks/dep-c9025587.js');
require('../_chunks/dep-8663a5c9.js');
require('../_chunks/dep-50349518.js');
require('../_chunks/dep-8c9795f9.js');
require('../_chunks/dep-723e29d6.js');
require('../_chunks/dep-0bd8b970.js');
require('../_chunks/dep-73ef2133.js');
require('../_chunks/dep-cae1e5aa.js');
require('../_chunks/dep-0b97e212.js');
require('../_chunks/dep-0652d2a6.js');
require('../_chunks/dep-1a7ce20e.js');
require('../_chunks/dep-116af952.js');
require('../_chunks/dep-f6a777ad.js');
require('../_chunks/dep-ff301423.js');
function getAttach(attach, triggerNode) {
if (!_util_style.canUseDocument) return null;
var el;
if (typeof attach === "string") {
el = document.querySelector(attach);
}
if (typeof attach === "function") {
el = attach(triggerNode);
}
if (_typeof._typeof(attach) === "object" && attach instanceof window.HTMLElement) {
el = attach;
}
if (el && el.nodeType === 1) return el;
return document.body;
}
var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
var attach = props.attach,
children = props.children,
triggerNode = props.triggerNode,
style = props.style;
var _useConfig = hooks_useConfig["default"](),
classPrefix = _useConfig.classPrefix;
var _useState = React.useState(false),
_useState2 = slicedToArray._slicedToArray(_useState, 2),
mounted = _useState2[0],
setMounted = _useState2[1];
var container = React.useMemo(function () {
if (!_util_style.canUseDocument) return null;
var el = document.createElement("div");
el.className = "".concat(classPrefix, "-portal-wrapper");
if (_typeof._typeof(style) === "object") {
Object.assign(el.style, style);
}
return el;
}, [classPrefix]);
hooks_useLayoutEffect["default"](function () {
var _parentElement$append;
if (!mounted) return;
var parentElement = getAttach(attach, triggerNode);
parentElement === null || parentElement === void 0 || (_parentElement$append = parentElement.appendChild) === null || _parentElement$append === void 0 || _parentElement$append.call(parentElement, container);
return function () {
var _parentElement$remove;
parentElement === null || parentElement === void 0 || (_parentElement$remove = parentElement.removeChild) === null || _parentElement$remove === void 0 || _parentElement$remove.call(parentElement, container);
};
}, [container, attach, triggerNode, mounted]);
React.useEffect(function () {
if (!mounted) {
setMounted(true);
}
}, []);
React.useImperativeHandle(ref, function () {
return container;
});
return _util_style.canUseDocument && mounted ? /*#__PURE__*/ReactDOM.createPortal(children, container) : null;
});
Portal.displayName = "Portal";
exports["default"] = Portal;
exports.getAttach = getAttach;
//# sourceMappingURL=Portal.js.map