@mtdt.temp/browser-rum-core
Version:
Datadog browser RUM core utilities.
46 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isTextNode = isTextNode;
exports.isCommentNode = isCommentNode;
exports.isElementNode = isElementNode;
exports.isNodeShadowHost = isNodeShadowHost;
exports.isNodeShadowRoot = isNodeShadowRoot;
exports.hasChildNodes = hasChildNodes;
exports.forEachChildNodes = forEachChildNodes;
exports.getParentNode = getParentNode;
function isTextNode(node) {
return node.nodeType === Node.TEXT_NODE;
}
function isCommentNode(node) {
return node.nodeType === Node.COMMENT_NODE;
}
function isElementNode(node) {
return node.nodeType === Node.ELEMENT_NODE;
}
function isNodeShadowHost(node) {
return isElementNode(node) && Boolean(node.shadowRoot);
}
function isNodeShadowRoot(node) {
const shadowRoot = node;
return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);
}
function hasChildNodes(node) {
return node.childNodes.length > 0 || isNodeShadowHost(node);
}
function forEachChildNodes(node, callback) {
let child = node.firstChild;
while (child) {
callback(child);
child = child.nextSibling;
}
if (isNodeShadowHost(node)) {
callback(node.shadowRoot);
}
}
/**
* Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`
*/
function getParentNode(node) {
return isNodeShadowRoot(node) ? node.host : node.parentNode;
}
//# sourceMappingURL=htmlDomUtils.js.map