34 lines
873 B
JavaScript
34 lines
873 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "elementContains", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return elementContains;
|
|
}
|
|
});
|
|
const _getParent = require("./getParent");
|
|
function elementContains(parent, child) {
|
|
if (!parent || !child) {
|
|
return false;
|
|
}
|
|
if (parent === child) {
|
|
return true;
|
|
} else {
|
|
// Tracks references of nodes that have been visited to prevent infinite loops
|
|
const set = new WeakSet();
|
|
while(child){
|
|
const nextParent = (0, _getParent.getParent)(child, {
|
|
skipVirtual: set.has(child)
|
|
});
|
|
set.add(child);
|
|
if (nextParent === parent) {
|
|
return true;
|
|
}
|
|
child = nextParent;
|
|
}
|
|
}
|
|
return false;
|
|
}
|