UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

32 lines (31 loc) 1.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode"); var _ref = require("@rc-component/util/lib/ref"); var _reactNode = require("../../_util/reactNode"); /** * Merge the child ref with an internal ref and expose the resolved DOM node. * * @returns A tuple containing the renderable child node and the DOM node resolved from its ref. */ const useChildDom = children => { const [domNode, setDomNode] = _react.default.useState(null); const childNode = /*#__PURE__*/_react.default.isValidElement(children) ? children : null; const internalRef = _react.default.useCallback(node => { const nextDom = (0, _findDOMNode.getDOM)(node); setDomNode(prevDom => prevDom === nextDom ? prevDom : nextDom); }, []); const mergedRef = (0, _ref.useComposeRef)(childNode ? (0, _ref.getNodeRef)(childNode) : null, internalRef); if (!childNode || !(0, _ref.supportRef)(childNode)) { return [children, domNode]; } return [(0, _reactNode.cloneElement)(childNode, { ref: mergedRef }), domNode]; }; var _default = exports.default = useChildDom;