occam-dom 5.2.24 → 5.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,12 @@ _export(exports, {
12
12
  default: function() {
13
13
  return _default;
14
14
  },
15
+ isAncestorOf: function() {
16
+ return isAncestorOf;
17
+ },
18
+ isDescendantOf: function() {
19
+ return isDescendantOf;
20
+ },
15
21
  isLessThan: function() {
16
22
  return isLessThan;
17
23
  },
@@ -41,6 +47,18 @@ function isLessThan(nodeA, nodeB) {
41
47
  }
42
48
  return lessThan;
43
49
  }
50
+ function isAncestorOf(nodeA, nodeB) {
51
+ var ancestorOf = nodeB.someAncestorNode(function(ancestorNodeB) {
52
+ if (nodeA === ancestorNodeB) {
53
+ return true;
54
+ }
55
+ });
56
+ return ancestorOf;
57
+ }
58
+ function isDescendantOf(nodeA, nodeB) {
59
+ var nodeBAncestorOfNodeA = isAncestorOf(nodeB, nodeA), nodeADescendantOfNodeB = nodeBAncestorOfNodeA, descendantOf = nodeADescendantOfNodeB; ///
60
+ return descendantOf;
61
+ }
44
62
  function topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes) {
45
63
  if (outerNodes === undefined) {
46
64
  outerNodes = ClassFromOuterNode; ///
@@ -68,6 +86,8 @@ function topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes) {
68
86
  }
69
87
  var _default = {
70
88
  isLessThan: isLessThan,
89
+ isAncestorOf: isAncestorOf,
90
+ isDescendantOf: isDescendantOf,
71
91
  topmostNodeFromOuterNodes: topmostNodeFromOuterNodes
72
92
  };
73
93
  function orderNodes(nodes) {
@@ -83,4 +103,4 @@ function ancestorNodesFromNode(node) {
83
103
  return ancestorNodes;
84
104
  }
85
105
 
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5vZGUgZnJvbSBcIi4uL25vZGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVzc1RoYW4obm9kZUEsIG5vZGVCKSB7XG4gIGxldCBsZXNzVGhhbiA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZUFBbmNlc3Rvck5vZGVzID0gYW5jZXN0b3JOb2Rlc0Zyb21Ob2RlKG5vZGVBKSxcbiAgICBub2RlQkFuY2VzdG9yTm9kZXMgPSBhbmNlc3Rvck5vZGVzRnJvbU5vZGUobm9kZUIpLFxuICAgIG5vZGVBQW5jZXN0b3JOb2Rlc0xlbmd0aCA9IG5vZGVBQW5jZXN0b3JOb2Rlcy5sZW5ndGgsXG4gICAgbm9kZUJBbmNlc3Rvck5vZGVzTGVuZ3RoID0gbm9kZUJBbmNlc3Rvck5vZGVzLmxlbmd0aCxcbiAgICBtaW5pbXVtQW5jZXN0b3JOb2Rlc0xlbmd0aCA9IE1hdGgubWluKG5vZGVBQW5jZXN0b3JOb2Rlc0xlbmd0aCwgbm9kZUJBbmNlc3Rvck5vZGVzTGVuZ3RoKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWluaW11bUFuY2VzdG9yTm9kZXNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBub2RlQUFuY2VzdG9yTm9kZSA9IG5vZGVBQW5jZXN0b3JOb2Rlc1tpbmRleF0sXG4gICAgICBub2RlQkFuY2VzdG9yTm9kZSA9IG5vZGVCQW5jZXN0b3JOb2Rlc1tpbmRleF07XG5cbiAgICBpZiAobm9kZUFBbmNlc3Rvck5vZGUgIT09IG5vZGVCQW5jZXN0b3JOb2RlKSB7XG4gICAgICBjb25zdCBwYXJlbnRJbmRleCA9IGluZGV4IC0gMSxcbiAgICAgICAgbm9kZUFBbmNlc3Rvck5vZGVQYXJlbnROb2RlID0gbm9kZUFBbmNlc3Rvck5vZGVzW3BhcmVudEluZGV4XSxcbiAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGVBQW5jZXN0b3JOb2RlUGFyZW50Tm9kZSwgLy8vXG4gICAgICAgIGNoaWxkTm9kZUEgPSBub2RlQUFuY2VzdG9yTm9kZSwgLy8vXG4gICAgICAgIGNoaWxkTm9kZUIgPSBub2RlQkFuY2VzdG9yTm9kZSwgLy8vXG4gICAgICAgIGluZGV4QSA9IHBhcmVudE5vZGUuaW5kZXhPZkNoaWxkTm9kZShjaGlsZE5vZGVBKSxcbiAgICAgICAgaW5kZXhCID0gcGFyZW50Tm9kZS5pbmRleE9mQ2hpbGROb2RlKGNoaWxkTm9kZUIpO1xuXG4gICAgICBsZXNzVGhhbiA9IChpbmRleEEgPCBpbmRleEIpO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAobGVzc1RoYW4gPT09IG51bGwpIHtcbiAgICBsZXNzVGhhbiA9IChub2RlQUFuY2VzdG9yTm9kZXNMZW5ndGggPCBub2RlQkFuY2VzdG9yTm9kZXNMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGxlc3NUaGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wbW9zdE5vZGVGcm9tT3V0ZXJOb2RlcyhDbGFzc0Zyb21PdXRlck5vZGUsIG91dGVyTm9kZXMpIHtcbiAgaWYgKG91dGVyTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIG91dGVyTm9kZXMgPSBDbGFzc0Zyb21PdXRlck5vZGU7IC8vL1xuXG4gICAgQ2xhc3NGcm9tT3V0ZXJOb2RlID0gKG91dGVyTm9kZSkgPT4gTm9kZTsgIC8vL1xuICB9XG5cbiAgY29uc3Qgbm9kZXMgPSBvdXRlck5vZGVzOyAvLy9cblxuICBvcmRlck5vZGVzKG5vZGVzKTtcblxuICBjb25zdCBvdXRlck5vZGUgPSBudWxsLFxuICAgICAgICBDbGFzcyA9IENsYXNzRnJvbU91dGVyTm9kZShvdXRlck5vZGUpLFxuICAgICAgICB0b3Btb3N0Tm9kZSA9IENsYXNzLmZyb21Ob3RoaW5nKCksXG4gICAgICAgIG91dGVyTm9kZVRvTm9kZU1hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgb3V0ZXJOb2Rlcy5mb3JFYWNoKChvdXRlck5vZGUpID0+IHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRvcG1vc3ROb2RlOyAvLy9cblxuICAgIG91dGVyTm9kZS5zb21lQW5jZXN0b3JOb2RlKChhbmNlc3Rvck5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG91dGVyTm9kZSA9IGFuY2VzdG9yTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlID0gb3V0ZXJOb2RlVG9Ob2RlTWFwLmdldChvdXRlck5vZGUpIHx8IG51bGw7XG5cbiAgICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgIHBhcmVudE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBDbGFzcyA9IENsYXNzRnJvbU91dGVyTm9kZShvdXRlck5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBDbGFzcy5mcm9tT3V0ZXJOb2RlKG91dGVyTm9kZSksXG4gICAgICAgICAgYXBwZW5kZWRDaGlsZE5vZGUgPSBub2RlOyAvLy9cblxuICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGROb2RlKGFwcGVuZGVkQ2hpbGROb2RlKTtcblxuICAgIG91dGVyTm9kZVRvTm9kZU1hcC5zZXQob3V0ZXJOb2RlLCBub2RlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRvcG1vc3ROb2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzTGVzc1RoYW4sXG4gIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXNcbn07XG5cbmZ1bmN0aW9uIG9yZGVyTm9kZXMobm9kZXMpIHtcbiAgbm9kZXMuc29ydCgobm9kZUEsIG5vZGVCKSA9PiB7XG4gICAgY29uc3Qgbm9kZUFMZXNzVGhhbk5vZGVCID0gaXNMZXNzVGhhbihub2RlQSwgbm9kZUIpLFxuICAgICAgICAgIHJlc3VsdCA9IG5vZGVBTGVzc1RoYW5Ob2RlQiA/XG4gICAgICAgICAgICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICAgICAgICAgICAgICsxO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFuY2VzdG9yTm9kZXNGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSBub2RlLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICBhbmNlc3Rvck5vZGVzLnVuc2hpZnQobm9kZSk7XG5cbiAgYW5jZXN0b3JOb2Rlcy5yZXZlcnNlKCk7XG5cbiAgcmV0dXJuIGFuY2VzdG9yTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiaXNMZXNzVGhhbiIsInRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXMiLCJub2RlQSIsIm5vZGVCIiwibGVzc1RoYW4iLCJub2RlQUFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGVzRnJvbU5vZGUiLCJub2RlQkFuY2VzdG9yTm9kZXMiLCJub2RlQUFuY2VzdG9yTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJub2RlQkFuY2VzdG9yTm9kZXNMZW5ndGgiLCJtaW5pbXVtQW5jZXN0b3JOb2Rlc0xlbmd0aCIsIk1hdGgiLCJtaW4iLCJpbmRleCIsIm5vZGVBQW5jZXN0b3JOb2RlIiwibm9kZUJBbmNlc3Rvck5vZGUiLCJwYXJlbnRJbmRleCIsIm5vZGVBQW5jZXN0b3JOb2RlUGFyZW50Tm9kZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVBIiwiY2hpbGROb2RlQiIsImluZGV4QSIsImluZGV4T2ZDaGlsZE5vZGUiLCJpbmRleEIiLCJDbGFzc0Zyb21PdXRlck5vZGUiLCJvdXRlck5vZGVzIiwidW5kZWZpbmVkIiwib3V0ZXJOb2RlIiwiTm9kZSIsIm5vZGVzIiwib3JkZXJOb2RlcyIsIkNsYXNzIiwidG9wbW9zdE5vZGUiLCJmcm9tTm90aGluZyIsIm91dGVyTm9kZVRvTm9kZU1hcCIsIldlYWtNYXAiLCJmb3JFYWNoIiwic29tZUFuY2VzdG9yTm9kZSIsImFuY2VzdG9yTm9kZSIsIm5vZGUiLCJnZXQiLCJmcm9tT3V0ZXJOb2RlIiwiYXBwZW5kZWRDaGlsZE5vZGUiLCJhcHBlbmRDaGlsZE5vZGUiLCJzZXQiLCJzb3J0Iiwibm9kZUFMZXNzVGhhbk5vZGVCIiwicmVzdWx0IiwiYW5jZXN0b3JOb2RlcyIsImdldEFuY2VzdG9yTm9kZXMiLCJ1bnNoaWZ0IiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBaUZBLE9BR0U7ZUFIRjs7SUE3RWdCQSxVQUFVO2VBQVZBOztJQW1DQUMseUJBQXlCO2VBQXpCQTs7OzJEQXJDQzs7Ozs7O0FBRVYsU0FBU0QsV0FBV0UsS0FBSyxFQUFFQyxLQUFLO0lBQ3JDLElBQUlDLFdBQVc7SUFFZixJQUFNQyxxQkFBcUJDLHNCQUFzQkosUUFDL0NLLHFCQUFxQkQsc0JBQXNCSCxRQUMzQ0ssMkJBQTJCSCxtQkFBbUJJLE1BQU0sRUFDcERDLDJCQUEyQkgsbUJBQW1CRSxNQUFNLEVBQ3BERSw2QkFBNkJDLEtBQUtDLEdBQUcsQ0FBQ0wsMEJBQTBCRTtJQUVsRSxJQUFLLElBQUlJLFFBQVEsR0FBR0EsUUFBUUgsNEJBQTRCRyxRQUFTO1FBQy9ELElBQU1DLG9CQUFvQlYsa0JBQWtCLENBQUNTLE1BQU0sRUFDakRFLG9CQUFvQlQsa0JBQWtCLENBQUNPLE1BQU07UUFFL0MsSUFBSUMsc0JBQXNCQyxtQkFBbUI7WUFDM0MsSUFBTUMsY0FBY0gsUUFBUSxHQUMxQkksOEJBQThCYixrQkFBa0IsQ0FBQ1ksWUFBWSxFQUM3REUsYUFBYUQsNkJBQ2JFLGFBQWFMLG1CQUNiTSxhQUFhTCxtQkFDYk0sU0FBU0gsV0FBV0ksZ0JBQWdCLENBQUNILGFBQ3JDSSxTQUFTTCxXQUFXSSxnQkFBZ0IsQ0FBQ0Y7WUFFdkNqQixXQUFZa0IsU0FBU0U7WUFFckI7UUFDRjtJQUNGO0lBRUEsSUFBSXBCLGFBQWEsTUFBTTtRQUNyQkEsV0FBWUksMkJBQTJCRTtJQUN6QztJQUVBLE9BQU9OO0FBQ1Q7QUFFTyxTQUFTSCwwQkFBMEJ3QixrQkFBa0IsRUFBRUMsVUFBVTtJQUN0RSxJQUFJQSxlQUFlQyxXQUFXO1FBQzVCRCxhQUFhRCxvQkFBb0IsR0FBRztRQUVwQ0EscUJBQXFCLFNBQUNHO21CQUFjQyxhQUFJO1dBQUcsR0FBRztJQUNoRDtJQUVBLElBQU1DLFFBQVFKLFlBQVksR0FBRztJQUU3QkssV0FBV0Q7SUFFWCxJQUFNRixZQUFZLE1BQ1pJLFFBQVFQLG1CQUFtQkcsWUFDM0JLLGNBQWNELE1BQU1FLFdBQVcsSUFDL0JDLHFCQUFxQixJQUFJQztJQUUvQlYsV0FBV1csT0FBTyxDQUFDLFNBQUNUO1FBQ2xCLElBQUlULGFBQWFjLGFBQWEsR0FBRztRQUVqQ0wsVUFBVVUsZ0JBQWdCLENBQUMsU0FBQ0M7WUFDMUIsSUFBTVgsY0FBWVcsY0FDWkMsT0FBT0wsbUJBQW1CTSxHQUFHLENBQUNiLGdCQUFjO1lBRWxELElBQUlZLFNBQVMsTUFBTTtnQkFDakJyQixhQUFhcUIsTUFBTyxHQUFHO2dCQUV2QixPQUFPO1lBQ1Q7UUFDRjtRQUVBLElBQU1SLFFBQVFQLG1CQUFtQkcsWUFDM0JZLE9BQU9SLE1BQU1VLGFBQWEsQ0FBQ2QsWUFDM0JlLG9CQUFvQkgsTUFBTSxHQUFHO1FBRW5DckIsV0FBV3lCLGVBQWUsQ0FBQ0Q7UUFFM0JSLG1CQUFtQlUsR0FBRyxDQUFDakIsV0FBV1k7SUFDcEM7SUFFQSxPQUFPUDtBQUNUO0lBRUEsV0FBZTtJQUNiakMsWUFBQUE7SUFDQUMsMkJBQUFBO0FBQ0Y7QUFFQSxTQUFTOEIsV0FBV0QsS0FBSztJQUN2QkEsTUFBTWdCLElBQUksQ0FBQyxTQUFDNUMsT0FBT0M7UUFDakIsSUFBTTRDLHFCQUFxQi9DLFdBQVdFLE9BQU9DLFFBQ3ZDNkMsU0FBU0QscUJBQ0UsQ0FBQyxJQUNDLENBQUM7UUFFcEIsT0FBT0M7SUFDVDtBQUNGO0FBRUEsU0FBUzFDLHNCQUFzQmtDLElBQUk7SUFDakMsSUFBTVMsZ0JBQWdCVCxLQUFLVSxnQkFBZ0I7SUFFM0NELGNBQWNFLE9BQU8sQ0FBQ1g7SUFFdEJTLGNBQWNHLE9BQU87SUFFckIsT0FBT0g7QUFDVCJ9
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5vZGUgZnJvbSBcIi4uL25vZGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVzc1RoYW4obm9kZUEsIG5vZGVCKSB7XG4gIGxldCBsZXNzVGhhbiA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZUFBbmNlc3Rvck5vZGVzID0gYW5jZXN0b3JOb2Rlc0Zyb21Ob2RlKG5vZGVBKSxcbiAgICAgICAgbm9kZUJBbmNlc3Rvck5vZGVzID0gYW5jZXN0b3JOb2Rlc0Zyb21Ob2RlKG5vZGVCKSxcbiAgICAgICAgbm9kZUFBbmNlc3Rvck5vZGVzTGVuZ3RoID0gbm9kZUFBbmNlc3Rvck5vZGVzLmxlbmd0aCxcbiAgICAgICAgbm9kZUJBbmNlc3Rvck5vZGVzTGVuZ3RoID0gbm9kZUJBbmNlc3Rvck5vZGVzLmxlbmd0aCxcbiAgICAgICAgbWluaW11bUFuY2VzdG9yTm9kZXNMZW5ndGggPSBNYXRoLm1pbihub2RlQUFuY2VzdG9yTm9kZXNMZW5ndGgsIG5vZGVCQW5jZXN0b3JOb2Rlc0xlbmd0aCk7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1pbmltdW1BbmNlc3Rvck5vZGVzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3Qgbm9kZUFBbmNlc3Rvck5vZGUgPSBub2RlQUFuY2VzdG9yTm9kZXNbaW5kZXhdLFxuICAgICAgICAgIG5vZGVCQW5jZXN0b3JOb2RlID0gbm9kZUJBbmNlc3Rvck5vZGVzW2luZGV4XTtcblxuICAgIGlmIChub2RlQUFuY2VzdG9yTm9kZSAhPT0gbm9kZUJBbmNlc3Rvck5vZGUpIHtcbiAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gaW5kZXggLSAxLFxuICAgICAgICAgICAgbm9kZUFBbmNlc3Rvck5vZGVQYXJlbnROb2RlID0gbm9kZUFBbmNlc3Rvck5vZGVzW3BhcmVudEluZGV4XSxcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPSBub2RlQUFuY2VzdG9yTm9kZVBhcmVudE5vZGUsIC8vL1xuICAgICAgICAgICAgY2hpbGROb2RlQSA9IG5vZGVBQW5jZXN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgIGNoaWxkTm9kZUIgPSBub2RlQkFuY2VzdG9yTm9kZSwgLy8vXG4gICAgICAgICAgICBpbmRleEEgPSBwYXJlbnROb2RlLmluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlQSksXG4gICAgICAgICAgICBpbmRleEIgPSBwYXJlbnROb2RlLmluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlQik7XG5cbiAgICAgIGxlc3NUaGFuID0gKGluZGV4QSA8IGluZGV4Qik7XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsZXNzVGhhbiA9PT0gbnVsbCkge1xuICAgIGxlc3NUaGFuID0gKG5vZGVBQW5jZXN0b3JOb2Rlc0xlbmd0aCA8IG5vZGVCQW5jZXN0b3JOb2Rlc0xlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbGVzc1RoYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FuY2VzdG9yT2Yobm9kZUEsIG5vZGVCKSB7XG4gIGNvbnN0IGFuY2VzdG9yT2YgPSBub2RlQi5zb21lQW5jZXN0b3JOb2RlKChhbmNlc3Rvck5vZGVCKSA9PiB7XG4gICAgaWYgKG5vZGVBID09PSBhbmNlc3Rvck5vZGVCKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhbmNlc3Rvck9mO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXNjZW5kYW50T2Yobm9kZUEsIG5vZGVCKSB7XG4gIGNvbnN0IG5vZGVCQW5jZXN0b3JPZk5vZGVBID0gaXNBbmNlc3Rvck9mKG5vZGVCLCBub2RlQSksXG4gICAgICAgIG5vZGVBRGVzY2VuZGFudE9mTm9kZUIgPSBub2RlQkFuY2VzdG9yT2ZOb2RlQSwgIC8vL1xuICAgICAgICBkZXNjZW5kYW50T2YgPSBub2RlQURlc2NlbmRhbnRPZk5vZGVCOyAgLy8vXG5cbiAgcmV0dXJuIGRlc2NlbmRhbnRPZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXMoQ2xhc3NGcm9tT3V0ZXJOb2RlLCBvdXRlck5vZGVzKSB7XG4gIGlmIChvdXRlck5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICBvdXRlck5vZGVzID0gQ2xhc3NGcm9tT3V0ZXJOb2RlOyAvLy9cblxuICAgIENsYXNzRnJvbU91dGVyTm9kZSA9IChvdXRlck5vZGUpID0+IE5vZGU7ICAvLy9cbiAgfVxuXG4gIGNvbnN0IG5vZGVzID0gb3V0ZXJOb2RlczsgLy8vXG5cbiAgb3JkZXJOb2Rlcyhub2Rlcyk7XG5cbiAgY29uc3Qgb3V0ZXJOb2RlID0gbnVsbCxcbiAgICAgICAgQ2xhc3MgPSBDbGFzc0Zyb21PdXRlck5vZGUob3V0ZXJOb2RlKSxcbiAgICAgICAgdG9wbW9zdE5vZGUgPSBDbGFzcy5mcm9tTm90aGluZygpLFxuICAgICAgICBvdXRlck5vZGVUb05vZGVNYXAgPSBuZXcgV2Vha01hcCgpO1xuXG4gIG91dGVyTm9kZXMuZm9yRWFjaCgob3V0ZXJOb2RlKSA9PiB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0b3Btb3N0Tm9kZTsgLy8vXG5cbiAgICBvdXRlck5vZGUuc29tZUFuY2VzdG9yTm9kZSgoYW5jZXN0b3JOb2RlKSA9PiB7XG4gICAgICBjb25zdCBvdXRlck5vZGUgPSBhbmNlc3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgbm9kZSA9IG91dGVyTm9kZVRvTm9kZU1hcC5nZXQob3V0ZXJOb2RlKSB8fCBudWxsO1xuXG4gICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBwYXJlbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgQ2xhc3MgPSBDbGFzc0Zyb21PdXRlck5vZGUob3V0ZXJOb2RlKSxcbiAgICAgICAgICBub2RlID0gQ2xhc3MuZnJvbU91dGVyTm9kZShvdXRlck5vZGUpLFxuICAgICAgICAgIGFwcGVuZGVkQ2hpbGROb2RlID0gbm9kZTsgLy8vXG5cbiAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkTm9kZShhcHBlbmRlZENoaWxkTm9kZSk7XG5cbiAgICBvdXRlck5vZGVUb05vZGVNYXAuc2V0KG91dGVyTm9kZSwgbm9kZSk7XG4gIH0pO1xuXG4gIHJldHVybiB0b3Btb3N0Tm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc0xlc3NUaGFuLFxuICBpc0FuY2VzdG9yT2YsXG4gIGlzRGVzY2VuZGFudE9mLFxuICB0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVzXG59O1xuXG5mdW5jdGlvbiBvcmRlck5vZGVzKG5vZGVzKSB7XG4gIG5vZGVzLnNvcnQoKG5vZGVBLCBub2RlQikgPT4ge1xuICAgIGNvbnN0IG5vZGVBTGVzc1RoYW5Ob2RlQiA9IGlzTGVzc1RoYW4obm9kZUEsIG5vZGVCKSxcbiAgICAgICAgICByZXN1bHQgPSBub2RlQUxlc3NUaGFuTm9kZUIgP1xuICAgICAgICAgICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgICAgICAgICAgICArMTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhbmNlc3Rvck5vZGVzRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBhbmNlc3Rvck5vZGVzID0gbm9kZS5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgYW5jZXN0b3JOb2Rlcy51bnNoaWZ0KG5vZGUpO1xuXG4gIGFuY2VzdG9yTm9kZXMucmV2ZXJzZSgpO1xuXG4gIHJldHVybiBhbmNlc3Rvck5vZGVzO1xufVxuIl0sIm5hbWVzIjpbImlzQW5jZXN0b3JPZiIsImlzRGVzY2VuZGFudE9mIiwiaXNMZXNzVGhhbiIsInRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXMiLCJub2RlQSIsIm5vZGVCIiwibGVzc1RoYW4iLCJub2RlQUFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGVzRnJvbU5vZGUiLCJub2RlQkFuY2VzdG9yTm9kZXMiLCJub2RlQUFuY2VzdG9yTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJub2RlQkFuY2VzdG9yTm9kZXNMZW5ndGgiLCJtaW5pbXVtQW5jZXN0b3JOb2Rlc0xlbmd0aCIsIk1hdGgiLCJtaW4iLCJpbmRleCIsIm5vZGVBQW5jZXN0b3JOb2RlIiwibm9kZUJBbmNlc3Rvck5vZGUiLCJwYXJlbnRJbmRleCIsIm5vZGVBQW5jZXN0b3JOb2RlUGFyZW50Tm9kZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVBIiwiY2hpbGROb2RlQiIsImluZGV4QSIsImluZGV4T2ZDaGlsZE5vZGUiLCJpbmRleEIiLCJhbmNlc3Rvck9mIiwic29tZUFuY2VzdG9yTm9kZSIsImFuY2VzdG9yTm9kZUIiLCJub2RlQkFuY2VzdG9yT2ZOb2RlQSIsIm5vZGVBRGVzY2VuZGFudE9mTm9kZUIiLCJkZXNjZW5kYW50T2YiLCJDbGFzc0Zyb21PdXRlck5vZGUiLCJvdXRlck5vZGVzIiwidW5kZWZpbmVkIiwib3V0ZXJOb2RlIiwiTm9kZSIsIm5vZGVzIiwib3JkZXJOb2RlcyIsIkNsYXNzIiwidG9wbW9zdE5vZGUiLCJmcm9tTm90aGluZyIsIm91dGVyTm9kZVRvTm9kZU1hcCIsIldlYWtNYXAiLCJmb3JFYWNoIiwiYW5jZXN0b3JOb2RlIiwibm9kZSIsImdldCIsImZyb21PdXRlck5vZGUiLCJhcHBlbmRlZENoaWxkTm9kZSIsImFwcGVuZENoaWxkTm9kZSIsInNldCIsInNvcnQiLCJub2RlQUxlc3NUaGFuTm9kZUIiLCJyZXN1bHQiLCJhbmNlc3Rvck5vZGVzIiwiZ2V0QW5jZXN0b3JOb2RlcyIsInVuc2hpZnQiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFtR0EsT0FLRTtlQUxGOztJQTVEZ0JBLFlBQVk7ZUFBWkE7O0lBVUFDLGNBQWM7ZUFBZEE7O0lBN0NBQyxVQUFVO2VBQVZBOztJQXFEQUMseUJBQXlCO2VBQXpCQTs7OzJEQXZEQzs7Ozs7O0FBRVYsU0FB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-dom",
3
3
  "author": "James Smith",
4
- "version": "5.2.24",
4
+ "version": "5.2.26",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-dom",
7
7
  "description": "Occam's DOM related functionality.",
@@ -6,23 +6,23 @@ export function isLessThan(nodeA, nodeB) {
6
6
  let lessThan = null;
7
7
 
8
8
  const nodeAAncestorNodes = ancestorNodesFromNode(nodeA),
9
- nodeBAncestorNodes = ancestorNodesFromNode(nodeB),
10
- nodeAAncestorNodesLength = nodeAAncestorNodes.length,
11
- nodeBAncestorNodesLength = nodeBAncestorNodes.length,
12
- minimumAncestorNodesLength = Math.min(nodeAAncestorNodesLength, nodeBAncestorNodesLength);
9
+ nodeBAncestorNodes = ancestorNodesFromNode(nodeB),
10
+ nodeAAncestorNodesLength = nodeAAncestorNodes.length,
11
+ nodeBAncestorNodesLength = nodeBAncestorNodes.length,
12
+ minimumAncestorNodesLength = Math.min(nodeAAncestorNodesLength, nodeBAncestorNodesLength);
13
13
 
14
14
  for (let index = 0; index < minimumAncestorNodesLength; index++) {
15
15
  const nodeAAncestorNode = nodeAAncestorNodes[index],
16
- nodeBAncestorNode = nodeBAncestorNodes[index];
16
+ nodeBAncestorNode = nodeBAncestorNodes[index];
17
17
 
18
18
  if (nodeAAncestorNode !== nodeBAncestorNode) {
19
19
  const parentIndex = index - 1,
20
- nodeAAncestorNodeParentNode = nodeAAncestorNodes[parentIndex],
21
- parentNode = nodeAAncestorNodeParentNode, ///
22
- childNodeA = nodeAAncestorNode, ///
23
- childNodeB = nodeBAncestorNode, ///
24
- indexA = parentNode.indexOfChildNode(childNodeA),
25
- indexB = parentNode.indexOfChildNode(childNodeB);
20
+ nodeAAncestorNodeParentNode = nodeAAncestorNodes[parentIndex],
21
+ parentNode = nodeAAncestorNodeParentNode, ///
22
+ childNodeA = nodeAAncestorNode, ///
23
+ childNodeB = nodeBAncestorNode, ///
24
+ indexA = parentNode.indexOfChildNode(childNodeA),
25
+ indexB = parentNode.indexOfChildNode(childNodeB);
26
26
 
27
27
  lessThan = (indexA < indexB);
28
28
 
@@ -37,6 +37,24 @@ export function isLessThan(nodeA, nodeB) {
37
37
  return lessThan;
38
38
  }
39
39
 
40
+ export function isAncestorOf(nodeA, nodeB) {
41
+ const ancestorOf = nodeB.someAncestorNode((ancestorNodeB) => {
42
+ if (nodeA === ancestorNodeB) {
43
+ return true;
44
+ }
45
+ });
46
+
47
+ return ancestorOf;
48
+ }
49
+
50
+ export function isDescendantOf(nodeA, nodeB) {
51
+ const nodeBAncestorOfNodeA = isAncestorOf(nodeB, nodeA),
52
+ nodeADescendantOfNodeB = nodeBAncestorOfNodeA, ///
53
+ descendantOf = nodeADescendantOfNodeB; ///
54
+
55
+ return descendantOf;
56
+ }
57
+
40
58
  export function topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes) {
41
59
  if (outerNodes === undefined) {
42
60
  outerNodes = ClassFromOuterNode; ///
@@ -81,6 +99,8 @@ export function topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes) {
81
99
 
82
100
  export default {
83
101
  isLessThan,
102
+ isAncestorOf,
103
+ isDescendantOf,
84
104
  topmostNodeFromOuterNodes
85
105
  };
86
106