You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
902 B

2 months ago
  1. // @flow
  2. import getWindow from './getWindow';
  3. declare function isElement(node: mixed): boolean %checks(node instanceof
  4. Element);
  5. function isElement(node) {
  6. const OwnElement = getWindow(node).Element;
  7. return node instanceof OwnElement || node instanceof Element;
  8. }
  9. declare function isHTMLElement(node: mixed): boolean %checks(node instanceof
  10. HTMLElement);
  11. function isHTMLElement(node) {
  12. const OwnElement = getWindow(node).HTMLElement;
  13. return node instanceof OwnElement || node instanceof HTMLElement;
  14. }
  15. declare function isShadowRoot(node: mixed): boolean %checks(node instanceof
  16. ShadowRoot);
  17. function isShadowRoot(node) {
  18. // IE 11 has no ShadowRoot
  19. if (typeof ShadowRoot === 'undefined') {
  20. return false;
  21. }
  22. const OwnElement = getWindow(node).ShadowRoot;
  23. return node instanceof OwnElement || node instanceof ShadowRoot;
  24. }
  25. export { isElement, isHTMLElement, isShadowRoot };