occam-dom 5.0.0 → 5.0.3
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/example.js +1495 -1305
- package/lib/example/constants.js +22 -0
- package/lib/example/utilities/query.js +23 -0
- package/lib/example/view/div/sizeable.js +2 -2
- package/lib/example/view/textarea/expressions.js +143 -0
- package/lib/example/view/textarea/outerNodes.js +147 -0
- package/lib/example/view/{input/expressionString.js → textarea/parseTree/inner.js} +43 -28
- package/lib/{expression/parser.js → example/view/textarea/parseTree/outer.js} +20 -28
- package/lib/example/view/textarea/parseTree.js +1 -19
- package/lib/example/view.js +26 -20
- package/lib/index.js +7 -19
- package/lib/node.js +302 -0
- package/lib/parseTree/childNodes.js +164 -0
- package/lib/parseTree/horizontalBranch.js +120 -0
- package/lib/parseTree/node.js +145 -0
- package/lib/parseTree/string.js +109 -0
- package/lib/parseTree/verticalBranch.js +184 -0
- package/lib/parseTree.js +191 -0
- package/lib/utilities/node.js +56 -309
- package/package.json +5 -4
- package/src/example/constants.js +4 -0
- package/src/example/utilities/query.js +21 -0
- package/src/example/view/div/sizeable.js +1 -1
- package/src/example/view/textarea/expressions.js +39 -0
- package/src/example/view/textarea/outerNodes.js +48 -0
- package/src/example/view/textarea/parseTree/inner.js +24 -0
- package/src/example/view/textarea/parseTree/outer.js +17 -0
- package/src/example/view/textarea/parseTree.js +0 -18
- package/src/example/view.js +44 -32
- package/src/index.js +2 -5
- package/src/node.js +221 -0
- package/src/parseTree/childNodes.js +108 -0
- package/src/parseTree/horizontalBranch.js +32 -0
- package/src/parseTree/node.js +77 -0
- package/src/parseTree/string.js +18 -0
- package/src/parseTree/verticalBranch.js +77 -0
- package/src/parseTree.js +141 -0
- package/src/utilities/node.js +66 -416
- package/lib/example/view/textarea/nodes.js +0 -155
- package/lib/expression/bnf.js +0 -14
- package/lib/expression/entries.js +0 -27
- package/lib/expression/lexer.js +0 -145
- package/lib/expression.js +0 -113
- package/lib/path.js +0 -69
- package/lib/query.js +0 -216
- package/lib/ruleNames.js +0 -54
- package/lib/spread.js +0 -113
- package/lib/subExpression.js +0 -101
- package/lib/utilities/array.js +0 -67
- package/lib/utilities/query.js +0 -39
- package/src/example/view/input/expressionString.js +0 -33
- package/src/example/view/textarea/nodes.js +0 -55
- package/src/expression/bnf.js +0 -63
- package/src/expression/entries.js +0 -18
- package/src/expression/lexer.js +0 -35
- package/src/expression/parser.js +0 -15
- package/src/expression.js +0 -82
- package/src/path.js +0 -32
- package/src/query.js +0 -207
- package/src/ruleNames.js +0 -12
- package/src/spread.js +0 -104
- package/src/subExpression.js +0 -52
- package/src/utilities/array.js +0 -30
- package/src/utilities/query.js +0 -22
package/lib/utilities/node.js
CHANGED
|
@@ -9,326 +9,73 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
return
|
|
12
|
+
default: function() {
|
|
13
|
+
return _default;
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
17
|
-
},
|
|
18
|
-
indexFromIndexNode: function() {
|
|
19
|
-
return indexFromIndexNode;
|
|
20
|
-
},
|
|
21
|
-
indexFromSpreadNode: function() {
|
|
22
|
-
return indexFromSpreadNode;
|
|
23
|
-
},
|
|
24
|
-
infiniteDescentFromPathNode: function() {
|
|
25
|
-
return infiniteDescentFromPathNode;
|
|
26
|
-
},
|
|
27
|
-
pathNodeFromExpressionNode: function() {
|
|
28
|
-
return pathNodeFromExpressionNode;
|
|
29
|
-
},
|
|
30
|
-
pathNodeFromSubExpressionNode: function() {
|
|
31
|
-
return pathNodeFromSubExpressionNode;
|
|
32
|
-
},
|
|
33
|
-
ruleNamesFromPathNode: function() {
|
|
34
|
-
return ruleNamesFromPathNode;
|
|
35
|
-
},
|
|
36
|
-
selectorNodesFromPathNode: function() {
|
|
37
|
-
return selectorNodesFromPathNode;
|
|
38
|
-
},
|
|
39
|
-
spreadNodeFromExpressionNode: function() {
|
|
40
|
-
return spreadNodeFromExpressionNode;
|
|
41
|
-
},
|
|
42
|
-
spreadNodeFromSubExpressionNode: function() {
|
|
43
|
-
return spreadNodeFromSubExpressionNode;
|
|
44
|
-
},
|
|
45
|
-
startIndexFromSpreadNode: function() {
|
|
46
|
-
return startIndexFromSpreadNode;
|
|
47
|
-
},
|
|
48
|
-
subExpressionNodeFromExpressionNode: function() {
|
|
49
|
-
return subExpressionNodeFromExpressionNode;
|
|
50
|
-
},
|
|
51
|
-
subExpressionNodeFromSubExpressionNode: function() {
|
|
52
|
-
return subExpressionNodeFromSubExpressionNode;
|
|
53
|
-
},
|
|
54
|
-
tokenTypesFromPathNode: function() {
|
|
55
|
-
return tokenTypesFromPathNode;
|
|
56
|
-
},
|
|
57
|
-
uniqueFromSpreadNode: function() {
|
|
58
|
-
return uniqueFromSpreadNode;
|
|
15
|
+
topmostNodeFromOuterNodes: function() {
|
|
16
|
+
return topmostNodeFromOuterNodes;
|
|
59
17
|
}
|
|
60
18
|
});
|
|
61
|
-
var
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var nonTerminalNode = selectorNode, ruleNameNode = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
72
|
-
var ruleNameNode = null;
|
|
73
|
-
var nonTerminalNode = firstChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameRuleNameRuleName = ruleName === _ruleNames.RULE_NAME_RULE_NAME;
|
|
74
|
-
if (ruleNameRuleNameRuleName) {
|
|
75
|
-
ruleNameNode = nonTerminalNode; ///
|
|
76
|
-
}
|
|
77
|
-
return ruleNameNode;
|
|
78
|
-
});
|
|
79
|
-
if (ruleNameNode !== null) {
|
|
80
|
-
ruleNameNodes.push(ruleNameNode);
|
|
81
|
-
}
|
|
82
|
-
return ruleNameNodes;
|
|
83
|
-
}, []), ruleNames = ruleNameNodes.map(function(ruleNameNode) {
|
|
84
|
-
var nonTerminalNode = ruleNameNode, ruleName = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
85
|
-
var terminalNode = firstChildNode, content = terminalNode.getContent(), ruleName = content; ///
|
|
86
|
-
return ruleName;
|
|
87
|
-
});
|
|
88
|
-
return ruleName;
|
|
89
|
-
});
|
|
90
|
-
return ruleNames;
|
|
91
|
-
}
|
|
92
|
-
function tokenTypesFromPathNode(pathNode) {
|
|
93
|
-
var selectorNodes = selectorNodesFromPathNode(pathNode), tokenTypeNodes = selectorNodes.reduce(function(tokenTypeNodes, selectorNode) {
|
|
94
|
-
var nonTerminalNode = selectorNode, tokenTypeNode = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
95
|
-
var tokenTypeNode = null;
|
|
96
|
-
var nonTerminalNode = firstChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameTokenTypeRuleName = ruleName === _ruleNames.TOKEN_TYPE_RULE_NAME;
|
|
97
|
-
if (ruleNameTokenTypeRuleName) {
|
|
98
|
-
tokenTypeNode = nonTerminalNode; ///
|
|
99
|
-
}
|
|
100
|
-
return tokenTypeNode;
|
|
101
|
-
});
|
|
102
|
-
if (tokenTypeNode !== null) {
|
|
103
|
-
tokenTypeNodes.push(tokenTypeNode);
|
|
104
|
-
}
|
|
105
|
-
return tokenTypeNodes;
|
|
106
|
-
}, []), tokenTypes = tokenTypeNodes.map(function(tokenTypeNode) {
|
|
107
|
-
var nonTerminalNode = tokenTypeNode, tokenType = fromThirdChildNode(nonTerminalNode, function(thirdChildNode) {
|
|
108
|
-
var terminalNode = thirdChildNode, content = terminalNode.getContent(), tokenType = content; ///
|
|
109
|
-
return tokenType;
|
|
110
|
-
});
|
|
111
|
-
return tokenType;
|
|
112
|
-
});
|
|
113
|
-
return tokenTypes;
|
|
114
|
-
}
|
|
115
|
-
function selectorNodesFromPathNode(pathNode) {
|
|
116
|
-
var nonTerminalNode;
|
|
117
|
-
nonTerminalNode = pathNode; ///
|
|
118
|
-
var selectorsNode = fromLastChildNode(nonTerminalNode, function(lastChildNode) {
|
|
119
|
-
var selectorsNode = lastChildNode; ///
|
|
120
|
-
return selectorsNode;
|
|
121
|
-
});
|
|
122
|
-
nonTerminalNode = selectorsNode; ///
|
|
123
|
-
var selectorNodes = nonTerminalNode.filterChildNode(function(childNode) {
|
|
124
|
-
var childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
125
|
-
if (childNodeNonTerminalNode) {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
return selectorNodes;
|
|
130
|
-
}
|
|
131
|
-
function infiniteDescentFromPathNode(pathNode) {
|
|
132
|
-
var nonTerminalNode = pathNode, infiniteDescent = fromSecondChildNode(nonTerminalNode, function(secondChildNode) {
|
|
133
|
-
var nonTerminalNode = secondChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameInfiniteDescentRuleName = ruleName === _ruleNames.INFINITE_DESCENT_RULE_NAME, infiniteDescent = ruleNameInfiniteDescentRuleName; ///
|
|
134
|
-
return infiniteDescent;
|
|
135
|
-
}) || false;
|
|
136
|
-
return infiniteDescent;
|
|
137
|
-
}
|
|
138
|
-
function uniqueFromSpreadNode(spreadNode) {
|
|
139
|
-
var nonTerminalNode = spreadNode, unique = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
140
|
-
var unique = false;
|
|
141
|
-
var firstChildNodeNonTerminalNode = firstChildNode.isNonTerminalNode();
|
|
142
|
-
if (firstChildNodeNonTerminalNode) {
|
|
143
|
-
var nonTerminalNode = firstChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameUniqueRuleName = ruleName === _ruleNames.UNIQUE_RULE_NAME;
|
|
144
|
-
if (ruleNameUniqueRuleName) {
|
|
145
|
-
unique = true;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return unique;
|
|
149
|
-
});
|
|
150
|
-
return unique;
|
|
151
|
-
}
|
|
152
|
-
function indexFromSpreadNode(spreadNode) {
|
|
153
|
-
var index = null;
|
|
154
|
-
var nonTerminalNode = spreadNode, indexNode = nonTerminalNode.findChildNode(function(childNode) {
|
|
155
|
-
var childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
156
|
-
if (childNodeNonTerminalNode) {
|
|
157
|
-
var nonTerminalNode = childNode, ruleName = nonTerminalNode.getRuleName(), ruleNameIndexRuleName = ruleName === _ruleNames.INDEX_RULE_NAME;
|
|
158
|
-
if (ruleNameIndexRuleName) {
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}) || null;
|
|
163
|
-
if (indexNode !== null) {
|
|
164
|
-
index = indexFromIndexNode(indexNode);
|
|
165
|
-
}
|
|
166
|
-
return index;
|
|
167
|
-
}
|
|
168
|
-
function endIndexFromSpreadNode(spreadNode) {
|
|
169
|
-
var endIndex = Infinity;
|
|
170
|
-
var nonTerminalNode = spreadNode, endIndexNode = nonTerminalNode.findChildNode(function(childNode) {
|
|
171
|
-
var childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
172
|
-
if (childNodeNonTerminalNode) {
|
|
173
|
-
var nonTerminalNode = childNode, ruleName = nonTerminalNode.getRuleName(), ruleNameEndIndexRuleName = ruleName === _ruleNames.END_INDEX_RULE_NAME;
|
|
174
|
-
if (ruleNameEndIndexRuleName) {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}) || null;
|
|
179
|
-
if (endIndexNode !== null) {
|
|
180
|
-
endIndex = indexFromIndexNode(endIndexNode);
|
|
19
|
+
var _node = /*#__PURE__*/ _interop_require_default(require("../node"));
|
|
20
|
+
function _interop_require_default(obj) {
|
|
21
|
+
return obj && obj.__esModule ? obj : {
|
|
22
|
+
default: obj
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function topmostNodeFromOuterNodes(Class, outerNodes) {
|
|
26
|
+
if (outerNodes === undefined) {
|
|
27
|
+
outerNodes = Class; ///
|
|
28
|
+
Class = _node.default; ///
|
|
181
29
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
var
|
|
188
|
-
|
|
189
|
-
var
|
|
190
|
-
if (
|
|
30
|
+
var nodes = outerNodes; ///
|
|
31
|
+
orderNodes(nodes);
|
|
32
|
+
var topmostNode = _node.default.fromNothing(), outerNodeToNodeMap = new WeakMap();
|
|
33
|
+
outerNodes.forEach(function(outerNode) {
|
|
34
|
+
var ancestorNodes = outerNode.getAncestorNodes();
|
|
35
|
+
var parentNode = topmostNode; ///
|
|
36
|
+
ancestorNodes.some(function(ancestorNode) {
|
|
37
|
+
var _$outerNode = ancestorNode, node = outerNodeToNodeMap.get(_$outerNode) || null;
|
|
38
|
+
if (node !== null) {
|
|
39
|
+
parentNode = node; ///
|
|
191
40
|
return true;
|
|
192
41
|
}
|
|
193
|
-
}
|
|
194
|
-
}) || null;
|
|
195
|
-
if (startIndexNode !== null) {
|
|
196
|
-
startIndex = indexFromIndexNode(startIndexNode);
|
|
197
|
-
}
|
|
198
|
-
return startIndex;
|
|
199
|
-
}
|
|
200
|
-
function pathNodeFromExpressionNode(expressionNode) {
|
|
201
|
-
var nonTerminalNode = expressionNode, pathNode = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
202
|
-
var pathNode = firstChildNode; ///
|
|
203
|
-
return pathNode;
|
|
204
|
-
});
|
|
205
|
-
return pathNode;
|
|
206
|
-
}
|
|
207
|
-
function spreadNodeFromExpressionNode(expressionNode) {
|
|
208
|
-
var nonTerminalNode = expressionNode, spreadNode = fromSecondChildNode(nonTerminalNode, function(secondChildNode) {
|
|
209
|
-
var spreadNode = null;
|
|
210
|
-
var nonTerminalNode = secondChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameSpreadRuleName = ruleName === _ruleNames.SPREAD_RULE_NAME;
|
|
211
|
-
if (ruleNameSpreadRuleName) {
|
|
212
|
-
spreadNode = secondChildNode; ///
|
|
213
|
-
}
|
|
214
|
-
return spreadNode;
|
|
215
|
-
}) || null;
|
|
216
|
-
return spreadNode;
|
|
217
|
-
}
|
|
218
|
-
function errorNodesFromExpressionNode(expressionNode) {
|
|
219
|
-
var nonTerminalNode = expressionNode, errorNodes = nonTerminalNode.reduceChildNode(function(errorNodes, childNode) {
|
|
220
|
-
var childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
221
|
-
if (childNodeNonTerminalNode) {
|
|
222
|
-
var nonTerminalNode = childNode, ruleName = nonTerminalNode.getRuleName(), ruleNameErrorRuleName = ruleName === _ruleNames.ERROR_RULE_NAME;
|
|
223
|
-
if (ruleNameErrorRuleName) {
|
|
224
|
-
var errorNode = nonTerminalNode; ///
|
|
225
|
-
errorNodes.push(errorNode);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return errorNodes;
|
|
229
|
-
}, []);
|
|
230
|
-
return errorNodes;
|
|
231
|
-
}
|
|
232
|
-
function subExpressionNodeFromExpressionNode(expressionNode) {
|
|
233
|
-
var subExpressionNode = null;
|
|
234
|
-
var nonTerminalNode = expressionNode, multiplicity = nonTerminalNode.getMultiplicity();
|
|
235
|
-
if (multiplicity > 1) {
|
|
236
|
-
subExpressionNode = fromLastChildNode(nonTerminalNode, function(lastChildNode) {
|
|
237
|
-
var subExpressionNode = null;
|
|
238
|
-
var nonTerminalNode = lastChildNode, ruleName = nonTerminalNode.getRuleName(), ruleNameSubExpressionRuleName = ruleName === _ruleNames.SUB_EXPRESSION_RULE_NAME;
|
|
239
|
-
if (ruleNameSubExpressionRuleName) {
|
|
240
|
-
subExpressionNode = lastChildNode; ///
|
|
241
|
-
}
|
|
242
|
-
return subExpressionNode;
|
|
243
42
|
});
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
function pathNodeFromSubExpressionNode(subExpressionNode) {
|
|
248
|
-
var nonTerminalNode = subExpressionNode, pathNode = fromFirstChildNode(nonTerminalNode, function(firstChildNode) {
|
|
249
|
-
var pathNode = firstChildNode; ///
|
|
250
|
-
return pathNode;
|
|
43
|
+
var node = Class.fromOuterNode(outerNode), childNode = node; ///
|
|
44
|
+
parentNode.addChildNode(childNode);
|
|
45
|
+
outerNodeToNodeMap.set(outerNode, node);
|
|
251
46
|
});
|
|
252
|
-
return
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (ruleNameSpreadRuleName) {
|
|
262
|
-
spreadNode = secondChildNode; ///
|
|
263
|
-
}
|
|
264
|
-
return spreadNode;
|
|
265
|
-
}) || null;
|
|
266
|
-
}
|
|
267
|
-
return spreadNode;
|
|
268
|
-
}
|
|
269
|
-
function subExpressionNodeFromSubExpressionNode(subExpressionNode) {
|
|
270
|
-
var nonTerminalNode = subExpressionNode; ///
|
|
271
|
-
subExpressionNode = null;
|
|
272
|
-
var multiplicity = nonTerminalNode.getMultiplicity();
|
|
273
|
-
if (multiplicity > 1) {
|
|
274
|
-
subExpressionNode = fromLastChildNode(nonTerminalNode, function(lastChildNode) {
|
|
275
|
-
var _$subExpressionNode = null;
|
|
276
|
-
var nonTerminalNoe = lastChildNode, ruleName = nonTerminalNoe.getRuleName(), ruleNameSubExpressionRuleName = ruleName === _ruleNames.SUB_EXPRESSION_RULE_NAME;
|
|
277
|
-
if (ruleNameSubExpressionRuleName) {
|
|
278
|
-
_$subExpressionNode = lastChildNode; ///
|
|
279
|
-
}
|
|
280
|
-
return _$subExpressionNode;
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
return subExpressionNode;
|
|
284
|
-
}
|
|
285
|
-
function fromFirstChildNode(nonTerminalNode, callback) {
|
|
286
|
-
var result;
|
|
287
|
-
var firstIndex = 0;
|
|
288
|
-
nonTerminalNode.forwardsSomeChildNode(function(childNode, index) {
|
|
289
|
-
if (index === firstIndex) {
|
|
290
|
-
var firstChildNode = childNode; ///
|
|
291
|
-
result = callback(firstChildNode);
|
|
292
|
-
return true;
|
|
293
|
-
}
|
|
47
|
+
return topmostNode;
|
|
48
|
+
}
|
|
49
|
+
var _default = {
|
|
50
|
+
topmostNodeFromOuterNodes: topmostNodeFromOuterNodes
|
|
51
|
+
};
|
|
52
|
+
function orderNodes(nodes) {
|
|
53
|
+
nodes.sort(function(nodeA, nodeB) {
|
|
54
|
+
var nodeALessThanNodeB = isLessThan(nodeA, nodeB), result = nodeALessThanNodeB ? -1 : +1;
|
|
55
|
+
return result;
|
|
294
56
|
});
|
|
295
|
-
return result;
|
|
296
57
|
}
|
|
297
|
-
function
|
|
298
|
-
var
|
|
299
|
-
var
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
58
|
+
function isLessThan(nodeA, nodeB) {
|
|
59
|
+
var lessThan = null;
|
|
60
|
+
var ancestorNodesA = ancestorNodesFromNode(nodeA), ancestorNodesB = ancestorNodesFromNode(nodeB), ancestorNodesALength = ancestorNodesA.length, ancestorNodesBLength = ancestorNodesB.length, minimumAncestorNodesLength = Math.min(ancestorNodesALength, ancestorNodesBLength);
|
|
61
|
+
for(var index = 0; index < minimumAncestorNodesLength; index++){
|
|
62
|
+
var ancestorNodeA = ancestorNodesA[index], ancestorNodeB = ancestorNodesB[index];
|
|
63
|
+
if (ancestorNodeA !== ancestorNodeB) {
|
|
64
|
+
var parentIndex = index - 1, ancestorNodeAParentNode = ancestorNodesA[parentIndex], parentNode = ancestorNodeAParentNode, childNodeA = ancestorNodeA, childNodeB = ancestorNodeB, indexA = parentNode.indexOfChildNode(childNodeA), indexB = parentNode.indexOfChildNode(childNodeB);
|
|
65
|
+
lessThan = indexA < indexB;
|
|
66
|
+
break;
|
|
305
67
|
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
var thirdIndex = 2;
|
|
312
|
-
nonTerminalNode.forwardsSomeChildNode(function(childNode, index) {
|
|
313
|
-
if (index === thirdIndex) {
|
|
314
|
-
var thirdChildNode = childNode; ///
|
|
315
|
-
result = callback(thirdChildNode);
|
|
316
|
-
return true;
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
return result;
|
|
68
|
+
}
|
|
69
|
+
if (lessThan === null) {
|
|
70
|
+
lessThan = ancestorNodesALength < ancestorNodesBLength;
|
|
71
|
+
}
|
|
72
|
+
return lessThan;
|
|
320
73
|
}
|
|
321
|
-
function
|
|
322
|
-
var
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
var thirdChildNode = childNode; ///
|
|
327
|
-
result = callback(thirdChildNode);
|
|
328
|
-
return true;
|
|
329
|
-
}
|
|
330
|
-
});
|
|
331
|
-
return result;
|
|
74
|
+
function ancestorNodesFromNode(node) {
|
|
75
|
+
var ancestorNodes = node.getAncestorNodes();
|
|
76
|
+
ancestorNodes.unshift(node);
|
|
77
|
+
ancestorNodes.reverse();
|
|
78
|
+
return ancestorNodes;
|
|
332
79
|
}
|
|
333
80
|
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRVJST1JfUlVMRV9OQU1FLFxuICAgICAgICAgSU5ERVhfUlVMRV9OQU1FLFxuICAgICAgICAgVU5JUVVFX1JVTEVfTkFNRSxcbiAgICAgICAgIFNQUkVBRF9SVUxFX05BTUUsXG4gICAgICAgICBFTkRfSU5ERVhfUlVMRV9OQU1FLFxuICAgICAgICAgUlVMRV9OQU1FX1JVTEVfTkFNRSxcbiAgICAgICAgIFRPS0VOX1RZUEVfUlVMRV9OQU1FLFxuICAgICAgICAgU1RBUlRfSU5ERVhfUlVMRV9OQU1FLFxuICAgICAgICAgU1VCX0VYUFJFU1NJT05fUlVMRV9OQU1FLFxuICAgICAgICAgSU5GSU5JVEVfREVTQ0VOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleEZyb21JbmRleE5vZGUoaW5kZXhOb2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGluZGV4Tm9kZSwgLy8vXG4gICAgICAgIGluZGV4ID0gZnJvbUZpcnN0Q2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgKGZpcnN0Q2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICBjb250ZW50ID0gdGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgICAgICBpbmRleCA9IE51bWJlcihjb250ZW50KTtcblxuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZU5hbWVzRnJvbVBhdGhOb2RlKHBhdGhOb2RlKSB7XG4gIGNvbnN0IHNlbGVjdG9yTm9kZXMgPSBzZWxlY3Rvck5vZGVzRnJvbVBhdGhOb2RlKHBhdGhOb2RlKSxcbiAgICAgICAgcnVsZU5hbWVOb2RlcyA9IHNlbGVjdG9yTm9kZXMucmVkdWNlKChydWxlTmFtZU5vZGVzLCBzZWxlY3Rvck5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzZWxlY3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIHJ1bGVOYW1lTm9kZSA9IGZyb21GaXJzdENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIChmaXJzdENoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVOYW1lTm9kZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlTmFtZVJ1bGVOYW1lUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFJVTEVfTkFNRV9SVUxFX05BTUUpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAocnVsZU5hbWVSdWxlTmFtZVJ1bGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgLy8vXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlTmFtZU5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAocnVsZU5hbWVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBydWxlTmFtZU5vZGVzLnB1c2gocnVsZU5hbWVOb2RlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcnVsZU5hbWVOb2RlcztcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBydWxlTmFtZXMgPSBydWxlTmFtZU5vZGVzLm1hcCgocnVsZU5hbWVOb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gcnVsZU5hbWVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBydWxlTmFtZSA9IGZyb21GaXJzdENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIChmaXJzdENoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB0ZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBjb250ZW50OyAvLy9cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVOYW1lO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHJ1bGVOYW1lO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcnVsZU5hbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5UeXBlc0Zyb21QYXRoTm9kZShwYXRoTm9kZSkge1xuICBjb25zdCBzZWxlY3Rvck5vZGVzID0gc2VsZWN0b3JOb2Rlc0Zyb21QYXRoTm9kZShwYXRoTm9kZSksXG4gICAgICAgIHRva2VuVHlwZU5vZGVzID0gc2VsZWN0b3JOb2Rlcy5yZWR1Y2UoKHRva2VuVHlwZU5vZGVzLCBzZWxlY3Rvck5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzZWxlY3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIHRva2VuVHlwZU5vZGUgPSBmcm9tRmlyc3RDaGlsZE5vZGUobm9uVGVybWluYWxOb2RlLCAoZmlyc3RDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCB0b2tlblR5cGVOb2RlID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lVG9rZW5UeXBlUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFRPS0VOX1RZUEVfUlVMRV9OQU1FKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVOYW1lVG9rZW5UeXBlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5UeXBlTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgLy8vXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlblR5cGVOb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRva2VuVHlwZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRva2VuVHlwZU5vZGVzLnB1c2godG9rZW5UeXBlTm9kZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRva2VuVHlwZU5vZGVzO1xuICAgICAgICB9LCBbXSksXG4gICAgICAgIHRva2VuVHlwZXMgPSB0b2tlblR5cGVOb2Rlcy5tYXAoKHRva2VuVHlwZU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0b2tlblR5cGVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgdG9rZW5UeXBlID0gZnJvbVRoaXJkQ2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgKHRoaXJkQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlblR5cGUgPSBjb250ZW50OyAgLy8vXG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlblR5cGU7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gdG9rZW5UeXBlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdG9rZW5UeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdG9yTm9kZXNGcm9tUGF0aE5vZGUocGF0aE5vZGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBub25UZXJtaW5hbE5vZGUgPSBwYXRoTm9kZTsgLy8vXG5cbiAgY29uc3Qgc2VsZWN0b3JzTm9kZSA9IGZyb21MYXN0Q2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgKGxhc3RDaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBzZWxlY3RvcnNOb2RlID0gbGFzdENoaWxkTm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yc05vZGU7XG4gIH0pO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IHNlbGVjdG9yc05vZGU7ICAvLy9cblxuICBjb25zdCBzZWxlY3Rvck5vZGVzID0gbm9uVGVybWluYWxOb2RlLmZpbHRlckNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgY29uc3QgY2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gY2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoY2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzZWxlY3Rvck5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5maW5pdGVEZXNjZW50RnJvbVBhdGhOb2RlKHBhdGhOb2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHBhdGhOb2RlLCAvLy9cbiAgICAgICAgaW5maW5pdGVEZXNjZW50ID0gZnJvbVNlY29uZENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIChzZWNvbmRDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzZWNvbmRDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgICAgIHJ1bGVOYW1lSW5maW5pdGVEZXNjZW50UnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IElORklOSVRFX0RFU0NFTlRfUlVMRV9OQU1FKSxcbiAgICAgICAgICAgICAgICBpbmZpbml0ZURlc2NlbnQgPSBydWxlTmFtZUluZmluaXRlRGVzY2VudFJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgICAgICByZXR1cm4gaW5maW5pdGVEZXNjZW50O1xuICAgICAgICB9KSB8fCBmYWxzZTtcblxuICByZXR1cm4gaW5maW5pdGVEZXNjZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlRnJvbVNwcmVhZE5vZGUoc3ByZWFkTm9kZSkge1xuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzcHJlYWROb2RlLFxuICAgICAgICB1bmlxdWUgPSBmcm9tRmlyc3RDaGlsZE5vZGUobm9uVGVybWluYWxOb2RlLCAoZmlyc3RDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBsZXQgdW5pcXVlID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICAgICAgICBpZiAoZmlyc3RDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICAgICAgICBydWxlTmFtZVVuaXF1ZVJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBVTklRVUVfUlVMRV9OQU1FKTtcblxuICAgICAgICAgICAgaWYgKHJ1bGVOYW1lVW5pcXVlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgICAgdW5pcXVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdW5pcXVlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdW5pcXVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhGcm9tU3ByZWFkTm9kZShzcHJlYWROb2RlKSB7XG4gIGxldCBpbmRleCA9IG51bGw7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3ByZWFkTm9kZSwgLy8vXG4gICAgICAgIGluZGV4Tm9kZSA9IG5vblRlcm1pbmFsTm9kZS5maW5kQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgICAgIGlmIChjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lSW5kZXhSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gSU5ERVhfUlVMRV9OQU1FKTtcblxuICAgICAgICAgICAgaWYgKHJ1bGVOYW1lSW5kZXhSdWxlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKGluZGV4Tm9kZSAhPT0gbnVsbCkge1xuICAgIGluZGV4ID0gaW5kZXhGcm9tSW5kZXhOb2RlKGluZGV4Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRJbmRleEZyb21TcHJlYWROb2RlKHNwcmVhZE5vZGUpIHtcbiAgbGV0IGVuZEluZGV4ID0gSW5maW5pdHk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3ByZWFkTm9kZSwgLy8vXG4gICAgICAgIGVuZEluZGV4Tm9kZSA9IG5vblRlcm1pbmFsTm9kZS5maW5kQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgICAgIGlmIChjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lRW5kSW5kZXhSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gRU5EX0lOREVYX1JVTEVfTkFNRSk7XG5cbiAgICAgICAgICAgIGlmIChydWxlTmFtZUVuZEluZGV4UnVsZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChlbmRJbmRleE5vZGUgIT09IG51bGwpIHtcbiAgICBlbmRJbmRleCA9IGluZGV4RnJvbUluZGV4Tm9kZShlbmRJbmRleE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGVuZEluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRJbmRleEZyb21TcHJlYWROb2RlKHNwcmVhZE5vZGUpIHtcbiAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHNwcmVhZE5vZGUsIC8vL1xuICAgICAgICBzdGFydEluZGV4Tm9kZSA9IG5vblRlcm1pbmFsTm9kZS5maW5kQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgICAgIGlmIChjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lU3RhcnRJbmRleFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTVEFSVF9JTkRFWF9SVUxFX05BTUUpO1xuXG4gICAgICAgICAgICBpZiAocnVsZU5hbWVTdGFydEluZGV4UnVsZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChzdGFydEluZGV4Tm9kZSAhPT0gbnVsbCkge1xuICAgIHN0YXJ0SW5kZXggPSBpbmRleEZyb21JbmRleE5vZGUoc3RhcnRJbmRleE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXJ0SW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoTm9kZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSkge1xuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBleHByZXNzaW9uTm9kZSwgLy8vXG4gICAgICAgIHBhdGhOb2RlID0gZnJvbUZpcnN0Q2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgKGZpcnN0Q2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBmaXJzdENoaWxkTm9kZTsgIC8vL1xuXG4gICAgICAgICAgcmV0dXJuIHBhdGhOb2RlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcGF0aE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcHJlYWROb2RlRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGV4cHJlc3Npb25Ob2RlLCAvLy9cbiAgICAgICAgc3ByZWFkTm9kZSA9IGZyb21TZWNvbmRDaGlsZE5vZGUobm9uVGVybWluYWxOb2RlLCAoc2Vjb25kQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgbGV0IHNwcmVhZE5vZGUgPSBudWxsO1xuXG4gICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgICAgICBydWxlTmFtZVNwcmVhZFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTUFJFQURfUlVMRV9OQU1FKTtcblxuICAgICAgICAgIGlmIChydWxlTmFtZVNwcmVhZFJ1bGVOYW1lKSB7XG4gICAgICAgICAgICBzcHJlYWROb2RlID0gc2Vjb25kQ2hpbGROb2RlOyAgLy8vXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHNwcmVhZE5vZGU7XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHNwcmVhZE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvck5vZGVzRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGV4cHJlc3Npb25Ob2RlLCAvLy9cbiAgICAgICAgZXJyb3JOb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5yZWR1Y2VDaGlsZE5vZGUoKGVycm9yTm9kZXMsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gY2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgICAgICAgcnVsZU5hbWVFcnJvclJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBFUlJPUl9SVUxFX05BTUUpO1xuXG4gICAgICAgICAgICBpZiAocnVsZU5hbWVFcnJvclJ1bGVOYW1lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuXG4gICAgICAgICAgICAgIGVycm9yTm9kZXMucHVzaChlcnJvck5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBlcnJvck5vZGVzO1xuICAgICAgICB9LCBbXSk7XG5cbiAgcmV0dXJuIGVycm9yTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJFeHByZXNzaW9uTm9kZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSkge1xuICBsZXQgc3ViRXhwcmVzc2lvbk5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGV4cHJlc3Npb25Ob2RlLCAvLy9cbiAgICAgICAgbXVsdGlwbGljaXR5ID0gbm9uVGVybWluYWxOb2RlLmdldE11bHRpcGxpY2l0eSgpO1xuXG4gIGlmIChtdWx0aXBsaWNpdHkgPiAxKSB7XG4gICAgc3ViRXhwcmVzc2lvbk5vZGUgPSBmcm9tTGFzdENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIChsYXN0Q2hpbGROb2RlKSA9PiB7XG4gICAgICBsZXQgc3ViRXhwcmVzc2lvbk5vZGUgPSBudWxsO1xuXG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBsYXN0Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgcnVsZU5hbWVTdWJFeHByZXNzaW9uUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFNVQl9FWFBSRVNTSU9OX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN1YkV4cHJlc3Npb25SdWxlTmFtZSkge1xuICAgICAgICBzdWJFeHByZXNzaW9uTm9kZSA9IGxhc3RDaGlsZE5vZGU7ICAvLy9cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1YkV4cHJlc3Npb25Ob2RlO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN1YkV4cHJlc3Npb25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aE5vZGVGcm9tU3ViRXhwcmVzc2lvbk5vZGUoc3ViRXhwcmVzc2lvbk5vZGUpIHtcbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3ViRXhwcmVzc2lvbk5vZGUsIC8vL1xuICAgICAgICBwYXRoTm9kZSA9IGZyb21GaXJzdENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIChmaXJzdENoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhdGhOb2RlID0gZmlyc3RDaGlsZE5vZGU7ICAvLy9cblxuICAgICAgICAgIHJldHVybiBwYXRoTm9kZTtcbiAgICAgICAgfSlcblxuICByZXR1cm4gcGF0aE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcHJlYWROb2RlRnJvbVN1YkV4cHJlc3Npb25Ob2RlKHN1YkV4cHJlc3Npb25Ob2RlKSB7XG4gIGxldCBzcHJlYWROb2RlID0gbnVsbDtcblxuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdWJFeHByZXNzaW9uTm9kZSwgLy8vXG4gICAgICAgIG11bHRpcGxpY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRNdWx0aXBsaWNpdHkoKTtcblxuICBpZiAobXVsdGlwbGljaXR5ID4gMSkge1xuICAgIHNwcmVhZE5vZGUgPSBmcm9tU2Vjb25kQ2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgKHNlY29uZENoaWxkTm9kZSkgPT4ge1xuICAgICAgbGV0IHNwcmVhZE5vZGUgPSBudWxsO1xuXG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzZWNvbmRDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBydWxlTmFtZVNwcmVhZFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTUFJFQURfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKHJ1bGVOYW1lU3ByZWFkUnVsZU5hbWUpIHtcbiAgICAgICAgc3ByZWFkTm9kZSA9IHNlY29uZENoaWxkTm9kZTsgIC8vL1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3ByZWFkTm9kZTtcbiAgICB9KSB8fCBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHNwcmVhZE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJFeHByZXNzaW9uTm9kZUZyb21TdWJFeHByZXNzaW9uTm9kZShzdWJFeHByZXNzaW9uTm9kZSkge1xuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdWJFeHByZXNzaW9uTm9kZTsgLy8vXG5cbiAgc3ViRXhwcmVzc2lvbk5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IG11bHRpcGxpY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRNdWx0aXBsaWNpdHkoKTtcblxuICBpZiAobXVsdGlwbGljaXR5ID4gMSkge1xuICAgIHN1YkV4cHJlc3Npb25Ob2RlID0gZnJvbUxhc3RDaGlsZE5vZGUobm9uVGVybWluYWxOb2RlLCAobGFzdENoaWxkTm9kZSkgPT4ge1xuICAgICAgbGV0IHN1YkV4cHJlc3Npb25Ob2RlID0gbnVsbDtcblxuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2UgPSBsYXN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2UuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIHJ1bGVOYW1lU3ViRXhwcmVzc2lvblJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTVUJfRVhQUkVTU0lPTl9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAocnVsZU5hbWVTdWJFeHByZXNzaW9uUnVsZU5hbWUpIHtcbiAgICAgICAgc3ViRXhwcmVzc2lvbk5vZGUgPSBsYXN0Q2hpbGROb2RlOyAgLy8vXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdWJFeHByZXNzaW9uTm9kZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzdWJFeHByZXNzaW9uTm9kZTtcbn1cblxuZnVuY3Rpb24gZnJvbUZpcnN0Q2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgY2FsbGJhY2spIHtcbiAgbGV0IHJlc3VsdDtcblxuICBjb25zdCBmaXJzdEluZGV4ID0gMDtcblxuICBub25UZXJtaW5hbE5vZGUuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBmaXJzdEluZGV4KSB7XG4gICAgICBjb25zdCBmaXJzdENoaWxkTm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGZpcnN0Q2hpbGROb2RlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmcm9tU2Vjb25kQ2hpbGROb2RlKG5vblRlcm1pbmFsTm9kZSwgY2FsbGJhY2spIHtcbiAgbGV0IHJlc3VsdDtcblxuICBjb25zdCBzZWNvbmRJbmRleCA9IDE7XG5cbiAgbm9uVGVybWluYWxOb2RlLmZvcndhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gc2Vjb25kSW5kZXgpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZmlyc3RDaGlsZE5vZGUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGZyb21UaGlyZENoaWxkTm9kZShub25UZXJtaW5hbE5vZGUsIGNhbGxiYWNrKSB7XG4gIGxldCByZXN1bHQ7XG5cbiAgY29uc3QgdGhpcmRJbmRleCA9IDI7XG5cbiAgbm9uVGVybWluYWxOb2RlLmZvcndhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gdGhpcmRJbmRleCkge1xuICAgICAgY29uc3QgdGhpcmRDaGlsZE5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlyZENoaWxkTm9kZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZnJvbUxhc3RDaGlsZE5vZGUobm9uVGVybWluYWxOb2RlLCBjYWxsYmFjaykge1xuICBsZXQgcmVzdWx0O1xuXG4gIGNvbnN0IG11bHRpcGxpY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgbGFzdEluZGV4ID0gbXVsdGlwbGljaXR5IC0gMTtcblxuICBub25UZXJtaW5hbE5vZGUuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbGFzdEluZGV4KSB7XG4gICAgICBjb25zdCB0aGlyZENoaWxkTm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXJkQ2hpbGROb2RlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm5hbWVzIjpbImVuZEluZGV4RnJvbVNwcmVhZE5vZGUiLCJlcnJvck5vZGVzRnJvbUV4cHJlc3Npb25Ob2RlIiwiaW5kZXhGcm9tSW5kZXhOb2RlIiwiaW5kZXhGcm9tU3ByZWFkTm9kZSIsImluZmluaXRlRGVzY2VudEZyb21QYXRoTm9kZSIsInBhdGhOb2RlRnJvbUV4cHJlc3Npb25Ob2RlIiwicGF0aE5vZGVGcm9tU3ViRXhwcmVzc2lvbk5vZGUiLCJydWxlTmFtZXNGcm9tUGF0aE5vZGUiLCJzZWxlY3Rvck5vZGVzRnJvbVBhdGhOb2RlIiwic3ByZWFkTm9kZUZyb21FeHByZXNzaW9uTm9kZSIsInNwcmVhZE5vZGVGcm9tU3ViRXhwcmVzc2lvbk5vZGUiLCJzdGFydEluZGV4RnJvbVNwcmVhZE5vZGUiLCJzdWJFeHByZXNzaW9uTm9kZUZyb21FeHByZXNzaW9uTm9kZSIsInN1YkV4cHJlc3Npb25Ob2RlRnJvbVN1YkV4cHJlc3Npb25Ob2RlIiwidG9rZW5UeXBlc0Zyb21QYXRoTm9kZSIsInVuaXF1ZUZyb21TcHJlYWROb2RlIiwiaW5kZXhOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiaW5kZXgiLCJmcm9tRmlyc3RDaGlsZE5vZGUiLCJmaXJzdENoaWxkTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwiTnVtYmVyIiwicGF0aE5vZGUiLCJzZWxlY3Rvck5vZGVzIiwicnVsZU5hbWVOb2RlcyIsInJlZHVjZSIsInNlbGVjdG9yTm9kZSIsInJ1bGVOYW1lTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJydWxlTmFtZVJ1bGVOYW1lUnVsZU5hbWUiLCJSVUxFX05BTUVfUlVMRV9OQU1FIiwicHVzaCIsInJ1bGVOYW1lcyIsIm1hcCIsInRva2VuVHlwZU5vZGVzIiwidG9rZW5UeXBlTm9kZSIsInJ1bGVOYW1lVG9rZW5UeXBlUnVsZU5hbWUiLCJUT0tFTl9UWVBFX1JVTEVfTkFNRSIsInRva2VuVHlwZXMiLCJ0b2tlblR5cGUiLCJmcm9tVGhpcmRDaGlsZE5vZGUiLCJ0aGlyZENoaWxkTm9kZSIsInNlbGVjdG9yc05vZGUiLCJmcm9tTGFzdENoaWxkTm9kZSIsImxhc3RDaGlsZE5vZGUiLCJmaWx0ZXJDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsImluZmluaXRlRGVzY2VudCIsImZyb21TZWNvbmRDaGlsZE5vZGUiLCJzZWNvbmRDaGlsZE5vZGUiLCJydWxlTmFtZUluZmluaXRlRGVzY2VudFJ1bGVOYW1lIiwiSU5GSU5JVEVfREVTQ0VOVF9SVUxFX05BTUUiLCJzcHJlYWROb2RlIiwidW5pcXVlIiwiZmlyc3RDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZVVuaXF1ZVJ1bGVOYW1lIiwiVU5JUVVFX1JVTEVfTkFNRSIsImZpbmRDaGlsZE5vZGUiLCJydWxlTmFtZUluZGV4UnVsZU5hbWUiLCJJTkRFWF9SVUxFX05BTUUiLCJlbmRJbmRleCIsIkluZmluaXR5IiwiZW5kSW5kZXhOb2RlIiwicnVsZU5hbWVFbmRJbmRleFJ1bGVOYW1lIiwiRU5EX0lOREVYX1JVTEVfTkFNRSIsInN0YXJ0SW5kZXgiLCJzdGFydEluZGV4Tm9kZSIsInJ1bGVOYW1lU3RhcnRJbmRleFJ1bGVOYW1lIiwiU1RBUlRfSU5ERVhfUlVMRV9OQU1FIiwiZXhwcmVzc2lvbk5vZGUiLCJydWxlTmFtZVNwcmVhZFJ1bGVOYW1lIiwiU1BSRUFEX1JVTEVfTkFNRSIsImVycm9yTm9kZXMiLCJyZWR1Y2VDaGlsZE5vZGUiLCJydWxlTmFtZUVycm9yUnVsZU5hbWUiLCJFUlJPUl9SVUxFX05BTUUiLCJlcnJvck5vZGUiLCJzdWJFeHByZXNzaW9uTm9kZSIsIm11bHRpcGxpY2l0eSIsImdldE11bHRpcGxpY2l0eSIsInJ1bGVOYW1lU3ViRXhwcmVzc2lvblJ1bGVOYW1lIiwiU1VCX0VYUFJFU1NJT05fUlVMRV9OQU1FIiwibm9uVGVybWluYWxOb2UiLCJjYWxsYmFjayIsInJlc3VsdCIsImZpcnN0SW5kZXgiLCJmb3J3YXJkc1NvbWVDaGlsZE5vZGUiLCJzZWNvbmRJbmRleCIsInRoaXJkSW5kZXgi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
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5vZGUgZnJvbSBcIi4uL25vZGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvcG1vc3ROb2RlRnJvbU91dGVyTm9kZXMoQ2xhc3MsIG91dGVyTm9kZXMpIHtcbiAgaWYgKG91dGVyTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIG91dGVyTm9kZXMgPSBDbGFzczsgLy8vXG5cbiAgICBDbGFzcyA9IE5vZGU7ICAvLy9cbiAgfVxuXG4gIGNvbnN0IG5vZGVzID0gb3V0ZXJOb2RlczsgLy8vXG5cbiAgb3JkZXJOb2Rlcyhub2Rlcyk7XG5cbiAgY29uc3QgdG9wbW9zdE5vZGUgPSBOb2RlLmZyb21Ob3RoaW5nKCksXG4gICAgICAgIG91dGVyTm9kZVRvTm9kZU1hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgb3V0ZXJOb2Rlcy5mb3JFYWNoKChvdXRlck5vZGUpID0+IHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gb3V0ZXJOb2RlLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICAgIGxldCBwYXJlbnROb2RlID0gdG9wbW9zdE5vZGU7IC8vL1xuXG4gICAgYW5jZXN0b3JOb2Rlcy5zb21lKChhbmNlc3Rvck5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG91dGVyTm9kZSA9IGFuY2VzdG9yTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlID0gb3V0ZXJOb2RlVG9Ob2RlTWFwLmdldChvdXRlck5vZGUpIHx8IG51bGw7XG5cbiAgICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgIHBhcmVudE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBub2RlID0gQ2xhc3MuZnJvbU91dGVyTm9kZShvdXRlck5vZGUpLFxuICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHBhcmVudE5vZGUuYWRkQ2hpbGROb2RlKGNoaWxkTm9kZSk7XG5cbiAgICBvdXRlck5vZGVUb05vZGVNYXAuc2V0KG91dGVyTm9kZSwgbm9kZSk7XG4gIH0pO1xuXG4gIHJldHVybiB0b3Btb3N0Tm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVzXG59O1xuXG5mdW5jdGlvbiBvcmRlck5vZGVzKG5vZGVzKSB7XG4gIG5vZGVzLnNvcnQoKG5vZGVBLCBub2RlQikgPT4ge1xuICAgIGNvbnN0IG5vZGVBTGVzc1RoYW5Ob2RlQiA9IGlzTGVzc1RoYW4obm9kZUEsIG5vZGVCKSxcbiAgICAgICAgICByZXN1bHQgPSBub2RlQUxlc3NUaGFuTm9kZUIgP1xuICAgICAgICAgICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgICAgICAgICAgICArMTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0xlc3NUaGFuKG5vZGVBLCBub2RlQikge1xuICBsZXQgbGVzc1RoYW4gPSBudWxsO1xuXG4gIGNvbnN0IGFuY2VzdG9yTm9kZXNBID0gYW5jZXN0b3JOb2Rlc0Zyb21Ob2RlKG5vZGVBKSxcbiAgICAgICAgYW5jZXN0b3JOb2Rlc0IgPSBhbmNlc3Rvck5vZGVzRnJvbU5vZGUobm9kZUIpLFxuICAgICAgICBhbmNlc3Rvck5vZGVzQUxlbmd0aCA9IGFuY2VzdG9yTm9kZXNBLmxlbmd0aCxcbiAgICAgICAgYW5jZXN0b3JOb2Rlc0JMZW5ndGggPSBhbmNlc3Rvck5vZGVzQi5sZW5ndGgsXG4gICAgICAgIG1pbmltdW1BbmNlc3Rvck5vZGVzTGVuZ3RoID0gTWF0aC5taW4oYW5jZXN0b3JOb2Rlc0FMZW5ndGgsIGFuY2VzdG9yTm9kZXNCTGVuZ3RoKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWluaW11bUFuY2VzdG9yTm9kZXNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVBID0gYW5jZXN0b3JOb2Rlc0FbaW5kZXhdLFxuICAgICAgICAgIGFuY2VzdG9yTm9kZUIgPSBhbmNlc3Rvck5vZGVzQltpbmRleF07XG5cbiAgICBpZiAoYW5jZXN0b3JOb2RlQSAhPT0gYW5jZXN0b3JOb2RlQikge1xuICAgICAgY29uc3QgcGFyZW50SW5kZXggPSBpbmRleCAtIDEsXG4gICAgICAgICAgICBhbmNlc3Rvck5vZGVBUGFyZW50Tm9kZSA9IGFuY2VzdG9yTm9kZXNBW3BhcmVudEluZGV4XSxcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPSBhbmNlc3Rvck5vZGVBUGFyZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICBjaGlsZE5vZGVBID0gYW5jZXN0b3JOb2RlQSwgLy8vXG4gICAgICAgICAgICBjaGlsZE5vZGVCID0gYW5jZXN0b3JOb2RlQiwgLy8vXG4gICAgICAgICAgICBpbmRleEEgPSBwYXJlbnROb2RlLmluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlQSksXG4gICAgICAgICAgICBpbmRleEIgPSBwYXJlbnROb2RlLmluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlQik7XG5cbiAgICAgIGxlc3NUaGFuID0gKGluZGV4QSA8IGluZGV4Qik7XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsZXNzVGhhbiA9PT0gbnVsbCkge1xuICAgIGxlc3NUaGFuID0gKGFuY2VzdG9yTm9kZXNBTGVuZ3RoIDwgYW5jZXN0b3JOb2Rlc0JMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGxlc3NUaGFuO1xufVxuXG5mdW5jdGlvbiBhbmNlc3Rvck5vZGVzRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBhbmNlc3Rvck5vZGVzID0gbm9kZS5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgYW5jZXN0b3JOb2Rlcy51bnNoaWZ0KG5vZGUpO1xuXG4gIGFuY2VzdG9yTm9kZXMucmV2ZXJzZSgpO1xuXG4gIHJldHVybiBhbmNlc3Rvck5vZGVzO1xufSJdLCJuYW1lcyI6WyJ0b3Btb3N0Tm9kZUZyb21PdXRlck5vZGVzIiwiQ2xhc3MiLCJvdXRlck5vZGVzIiwidW5kZWZpbmVkIiwiTm9kZSIsIm5vZGVzIiwib3JkZXJOb2RlcyIsInRvcG1vc3ROb2RlIiwiZnJvbU5vdGhpbmciLCJvdXRlck5vZGVUb05vZGVNYXAiLCJXZWFrTWFwIiwiZm9yRWFjaCIsIm91dGVyTm9kZSIsImFuY2VzdG9yTm9kZXMiLCJnZXRBbmNlc3Rvck5vZGVzIiwicGFyZW50Tm9kZSIsInNvbWUiLCJhbmNlc3Rvck5vZGUiLCJub2RlIiwiZ2V0IiwiZnJvbU91dGVyTm9kZSIsImNoaWxkTm9kZSIsImFkZENoaWxkTm9kZSIsInNldCIsInNvcnQiLCJub2RlQSIsIm5vZGVCIiwibm9kZUFMZXNzVGhhbk5vZGVCIiwiaXNMZXNzVGhhbiIsInJlc3VsdCIsImxlc3NUaGFuIiwiYW5jZXN0b3JOb2Rlc0EiLCJhbmNlc3Rvck5vZGVzRnJvbU5vZGUiLCJhbmNlc3Rvck5vZGVzQiIsImFuY2VzdG9yTm9kZXNBTGVuZ3RoIiwibGVuZ3RoIiwiYW5jZXN0b3JOb2Rlc0JMZW5ndGgiLCJtaW5pbXVtQW5jZXN0b3JOb2Rlc0xlbmd0aCIsIk1hdGgiLCJtaW4iLCJpbmRleCIsImFuY2VzdG9yTm9kZUEiLCJhbmNlc3Rvck5vZGVCIiwicGFyZW50SW5kZXgiLCJhbmNlc3Rvck5vZGVBUGFyZW50Tm9kZSIsImNoaWxkTm9kZUEiLCJjaGlsZE5vZGVCIiwiaW5kZXhBIiwiaW5kZXhPZkNoaWxkTm9kZSIsImluZGV4QiIsInVuc2hpZnQiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUE2Q0EsT0FFRTtlQUZGOztJQXpDZ0JBLHlCQUF5QjtlQUF6QkE7OzsyREFGQzs7Ozs7O0FBRVYsU0FBU0EsMEJBQTBCQyxLQUFLLEVBQUVDLFVBQVU7SUFDekQsSUFBSUEsZUFBZUMsV0FBVztRQUM1QkQsYUFBYUQsT0FBTyxHQUFHO1FBRXZCQSxRQUFRRyxhQUFJLEVBQUcsR0FBRztJQUNwQjtJQUVBLElBQU1DLFFBQVFILFlBQVksR0FBRztJQUU3QkksV0FBV0Q7SUFFWCxJQUFNRSxjQUFjSCxhQUFJLENBQUNJLFdBQVcsSUFDOUJDLHFCQUFxQixJQUFJQztJQUUvQlIsV0FBV1MsT0FBTyxDQUFDLFNBQUNDO1FBQ2xCLElBQU1DLGdCQUFnQkQsVUFBVUUsZ0JBQWdCO1FBRWhELElBQUlDLGFBQWFSLGFBQWEsR0FBRztRQUVqQ00sY0FBY0csSUFBSSxDQUFDLFNBQUNDO1lBQ2xCLElBQU1MLGNBQVlLLGNBQ1pDLE9BQU9ULG1CQUFtQlUsR0FBRyxDQUFDUCxnQkFBYztZQUVsRCxJQUFJTSxTQUFTLE1BQU07Z0JBQ2pCSCxhQUFhRyxNQUFPLEdBQUc7Z0JBRXZCLE9BQU87WUFDVDtRQUNGO1FBRUEsSUFBTUEsT0FBT2pCLE1BQU1tQixhQUFhLENBQUNSLFlBQzNCUyxZQUFZSCxNQUFPLEdBQUc7UUFFNUJILFdBQVdPLFlBQVksQ0FBQ0Q7UUFFeEJaLG1CQUFtQmMsR0FBRyxDQUFDWCxXQUFXTTtJQUNwQztJQUVBLE9BQU9YO0FBQ1Q7SUFFQSxXQUFlO0lBQ2JQLDJCQUFBQTtBQUNGO0FBRUEsU0FBU00sV0FBV0QsS0FBSztJQUN2QkEsTUFBTW1CLElBQUksQ0FBQyxTQUFDQyxPQUFPQztRQUNqQixJQUFNQyxxQkFBcUJDLFdBQVdILE9BQU9DLFFBQ3ZDRyxTQUFTRixxQkFDRSxDQUFDLElBQ0MsQ0FBQztRQUVwQixPQUFPRTtJQUNUO0FBQ0Y7QUFFQSxTQUFTRCxXQUFXSCxLQUFLLEVBQUVDLEtBQUs7SUFDOUIsSUFBSUksV0FBVztJQUVmLElBQU1DLGlCQUFpQkMsc0JBQXNCUCxRQUN2Q1EsaUJBQWlCRCxzQkFBc0JOLFFBQ3ZDUSx1QkFBdUJILGVBQWVJLE1BQU0sRUFDNUNDLHVCQUF1QkgsZUFBZUUsTUFBTSxFQUM1Q0UsNkJBQTZCQyxLQUFLQyxHQUFHLENBQUNMLHNCQUFzQkU7SUFFbEUsSUFBSyxJQUFJSSxRQUFRLEdBQUdBLFFBQVFILDRCQUE0QkcsUUFBUztRQUMvRCxJQUFNQyxnQkFBZ0JWLGNBQWMsQ0FBQ1MsTUFBTSxFQUNyQ0UsZ0JBQWdCVCxjQUFjLENBQUNPLE1BQU07UUFFM0MsSUFBSUMsa0JBQWtCQyxlQUFlO1lBQ25DLElBQU1DLGNBQWNILFFBQVEsR0FDdEJJLDBCQUEwQmIsY0FBYyxDQUFDWSxZQUFZLEVBQ3JENUIsYUFBYTZCLHlCQUNiQyxhQUFhSixlQUNiSyxhQUFhSixlQUNiSyxTQUFTaEMsV0FBV2lDLGdCQUFnQixDQUFDSCxhQUNyQ0ksU0FBU2xDLFdBQVdpQyxnQkFBZ0IsQ0FBQ0Y7WUFFM0NoQixXQUFZaUIsU0FBU0U7WUFFckI7UUFDRjtJQUNGO0lBRUEsSUFBSW5CLGFBQWEsTUFBTTtRQUNyQkEsV0FBWUksdUJBQXVCRTtJQUNyQztJQUVBLE9BQU9OO0FBQ1Q7QUFFQSxTQUFTRSxzQkFBc0JkLElBQUk7SUFDakMsSUFBTUwsZ0JBQWdCSyxLQUFLSixnQkFBZ0I7SUFFM0NELGNBQWNxQyxPQUFPLENBQUNoQztJQUV0QkwsY0FBY3NDLE9BQU87SUFFckIsT0FBT3RDO0FBQ1QifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-dom",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.3",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-dom",
|
|
7
7
|
"description": "Occam's DOM related functionality.",
|
|
@@ -10,13 +10,14 @@
|
|
|
10
10
|
"url": "https://github.com/djalbat/occam-dom"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"occam-parsers": "^23.0.
|
|
13
|
+
"occam-parsers": "^23.0.114",
|
|
14
|
+
"occam-query": "^4.1.73"
|
|
14
15
|
},
|
|
15
16
|
"devDependencies": {
|
|
16
17
|
"@swc/core": "^1.5.6",
|
|
17
18
|
"easy": "^23.0.1",
|
|
18
|
-
"easy-layout": "^6.0.
|
|
19
|
-
"easy-with-style": "^3.0.
|
|
19
|
+
"easy-layout": "^6.0.234",
|
|
20
|
+
"easy-with-style": "^3.0.472",
|
|
20
21
|
"esbuild": "^0.9.2",
|
|
21
22
|
"express": "^4.17.1",
|
|
22
23
|
"juxtapose": "^4.0.117",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
import { queryUtilities } from "occam-query";
|
|
5
|
+
|
|
6
|
+
const { push } = arrayUtilities,
|
|
7
|
+
{ queryByExpressionString } = queryUtilities;
|
|
8
|
+
|
|
9
|
+
export function queryByExpressions(node, expressions, maximumDepth) {
|
|
10
|
+
const nodes = expressions.reduce((nodes, expression) => {
|
|
11
|
+
const expressionString = expression, ///
|
|
12
|
+
expressionNodes = queryByExpressionString(node, expressionString, maximumDepth);
|
|
13
|
+
|
|
14
|
+
push(nodes, expressionNodes);
|
|
15
|
+
|
|
16
|
+
return nodes;
|
|
17
|
+
}, []);
|
|
18
|
+
|
|
19
|
+
return nodes;
|
|
20
|
+
}
|
|
21
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Textarea from "../textarea";
|
|
4
|
+
|
|
5
|
+
import { SPACE } from "../../constants";
|
|
6
|
+
|
|
7
|
+
export default class ExpressionsTextarea extends Textarea {
|
|
8
|
+
getExpressions() {
|
|
9
|
+
const value = this.getValue(),
|
|
10
|
+
expressionString = value, ///
|
|
11
|
+
expressions = JSON.parse(expressionString); ///
|
|
12
|
+
|
|
13
|
+
return expressions;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
setExpressions(expressions) {
|
|
17
|
+
const space = SPACE,
|
|
18
|
+
replacer = null,
|
|
19
|
+
expressionsString = JSON.stringify(expressions, replacer, space),
|
|
20
|
+
value = expressionsString; ///
|
|
21
|
+
|
|
22
|
+
this.setValue(value);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
parentContext() {
|
|
26
|
+
const getExpressions = this.getExpressions.bind(this),
|
|
27
|
+
setExpressions = this.setExpressions.bind(this); ///;
|
|
28
|
+
|
|
29
|
+
return ({
|
|
30
|
+
getExpressions,
|
|
31
|
+
setExpressions
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static defaultProperties = {
|
|
36
|
+
className: "expressions",
|
|
37
|
+
spellCheck: "false"
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Textarea from "../textarea";
|
|
4
|
+
|
|
5
|
+
import { EMPTY_STRING } from "../../constants";
|
|
6
|
+
import { tokenIndexFromTerminalNodeAndTokens, tokenIndexesFromNonTerminalNodeAndTokens } from "../../utilities/token"
|
|
7
|
+
|
|
8
|
+
export default class OuterNodesTextarea extends Textarea {
|
|
9
|
+
setOuterNodes(outerNodes, tokens) {
|
|
10
|
+
const nodes = outerNodes, ///
|
|
11
|
+
value = nodes.reduce((value, node) => {
|
|
12
|
+
const nodeTerminalNode = node.isTerminalNode();
|
|
13
|
+
|
|
14
|
+
if (nodeTerminalNode) {
|
|
15
|
+
const terminalNode = node, ///
|
|
16
|
+
significantToken = terminalNode.getSignificantToken(),
|
|
17
|
+
significantTokenType = significantToken.getType(),
|
|
18
|
+
tokenIndex = tokenIndexFromTerminalNodeAndTokens(terminalNode, tokens);
|
|
19
|
+
|
|
20
|
+
value = `${value}[${significantTokenType}]${tokenIndex}\n`;
|
|
21
|
+
} else {
|
|
22
|
+
const nonTerminalNode = node, ///
|
|
23
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
24
|
+
tokenIndexes = tokenIndexesFromNonTerminalNodeAndTokens(nonTerminalNode, tokens);
|
|
25
|
+
|
|
26
|
+
value = `${value}${ruleName}${tokenIndexes}\n`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return value;
|
|
30
|
+
}, EMPTY_STRING);
|
|
31
|
+
|
|
32
|
+
this.setValue(value);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
parentContext() {
|
|
36
|
+
const setOuterNodes = this.setOuterNodes.bind(this);
|
|
37
|
+
|
|
38
|
+
return ({
|
|
39
|
+
setOuterNodes
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static defaultProperties = {
|
|
44
|
+
className: "outer-nodes",
|
|
45
|
+
spellCheck: "false",
|
|
46
|
+
readOnly: true
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ParseTreeTextarea from "../../textarea/parseTree";
|
|
4
|
+
|
|
5
|
+
export default class InnerParseTreeTextarea extends ParseTreeTextarea {
|
|
6
|
+
setParseTree(parseTree) {
|
|
7
|
+
parseTree.shiftLine(); //
|
|
8
|
+
parseTree.shiftLine(); //
|
|
9
|
+
|
|
10
|
+
super.setParseTree(parseTree);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
parentContext() {
|
|
14
|
+
const setInnerParseTree = this.setParseTree.bind(this); ///
|
|
15
|
+
|
|
16
|
+
return ({
|
|
17
|
+
setInnerParseTree
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static defaultProperties = {
|
|
22
|
+
className: "inner"
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ParseTreeTextarea from "../../textarea/parseTree";
|
|
4
|
+
|
|
5
|
+
export default class OuterParseTreeTextarea extends ParseTreeTextarea {
|
|
6
|
+
parentContext() {
|
|
7
|
+
const setOuterParseTree = this.setParseTree.bind(this); ///
|
|
8
|
+
|
|
9
|
+
return ({
|
|
10
|
+
setOuterParseTree
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static defaultProperties = {
|
|
15
|
+
className: "outer"
|
|
16
|
+
};
|
|
17
|
+
}
|