Skip to main content

Determine whether or not the specified object is a DOM node.

"use strict";

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @typechecks
 */

/**
 * @param {*} object The object to check.
 * @return {boolean} Whether or not the object is a DOM node.
 */
function isNode(object) {
    var doc = object ? object.ownerDocument || object : document;
    var defaultView = doc.defaultView || window;
    return !!(
        object &&
        (typeof defaultView.Node === "function"
            ? object instanceof defaultView.Node
            : typeof object === "object" &&
              typeof object.nodeType === "number" &&
              typeof object.nodeName === "string")
    );
}

module.exports = isNode;