findDOMNode.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import _typeof from "@babel/runtime/helpers/esm/typeof";
  2. import React from 'react';
  3. import ReactDOM from 'react-dom';
  4. export function isDOM(node) {
  5. // https://developer.mozilla.org/en-US/docs/Web/API/Element
  6. // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement
  7. return node instanceof HTMLElement || node instanceof SVGElement;
  8. }
  9. /**
  10. * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`.
  11. */
  12. export function getDOM(node) {
  13. if (node && _typeof(node) === 'object' && isDOM(node.nativeElement)) {
  14. return node.nativeElement;
  15. }
  16. if (isDOM(node)) {
  17. return node;
  18. }
  19. return null;
  20. }
  21. /**
  22. * Return if a node is a DOM node. Else will return by `findDOMNode`
  23. */
  24. export default function findDOMNode(node) {
  25. var domNode = getDOM(node);
  26. if (domNode) {
  27. return domNode;
  28. }
  29. if (node instanceof React.Component) {
  30. var _ReactDOM$findDOMNode;
  31. return (_ReactDOM$findDOMNode = ReactDOM.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(ReactDOM, node);
  32. }
  33. return null;
  34. }