occam-dom 6.1.2 → 6.1.4

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.
package/lib/index.js CHANGED
@@ -18,6 +18,9 @@ _export(exports, {
18
18
  get domUtilities () {
19
19
  return _dom.default;
20
20
  },
21
+ get incrementalUtilities () {
22
+ return _incremental.default;
23
+ },
21
24
  get nodeUtilities () {
22
25
  return _node1.default;
23
26
  },
@@ -34,10 +37,11 @@ const _dom = /*#__PURE__*/ _interop_require_default(require("./utilities/dom"));
34
37
  const _node1 = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
35
38
  const _query = /*#__PURE__*/ _interop_require_default(require("./utilities/query"));
36
39
  const _transform1 = /*#__PURE__*/ _interop_require_default(require("./utilities/transform"));
40
+ const _incremental = /*#__PURE__*/ _interop_require_default(require("./utilities/incremental"));
37
41
  function _interop_require_default(obj) {
38
42
  return obj && obj.__esModule ? obj : {
39
43
  default: obj
40
44
  };
41
45
  }
42
46
 
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb2RlIH0gZnJvbSBcIi4vbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUcmFuc2Zvcm0gfSBmcm9tIFwiLi90cmFuc2Zvcm1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9tVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2RvbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3RyYW5zZm9ybVwiO1xuIl0sIm5hbWVzIjpbIk5vZGUiLCJUcmFuc2Zvcm0iLCJkb21VdGlsaXRpZXMiLCJub2RlVXRpbGl0aWVzIiwicXVlcnlVdGlsaXRpZXMiLCJ0cmFuc2Zvcm1VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUVvQkE7ZUFBQUEsYUFBSTs7UUFDSkM7ZUFBQUEsa0JBQVM7O1FBQ1RDO2VBQUFBLFlBQVk7O1FBQ1pDO2VBQUFBLGNBQWE7O1FBQ2JDO2VBQUFBLGNBQWM7O1FBQ2RDO2VBQUFBLG1CQUFrQjs7OzZEQUxOO2tFQUNLOzREQUNHOzhEQUNDOzhEQUNDO21FQUNJIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb2RlIH0gZnJvbSBcIi4vbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUcmFuc2Zvcm0gfSBmcm9tIFwiLi90cmFuc2Zvcm1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9tVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2RvbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3RyYW5zZm9ybVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbmNyZW1lbnRhbFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9pbmNyZW1lbnRhbFwiO1xuIl0sIm5hbWVzIjpbIk5vZGUiLCJUcmFuc2Zvcm0iLCJkb21VdGlsaXRpZXMiLCJpbmNyZW1lbnRhbFV0aWxpdGllcyIsIm5vZGVVdGlsaXRpZXMiLCJxdWVyeVV0aWxpdGllcyIsInRyYW5zZm9ybVV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBRW9CQTtlQUFBQSxhQUFJOztRQUNKQztlQUFBQSxrQkFBUzs7UUFDVEM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsY0FBYTs7UUFDYkM7ZUFBQUEsY0FBYzs7UUFDZEM7ZUFBQUEsbUJBQWtCOzs7NkRBTE47a0VBQ0s7NERBQ0c7OERBQ0M7OERBQ0M7bUVBQ0k7b0VBQ0UifQ==
package/lib/node.js CHANGED
@@ -42,6 +42,35 @@ class Node {
42
42
  const startIndex = 0, deleteCount = Infinity, addedChildNodes = childNodes; ///
43
43
  this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
44
44
  }
45
+ getDescendantNodes(descendantNodes = []) {
46
+ const childNodes = this.getChildNodes();
47
+ childNodes.forEach((childNode)=>{
48
+ const descendantNode = childNode; ///
49
+ descendantNodes.push(descendantNode);
50
+ childNode.getDescendantNodes(descendantNodes);
51
+ });
52
+ return descendantNodes;
53
+ }
54
+ retrieveNode(callback) {
55
+ let node = null;
56
+ if (node === null) {
57
+ const childNodes = this.getChildNodes();
58
+ childNodes.some((childNode)=>{
59
+ node = childNode.retrieveNode(callback);
60
+ if (node !== null) {
61
+ return true;
62
+ }
63
+ });
64
+ }
65
+ if (node === null) {
66
+ node = this;
67
+ const result = callback(node);
68
+ if (!result) {
69
+ node = null;
70
+ }
71
+ }
72
+ return node;
73
+ }
45
74
  isLessThan(node) {
46
75
  const nodeA = this, nodeB = node, lessThan = (0, _node1.isLessThan)(nodeA, nodeB);
47
76
  return lessThan;
@@ -127,4 +156,4 @@ function cloneChildNodes(childNodes) {
127
156
  return childNodes;
128
157
  }
129
158
 
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlTWl4aW5zIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcblxuaW1wb3J0IE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4vcGFyc2VUcmVlL25vZGVcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpc0xlc3NUaGFuLCBpc0dyZWF0ZXJUaGFuLCBpc0xlc3NUaGFuT3JFcXVhbFRvLCBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKG91dGVyTm9kZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcykge1xuICAgIHRoaXMub3V0ZXJOb2RlID0gb3V0ZXJOb2RlO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE91dGVyTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRlck5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBzZXRPdXRlck5vZGUob3V0ZXJOb2RlKSB7XG4gICAgdGhpcy5vdXRlck5vZGUgPSBvdXRlck5vZGU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBpc0xlc3NUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW4gPSBpc0xlc3NUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW47XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgZ3JlYXRlclRoYW4gPSBpc0dyZWF0ZXJUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gZ3JlYXRlclRoYW47XG4gIH1cblxuICBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW5PckVxdWFsVG8gPSBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW5PckVxdWFsVG87XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICBub2RlQiA9IG5vZGUsIC8vL1xuICAgICAgICBncmVhdGVyVGhhbk9yRXF1YWxUbyA9IGlzR3JlYXRlclRoYW5PckVxdWFsVG8obm9kZUEsIG5vZGVCKTtcblxuICAgIHJldHVybiBncmVhdGVyVGhhbk9yRXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSkge1xuICAgIGNvbnN0IG91dGVyTm9kZU1hdGNoZXMgPSAodGhpcy5vdXRlck5vZGUgPT09IG91dGVyTm9kZSk7XG5cbiAgICByZXR1cm4gb3V0ZXJOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm91dGVyTm9kZSA9IG51bGw7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICAgIGlmICh0aGlzLm91dGVyTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLFxuICAgICAgICAgICAgICB0eXBlID0gdGVybWluYWxOb2RlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgICAgc3RyaW5nID0gYFwiJHtjb250ZW50fVwiIFske3R5cGV9XWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLm91dGVyTm9kZSxcbiAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgICBzdHJpbmcgPSBydWxlTmFtZTsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBhc1BhcnNlVHJlZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vZGVQYXJzZVRyZWUgPSBOb2RlUGFyc2VUcmVlLmZyb21Ob2RlKG5vZGUpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgb3V0ZXJOb2RlID0gdGhpcy5vdXRlck5vZGUsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU91dGVyTm9kZShDbGFzcywgb3V0ZXJOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3V0ZXJOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dGVyTm9kZSA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkTm9kZXMoQ2xhc3MsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChjaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkTm9kZXMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9kZSA9IG5ldyBDbGFzcyhvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJnZXRPdXRlck5vZGUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsInNldE91dGVyTm9kZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwiaXNMZXNzVGhhbiIsIm5vZGUiLCJub2RlQSIsIm5vZGVCIiwibGVzc1RoYW4iLCJpc0dyZWF0ZXJUaGFuIiwiZ3JlYXRlclRoYW4iLCJpc0xlc3NUaGFuT3JFcXVhbFRvIiwibGVzc1RoYW5PckVxdWFsVG8iLCJpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiZ3JlYXRlclRoYW5PckVxdWFsVG8iLCJtYXRjaE91dGVyTm9kZSIsIm91dGVyTm9kZU1hdGNoZXMiLCJkZXN0cm95IiwiZm9yRWFjaENoaWxkTm9kZSIsImNoaWxkTm9kZSIsImFzU3RyaW5nIiwic3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidHlwZSIsImdldFR5cGUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIm5vblRlcm1pbmFsTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJhc1BhcnNlVHJlZSIsIm5vZGVQYXJzZVRyZWUiLCJOb2RlUGFyc2VUcmVlIiwiZnJvbU5vZGUiLCJwYXJzZVRyZWUiLCJjbG9uZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsIkNsYXNzIiwiY2xvbmVDaGlsZE5vZGVzIiwic2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJmcm9tTm90aGluZyIsInVuZGVmaW5lZCIsImZyb21PdXRlck5vZGUiLCJmcm9tQ2hpbGROb2RlcyIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMi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
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlTWl4aW5zIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcblxuaW1wb3J0IE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4vcGFyc2VUcmVlL25vZGVcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpc0xlc3NUaGFuLCBpc0dyZWF0ZXJUaGFuLCBpc0xlc3NUaGFuT3JFcXVhbFRvLCBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKG91dGVyTm9kZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcykge1xuICAgIHRoaXMub3V0ZXJOb2RlID0gb3V0ZXJOb2RlO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE91dGVyTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRlck5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBzZXRPdXRlck5vZGUob3V0ZXJOb2RlKSB7XG4gICAgdGhpcy5vdXRlck5vZGUgPSBvdXRlck5vZGU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzID0gW10pIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgZGVzY2VuZGFudE5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBkZXNjZW5kYW50Tm9kZXMucHVzaChkZXNjZW5kYW50Tm9kZSk7XG5cbiAgICAgIGNoaWxkTm9kZS5nZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkZXNjZW5kYW50Tm9kZXM7XG4gIH1cblxuICByZXRyaWV2ZU5vZGUoY2FsbGJhY2spIHtcbiAgICBsZXQgbm9kZSA9IG51bGw7XG5cbiAgICBpZiAobm9kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IHRoaXMuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICBjaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBub2RlID0gY2hpbGROb2RlLnJldHJpZXZlTm9kZShjYWxsYmFjayk7XG5cbiAgICAgICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgPT09IG51bGwpIHtcbiAgICAgIG5vZGUgPSB0aGlzO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhub2RlKTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpc0xlc3NUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW4gPSBpc0xlc3NUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW47XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgZ3JlYXRlclRoYW4gPSBpc0dyZWF0ZXJUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gZ3JlYXRlclRoYW47XG4gIH1cblxuICBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW5PckVxdWFsVG8gPSBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW5PckVxdWFsVG87XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICBub2RlQiA9IG5vZGUsIC8vL1xuICAgICAgICBncmVhdGVyVGhhbk9yRXF1YWxUbyA9IGlzR3JlYXRlclRoYW5PckVxdWFsVG8obm9kZUEsIG5vZGVCKTtcblxuICAgIHJldHVybiBncmVhdGVyVGhhbk9yRXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSkge1xuICAgIGNvbnN0IG91dGVyTm9kZU1hdGNoZXMgPSAodGhpcy5vdXRlck5vZGUgPT09IG91dGVyTm9kZSk7XG5cbiAgICByZXR1cm4gb3V0ZXJOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm91dGVyTm9kZSA9IG51bGw7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICAgIGlmICh0aGlzLm91dGVyTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLFxuICAgICAgICAgICAgICB0eXBlID0gdGVybWluYWxOb2RlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgICAgc3RyaW5nID0gYFwiJHtjb250ZW50fVwiIFske3R5cGV9XWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLm91dGVyTm9kZSxcbiAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgICBzdHJpbmcgPSBydWxlTmFtZTsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBhc1BhcnNlVHJlZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vZGVQYXJzZVRyZWUgPSBOb2RlUGFyc2VUcmVlLmZyb21Ob2RlKG5vZGUpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgb3V0ZXJOb2RlID0gdGhpcy5vdXRlck5vZGUsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU91dGVyTm9kZShDbGFzcywgb3V0ZXJOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3V0ZXJOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dGVyTm9kZSA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkTm9kZXMoQ2xhc3MsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChjaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkTm9kZXMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9kZSA9IG5ldyBDbGFzcyhvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJnZXRPdXRlck5vZGUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsInNldE91dGVyTm9kZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZm9yRWFjaCIsImNoaWxkTm9kZSIsImRlc2NlbmRhbnROb2RlIiwicHVzaCIsInJldHJpZXZlTm9kZSIsImNhbGxiYWNrIiwibm9kZSIsInNvbWUiLCJyZXN1bHQiLCJpc0xlc3NUaGFuIiwibm9kZUEiLCJub2RlQiIsImxlc3NUaGFuIiwiaXNHcmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuIiwiaXNMZXNzVGhhbk9yRXF1YWxUbyIsImxlc3NUaGFuT3JFcXVhbFRvIiwiaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwibWF0Y2hPdXRlck5vZGUiLCJvdXRlck5vZGVNYXRjaGVzIiwiZGVzdHJveSIsImZvckVhY2hDaGlsZE5vZGUiLCJhc1N0cmluZyIsInN0cmluZyIsIkVNUFRZX1NUUklORyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInR5cGUiLCJnZXRUeXBlIiwiY29udGVudCIsImdldENvbnRlbnQiLCJub25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiYXNQYXJzZVRyZWUiLCJub2RlUGFyc2VUcmVlIiwiTm9kZVBhcnNlVHJlZSIsImZyb21Ob2RlIiwicGFyc2VUcmVlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbU5vdGhpbmciLCJ1bmRlZmluZWQiLCJmcm9tT3V0ZXJOb2RlIiwiZnJvbUNoaWxkTm9kZXMiLCJPYmplY3QiLCJhc3NpZ24i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
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get addedNodesFromAddedOuterNodes () {
13
+ return addedNodesFromAddedOuterNodes;
14
+ },
15
+ get default () {
16
+ return _default;
17
+ },
18
+ get findSiblingNodeIndex () {
19
+ return findSiblingNodeIndex;
20
+ },
21
+ get getDescendantNodes () {
22
+ return getDescendantNodes;
23
+ },
24
+ get removedNodesFromRemovedOuterNodes () {
25
+ return removedNodesFromRemovedOuterNodes;
26
+ },
27
+ get retrieveNode () {
28
+ return retrieveNode;
29
+ },
30
+ get retrieveParentNode () {
31
+ return retrieveParentNode;
32
+ }
33
+ });
34
+ const _necessary = require("necessary");
35
+ const _node = require("../utilities/node");
36
+ const _dom = require("../utilities/dom");
37
+ const { first, backwardsFindIndex } = _necessary.arrayUtilities;
38
+ function retrieveNode(outerNode, topmostNode) {
39
+ let node;
40
+ if (outerNode === null) {
41
+ node = topmostNode; ///
42
+ } else {
43
+ const ancestorNodes = outerNode.getAncestorNodes(), outerNodes = [
44
+ outerNode,
45
+ ...ancestorNodes
46
+ ];
47
+ node = topmostNode.retrieveNode((node)=>{
48
+ const outerNode = node.getOuterNode(), outerNodesIncludesOuterNode = outerNodes.includes(outerNode);
49
+ if (outerNodesIncludesOuterNode) {
50
+ return true;
51
+ }
52
+ });
53
+ }
54
+ return node;
55
+ }
56
+ function getDescendantNodes(nodes) {
57
+ const descendantNodes = nodes; ///
58
+ descendantNodes.forEach((descendantNode)=>{
59
+ descendantNode.getDescendantNodes(descendantNodes);
60
+ });
61
+ }
62
+ function retrieveParentNode(parentOuterNode, topmostNode) {
63
+ const outerNode = parentOuterNode, node = retrieveNode(outerNode, topmostNode), parentNode = node !== null ? node : topmostNode; ///
64
+ return parentNode;
65
+ }
66
+ function findSiblingNodeIndex(startOuterIndex, parentOuterNode, parentNode) {
67
+ let siblingNodeIndex = -1;
68
+ if (parentOuterNode !== null) {
69
+ const childNodes = parentNode.getChildNodes(), outerChildNodes = parentOuterNode.getChildNodes(), outerChildNodesLength = outerChildNodes.length;
70
+ if (outerChildNodesLength === startOuterIndex) {
71
+ const childNodesLength = childNodes.length;
72
+ siblingNodeIndex = childNodesLength - 1;
73
+ } else {
74
+ const startOuterChildNode = outerChildNodes[startOuterIndex];
75
+ siblingNodeIndex = backwardsFindIndex(childNodes, (childNode)=>{
76
+ const outerNode = childNode.getOuterNode(), outerNodeLessThanStartOuterChildNode = (0, _node.isLessThan)(outerNode, startOuterChildNode);
77
+ if (outerNodeLessThanStartOuterChildNode) {
78
+ return true;
79
+ }
80
+ });
81
+ }
82
+ }
83
+ return siblingNodeIndex;
84
+ }
85
+ function addedNodesFromAddedOuterNodes(addedOuterNodes, queries, ClassFromOuterNode, outerNodeFromChildOuterNodes) {
86
+ let addedNodes;
87
+ const childOuterNodes = addedOuterNodes, parentOuterNode = parentOuterNodeFromChildOuterNodes(childOuterNodes), outerNode = outerNodeFromChildOuterNodes(childOuterNodes), topmostNode = (0, _dom.topmostNodeFromOuterNodeAndQueries)(outerNode, queries, ClassFromOuterNode), removedChildNodes = topmostNode.removeChildNodes();
88
+ addedNodes = removedChildNodes; ///
89
+ setChildOuterNodesParentOuterNode(childOuterNodes, parentOuterNode);
90
+ return addedNodes;
91
+ }
92
+ function removedNodesFromRemovedOuterNodes(removedOuterNodes, queries, ClassFromOuterNode, outerNodeFromChildOuterNodes) {
93
+ let removedNodes;
94
+ const childOuterNodes = removedOuterNodes, outerNode = outerNodeFromChildOuterNodes(childOuterNodes), topmostNode = (0, _dom.topmostNodeFromOuterNodeAndQueries)(outerNode, queries, ClassFromOuterNode), removedChildNodes = topmostNode.removeChildNodes();
95
+ removedNodes = removedChildNodes; ///
96
+ resetChildOuterNodesParentOuterNode(childOuterNodes);
97
+ return removedNodes;
98
+ }
99
+ const _default = {
100
+ retrieveNode,
101
+ getDescendantNodes,
102
+ retrieveParentNode,
103
+ findSiblingNodeIndex,
104
+ addedNodesFromAddedOuterNodes,
105
+ removedNodesFromRemovedOuterNodes
106
+ };
107
+ function resetChildOuterNodesParentOuterNode(childOuterNodes) {
108
+ const parentNode = null;
109
+ childOuterNodes.forEach((childOuterNode)=>{
110
+ childOuterNode.setParentNode(parentNode);
111
+ });
112
+ }
113
+ function setChildOuterNodesParentOuterNode(childOuterNodes, parentOuterNode) {
114
+ const parentNode = parentOuterNode; ///
115
+ childOuterNodes.forEach((childOuterNode)=>{
116
+ childOuterNode.setParentNode(parentNode);
117
+ });
118
+ }
119
+ function parentOuterNodeFromChildOuterNodes(childOuterNodes) {
120
+ let parentOuterNode = null; ///
121
+ const childOuterNodesLength = childOuterNodes.length;
122
+ if (childOuterNodesLength > 0) {
123
+ const firstChildOuterNode = first(childOuterNodes);
124
+ parentOuterNode = firstChildOuterNode.getParentNode();
125
+ }
126
+ return parentOuterNode;
127
+ }
128
+
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5jcmVtZW50YWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBpc0xlc3NUaGFuIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ub2RlXCI7XG5pbXBvcnQgeyB0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVBbmRRdWVyaWVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9kb21cIjtcblxuY29uc3QgeyBmaXJzdCwgYmFja3dhcmRzRmluZEluZGV4IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlTm9kZShvdXRlck5vZGUsIHRvcG1vc3ROb2RlKSB7XG4gIGxldCBub2RlO1xuXG4gIGlmIChvdXRlck5vZGUgPT09IG51bGwpIHtcbiAgICBub2RlID0gdG9wbW9zdE5vZGU7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSBvdXRlck5vZGUuZ2V0QW5jZXN0b3JOb2RlcygpLFxuICAgICAgICAgIG91dGVyTm9kZXMgPSBbXG4gICAgICAgICAgICBvdXRlck5vZGUsXG4gICAgICAgICAgICAuLi5hbmNlc3Rvck5vZGVzXG4gICAgICAgICAgXTtcblxuICAgIG5vZGUgPSB0b3Btb3N0Tm9kZS5yZXRyaWV2ZU5vZGUoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG91dGVyTm9kZSA9IG5vZGUuZ2V0T3V0ZXJOb2RlKCksXG4gICAgICAgICAgICBvdXRlck5vZGVzSW5jbHVkZXNPdXRlck5vZGUgPSBvdXRlck5vZGVzLmluY2x1ZGVzKG91dGVyTm9kZSk7XG5cbiAgICAgIGlmIChvdXRlck5vZGVzSW5jbHVkZXNPdXRlck5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NlbmRhbnROb2Rlcyhub2Rlcykge1xuICBjb25zdCBkZXNjZW5kYW50Tm9kZXMgPSBub2RlczsgIC8vL1xuXG4gIGRlc2NlbmRhbnROb2Rlcy5mb3JFYWNoKChkZXNjZW5kYW50Tm9kZSkgPT4ge1xuICAgIGRlc2NlbmRhbnROb2RlLmdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlUGFyZW50Tm9kZShwYXJlbnRPdXRlck5vZGUsIHRvcG1vc3ROb2RlKSB7XG4gIGNvbnN0IG91dGVyTm9kZSA9IHBhcmVudE91dGVyTm9kZSwgIC8vL1xuICAgICAgICBub2RlID0gcmV0cmlldmVOb2RlKG91dGVyTm9kZSwgdG9wbW9zdE5vZGUpLFxuICAgICAgICBwYXJlbnROb2RlID0gKG5vZGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA6ICAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICB0b3Btb3N0Tm9kZTsgLy8vXG5cbiAgcmV0dXJuIHBhcmVudE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kU2libGluZ05vZGVJbmRleChzdGFydE91dGVySW5kZXgsIHBhcmVudE91dGVyTm9kZSwgcGFyZW50Tm9kZSkge1xuICBsZXQgc2libGluZ05vZGVJbmRleCA9IC0xO1xuXG4gIGlmIChwYXJlbnRPdXRlck5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gcGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgb3V0ZXJDaGlsZE5vZGVzID0gcGFyZW50T3V0ZXJOb2RlLmdldENoaWxkTm9kZXMoKSwgIC8vL1xuICAgICAgICAgIG91dGVyQ2hpbGROb2Rlc0xlbmd0aCA9IG91dGVyQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAob3V0ZXJDaGlsZE5vZGVzTGVuZ3RoID09PSBzdGFydE91dGVySW5kZXgpIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgICAgc2libGluZ05vZGVJbmRleCA9IGNoaWxkTm9kZXNMZW5ndGggLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGFydE91dGVyQ2hpbGROb2RlID0gb3V0ZXJDaGlsZE5vZGVzW3N0YXJ0T3V0ZXJJbmRleF07XG5cbiAgICAgIHNpYmxpbmdOb2RlSW5kZXggPSBiYWNrd2FyZHNGaW5kSW5kZXgoY2hpbGROb2RlcywgKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBvdXRlck5vZGUgPSBjaGlsZE5vZGUuZ2V0T3V0ZXJOb2RlKCksXG4gICAgICAgICAgICAgIG91dGVyTm9kZUxlc3NUaGFuU3RhcnRPdXRlckNoaWxkTm9kZSA9IGlzTGVzc1RoYW4ob3V0ZXJOb2RlLCBzdGFydE91dGVyQ2hpbGROb2RlKTtcblxuICAgICAgICBpZiAob3V0ZXJOb2RlTGVzc1RoYW5TdGFydE91dGVyQ2hpbGROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzaWJsaW5nTm9kZUluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkZWROb2Rlc0Zyb21BZGRlZE91dGVyTm9kZXMoYWRkZWRPdXRlck5vZGVzLCBxdWVyaWVzLCBDbGFzc0Zyb21PdXRlck5vZGUsIG91dGVyTm9kZUZyb21DaGlsZE91dGVyTm9kZXMpIHtcbiAgbGV0IGFkZGVkTm9kZXM7XG5cbiAgY29uc3QgY2hpbGRPdXRlck5vZGVzID0gYWRkZWRPdXRlck5vZGVzLCAgLy8vXG4gICAgICAgIHBhcmVudE91dGVyTm9kZSA9IHBhcmVudE91dGVyTm9kZUZyb21DaGlsZE91dGVyTm9kZXMoY2hpbGRPdXRlck5vZGVzKSxcbiAgICAgICAgb3V0ZXJOb2RlID0gb3V0ZXJOb2RlRnJvbUNoaWxkT3V0ZXJOb2RlcyhjaGlsZE91dGVyTm9kZXMpLFxuICAgICAgICB0b3Btb3N0Tm9kZSA9IHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZUFuZFF1ZXJpZXMob3V0ZXJOb2RlLCBxdWVyaWVzLCBDbGFzc0Zyb21PdXRlck5vZGUpLFxuICAgICAgICByZW1vdmVkQ2hpbGROb2RlcyA9IHRvcG1vc3ROb2RlLnJlbW92ZUNoaWxkTm9kZXMoKTtcblxuICBhZGRlZE5vZGVzID0gcmVtb3ZlZENoaWxkTm9kZXM7ICAvLy9cblxuICBzZXRDaGlsZE91dGVyTm9kZXNQYXJlbnRPdXRlck5vZGUoY2hpbGRPdXRlck5vZGVzLCBwYXJlbnRPdXRlck5vZGUpO1xuXG4gIHJldHVybiBhZGRlZE5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlZE5vZGVzRnJvbVJlbW92ZWRPdXRlck5vZGVzKHJlbW92ZWRPdXRlck5vZGVzLCBxdWVyaWVzLCBDbGFzc0Zyb21PdXRlck5vZGUsIG91dGVyTm9kZUZyb21DaGlsZE91dGVyTm9kZXMpIHtcbiAgbGV0IHJlbW92ZWROb2RlcztcblxuICBjb25zdCBjaGlsZE91dGVyTm9kZXMgPSByZW1vdmVkT3V0ZXJOb2RlcywgIC8vL1xuICAgICAgICBvdXRlck5vZGUgPSBvdXRlck5vZGVGcm9tQ2hpbGRPdXRlck5vZGVzKGNoaWxkT3V0ZXJOb2RlcyksXG4gICAgICAgIHRvcG1vc3ROb2RlID0gdG9wbW9zdE5vZGVGcm9tT3V0ZXJOb2RlQW5kUXVlcmllcyhvdXRlck5vZGUsIHF1ZXJpZXMsIENsYXNzRnJvbU91dGVyTm9kZSksXG4gICAgICAgIHJlbW92ZWRDaGlsZE5vZGVzID0gdG9wbW9zdE5vZGUucmVtb3ZlQ2hpbGROb2RlcygpO1xuXG4gIHJlbW92ZWROb2RlcyA9IHJlbW92ZWRDaGlsZE5vZGVzOyAvLy9cblxuICByZXNldENoaWxkT3V0ZXJOb2Rlc1BhcmVudE91dGVyTm9kZShjaGlsZE91dGVyTm9kZXMpO1xuXG4gIHJldHVybiByZW1vdmVkTm9kZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmV0cmlldmVOb2RlLFxuICBnZXREZXNjZW5kYW50Tm9kZXMsXG4gIHJldHJpZXZlUGFyZW50Tm9kZSxcbiAgZmluZFNpYmxpbmdOb2RlSW5kZXgsXG4gIGFkZGVkTm9kZXNGcm9tQWRkZWRPdXRlck5vZGVzLFxuICByZW1vdmVkTm9kZXNGcm9tUmVtb3ZlZE91dGVyTm9kZXNcbn07XG5cbmZ1bmN0aW9uIHJlc2V0Q2hpbGRPdXRlck5vZGVzUGFyZW50T3V0ZXJOb2RlKGNoaWxkT3V0ZXJOb2Rlcykge1xuICBjb25zdCBwYXJlbnROb2RlID0gbnVsbDtcblxuICBjaGlsZE91dGVyTm9kZXMuZm9yRWFjaCgoY2hpbGRPdXRlck5vZGUpID0+IHtcbiAgICBjaGlsZE91dGVyTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0Q2hpbGRPdXRlck5vZGVzUGFyZW50T3V0ZXJOb2RlKGNoaWxkT3V0ZXJOb2RlcywgcGFyZW50T3V0ZXJOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBwYXJlbnRPdXRlck5vZGU7ICAvLy9cblxuICBjaGlsZE91dGVyTm9kZXMuZm9yRWFjaCgoY2hpbGRPdXRlck5vZGUpID0+IHtcbiAgICBjaGlsZE91dGVyTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyZW50T3V0ZXJOb2RlRnJvbUNoaWxkT3V0ZXJOb2RlcyhjaGlsZE91dGVyTm9kZXMpIHtcbiAgbGV0IHBhcmVudE91dGVyTm9kZSA9IG51bGw7ICAvLy9cblxuICBjb25zdCBjaGlsZE91dGVyTm9kZXNMZW5ndGggPSBjaGlsZE91dGVyTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjaGlsZE91dGVyTm9kZXNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE91dGVyTm9kZSA9IGZpcnN0KGNoaWxkT3V0ZXJOb2Rlcyk7XG5cbiAgICBwYXJlbnRPdXRlck5vZGUgPSBmaXJzdENoaWxkT3V0ZXJOb2RlLmdldFBhcmVudE5vZGUoKTtcbiAgfVxuXG4gIHJldHVybiBwYXJlbnRPdXRlck5vZGU7XG59XG4iXSwibmFtZXMiOlsiYWRkZWROb2Rlc0Zyb21BZGRlZE91dGVyTm9kZXMiLCJmaW5kU2libGluZ05vZGVJbmRleCIsImdldERlc2NlbmRhbnROb2RlcyIsInJlbW92ZWROb2Rlc0Zyb21SZW1vdmVkT3V0ZXJOb2RlcyIsInJldHJpZXZlTm9kZSIsInJldHJpZXZlUGFyZW50Tm9kZSIsImZpcnN0IiwiYmFja3dhcmRzRmluZEluZGV4IiwiYXJyYXlVdGlsaXRpZXMiLCJvdXRlck5vZGUiLCJ0b3Btb3N0Tm9kZSIsIm5vZGUiLCJhbmNlc3Rvck5vZGVzIiwiZ2V0QW5jZXN0b3JOb2RlcyIsIm91dGVyTm9kZXMiLCJnZXRPdXRlck5vZGUiLCJvdXRlck5vZGVzSW5jbHVkZXNPdXRlck5vZGUiLCJpbmNsdWRlcyIsIm5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZm9yRWFjaCIsImRlc2NlbmRhbnROb2RlIiwicGFyZW50T3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsInN0YXJ0T3V0ZXJJbmRleCIsInNpYmxpbmdOb2RlSW5kZXgiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsIm91dGVyQ2hpbGROb2RlcyIsIm91dGVyQ2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsImNoaWxkTm9kZXNMZW5ndGgiLCJzdGFydE91dGVyQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwib3V0ZXJOb2RlTGVzc1RoYW5TdGFydE91dGVyQ2hpbGROb2RlIiwiaXNMZXNzVGhhbiIsImFkZGVkT3V0ZXJOb2RlcyIsInF1ZXJpZXMiLCJDbGFzc0Zyb21PdXRlck5vZGUiLCJvdXRlck5vZGVGcm9tQ2hpbGRPdXRlck5vZGVzIiwiYWRkZWROb2RlcyIsImNoaWxkT3V0ZXJOb2RlcyIsInBhcmVudE91dGVyTm9kZUZyb21DaGlsZE91dGVyTm9kZXMiLCJ0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVBbmRRdWVyaWVzIiwicmVtb3ZlZENoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZE5vZGVzIiwic2V0Q2hpbGRPdXRlck5vZGVzUGFyZW50T3V0ZXJOb2RlIiwicmVtb3ZlZE91dGVyTm9kZXMiLCJyZW1vdmVkTm9kZXMiLCJyZXNldENoaWxkT3V0ZXJOb2Rlc1BhcmVudE91dGVyTm9kZSIsImNoaWxkT3V0ZXJOb2RlIiwic2V0UGFyZW50Tm9kZSIsImNoaWxkT3V0ZXJOb2Rlc0xlbmd0aCIsImZpcnN0Q2hpbGRPdXRlck5vZGUiLCJnZXRQYXJlbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpRmdCQTtlQUFBQTs7UUErQmhCO2VBQUE7O1FBNURnQkM7ZUFBQUE7O1FBbEJBQztlQUFBQTs7UUErREFDO2VBQUFBOztRQXhGQUM7ZUFBQUE7O1FBaUNBQztlQUFBQTs7OzJCQXhDZTtzQkFFSjtxQkFDd0I7QUFFbkQsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLGtCQUFrQixFQUFFLEdBQUdDLHlCQUFjO0FBRTdDLFNBQVNKLGFBQWFLLFNBQVMsRUFBRUMsV0FBVztJQUNqRCxJQUFJQztJQUVKLElBQUlGLGNBQWMsTUFBTTtRQUN0QkUsT0FBT0QsYUFBYSxHQUFHO0lBQ3pCLE9BQU87UUFDTCxNQUFNRSxnQkFBZ0JILFVBQVVJLGdCQUFnQixJQUMxQ0MsYUFBYTtZQUNYTDtlQUNHRztTQUNKO1FBRVBELE9BQU9ELFlBQVlOLFlBQVksQ0FBQyxDQUFDTztZQUMvQixNQUFNRixZQUFZRSxLQUFLSSxZQUFZLElBQzdCQyw4QkFBOEJGLFdBQVdHLFFBQVEsQ0FBQ1I7WUFFeEQsSUFBSU8sNkJBQTZCO2dCQUMvQixPQUFPO1lBQ1Q7UUFDRjtJQUNGO0lBRUEsT0FBT0w7QUFDVDtBQUVPLFNBQVNULG1CQUFtQmdCLEtBQUs7SUFDdEMsTUFBTUMsa0JBQWtCRCxPQUFRLEdBQUc7SUFFbkNDLGdCQUFnQkMsT0FBTyxDQUFDLENBQUNDO1FBQ3ZCQSxlQUFlbkIsa0JBQWtCLENBQUNpQjtJQUNwQztBQUNGO0FBRU8sU0FBU2QsbUJBQW1CaUIs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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": "6.1.2",
4
+ "version": "6.1.4",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-dom",
7
7
  "description": "Occam's DOM related functionality.",
package/src/index.js CHANGED
@@ -6,3 +6,4 @@ export { default as domUtilities } from "./utilities/dom";
6
6
  export { default as nodeUtilities } from "./utilities/node";
7
7
  export { default as queryUtilities } from "./utilities/query";
8
8
  export { default as transformUtilities } from "./utilities/transform";
9
+ export { default as incrementalUtilities } from "./utilities/incremental";
package/src/node.js CHANGED
@@ -42,6 +42,48 @@ export default class Node {
42
42
  this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
43
43
  }
44
44
 
45
+ getDescendantNodes(descendantNodes = []) {
46
+ const childNodes = this.getChildNodes();
47
+
48
+ childNodes.forEach((childNode) => {
49
+ const descendantNode = childNode; ///
50
+
51
+ descendantNodes.push(descendantNode);
52
+
53
+ childNode.getDescendantNodes(descendantNodes);
54
+ });
55
+
56
+ return descendantNodes;
57
+ }
58
+
59
+ retrieveNode(callback) {
60
+ let node = null;
61
+
62
+ if (node === null) {
63
+ const childNodes = this.getChildNodes();
64
+
65
+ childNodes.some((childNode) => {
66
+ node = childNode.retrieveNode(callback);
67
+
68
+ if (node !== null) {
69
+ return true;
70
+ }
71
+ });
72
+ }
73
+
74
+ if (node === null) {
75
+ node = this;
76
+
77
+ const result = callback(node);
78
+
79
+ if (!result) {
80
+ node = null;
81
+ }
82
+ }
83
+
84
+ return node;
85
+ }
86
+
45
87
  isLessThan(node) {
46
88
  const nodeA = this, ///
47
89
  nodeB = node, ///
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ import { arrayUtilities } from "necessary";
4
+
5
+ import { isLessThan } from "../utilities/node";
6
+ import { topmostNodeFromOuterNodeAndQueries } from "../utilities/dom";
7
+
8
+ const { first, backwardsFindIndex } = arrayUtilities;
9
+
10
+ export function retrieveNode(outerNode, topmostNode) {
11
+ let node;
12
+
13
+ if (outerNode === null) {
14
+ node = topmostNode; ///
15
+ } else {
16
+ const ancestorNodes = outerNode.getAncestorNodes(),
17
+ outerNodes = [
18
+ outerNode,
19
+ ...ancestorNodes
20
+ ];
21
+
22
+ node = topmostNode.retrieveNode((node) => {
23
+ const outerNode = node.getOuterNode(),
24
+ outerNodesIncludesOuterNode = outerNodes.includes(outerNode);
25
+
26
+ if (outerNodesIncludesOuterNode) {
27
+ return true;
28
+ }
29
+ });
30
+ }
31
+
32
+ return node;
33
+ }
34
+
35
+ export function getDescendantNodes(nodes) {
36
+ const descendantNodes = nodes; ///
37
+
38
+ descendantNodes.forEach((descendantNode) => {
39
+ descendantNode.getDescendantNodes(descendantNodes);
40
+ });
41
+ }
42
+
43
+ export function retrieveParentNode(parentOuterNode, topmostNode) {
44
+ const outerNode = parentOuterNode, ///
45
+ node = retrieveNode(outerNode, topmostNode),
46
+ parentNode = (node !== null) ?
47
+ node : ///
48
+ topmostNode; ///
49
+
50
+ return parentNode;
51
+ }
52
+
53
+ export function findSiblingNodeIndex(startOuterIndex, parentOuterNode, parentNode) {
54
+ let siblingNodeIndex = -1;
55
+
56
+ if (parentOuterNode !== null) {
57
+ const childNodes = parentNode.getChildNodes(),
58
+ outerChildNodes = parentOuterNode.getChildNodes(), ///
59
+ outerChildNodesLength = outerChildNodes.length;
60
+
61
+ if (outerChildNodesLength === startOuterIndex) {
62
+ const childNodesLength = childNodes.length;
63
+
64
+ siblingNodeIndex = childNodesLength - 1;
65
+ } else {
66
+ const startOuterChildNode = outerChildNodes[startOuterIndex];
67
+
68
+ siblingNodeIndex = backwardsFindIndex(childNodes, (childNode) => {
69
+ const outerNode = childNode.getOuterNode(),
70
+ outerNodeLessThanStartOuterChildNode = isLessThan(outerNode, startOuterChildNode);
71
+
72
+ if (outerNodeLessThanStartOuterChildNode) {
73
+ return true;
74
+ }
75
+ });
76
+ }
77
+ }
78
+
79
+ return siblingNodeIndex;
80
+ }
81
+
82
+ export function addedNodesFromAddedOuterNodes(addedOuterNodes, queries, ClassFromOuterNode, outerNodeFromChildOuterNodes) {
83
+ let addedNodes;
84
+
85
+ const childOuterNodes = addedOuterNodes, ///
86
+ parentOuterNode = parentOuterNodeFromChildOuterNodes(childOuterNodes),
87
+ outerNode = outerNodeFromChildOuterNodes(childOuterNodes),
88
+ topmostNode = topmostNodeFromOuterNodeAndQueries(outerNode, queries, ClassFromOuterNode),
89
+ removedChildNodes = topmostNode.removeChildNodes();
90
+
91
+ addedNodes = removedChildNodes; ///
92
+
93
+ setChildOuterNodesParentOuterNode(childOuterNodes, parentOuterNode);
94
+
95
+ return addedNodes;
96
+ }
97
+
98
+ export function removedNodesFromRemovedOuterNodes(removedOuterNodes, queries, ClassFromOuterNode, outerNodeFromChildOuterNodes) {
99
+ let removedNodes;
100
+
101
+ const childOuterNodes = removedOuterNodes, ///
102
+ outerNode = outerNodeFromChildOuterNodes(childOuterNodes),
103
+ topmostNode = topmostNodeFromOuterNodeAndQueries(outerNode, queries, ClassFromOuterNode),
104
+ removedChildNodes = topmostNode.removeChildNodes();
105
+
106
+ removedNodes = removedChildNodes; ///
107
+
108
+ resetChildOuterNodesParentOuterNode(childOuterNodes);
109
+
110
+ return removedNodes;
111
+ }
112
+
113
+ export default {
114
+ retrieveNode,
115
+ getDescendantNodes,
116
+ retrieveParentNode,
117
+ findSiblingNodeIndex,
118
+ addedNodesFromAddedOuterNodes,
119
+ removedNodesFromRemovedOuterNodes
120
+ };
121
+
122
+ function resetChildOuterNodesParentOuterNode(childOuterNodes) {
123
+ const parentNode = null;
124
+
125
+ childOuterNodes.forEach((childOuterNode) => {
126
+ childOuterNode.setParentNode(parentNode);
127
+ });
128
+ }
129
+
130
+ function setChildOuterNodesParentOuterNode(childOuterNodes, parentOuterNode) {
131
+ const parentNode = parentOuterNode; ///
132
+
133
+ childOuterNodes.forEach((childOuterNode) => {
134
+ childOuterNode.setParentNode(parentNode);
135
+ });
136
+ }
137
+
138
+ function parentOuterNodeFromChildOuterNodes(childOuterNodes) {
139
+ let parentOuterNode = null; ///
140
+
141
+ const childOuterNodesLength = childOuterNodes.length;
142
+
143
+ if (childOuterNodesLength > 0) {
144
+ const firstChildOuterNode = first(childOuterNodes);
145
+
146
+ parentOuterNode = firstChildOuterNode.getParentNode();
147
+ }
148
+
149
+ return parentOuterNode;
150
+ }