happy-dom 9.9.1 → 9.10.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.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js +1 -1
- package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js.map +1 -1
- package/lib/nodes/document/Document.d.ts.map +1 -1
- package/lib/nodes/document/Document.js +3 -0
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document-fragment/DocumentFragment.d.ts.map +1 -1
- package/lib/nodes/document-fragment/DocumentFragment.js +3 -0
- package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +5 -15
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
- package/lib/nodes/element/ElementUtility.js +18 -22
- package/lib/nodes/element/ElementUtility.js.map +1 -1
- package/lib/nodes/node/Node.d.ts +0 -8
- package/lib/nodes/node/Node.d.ts.map +1 -1
- package/lib/nodes/node/Node.js +4 -23
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
- package/lib/nodes/node/NodeUtility.js +3 -4
- package/lib/nodes/node/NodeUtility.js.map +1 -1
- package/lib/query-selector/ISelectorAttribute.d.ts +6 -0
- package/lib/query-selector/ISelectorAttribute.d.ts.map +1 -0
- package/lib/query-selector/ISelectorAttribute.js +3 -0
- package/lib/query-selector/ISelectorAttribute.js.map +1 -0
- package/lib/query-selector/ISelectorMatch.d.ts +4 -0
- package/lib/query-selector/ISelectorMatch.d.ts.map +1 -0
- package/lib/query-selector/ISelectorMatch.js +3 -0
- package/lib/query-selector/ISelectorMatch.js.map +1 -0
- package/lib/query-selector/QuerySelector.d.ts +21 -31
- package/lib/query-selector/QuerySelector.d.ts.map +1 -1
- package/lib/query-selector/QuerySelector.js +123 -131
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/query-selector/SelectorCombinatorEnum.d.ts +7 -0
- package/lib/query-selector/SelectorCombinatorEnum.d.ts.map +1 -0
- package/lib/query-selector/SelectorCombinatorEnum.js +10 -0
- package/lib/query-selector/SelectorCombinatorEnum.js.map +1 -0
- package/lib/query-selector/SelectorItem.d.ts +41 -56
- package/lib/query-selector/SelectorItem.d.ts.map +1 -1
- package/lib/query-selector/SelectorItem.js +194 -220
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/query-selector/SelectorParser.d.ts +21 -0
- package/lib/query-selector/SelectorParser.d.ts.map +1 -0
- package/lib/query-selector/SelectorParser.js +154 -0
- package/lib/query-selector/SelectorParser.js.map +1 -0
- package/package.json +1 -1
- package/src/css/declaration/utilities/CSSStyleDeclarationElementStyle.ts +2 -2
- package/src/nodes/document/Document.ts +6 -0
- package/src/nodes/document-fragment/DocumentFragment.ts +6 -0
- package/src/nodes/element/Element.ts +9 -17
- package/src/nodes/element/ElementUtility.ts +20 -25
- package/src/nodes/node/Node.ts +6 -25
- package/src/nodes/node/NodeUtility.ts +3 -8
- package/src/query-selector/ISelectorAttribute.ts +5 -0
- package/src/query-selector/ISelectorMatch.ts +3 -0
- package/src/query-selector/QuerySelector.ts +187 -170
- package/src/query-selector/SelectorCombinatorEnum.ts +7 -0
- package/src/query-selector/SelectorItem.ts +238 -264
- package/src/query-selector/SelectorParser.ts +148 -0
@@ -4,14 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const DOMException_1 = __importDefault(require("../exception/DOMException"));
|
7
|
-
const
|
8
|
-
const
|
9
|
-
const PSUEDO_REGEXP = /(?<!\\):([a-zA-Z-]+)\(([0-9n+-]+|odd|even)\)|(?<!\\):not\(([^)]+)\)|(?<!\\):([a-zA-Z-]+)/g;
|
10
|
-
const CLASS_REGEXP = /\.(([a-zA-Z0-9-_$]|\\.)+)/g;
|
11
|
-
const TAG_NAME_REGEXP = /^[a-zA-Z0-9-]+/;
|
12
|
-
const ID_REGEXP = /(?<!\\)#[A-Za-z][-A-Za-z0-9_]*/g;
|
13
|
-
const CSS_ESCAPE_REGEXP = /(?<!\\):/g;
|
14
|
-
const CSS_ESCAPE_CHAR_REGEXP = /\\/g;
|
7
|
+
const SelectorCombinatorEnum_1 = __importDefault(require("./SelectorCombinatorEnum"));
|
8
|
+
const SelectorParser_1 = __importDefault(require("./SelectorParser"));
|
15
9
|
/**
|
16
10
|
* Selector item.
|
17
11
|
*/
|
@@ -19,24 +13,25 @@ class SelectorItem {
|
|
19
13
|
/**
|
20
14
|
* Constructor.
|
21
15
|
*
|
22
|
-
* @param
|
16
|
+
* @param [options] Options.
|
17
|
+
* @param [options.combinator] Combinator.
|
18
|
+
* @param [options.all] All.
|
19
|
+
* @param [options.tagName] Tag name.
|
20
|
+
* @param [options.id] ID.
|
21
|
+
* @param [options.classNames] Class names.
|
22
|
+
* @param [options.attributes] Attributes.
|
23
|
+
* @param [options.pseudoClass] Pseudo class.
|
24
|
+
* @param [options.pseudoArguments] Pseudo arguments.
|
23
25
|
*/
|
24
|
-
constructor(
|
25
|
-
this.
|
26
|
-
|
27
|
-
|
28
|
-
this.
|
29
|
-
this.
|
30
|
-
this.
|
31
|
-
|
32
|
-
this.
|
33
|
-
this.isClass =
|
34
|
-
!this.isAll && new RegExp(CLASS_REGEXP, 'g').test(baseSelector) && !this.isAttribute;
|
35
|
-
this.tagName = !this.isAll ? baseSelector.match(TAG_NAME_REGEXP) : null;
|
36
|
-
this.tagName = this.tagName ? this.tagName[0].toUpperCase() : null;
|
37
|
-
this.isTagName = this.tagName !== null;
|
38
|
-
this.selector = selector;
|
39
|
-
this.id = idMatch ? idMatch[0].replace('#', '') : null;
|
26
|
+
constructor(options) {
|
27
|
+
this.all = options?.all || null;
|
28
|
+
this.tagName = options?.tagName || null;
|
29
|
+
this.id = options?.id || null;
|
30
|
+
this.classNames = options?.classNames || null;
|
31
|
+
this.attributes = options?.attributes || null;
|
32
|
+
this.pseudoClass = options?.pseudoClass || null;
|
33
|
+
this.pseudoArguments = options?.pseudoArguments || null;
|
34
|
+
this.combinator = options?.combinator || SelectorCombinatorEnum_1.default.descendant;
|
40
35
|
}
|
41
36
|
/**
|
42
37
|
* Matches a selector against an element.
|
@@ -45,153 +40,86 @@ class SelectorItem {
|
|
45
40
|
* @returns Result.
|
46
41
|
*/
|
47
42
|
match(element) {
|
48
|
-
const selector = this.selector;
|
49
43
|
let priorityWeight = 0;
|
50
|
-
//
|
51
|
-
if (this.
|
52
|
-
|
44
|
+
// Tag name match
|
45
|
+
if (this.tagName) {
|
46
|
+
if (this.tagName !== element.tagName) {
|
47
|
+
return null;
|
48
|
+
}
|
49
|
+
priorityWeight += 1;
|
53
50
|
}
|
54
51
|
// ID Match
|
55
|
-
if (this.
|
56
|
-
priorityWeight += 100;
|
52
|
+
if (this.id) {
|
57
53
|
if (this.id !== element.id) {
|
58
|
-
return
|
59
|
-
}
|
60
|
-
}
|
61
|
-
// Tag name match
|
62
|
-
if (this.isTagName) {
|
63
|
-
priorityWeight += 1;
|
64
|
-
if (this.tagName !== element.tagName) {
|
65
|
-
return { priorityWeight: 0, matches: false };
|
54
|
+
return null;
|
66
55
|
}
|
56
|
+
priorityWeight += 100;
|
67
57
|
}
|
68
58
|
// Class match
|
69
|
-
if (this.
|
70
|
-
const result = this.
|
71
|
-
|
72
|
-
|
73
|
-
return { priorityWeight: 0, matches: false };
|
59
|
+
if (this.classNames) {
|
60
|
+
const result = this.matchClass(element);
|
61
|
+
if (!result) {
|
62
|
+
return null;
|
74
63
|
}
|
75
|
-
|
76
|
-
// Pseudo match
|
77
|
-
if (this.isPseudo && !this.matchesPsuedo(element, selector)) {
|
78
|
-
return { priorityWeight: 0, matches: false };
|
64
|
+
priorityWeight += result.priorityWeight;
|
79
65
|
}
|
80
66
|
// Attribute match
|
81
|
-
if (this.
|
82
|
-
const result = this.
|
83
|
-
|
84
|
-
|
85
|
-
return { priorityWeight: 0, matches: false };
|
67
|
+
if (this.attributes) {
|
68
|
+
const result = this.matchAttributes(element);
|
69
|
+
if (!result) {
|
70
|
+
return null;
|
86
71
|
}
|
72
|
+
priorityWeight += result.priorityWeight;
|
87
73
|
}
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
* Matches a psuedo selector.
|
92
|
-
*
|
93
|
-
* @param element Element.
|
94
|
-
* @param selector Selector.
|
95
|
-
* @returns True if it is a match.
|
96
|
-
*/
|
97
|
-
matchesPsuedo(element, selector) {
|
98
|
-
const regexp = new RegExp(PSUEDO_REGEXP, 'g');
|
99
|
-
let match;
|
100
|
-
while ((match = regexp.exec(selector))) {
|
101
|
-
const isNotClass = match[3] && match[3].trim()[0] === '.';
|
102
|
-
if (match[1] && !this.matchesNthChild(element, match[1], match[2])) {
|
103
|
-
return false;
|
104
|
-
}
|
105
|
-
else if (match[3]) {
|
106
|
-
if (isNotClass && this.matchesClass(element, match[3]).matches) {
|
107
|
-
return false;
|
108
|
-
}
|
109
|
-
if (!isNotClass &&
|
110
|
-
match[3].includes('[') &&
|
111
|
-
this.matchesAttribute(element, match[3]).matches) {
|
112
|
-
return false;
|
113
|
-
}
|
114
|
-
if (!isNotClass && element.tagName.toLowerCase() === match[3]) {
|
115
|
-
return false;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
else if (match[4] && !this.matchesPsuedoExpression(element, match[4])) {
|
119
|
-
return false;
|
120
|
-
}
|
74
|
+
// Pseudo match
|
75
|
+
if (this.pseudoClass && !this.matchPsuedo(element)) {
|
76
|
+
return null;
|
121
77
|
}
|
122
|
-
return
|
78
|
+
return { priorityWeight };
|
123
79
|
}
|
124
80
|
/**
|
125
|
-
* Matches a
|
81
|
+
* Matches a psuedo selector.
|
126
82
|
*
|
127
83
|
* @param element Element.
|
128
|
-
* @
|
129
|
-
* @param place Place.
|
130
|
-
* @returns True if it is a match.
|
84
|
+
* @returns Result.
|
131
85
|
*/
|
132
|
-
|
133
|
-
|
134
|
-
|
86
|
+
matchPsuedo(element) {
|
87
|
+
const parent = element.parentNode;
|
88
|
+
// Validation
|
89
|
+
switch (this.pseudoClass) {
|
90
|
+
case 'not':
|
91
|
+
case 'nth-child':
|
135
92
|
case 'nth-of-type':
|
136
|
-
children = children.filter((child) => child.tagName === element.tagName);
|
137
|
-
break;
|
138
93
|
case 'nth-last-child':
|
139
|
-
children = children.reverse();
|
140
|
-
break;
|
141
94
|
case 'nth-last-of-type':
|
142
|
-
|
143
|
-
|
144
|
-
}
|
145
|
-
if (place === 'odd') {
|
146
|
-
const index = children.indexOf(element);
|
147
|
-
return index !== -1 && (index + 1) % 2 !== 0;
|
148
|
-
}
|
149
|
-
else if (place === 'even') {
|
150
|
-
const index = children.indexOf(element);
|
151
|
-
return index !== -1 && (index + 1) % 2 === 0;
|
152
|
-
}
|
153
|
-
else if (place.includes('n')) {
|
154
|
-
const [a, b] = place.replace(/ /g, '').split('n');
|
155
|
-
const childIndex = children.indexOf(element);
|
156
|
-
const aNumber = a !== '' ? Number(a) : 1;
|
157
|
-
const bNumber = b !== undefined ? Number(b) : 0;
|
158
|
-
if (isNaN(aNumber) || isNaN(bNumber)) {
|
159
|
-
throw new DOMException_1.default(`The selector "${this.selector}" is not valid.`);
|
160
|
-
}
|
161
|
-
for (let i = 0, max = children.length; i <= max; i += aNumber) {
|
162
|
-
if (childIndex === i + bNumber - 1) {
|
163
|
-
return true;
|
95
|
+
if (!this.pseudoArguments) {
|
96
|
+
throw new DOMException_1.default(`The selector "${this.getSelectorString()}" is not valid.`);
|
164
97
|
}
|
165
|
-
|
166
|
-
return false;
|
167
|
-
}
|
168
|
-
const number = Number(place);
|
169
|
-
if (isNaN(number)) {
|
170
|
-
throw new DOMException_1.default(`The selector "${this.selector}" is not valid.`);
|
98
|
+
break;
|
171
99
|
}
|
172
|
-
|
173
|
-
}
|
174
|
-
/**
|
175
|
-
* Matches a psuedo selector expression.
|
176
|
-
*
|
177
|
-
* @param element Element.
|
178
|
-
* @param psuedo Psuedo name.
|
179
|
-
* @returns True if it is a match.
|
180
|
-
*/
|
181
|
-
matchesPsuedoExpression(element, psuedo) {
|
182
|
-
const parent = element.parentNode;
|
100
|
+
// Check if parent exists
|
183
101
|
if (!parent) {
|
184
|
-
|
102
|
+
switch (this.pseudoClass) {
|
103
|
+
case 'first-child':
|
104
|
+
case 'last-child':
|
105
|
+
case 'only-child':
|
106
|
+
case 'first-of-type':
|
107
|
+
case 'last-of-type':
|
108
|
+
case 'only-of-type':
|
109
|
+
case 'nth-child':
|
110
|
+
case 'nth-of-type':
|
111
|
+
case 'nth-last-child':
|
112
|
+
case 'nth-last-of-type':
|
113
|
+
return false;
|
114
|
+
}
|
185
115
|
}
|
186
|
-
switch (
|
116
|
+
switch (this.pseudoClass) {
|
187
117
|
case 'first-child':
|
188
118
|
return parent.children[0] === element;
|
189
119
|
case 'last-child':
|
190
|
-
|
191
|
-
return lastChildChildren[lastChildChildren.length - 1] === element;
|
120
|
+
return parent.children.length && parent.children[parent.children.length - 1] === element;
|
192
121
|
case 'only-child':
|
193
|
-
|
194
|
-
return onlyChildChildren.length === 1 && onlyChildChildren[0] === element;
|
122
|
+
return parent.children.length === 1 && parent.children[0] === element;
|
195
123
|
case 'first-of-type':
|
196
124
|
for (const child of parent.children) {
|
197
125
|
if (child.tagName === element.tagName) {
|
@@ -220,111 +148,157 @@ class SelectorItem {
|
|
220
148
|
return isFound;
|
221
149
|
case 'checked':
|
222
150
|
return element.tagName === 'INPUT' && element.checked;
|
151
|
+
case 'empty':
|
152
|
+
return !element.children.length;
|
153
|
+
case 'root':
|
154
|
+
return element.tagName === 'HTML';
|
155
|
+
case 'not':
|
156
|
+
return !SelectorParser_1.default.getSelectorItem(this.pseudoArguments).match(element);
|
157
|
+
case 'nth-child':
|
158
|
+
return this.matchNthChild(element, parent.children, this.pseudoArguments);
|
159
|
+
case 'nth-of-type':
|
160
|
+
if (!element.parentNode) {
|
161
|
+
return false;
|
162
|
+
}
|
163
|
+
return this.matchNthChild(element, parent.children.filter((child) => child.tagName === element.tagName), this.pseudoArguments);
|
164
|
+
case 'nth-last-child':
|
165
|
+
return this.matchNthChild(element, parent.children.reverse(), this.pseudoArguments);
|
166
|
+
case 'nth-last-of-type':
|
167
|
+
return this.matchNthChild(element, parent.children.filter((child) => child.tagName === element.tagName).reverse(), this.pseudoArguments);
|
223
168
|
}
|
224
|
-
return false;
|
225
169
|
}
|
226
170
|
/**
|
227
|
-
* Matches
|
171
|
+
* Matches a nth-child selector.
|
228
172
|
*
|
229
173
|
* @param element Element.
|
230
|
-
* @param
|
231
|
-
* @
|
174
|
+
* @param parentChildren Parent children.
|
175
|
+
* @param placement Placement.
|
176
|
+
* @returns True if it is a match.
|
232
177
|
*/
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
178
|
+
matchNthChild(element, parentChildren, placement) {
|
179
|
+
if (placement === 'odd') {
|
180
|
+
const index = parentChildren.indexOf(element);
|
181
|
+
return index !== -1 && (index + 1) % 2 !== 0;
|
182
|
+
}
|
183
|
+
else if (placement === 'even') {
|
184
|
+
const index = parentChildren.indexOf(element);
|
185
|
+
return index !== -1 && (index + 1) % 2 === 0;
|
186
|
+
}
|
187
|
+
else if (placement.includes('n')) {
|
188
|
+
const [a, b] = placement.replace(/ /g, '').split('n');
|
189
|
+
const childIndex = parentChildren.indexOf(element);
|
190
|
+
const aNumber = a !== '' ? Number(a) : 1;
|
191
|
+
const bNumber = b !== undefined ? Number(b) : 0;
|
192
|
+
if (isNaN(aNumber) || isNaN(bNumber)) {
|
193
|
+
throw new DOMException_1.default(`The selector "${this.getSelectorString()}" is not valid.`);
|
194
|
+
}
|
195
|
+
for (let i = 0, max = parentChildren.length; i <= max; i += aNumber) {
|
196
|
+
if (childIndex === i + bNumber - 1) {
|
197
|
+
return true;
|
198
|
+
}
|
244
199
|
}
|
200
|
+
return false;
|
201
|
+
}
|
202
|
+
const number = Number(placement);
|
203
|
+
if (isNaN(number)) {
|
204
|
+
throw new DOMException_1.default(`The selector "${this.getSelectorString()}" is not valid.`);
|
245
205
|
}
|
246
|
-
return
|
206
|
+
return parentChildren[number - 1] === element;
|
247
207
|
}
|
248
208
|
/**
|
249
|
-
* Matches
|
209
|
+
* Matches attribute.
|
250
210
|
*
|
251
211
|
* @param element Element.
|
252
|
-
* @param selector Selector.
|
253
212
|
* @returns Result.
|
254
213
|
*/
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
214
|
+
matchAttributes(element) {
|
215
|
+
if (!this.attributes) {
|
216
|
+
return null;
|
217
|
+
}
|
259
218
|
let priorityWeight = 0;
|
260
|
-
|
261
|
-
|
219
|
+
for (const attribute of this.attributes) {
|
220
|
+
const elementAttribute = element._attributes[attribute.name];
|
221
|
+
if (!elementAttribute) {
|
222
|
+
return null;
|
223
|
+
}
|
262
224
|
priorityWeight += 10;
|
263
|
-
if (
|
264
|
-
|
225
|
+
if (attribute.value !== null) {
|
226
|
+
if (!elementAttribute.value) {
|
227
|
+
return null;
|
228
|
+
}
|
229
|
+
switch (attribute.operator) {
|
230
|
+
// [attribute~="value"] - Contains a specified word.
|
231
|
+
case null:
|
232
|
+
if (attribute.value !== elementAttribute.value) {
|
233
|
+
return null;
|
234
|
+
}
|
235
|
+
break;
|
236
|
+
// [attribute~="value"] - Contains a specified word.
|
237
|
+
case '~':
|
238
|
+
if (!elementAttribute.value.split(' ').includes(attribute.value)) {
|
239
|
+
return null;
|
240
|
+
}
|
241
|
+
break;
|
242
|
+
// [attribute|="value"] - Starts with the specified word.
|
243
|
+
case '|':
|
244
|
+
if (!new RegExp(`^${attribute.value}[- ]`).test(elementAttribute.value)) {
|
245
|
+
return null;
|
246
|
+
}
|
247
|
+
break;
|
248
|
+
// [attribute^="value"] - Begins with a specified value.
|
249
|
+
case '^':
|
250
|
+
if (!elementAttribute.value.startsWith(attribute.value)) {
|
251
|
+
return null;
|
252
|
+
}
|
253
|
+
break;
|
254
|
+
// [attribute$="value"] - Ends with a specified value.
|
255
|
+
case '$':
|
256
|
+
if (!elementAttribute.value.endsWith(attribute.value)) {
|
257
|
+
return null;
|
258
|
+
}
|
259
|
+
break;
|
260
|
+
// [attribute*="value"] - Contains a specified value.
|
261
|
+
case '*':
|
262
|
+
if (!elementAttribute.value.includes(attribute.value)) {
|
263
|
+
return null;
|
264
|
+
}
|
265
|
+
break;
|
266
|
+
}
|
265
267
|
}
|
266
268
|
}
|
267
|
-
return { priorityWeight
|
269
|
+
return { priorityWeight };
|
268
270
|
}
|
269
271
|
/**
|
270
|
-
* Matches
|
272
|
+
* Matches class.
|
271
273
|
*
|
272
274
|
* @param element Element.
|
273
|
-
* @
|
274
|
-
* @returns True if it is a match.
|
275
|
+
* @returns Result.
|
275
276
|
*/
|
276
|
-
|
277
|
-
if (
|
278
|
-
|
277
|
+
matchClass(element) {
|
278
|
+
if (!this.classNames) {
|
279
|
+
return null;
|
279
280
|
}
|
280
|
-
|
281
|
+
const classList = element.className.split(' ');
|
282
|
+
let priorityWeight = 0;
|
283
|
+
for (const className of this.classNames) {
|
284
|
+
if (!classList.includes(className)) {
|
285
|
+
return null;
|
286
|
+
}
|
287
|
+
priorityWeight += 10;
|
288
|
+
}
|
289
|
+
return { priorityWeight };
|
281
290
|
}
|
282
|
-
/** .
|
283
|
-
*
|
284
|
-
* Matches attribute name and value.
|
285
|
-
*
|
286
|
-
* @param element Element.
|
287
|
-
* @param attributeName Attribute name.
|
288
|
-
* @param attributeValue Attribute value.
|
289
|
-
* @param [matchType] Match type.
|
290
|
-
* @returns True if it is a match.
|
291
|
-
*/
|
292
291
|
/**
|
292
|
+
* Returns the selector string.
|
293
293
|
*
|
294
|
-
* @
|
295
|
-
* @param attributeName
|
296
|
-
* @param attributeValue
|
297
|
-
* @param matchType
|
294
|
+
* @returns Selector string.
|
298
295
|
*/
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
if (!attribute) {
|
306
|
-
return false;
|
307
|
-
}
|
308
|
-
if (matchType) {
|
309
|
-
switch (matchType) {
|
310
|
-
// [attribute~="value"] - Contains a specified word.
|
311
|
-
case '~':
|
312
|
-
return attribute.value && attribute.value.split(' ').includes(value);
|
313
|
-
// [attribute|="value"] - Starts with the specified word.
|
314
|
-
case '|':
|
315
|
-
return attribute && attribute.value && new RegExp(`^${value}[- ]`).test(attribute.value);
|
316
|
-
// [attribute^="value"] - Begins with a specified value.
|
317
|
-
case '^':
|
318
|
-
return attribute && attribute.value && attribute.value.startsWith(value);
|
319
|
-
// [attribute$="value"] - Ends with a specified value.
|
320
|
-
case '$':
|
321
|
-
return attribute && attribute.value && attribute.value.endsWith(value);
|
322
|
-
// [attribute*="value"] - Contains a specified value.
|
323
|
-
case '*':
|
324
|
-
return attribute && attribute.value && attribute.value.includes(value);
|
325
|
-
}
|
326
|
-
}
|
327
|
-
return attribute && attribute.value === value;
|
296
|
+
getSelectorString() {
|
297
|
+
return `${this.all || ''}${this.tagName || ''}${this.id ? `#${this.id}` : ''}${this.classNames ? `.${this.classNames.join('.')}` : ''}${this.attributes
|
298
|
+
? this.attributes
|
299
|
+
.map((attribute) => `[${attribute.name}${attribute.value ? `${attribute.operator || ''}="${attribute.value}"` : ''}]`)
|
300
|
+
.join('')
|
301
|
+
: ''}${this.pseudoClass || ''}${this.pseudoArguments ? `(${this.pseudoArguments})` : ''}`;
|
328
302
|
}
|
329
303
|
}
|
330
304
|
exports.default = SelectorItem;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SelectorItem.js","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":";;;;;AAAA,6EAAqD;AAKrD,MAAM,gBAAgB,GACrB,6FAA6F,CAAC;AAC/F,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAChD,MAAM,aAAa,GAClB,2FAA2F,CAAC;AAC7F,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAClD,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,SAAS,GAAG,iCAAiC,CAAC;AACpD,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAqB,YAAY;IAWhC;;;;OAIG;IACH,YAAY,QAAgB;QATpB,YAAO,GAAG,IAAI,CAAC;QAUtB,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7F,IAAI,CAAC,KAAK,GAAG,YAAY,KAAK,GAAG,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7D,4EAA4E;QAC5E,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,KAAK,QAAQ,CAAC;QACzD,IAAI,CAAC,OAAO;YACX,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACtF,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAiB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,aAAa;QACb,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAC5C;QAED,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,EAAE;YACd,cAAc,IAAI,GAAG,CAAC;YAEtB,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE;gBAC3B,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,cAAc,IAAI,CAAC,CAAC;YAEpB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;gBACrC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,cAAc;QACd,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpD,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACpB,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,eAAe;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;YAC5D,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC7C;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACxD,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACpB,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,OAAiB,EAAE,QAAgB;QACxD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC9C,IAAI,KAAuB,CAAC;QAE5B,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC1D,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnE,OAAO,KAAK,CAAC;aACb;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBACpB,IAAI,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBAC/D,OAAO,KAAK,CAAC;iBACb;gBACD,IACC,CAAC,UAAU;oBACX,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAC/C;oBACD,OAAO,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC9D,OAAO,KAAK,CAAC;iBACb;aACD;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxE,OAAO,KAAK,CAAC;aACb;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACK,eAAe,CAAC,OAAiB,EAAE,MAAc,EAAE,KAAa;QACvE,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAY,OAAO,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE;YAC7B,KAAK,aAAa;gBACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;gBACzE,MAAM;YACP,KAAK,gBAAgB;gBACpB,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM;YACP,KAAK,kBAAkB;gBACtB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBACnF,MAAM;SACP;QAED,IAAI,KAAK,KAAK,KAAK,EAAE;YACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE;YAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;gBACrC,MAAM,IAAI,sBAAY,CAAC,iBAAiB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,CAAC;aACxE;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE;gBAC9D,IAAI,UAAU,KAAK,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE;oBACnC,OAAO,IAAI,CAAC;iBACZ;aACD;YAED,OAAO,KAAK,CAAC;SACb;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YAClB,MAAM,IAAI,sBAAY,CAAC,iBAAiB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,CAAC;SACxE;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACK,uBAAuB,CAAC,OAAiB,EAAE,MAAc;QAChE,MAAM,MAAM,GAAa,OAAO,CAAC,UAAU,CAAC;QAE5C,IAAI,CAAC,MAAM,EAAE;YACZ,OAAO,KAAK,CAAC;SACb;QAED,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE;YAC7B,KAAK,aAAa;gBACjB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;YACvC,KAAK,YAAY;gBAChB,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC1C,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC;YACpE,KAAK,YAAY;gBAChB,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC1C,OAAO,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;YAC3E,KAAK,eAAe;gBACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;oBACpC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;wBACtC,OAAO,KAAK,KAAK,OAAO,CAAC;qBACzB;iBACD;gBACD,OAAO,KAAK,CAAC;YACd,KAAK,cAAc;gBAClB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;wBACtC,OAAO,KAAK,KAAK,OAAO,CAAC;qBACzB;iBACD;gBACD,OAAO,KAAK,CAAC;YACd,KAAK,cAAc;gBAClB,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;oBACpC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;wBACtC,IAAI,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE;4BACjC,OAAO,KAAK,CAAC;yBACb;wBACD,OAAO,GAAG,IAAI,CAAC;qBACf;iBACD;gBACD,OAAO,OAAO,CAAC;YAChB,KAAK,SAAS;gBACb,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,IAAwB,OAAQ,CAAC,OAAO,CAAC;SAC5E;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CACvB,OAAiB,EACjB,QAAgB;QAEhB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,KAAuB,CAAC;QAC5B,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;YAEtE,cAAc,IAAI,EAAE,CAAC;YAErB,IACC,CAAC,QAAQ;gBACT,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3D,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxF;gBACD,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACK,YAAY,CACnB,OAAiB,EACjB,QAAgB;QAEhB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,KAAuB,CAAC;QAE5B,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;YAC5C,cAAc,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACtE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC7C;SACD;QAED,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAAC,OAAiB,EAAE,aAAqB;QACpE,IAAI,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC9C,MAAM,IAAI,sBAAY,CAAC,iBAAiB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,CAAC;SACxE;QAED,OAAO,CAAC,CAAW,OAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;OASG;IACH;;;;;;OAMG;IACK,4BAA4B,CACnC,OAAiB,EACjB,aAAqB,EACrB,cAAsB,EACtB,YAAoB,IAAI;QAExB,MAAM,SAAS,GAAa,OAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,cAAc,CAAC;QAE7B,IAAI,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC9C,MAAM,IAAI,sBAAY,CAAC,iBAAiB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,SAAS,EAAE;YACf,OAAO,KAAK,CAAC;SACb;QAED,IAAI,SAAS,EAAE;YACd,QAAQ,SAAS,EAAE;gBAClB,oDAAoD;gBACpD,KAAK,GAAG;oBACP,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtE,yDAAyD;gBACzD,KAAK,GAAG;oBACP,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1F,wDAAwD;gBACxD,KAAK,GAAG;oBACP,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1E,sDAAsD;gBACtD,KAAK,GAAG;oBACP,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxE,qDAAqD;gBACrD,KAAK,GAAG;oBACP,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACxE;SACD;QAED,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC;IAC/C,CAAC;CACD;AArXD,+BAqXC"}
|
1
|
+
{"version":3,"file":"SelectorItem.js","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import SelectorItem from './SelectorItem';
|
2
|
+
/**
|
3
|
+
* Utility for parsing a selection string.
|
4
|
+
*/
|
5
|
+
export default class SelectorParser {
|
6
|
+
/**
|
7
|
+
* Parses a selector string and returns an instance of SelectorItem.
|
8
|
+
*
|
9
|
+
* @param selector Selector.
|
10
|
+
* @returns Selector itme.
|
11
|
+
*/
|
12
|
+
static getSelectorItem(selector: string): SelectorItem;
|
13
|
+
/**
|
14
|
+
* Parses a selector string and returns groups with SelectorItem instances.
|
15
|
+
*
|
16
|
+
* @param selector Selector.
|
17
|
+
* @returns Selector groups.
|
18
|
+
*/
|
19
|
+
static getSelectorGroups(selector: string): Array<Array<SelectorItem>>;
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=SelectorParser.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SelectorParser.d.ts","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAoC1C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC;;;;;OAKG;WACW,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAI7D;;;;;OAKG;WACW,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;CA2F7E"}
|