occam-dom 6.0.2 → 6.1.0
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 +5 -1
- package/lib/utilities/dom.js +15 -2
- package/lib/utilities/query.js +64 -0
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/utilities/dom.js +18 -1
- package/src/utilities/query.js +55 -0
package/lib/index.js
CHANGED
|
@@ -21,6 +21,9 @@ _export(exports, {
|
|
|
21
21
|
get nodeUtilities () {
|
|
22
22
|
return _node1.default;
|
|
23
23
|
},
|
|
24
|
+
get queryUtilities () {
|
|
25
|
+
return _query.default;
|
|
26
|
+
},
|
|
24
27
|
get transformUtilities () {
|
|
25
28
|
return _transform1.default;
|
|
26
29
|
}
|
|
@@ -29,6 +32,7 @@ const _node = /*#__PURE__*/ _interop_require_default(require("./node"));
|
|
|
29
32
|
const _transform = /*#__PURE__*/ _interop_require_default(require("./transform"));
|
|
30
33
|
const _dom = /*#__PURE__*/ _interop_require_default(require("./utilities/dom"));
|
|
31
34
|
const _node1 = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
|
|
35
|
+
const _query = /*#__PURE__*/ _interop_require_default(require("./utilities/query"));
|
|
32
36
|
const _transform1 = /*#__PURE__*/ _interop_require_default(require("./utilities/transform"));
|
|
33
37
|
function _interop_require_default(obj) {
|
|
34
38
|
return obj && obj.__esModule ? obj : {
|
|
@@ -36,4 +40,4 @@ function _interop_require_default(obj) {
|
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb2RlIH0gZnJvbSBcIi4vbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUcmFuc2Zvcm0gfSBmcm9tIFwiLi90cmFuc2Zvcm1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9tVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2RvbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3RyYW5zZm9ybVwiO1xuIl0sIm5hbWVzIjpbIk5vZGUiLCJUcmFuc2Zvcm0iLCJkb21VdGlsaXRpZXMiLCJub2RlVXRpbGl0aWVzIiwicXVlcnlVdGlsaXRpZXMiLCJ0cmFuc2Zvcm1VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUVvQkE7ZUFBQUEsYUFBSTs7UUFDSkM7ZUFBQUEsa0JBQVM7O1FBQ1RDO2VBQUFBLFlBQVk7O1FBQ1pDO2VBQUFBLGNBQWE7O1FBQ2JDO2VBQUFBLGNBQWM7O1FBQ2RDO2VBQUFBLG1CQUFrQjs7OzZEQUxOO2tFQUNLOzREQUNHOzhEQUNDOzhEQUNDO21FQUNJIn0=
|
package/lib/utilities/dom.js
CHANGED
|
@@ -12,12 +12,16 @@ _export(exports, {
|
|
|
12
12
|
get default () {
|
|
13
13
|
return _default;
|
|
14
14
|
},
|
|
15
|
+
get topmostNodeFromOuterNodeAndQueries () {
|
|
16
|
+
return topmostNodeFromOuterNodeAndQueries;
|
|
17
|
+
},
|
|
15
18
|
get topmostNodeFromOuterNodes () {
|
|
16
19
|
return topmostNodeFromOuterNodes;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
19
22
|
const _node = /*#__PURE__*/ _interop_require_default(require("../node"));
|
|
20
23
|
const _node1 = require("../utilities/node");
|
|
24
|
+
const _query = require("../utilities/query");
|
|
21
25
|
function _interop_require_default(obj) {
|
|
22
26
|
return obj && obj.__esModule ? obj : {
|
|
23
27
|
default: obj
|
|
@@ -42,12 +46,21 @@ function topmostNodeFromOuterNodes(outerNodes, ClassFromOuterNode = DefaultClass
|
|
|
42
46
|
});
|
|
43
47
|
return topmostNode;
|
|
44
48
|
}
|
|
49
|
+
function topmostNodeFromOuterNodeAndQueries(outerNode, queries, ClassFromOuterNode = DefaultClassFromOuterNode) {
|
|
50
|
+
let topmostNode = null;
|
|
51
|
+
if (outerNode !== null) {
|
|
52
|
+
const node = outerNode, nodes = (0, _query.nodesFromNodeAndQueries)(node, queries), outerNodes = nodes; ///
|
|
53
|
+
topmostNode = topmostNodeFromOuterNodes(outerNodes, ClassFromOuterNode);
|
|
54
|
+
}
|
|
55
|
+
return topmostNode;
|
|
56
|
+
}
|
|
45
57
|
const _default = {
|
|
46
|
-
topmostNodeFromOuterNodes
|
|
58
|
+
topmostNodeFromOuterNodes,
|
|
59
|
+
topmostNodeFromOuterNodeAndQueries
|
|
47
60
|
};
|
|
48
61
|
function DefaultClassFromOuterNode(outerNode) {
|
|
49
62
|
const Class = _node.default; ///
|
|
50
63
|
return Class;
|
|
51
64
|
}
|
|
52
65
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZG9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTm9kZSBmcm9tIFwiLi4vbm9kZVwiO1xuXG5pbXBvcnQgeyBvcmRlck5vZGVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmltcG9ydCB7IG5vZGVzRnJvbU5vZGVBbmRRdWVyaWVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9wbW9zdE5vZGVGcm9tT3V0ZXJOb2RlcyhvdXRlck5vZGVzLCBDbGFzc0Zyb21PdXRlck5vZGUgPSBEZWZhdWx0Q2xhc3NGcm9tT3V0ZXJOb2RlKSB7XG4gIGNvbnN0IG5vZGVzID0gb3V0ZXJOb2RlczsgLy8vXG5cbiAgb3JkZXJOb2Rlcyhub2Rlcyk7XG5cbiAgY29uc3Qgb3V0ZXJOb2RlID0gbnVsbCxcbiAgICAgICAgQ2xhc3MgPSBDbGFzc0Zyb21PdXRlck5vZGUob3V0ZXJOb2RlKSxcbiAgICAgICAgdG9wbW9zdE5vZGUgPSBDbGFzcy5mcm9tTm90aGluZygpLFxuICAgICAgICBvdXRlck5vZGVUb05vZGVNYXAgPSBuZXcgV2Vha01hcCgpO1xuXG4gIG91dGVyTm9kZXMuZm9yRWFjaCgob3V0ZXJOb2RlKSA9PiB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0b3Btb3N0Tm9kZTsgLy8vXG5cbiAgICBvdXRlck5vZGUuc29tZUFuY2VzdG9yTm9kZSgoYW5jZXN0b3JOb2RlKSA9PiB7XG4gICAgICBjb25zdCBvdXRlck5vZGUgPSBhbmNlc3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgbm9kZSA9IG91dGVyTm9kZVRvTm9kZU1hcC5nZXQob3V0ZXJOb2RlKSB8fCBudWxsO1xuXG4gICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBwYXJlbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgQ2xhc3MgPSBDbGFzc0Zyb21PdXRlck5vZGUob3V0ZXJOb2RlKSxcbiAgICAgICAgICBub2RlID0gQ2xhc3MuZnJvbU91dGVyTm9kZShvdXRlck5vZGUpLFxuICAgICAgICAgIGFwcGVuZGVkQ2hpbGROb2RlID0gbm9kZTsgLy8vXG5cbiAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkTm9kZShhcHBlbmRlZENoaWxkTm9kZSk7XG5cbiAgICBvdXRlck5vZGVUb05vZGVNYXAuc2V0KG91dGVyTm9kZSwgbm9kZSk7XG4gIH0pO1xuXG4gIHJldHVybiB0b3Btb3N0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZUFuZFF1ZXJpZXMob3V0ZXJOb2RlLCBxdWVyaWVzLCBDbGFzc0Zyb21PdXRlck5vZGUgPSBEZWZhdWx0Q2xhc3NGcm9tT3V0ZXJOb2RlKSB7XG4gIGxldCB0b3Btb3N0Tm9kZSA9IG51bGw7XG5cbiAgaWYgKG91dGVyTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG5vZGUgPSBvdXRlck5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVzID0gbm9kZXNGcm9tTm9kZUFuZFF1ZXJpZXMobm9kZSwgcXVlcmllcyksXG4gICAgICAgICAgb3V0ZXJOb2RlcyA9IG5vZGVzOyAvLy9cblxuICAgIHRvcG1vc3ROb2RlID0gdG9wbW9zdE5vZGVGcm9tT3V0ZXJOb2RlcyhvdXRlck5vZGVzLCBDbGFzc0Zyb21PdXRlck5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRvcG1vc3ROb2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXMsXG4gIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZUFuZFF1ZXJpZXNcbn07XG5cbmZ1bmN0aW9uIERlZmF1bHRDbGFzc0Zyb21PdXRlck5vZGUob3V0ZXJOb2RlKSB7XG4gIGNvbnN0IENsYXNzID0gTm9kZTsgLy8vXG5cbiAgcmV0dXJuIENsYXNzO1xufSJdLCJuYW1lcyI6WyJ0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVBbmRRdWVyaWVzIiwidG9wbW9zdE5vZGVGcm9tT3V0ZXJOb2RlcyIsIm91dGVyTm9kZXMiLCJDbGFzc0Zyb21PdXRlck5vZGUiLCJEZWZhdWx0Q2xhc3NGcm9tT3V0ZXJOb2RlIiwibm9kZXMiLCJvcmRlck5vZGVzIiwib3V0ZXJOb2RlIiwiQ2xhc3MiLCJ0b3Btb3N0Tm9kZSIsImZyb21Ob3RoaW5nIiwib3V0ZXJOb2RlVG9Ob2RlTWFwIiwiV2Vha01hcCIsImZvckVhY2giLCJwYXJlbnROb2RlIiwic29tZUFuY2VzdG9yTm9kZSIsImFuY2VzdG9yTm9kZSIsIm5vZGUiLCJnZXQiLCJmcm9tT3V0ZXJOb2RlIiwiYXBwZW5kZWRDaGlsZE5vZGUiLCJhcHBlbmRDaGlsZE5vZGUiLCJzZXQiLCJxdWVyaWVzIiwibm9kZXNGcm9tTm9kZUFuZFF1ZXJpZXMiLCJOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEwREE7ZUFBQTs7UUFkZ0JBO2VBQUFBOztRQXBDQUM7ZUFBQUE7Ozs2REFOQzt1QkFFVTt1QkFFYTs7Ozs7O0FBRWpDLFNBQVNBLDBCQUEwQkMsVUFBVSxFQUFFQyxxQkFBcUJDLHlCQUF5QjtJQUNsRyxNQUFNQyxRQUFRSCxZQUFZLEdBQUc7SUFFN0JJLElBQUFBLGlCQUFVLEVBQUNEO0lBRVgsTUFBTUUsWUFBWSxNQUNaQyxRQUFRTCxtQkFBbUJJLFlBQzNCRSxjQUFjRCxNQUFNRSxXQUFXLElBQy9CQyxxQkFBcUIsSUFBSUM7SUFFL0JWLFdBQVdXLE9BQU8sQ0FBQyxDQUFDTjtRQUNsQixJQUFJTyxhQUFhTCxhQUFhLEdBQUc7UUFFakNGLFVBQVVRLGdCQUFnQixDQUFDLENBQUNDO1lBQzFCLE1BQU1ULFlBQVlTLGNBQ1pDLE9BQU9OLG1CQUFtQk8sR0FBRyxDQUFDWCxjQUFjO1lBRWxELElBQUlVLFNBQVMsTUFBTTtnQkFDakJILGFBQWFHLE1BQU8sR0FBRztnQkFFdkIsT0FBTztZQUNUO1FBQ0Y7UUFFQSxNQUFNVCxRQUFRTCxtQkFBbUJJLFlBQzNCVSxPQUFPVCxNQUFNVyxhQUFhLENBQUNaLFlBQzNCYSxvQkFBb0JILE1BQU0sR0FBRztRQUVuQ0gsV0FBV08sZUFBZSxDQUFDRDtRQUUzQlQsbUJBQW1CVyxHQUFHLENBQUNmLFdBQVdVO0lBQ3BDO0lBRUEsT0FBT1I7QUFDVDtBQUVPLFNBQVNULG1DQUFtQ08sU0FBUyxFQUFFZ0IsT0FBTyxFQUFFcEIscUJBQXFCQyx5QkFBeUI7SUFDbkgsSUFBSUssY0FBYztJQUVsQixJQUFJRixjQUFjLE1BQU07UUFDdEIsTUFBTVUsT0FBT1YsV0FDUEYsUUFBUW1CLElBQUFBLDhCQUF1QixFQUFDUCxNQUFNTSxVQUN0Q3JCLGFBQWFHLE9BQU8sR0FBRztRQUU3QkksY0FBY1IsMEJBQTBCQyxZQUFZQztJQUN0RDtJQUVBLE9BQU9NO0FBQ1Q7TUFFQSxXQUFlO0lBQ2JSO0lBQ0FEO0FBQ0Y7QUFFQSxTQUFTSSwwQkFBMEJHLFNBQVM7SUFDMUMsTUFBTUMsUUFBUWlCLGFBQUksRUFBRSxHQUFHO0lBRXZCLE9BQU9qQjtBQUNUIn0=
|
|
@@ -0,0 +1,64 @@
|
|
|
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 nodeFromNodeAndQuery () {
|
|
13
|
+
return nodeFromNodeAndQuery;
|
|
14
|
+
},
|
|
15
|
+
get nodeQuery () {
|
|
16
|
+
return nodeQuery;
|
|
17
|
+
},
|
|
18
|
+
get nodesFromNodeAndQueries () {
|
|
19
|
+
return nodesFromNodeAndQueries;
|
|
20
|
+
},
|
|
21
|
+
get nodesFromNodeAndQuery () {
|
|
22
|
+
return nodesFromNodeAndQuery;
|
|
23
|
+
},
|
|
24
|
+
get nodesQuery () {
|
|
25
|
+
return nodesQuery;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const _occamquery = require("occam-query");
|
|
29
|
+
const _necessary = require("necessary");
|
|
30
|
+
const { push } = _necessary.arrayUtilities;
|
|
31
|
+
function nodeQuery(expression) {
|
|
32
|
+
const query = _occamquery.Query.fromExpressionString(expression);
|
|
33
|
+
return function(node) {
|
|
34
|
+
const nodes = query.execute(node);
|
|
35
|
+
node = nodes.shift() || null; ///
|
|
36
|
+
return node;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function nodesQuery(expression) {
|
|
40
|
+
const query = _occamquery.Query.fromExpressionString(expression);
|
|
41
|
+
return function(node) {
|
|
42
|
+
const nodes = query.execute(node);
|
|
43
|
+
return nodes;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function nodeFromNodeAndQuery(node, query) {
|
|
47
|
+
const queryNodes = query.execute(node), queryNode = queryNodes.shift() || null;
|
|
48
|
+
node = queryNode; ///
|
|
49
|
+
return node;
|
|
50
|
+
}
|
|
51
|
+
function nodesFromNodeAndQuery(node, query, nodes = []) {
|
|
52
|
+
const queryNodes = query.execute(node);
|
|
53
|
+
push(nodes, queryNodes);
|
|
54
|
+
return nodes;
|
|
55
|
+
}
|
|
56
|
+
function nodesFromNodeAndQueries(node, queries, nodes = []) {
|
|
57
|
+
queries.forEach((query)=>{
|
|
58
|
+
const queryNodes = query.execute(node);
|
|
59
|
+
push(nodes, queryNodes);
|
|
60
|
+
});
|
|
61
|
+
return nodes;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBwdXNoIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeShleHByZXNzaW9uKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb25TdHJpbmcoZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBjb25zdCBub2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSk7XG5cbiAgICBub2RlID0gbm9kZXMuc2hpZnQoKSB8fCBudWxsOyAvLy9cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc1F1ZXJ5KGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uKTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGNvbnN0IG5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZUZyb21Ob2RlQW5kUXVlcnkobm9kZSwgcXVlcnkpIHtcbiAgY29uc3QgcXVlcnlOb2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSksXG4gICAgICAgIHF1ZXJ5Tm9kZSA9IHF1ZXJ5Tm9kZXMuc2hpZnQoKSB8fCBudWxsO1xuXG4gIG5vZGUgPSBxdWVyeU5vZGU7ICAvLy9cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBxdWVyeSwgbm9kZXMgPSBbXSkge1xuICBjb25zdCBxdWVyeU5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICBwdXNoKG5vZGVzLCBxdWVyeU5vZGVzKTtcblxuICByZXR1cm4gbm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0Zyb21Ob2RlQW5kUXVlcmllcyhub2RlLCBxdWVyaWVzLCBub2RlcyA9IFtdKSB7XG4gIHF1ZXJpZXMuZm9yRWFjaCgocXVlcnkpID0+IHtcbiAgICBjb25zdCBxdWVyeU5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICAgIHB1c2gobm9kZXMsIHF1ZXJ5Tm9kZXMpO1xuICB9KTtcblxuICByZXR1cm4gbm9kZXM7XG59XG4iXSwibmFtZXMiOlsibm9kZUZyb21Ob2RlQW5kUXVlcnkiLCJub2RlUXVlcnkiLCJub2Rlc0Zyb21Ob2RlQW5kUXVlcmllcyIsIm5vZGVzRnJvbU5vZGVBbmRRdWVyeSIsIm5vZGVzUXVlcnkiLCJwdXNoIiwiYXJyYXlVdGlsaXRpZXMiLCJleHByZXNzaW9uIiwicXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uU3RyaW5nIiwibm9kZSIsIm5vZGVzIiwiZXhlY3V0ZSIsInNoaWZ0IiwicXVlcnlOb2RlcyIsInF1ZXJ5Tm9kZSIsInF1ZXJpZXMiLCJmb3JFYWNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE2QmdCQTtlQUFBQTs7UUF0QkFDO2VBQUFBOztRQXVDQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOztRQW5CQUM7ZUFBQUE7Ozs0QkFqQk07MkJBQ1M7QUFFL0IsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MseUJBQWM7QUFFeEIsU0FBU0wsVUFBVU0sVUFBVTtJQUNsQyxNQUFNQyxRQUFRQyxpQkFBSyxDQUFDQyxvQkFBb0IsQ0FBQ0g7SUFFekMsT0FBTyxTQUFTSSxJQUFJO1FBQ2xCLE1BQU1DLFFBQVFKLE1BQU1LLE9BQU8sQ0FBQ0Y7UUFFNUJBLE9BQU9DLE1BQU1FLEtBQUssTUFBTSxNQUFNLEdBQUc7UUFFakMsT0FBT0g7SUFDVDtBQUNGO0FBRU8sU0FBU1AsV0FBV0csVUFBVTtJQUNuQyxNQUFNQyxRQUFRQyxpQkFBSyxDQUFDQyxvQkFBb0IsQ0FBQ0g7SUFFekMsT0FBTyxTQUFTSSxJQUFJO1FBQ2xCLE1BQU1DLFFBQVFKLE1BQU1LLE9BQU8sQ0FBQ0Y7UUFFNUIsT0FBT0M7SUFDVDtBQUNGO0FBRU8sU0FBU1oscUJBQXFCVyxJQUFJLEVBQUVILEtBQUs7SUFDOUMsTUFBTU8sYUFBYVAsTUFBTUssT0FBTyxDQUFDRixPQUMzQkssWUFBWUQsV0FBV0QsS0FBSyxNQUFNO0lBRXhDSCxPQUFPSyxXQUFZLEdBQUc7SUFFdEIsT0FBT0w7QUFDVDtBQUVPLFNBQVNSLHNCQUFzQlEsSUFBSSxFQUFFSCxLQUFLLEVBQUVJLFFBQVEsRUFBRTtJQUMzRCxNQUFNRyxhQUFhUCxNQUFNSyxPQUFPLENBQUNGO0lBRWpDTixLQUFLTyxPQUFPRztJQUVaLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTVix3QkFBd0JTLElBQUksRUFBRU0sT0FBTyxFQUFFTCxRQUFRLEVBQUU7SUFDL0RLLFFBQVFDLE9BQU8sQ0FBQyxDQUFDVjtRQUNmLE1BQU1PLGFBQWFQLE1BQU1LLE9BQU8sQ0FBQ0Y7UUFFakNOLEtBQUtPLE9BQU9HO0lBQ2Q7SUFFQSxPQUFPSDtBQUNUIn0=
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -4,4 +4,5 @@ export { default as Node } from "./node";
|
|
|
4
4
|
export { default as Transform } from "./transform";
|
|
5
5
|
export { default as domUtilities } from "./utilities/dom";
|
|
6
6
|
export { default as nodeUtilities } from "./utilities/node";
|
|
7
|
+
export { default as queryUtilities } from "./utilities/query";
|
|
7
8
|
export { default as transformUtilities } from "./utilities/transform";
|
package/src/utilities/dom.js
CHANGED
|
@@ -4,6 +4,8 @@ import Node from "../node";
|
|
|
4
4
|
|
|
5
5
|
import { orderNodes } from "../utilities/node";
|
|
6
6
|
|
|
7
|
+
import { nodesFromNodeAndQueries } from "../utilities/query";
|
|
8
|
+
|
|
7
9
|
export function topmostNodeFromOuterNodes(outerNodes, ClassFromOuterNode = DefaultClassFromOuterNode) {
|
|
8
10
|
const nodes = outerNodes; ///
|
|
9
11
|
|
|
@@ -40,8 +42,23 @@ export function topmostNodeFromOuterNodes(outerNodes, ClassFromOuterNode = Defau
|
|
|
40
42
|
return topmostNode;
|
|
41
43
|
}
|
|
42
44
|
|
|
45
|
+
export function topmostNodeFromOuterNodeAndQueries(outerNode, queries, ClassFromOuterNode = DefaultClassFromOuterNode) {
|
|
46
|
+
let topmostNode = null;
|
|
47
|
+
|
|
48
|
+
if (outerNode !== null) {
|
|
49
|
+
const node = outerNode, ///
|
|
50
|
+
nodes = nodesFromNodeAndQueries(node, queries),
|
|
51
|
+
outerNodes = nodes; ///
|
|
52
|
+
|
|
53
|
+
topmostNode = topmostNodeFromOuterNodes(outerNodes, ClassFromOuterNode);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return topmostNode;
|
|
57
|
+
}
|
|
58
|
+
|
|
43
59
|
export default {
|
|
44
|
-
topmostNodeFromOuterNodes
|
|
60
|
+
topmostNodeFromOuterNodes,
|
|
61
|
+
topmostNodeFromOuterNodeAndQueries
|
|
45
62
|
};
|
|
46
63
|
|
|
47
64
|
function DefaultClassFromOuterNode(outerNode) {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Query } from "occam-query";
|
|
4
|
+
import { arrayUtilities } from "necessary";
|
|
5
|
+
|
|
6
|
+
const { push } = arrayUtilities;
|
|
7
|
+
|
|
8
|
+
export function nodeQuery(expression) {
|
|
9
|
+
const query = Query.fromExpressionString(expression);
|
|
10
|
+
|
|
11
|
+
return function(node) {
|
|
12
|
+
const nodes = query.execute(node);
|
|
13
|
+
|
|
14
|
+
node = nodes.shift() || null; ///
|
|
15
|
+
|
|
16
|
+
return node;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function nodesQuery(expression) {
|
|
21
|
+
const query = Query.fromExpressionString(expression);
|
|
22
|
+
|
|
23
|
+
return function(node) {
|
|
24
|
+
const nodes = query.execute(node);
|
|
25
|
+
|
|
26
|
+
return nodes;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function nodeFromNodeAndQuery(node, query) {
|
|
31
|
+
const queryNodes = query.execute(node),
|
|
32
|
+
queryNode = queryNodes.shift() || null;
|
|
33
|
+
|
|
34
|
+
node = queryNode; ///
|
|
35
|
+
|
|
36
|
+
return node;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function nodesFromNodeAndQuery(node, query, nodes = []) {
|
|
40
|
+
const queryNodes = query.execute(node);
|
|
41
|
+
|
|
42
|
+
push(nodes, queryNodes);
|
|
43
|
+
|
|
44
|
+
return nodes;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function nodesFromNodeAndQueries(node, queries, nodes = []) {
|
|
48
|
+
queries.forEach((query) => {
|
|
49
|
+
const queryNodes = query.execute(node);
|
|
50
|
+
|
|
51
|
+
push(nodes, queryNodes);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return nodes;
|
|
55
|
+
}
|