UNPKG

1.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports.default = findDOMNode;
8exports.getDOM = getDOM;
9exports.isDOM = isDOM;
10var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11var _react = _interopRequireDefault(require("react"));
12var _reactDom = _interopRequireDefault(require("react-dom"));
13function isDOM(node) {
14 // https://developer.mozilla.org/en-US/docs/Web/API/Element
15 // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement
16 return node instanceof HTMLElement || node instanceof SVGElement;
17}
18
19/**
20 * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`.
21 */
22function getDOM(node) {
23 if (node && (0, _typeof2.default)(node) === 'object' && isDOM(node.nativeElement)) {
24 return node.nativeElement;
25 }
26 if (isDOM(node)) {
27 return node;
28 }
29 return null;
30}
31
32/**
33 * Return if a node is a DOM node. Else will return by `findDOMNode`
34 */
35function findDOMNode(node) {
36 var domNode = getDOM(node);
37 if (domNode) {
38 return domNode;
39 }
40 if (node instanceof _react.default.Component) {
41 var _ReactDOM$findDOMNode;
42 return (_ReactDOM$findDOMNode = _reactDom.default.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(_reactDom.default, node);
43 }
44 return null;
45}
\No newline at end of file