30 lines
902 B
Text
30 lines
902 B
Text
|
// @flow
|
||
|
import getWindow from './getWindow';
|
||
|
|
||
|
declare function isElement(node: mixed): boolean %checks(node instanceof
|
||
|
Element);
|
||
|
function isElement(node) {
|
||
|
const OwnElement = getWindow(node).Element;
|
||
|
return node instanceof OwnElement || node instanceof Element;
|
||
|
}
|
||
|
|
||
|
declare function isHTMLElement(node: mixed): boolean %checks(node instanceof
|
||
|
HTMLElement);
|
||
|
function isHTMLElement(node) {
|
||
|
const OwnElement = getWindow(node).HTMLElement;
|
||
|
return node instanceof OwnElement || node instanceof HTMLElement;
|
||
|
}
|
||
|
|
||
|
declare function isShadowRoot(node: mixed): boolean %checks(node instanceof
|
||
|
ShadowRoot);
|
||
|
function isShadowRoot(node) {
|
||
|
// IE 11 has no ShadowRoot
|
||
|
if (typeof ShadowRoot === 'undefined') {
|
||
|
return false;
|
||
|
}
|
||
|
const OwnElement = getWindow(node).ShadowRoot;
|
||
|
return node instanceof OwnElement || node instanceof ShadowRoot;
|
||
|
}
|
||
|
|
||
|
export { isElement, isHTMLElement, isShadowRoot };
|