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.

Files changed (59) hide show
  1. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js +1 -1
  2. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js.map +1 -1
  3. package/lib/nodes/document/Document.d.ts.map +1 -1
  4. package/lib/nodes/document/Document.js +3 -0
  5. package/lib/nodes/document/Document.js.map +1 -1
  6. package/lib/nodes/document-fragment/DocumentFragment.d.ts.map +1 -1
  7. package/lib/nodes/document-fragment/DocumentFragment.js +3 -0
  8. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  9. package/lib/nodes/element/Element.d.ts.map +1 -1
  10. package/lib/nodes/element/Element.js +5 -15
  11. package/lib/nodes/element/Element.js.map +1 -1
  12. package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
  13. package/lib/nodes/element/ElementUtility.js +18 -22
  14. package/lib/nodes/element/ElementUtility.js.map +1 -1
  15. package/lib/nodes/node/Node.d.ts +0 -8
  16. package/lib/nodes/node/Node.d.ts.map +1 -1
  17. package/lib/nodes/node/Node.js +4 -23
  18. package/lib/nodes/node/Node.js.map +1 -1
  19. package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
  20. package/lib/nodes/node/NodeUtility.js +3 -4
  21. package/lib/nodes/node/NodeUtility.js.map +1 -1
  22. package/lib/query-selector/ISelectorAttribute.d.ts +6 -0
  23. package/lib/query-selector/ISelectorAttribute.d.ts.map +1 -0
  24. package/lib/query-selector/ISelectorAttribute.js +3 -0
  25. package/lib/query-selector/ISelectorAttribute.js.map +1 -0
  26. package/lib/query-selector/ISelectorMatch.d.ts +4 -0
  27. package/lib/query-selector/ISelectorMatch.d.ts.map +1 -0
  28. package/lib/query-selector/ISelectorMatch.js +3 -0
  29. package/lib/query-selector/ISelectorMatch.js.map +1 -0
  30. package/lib/query-selector/QuerySelector.d.ts +21 -31
  31. package/lib/query-selector/QuerySelector.d.ts.map +1 -1
  32. package/lib/query-selector/QuerySelector.js +123 -131
  33. package/lib/query-selector/QuerySelector.js.map +1 -1
  34. package/lib/query-selector/SelectorCombinatorEnum.d.ts +7 -0
  35. package/lib/query-selector/SelectorCombinatorEnum.d.ts.map +1 -0
  36. package/lib/query-selector/SelectorCombinatorEnum.js +10 -0
  37. package/lib/query-selector/SelectorCombinatorEnum.js.map +1 -0
  38. package/lib/query-selector/SelectorItem.d.ts +41 -56
  39. package/lib/query-selector/SelectorItem.d.ts.map +1 -1
  40. package/lib/query-selector/SelectorItem.js +194 -220
  41. package/lib/query-selector/SelectorItem.js.map +1 -1
  42. package/lib/query-selector/SelectorParser.d.ts +21 -0
  43. package/lib/query-selector/SelectorParser.d.ts.map +1 -0
  44. package/lib/query-selector/SelectorParser.js +154 -0
  45. package/lib/query-selector/SelectorParser.js.map +1 -0
  46. package/package.json +1 -1
  47. package/src/css/declaration/utilities/CSSStyleDeclarationElementStyle.ts +2 -2
  48. package/src/nodes/document/Document.ts +6 -0
  49. package/src/nodes/document-fragment/DocumentFragment.ts +6 -0
  50. package/src/nodes/element/Element.ts +9 -17
  51. package/src/nodes/element/ElementUtility.ts +20 -25
  52. package/src/nodes/node/Node.ts +6 -25
  53. package/src/nodes/node/NodeUtility.ts +3 -8
  54. package/src/query-selector/ISelectorAttribute.ts +5 -0
  55. package/src/query-selector/ISelectorMatch.ts +3 -0
  56. package/src/query-selector/QuerySelector.ts +187 -170
  57. package/src/query-selector/SelectorCombinatorEnum.ts +7 -0
  58. package/src/query-selector/SelectorItem.ts +238 -264
  59. 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 ATTRIBUTE_REGEXP = /\[([a-zA-Z0-9-_]+)\]|\[([a-zA-Z0-9-_]+)([~|^$*]{0,1})[ ]*=[ ]*["']{0,1}([^"']+)["']{0,1}\]/g;
8
- const ATTRIBUTE_NAME_REGEXP = /[^a-zA-Z0-9-_$]/;
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 selector Selector.
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(selector) {
25
- this.tagName = null;
26
- const baseSelector = selector.replace(new RegExp(PSUEDO_REGEXP, 'g'), '');
27
- const idMatch = !this.isAll && selector.includes('#') ? baseSelector.match(ID_REGEXP) : null;
28
- this.isAll = baseSelector === '*';
29
- this.isID = !!idMatch;
30
- this.isAttribute = !this.isAll && baseSelector.includes('[');
31
- // If baseSelector !== selector then some psuedo selector was replaced above
32
- this.isPseudo = !this.isAll && baseSelector !== selector;
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
- // Is all (*)
51
- if (this.isAll) {
52
- return { priorityWeight: 0, matches: true };
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.isID) {
56
- priorityWeight += 100;
52
+ if (this.id) {
57
53
  if (this.id !== element.id) {
58
- return { priorityWeight: 0, matches: false };
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.isClass) {
70
- const result = this.matchesClass(element, selector);
71
- priorityWeight += result.priorityWeight;
72
- if (!result.matches) {
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.isAttribute) {
82
- const result = this.matchesAttribute(element, selector);
83
- priorityWeight += result.priorityWeight;
84
- if (!result.matches) {
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
- return { priorityWeight, matches: true };
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 true;
78
+ return { priorityWeight };
123
79
  }
124
80
  /**
125
- * Matches a nth-child selector.
81
+ * Matches a psuedo selector.
126
82
  *
127
83
  * @param element Element.
128
- * @param psuedo Psuedo name.
129
- * @param place Place.
130
- * @returns True if it is a match.
84
+ * @returns Result.
131
85
  */
132
- matchesNthChild(element, psuedo, place) {
133
- let children = element.parentNode ? element.parentNode.children : [];
134
- switch (psuedo.toLowerCase()) {
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
- children = children.filter((child) => child.tagName === element.tagName).reverse();
143
- break;
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
- return children[number - 1] === element;
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
- return false;
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 (psuedo.toLowerCase()) {
116
+ switch (this.pseudoClass) {
187
117
  case 'first-child':
188
118
  return parent.children[0] === element;
189
119
  case 'last-child':
190
- const lastChildChildren = parent.children;
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
- const onlyChildChildren = parent.children;
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 attribute.
171
+ * Matches a nth-child selector.
228
172
  *
229
173
  * @param element Element.
230
- * @param selector Selector.
231
- * @returns Result.
174
+ * @param parentChildren Parent children.
175
+ * @param placement Placement.
176
+ * @returns True if it is a match.
232
177
  */
233
- matchesAttribute(element, selector) {
234
- const regexp = new RegExp(ATTRIBUTE_REGEXP, 'g');
235
- let match;
236
- let priorityWeight = 0;
237
- while ((match = regexp.exec(selector))) {
238
- const isPsuedo = match.index > 0 && selector[match.index - 1] === '(';
239
- priorityWeight += 10;
240
- if (!isPsuedo &&
241
- ((match[1] && !this.matchesAttributeName(element, match[1])) ||
242
- (match[2] && !this.matchesAttributeNameAndValue(element, match[2], match[4], match[3])))) {
243
- return { priorityWeight: 0, matches: false };
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 { priorityWeight, matches: true };
206
+ return parentChildren[number - 1] === element;
247
207
  }
248
208
  /**
249
- * Matches class.
209
+ * Matches attribute.
250
210
  *
251
211
  * @param element Element.
252
- * @param selector Selector.
253
212
  * @returns Result.
254
213
  */
255
- matchesClass(element, selector) {
256
- const regexp = new RegExp(CLASS_REGEXP, 'g');
257
- const classList = element.className.split(' ');
258
- const classSelector = selector.split(CSS_ESCAPE_REGEXP)[0];
214
+ matchAttributes(element) {
215
+ if (!this.attributes) {
216
+ return null;
217
+ }
259
218
  let priorityWeight = 0;
260
- let match;
261
- while ((match = regexp.exec(classSelector))) {
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 (!classList.includes(match[1].replace(CSS_ESCAPE_CHAR_REGEXP, ''))) {
264
- return { priorityWeight: 0, matches: false };
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, matches: true };
269
+ return { priorityWeight };
268
270
  }
269
271
  /**
270
- * Matches attribute name only.
272
+ * Matches class.
271
273
  *
272
274
  * @param element Element.
273
- * @param attributeName Attribute name.
274
- * @returns True if it is a match.
275
+ * @returns Result.
275
276
  */
276
- matchesAttributeName(element, attributeName) {
277
- if (ATTRIBUTE_NAME_REGEXP.test(attributeName)) {
278
- throw new DOMException_1.default(`The selector "${this.selector}" is not valid.`);
277
+ matchClass(element) {
278
+ if (!this.classNames) {
279
+ return null;
279
280
  }
280
- return !!element._attributes[attributeName.toLowerCase()];
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
- * @param element
295
- * @param attributeName
296
- * @param attributeValue
297
- * @param matchType
294
+ * @returns Selector string.
298
295
  */
299
- matchesAttributeNameAndValue(element, attributeName, attributeValue, matchType = null) {
300
- const attribute = element._attributes[attributeName.toLowerCase()];
301
- const value = attributeValue;
302
- if (ATTRIBUTE_NAME_REGEXP.test(attributeName)) {
303
- throw new DOMException_1.default(`The selector "${this.selector}" is not valid.`);
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":"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"}
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"}