happy-dom 7.3.0 → 7.5.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 (114) hide show
  1. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +9 -0
  2. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  3. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.d.ts +0 -2
  4. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js +54 -25
  5. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js.map +1 -1
  6. package/lib/event/EventTarget.d.ts +14 -1
  7. package/lib/event/EventTarget.js +16 -1
  8. package/lib/event/EventTarget.js.map +1 -1
  9. package/lib/event/IEventTarget.d.ts +20 -0
  10. package/lib/event/NonImplementedEventTypes.js +2 -1
  11. package/lib/event/NonImplementedEventTypes.js.map +1 -1
  12. package/lib/fetch/IRequestInit.d.ts +1 -0
  13. package/lib/form-data/IFormData.d.ts +2 -0
  14. package/lib/nodes/character-data/CharacterData.js +3 -0
  15. package/lib/nodes/character-data/CharacterData.js.map +1 -1
  16. package/lib/nodes/document/Document.d.ts +110 -1
  17. package/lib/nodes/document/Document.js +112 -1
  18. package/lib/nodes/document/Document.js.map +1 -1
  19. package/lib/nodes/document/IDocument.d.ts +109 -1
  20. package/lib/nodes/element/Element.d.ts +35 -0
  21. package/lib/nodes/element/Element.js +42 -7
  22. package/lib/nodes/element/Element.js.map +1 -1
  23. package/lib/nodes/element/IElement.d.ts +35 -0
  24. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +3 -0
  25. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -0
  26. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
  27. package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +3 -0
  28. package/lib/nodes/html-element/HTMLElement.d.ts +26 -0
  29. package/lib/nodes/html-element/HTMLElement.js +26 -0
  30. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  31. package/lib/nodes/html-element/IHTMLElement.d.ts +26 -0
  32. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +4 -0
  33. package/lib/nodes/html-form-element/HTMLFormElement.js +7 -0
  34. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  35. package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +4 -0
  36. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +4 -0
  37. package/lib/nodes/html-input-element/HTMLInputElement.js +4 -0
  38. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  39. package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +4 -0
  40. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +23 -8
  41. package/lib/nodes/html-media-element/HTMLMediaElement.js +15 -0
  42. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  43. package/lib/nodes/html-media-element/IHTMLMediaElement.d.ts +24 -0
  44. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +3 -0
  45. package/lib/nodes/html-select-element/HTMLSelectElement.js +3 -0
  46. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  47. package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +3 -0
  48. package/lib/nodes/html-slot-element/HTMLSlotElement.d.ts +2 -0
  49. package/lib/nodes/html-slot-element/HTMLSlotElement.js +5 -0
  50. package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
  51. package/lib/nodes/html-slot-element/IHTMLSlotElement.d.ts +2 -0
  52. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +4 -1
  53. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +4 -1
  54. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  55. package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +3 -0
  56. package/lib/nodes/node/Node.js +9 -0
  57. package/lib/nodes/node/Node.js.map +1 -1
  58. package/lib/nodes/shadow-root/IShadowRoot.d.ts +2 -0
  59. package/lib/nodes/shadow-root/ShadowRoot.d.ts +2 -0
  60. package/lib/nodes/shadow-root/ShadowRoot.js +2 -0
  61. package/lib/nodes/shadow-root/ShadowRoot.js.map +1 -1
  62. package/lib/nodes/svg-element/ISVGElement.d.ts +7 -0
  63. package/lib/nodes/svg-element/ISVGSVGElement.d.ts +19 -0
  64. package/lib/nodes/svg-element/SVGElement.d.ts +7 -0
  65. package/lib/nodes/svg-element/SVGElement.js +7 -0
  66. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  67. package/lib/nodes/svg-element/SVGSVGElement.d.ts +19 -0
  68. package/lib/nodes/svg-element/SVGSVGElement.js +22 -0
  69. package/lib/nodes/svg-element/SVGSVGElement.js.map +1 -1
  70. package/lib/query-selector/QuerySelector.d.ts +21 -0
  71. package/lib/query-selector/QuerySelector.js +45 -4
  72. package/lib/query-selector/QuerySelector.js.map +1 -1
  73. package/lib/query-selector/SelectorItem.d.ts +14 -11
  74. package/lib/query-selector/SelectorItem.js +35 -19
  75. package/lib/query-selector/SelectorItem.js.map +1 -1
  76. package/lib/window/GlobalWindow.d.ts +2 -0
  77. package/lib/window/IWindow.d.ts +4 -0
  78. package/lib/window/Window.d.ts +3 -0
  79. package/package.json +2 -2
  80. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +12 -0
  81. package/src/css/declaration/utilities/CSSStyleDeclarationElementStyle.ts +86 -36
  82. package/src/event/EventTarget.ts +17 -1
  83. package/src/event/IEventTarget.ts +22 -0
  84. package/src/event/NonImplementedEventTypes.ts +2 -1
  85. package/src/nodes/character-data/CharacterData.ts +4 -0
  86. package/src/nodes/document/Document.ts +115 -1
  87. package/src/nodes/document/IDocument.ts +111 -1
  88. package/src/nodes/element/Element.ts +46 -7
  89. package/src/nodes/element/IElement.ts +37 -0
  90. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +4 -0
  91. package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +5 -0
  92. package/src/nodes/html-element/HTMLElement.ts +28 -0
  93. package/src/nodes/html-element/IHTMLElement.ts +28 -0
  94. package/src/nodes/html-form-element/HTMLFormElement.ts +6 -0
  95. package/src/nodes/html-form-element/IHTMLFormElement.ts +6 -0
  96. package/src/nodes/html-input-element/HTMLInputElement.ts +5 -0
  97. package/src/nodes/html-input-element/IHTMLInputElement.ts +6 -0
  98. package/src/nodes/html-media-element/HTMLMediaElement.ts +23 -8
  99. package/src/nodes/html-media-element/IHTMLMediaElement.ts +26 -0
  100. package/src/nodes/html-select-element/HTMLSelectElement.ts +5 -0
  101. package/src/nodes/html-select-element/IHTMLSelectElement.ts +5 -0
  102. package/src/nodes/html-slot-element/HTMLSlotElement.ts +4 -0
  103. package/src/nodes/html-slot-element/IHTMLSlotElement.ts +4 -0
  104. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +6 -1
  105. package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +5 -0
  106. package/src/nodes/node/Node.ts +12 -0
  107. package/src/nodes/shadow-root/IShadowRoot.ts +4 -0
  108. package/src/nodes/shadow-root/ShadowRoot.ts +4 -0
  109. package/src/nodes/svg-element/ISVGElement.ts +9 -0
  110. package/src/nodes/svg-element/ISVGSVGElement.ts +21 -0
  111. package/src/nodes/svg-element/SVGElement.ts +9 -0
  112. package/src/nodes/svg-element/SVGSVGElement.ts +21 -0
  113. package/src/query-selector/QuerySelector.ts +66 -5
  114. package/src/query-selector/SelectorItem.ts +66 -37
@@ -44,39 +44,50 @@ class SelectorItem {
44
44
  * Matches a selector against an element.
45
45
  *
46
46
  * @param element HTML element.
47
- * @returns TRUE if matching.
47
+ * @returns Result.
48
48
  */
49
49
  match(element) {
50
50
  const selector = this.selector;
51
+ let priorityWeight = 0;
51
52
  // Is all (*)
52
53
  if (this.isAll) {
53
- return true;
54
+ return { priorityWeight: 0, matches: true };
54
55
  }
55
56
  // ID Match
56
57
  if (this.isID) {
58
+ priorityWeight += 100;
57
59
  if (this.id !== element.id) {
58
- return false;
60
+ return { priorityWeight: 0, matches: false };
59
61
  }
60
62
  }
61
63
  // Tag name match
62
64
  if (this.isTagName) {
65
+ priorityWeight += 1;
63
66
  if (this.tagName !== element.tagName) {
64
- return false;
67
+ return { priorityWeight: 0, matches: false };
65
68
  }
66
69
  }
67
70
  // Class match
68
- if (this.isClass && !this.matchesClass(element, selector)) {
69
- return false;
71
+ if (this.isClass) {
72
+ const result = this.matchesClass(element, selector);
73
+ priorityWeight += result.priorityWeight;
74
+ if (!result.matches) {
75
+ return { priorityWeight: 0, matches: false };
76
+ }
70
77
  }
71
78
  // Pseudo match
72
79
  if (this.isPseudo && !this.matchesPsuedo(element, selector)) {
73
- return false;
80
+ return { priorityWeight: 0, matches: false };
74
81
  }
75
82
  // Attribute match
76
- if (this.isAttribute && !this.matchesAttribute(element, selector)) {
77
- return false;
83
+ if (this.isAttribute) {
84
+ const result = this.matchesAttribute(element, selector);
85
+ priorityWeight += result.priorityWeight;
86
+ if (!result.matches) {
87
+ return { priorityWeight: 0, matches: false };
88
+ }
78
89
  }
79
- return true;
90
+ return { priorityWeight, matches: true };
80
91
  }
81
92
  /**
82
93
  * Matches a psuedo selector.
@@ -94,8 +105,8 @@ class SelectorItem {
94
105
  return false;
95
106
  }
96
107
  else if (match[3] &&
97
- ((isNotClass && this.matchesClass(element, match[3])) ||
98
- (!isNotClass && this.matchesAttribute(element, match[3])))) {
108
+ ((isNotClass && this.matchesClass(element, match[3]).matches) ||
109
+ (!isNotClass && this.matchesAttribute(element, match[3])).matches)) {
99
110
  return false;
100
111
  }
101
112
  else if (match[4] && !this.matchesPsuedoExpression(element, match[4])) {
@@ -209,38 +220,43 @@ class SelectorItem {
209
220
  *
210
221
  * @param element Element.
211
222
  * @param selector Selector.
212
- * @returns True if it is a match.
223
+ * @returns Result.
213
224
  */
214
225
  matchesAttribute(element, selector) {
215
226
  const regexp = new RegExp(ATTRIBUTE_REGEXP, 'g');
216
227
  let match;
228
+ let priorityWeight = 0;
217
229
  while ((match = regexp.exec(selector))) {
218
230
  const isPsuedo = match.index > 0 && selector[match.index - 1] === '(';
231
+ priorityWeight += 10;
219
232
  if (!isPsuedo &&
220
233
  ((match[1] && !this.matchesAttributeName(element, match[1])) ||
221
234
  (match[2] && !this.matchesAttributeNameAndValue(element, match[2], match[4], match[3])))) {
222
- return false;
235
+ return { priorityWeight: 0, matches: false };
223
236
  }
224
237
  }
225
- return true;
238
+ return { priorityWeight, matches: true };
226
239
  }
227
240
  /**
228
241
  * Matches class.
229
242
  *
230
243
  * @param element Element.
231
244
  * @param selector Selector.
232
- * @returns True if it is a match.
245
+ * @returns Result.
233
246
  */
234
247
  matchesClass(element, selector) {
235
248
  const regexp = new RegExp(CLASS_REGEXP, 'g');
236
249
  const classList = element.className.split(' ');
250
+ const classSelector = selector.split(':')[0];
251
+ let priorityWeight = 0;
237
252
  let match;
238
- while ((match = regexp.exec(selector.split(':')[0]))) {
253
+ while ((match = regexp.exec(classSelector))) {
254
+ priorityWeight += 10;
239
255
  if (!classList.includes(match[1])) {
240
- return false;
256
+ return { priorityWeight: 0, matches: false };
241
257
  }
242
258
  }
243
- return true;
259
+ return { priorityWeight, matches: true };
244
260
  }
245
261
  /**
246
262
  * Matches attribute name only.
@@ -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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"}
@@ -1,4 +1,6 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
2
4
  import Window from './Window';
3
5
  /**
4
6
  * Browser window.
@@ -1,4 +1,8 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ /// <reference types="node" />
2
6
  import CustomElementRegistry from '../custom-element/CustomElementRegistry';
3
7
  import Document from '../nodes/document/Document';
4
8
  import HTMLDocument from '../nodes/html-document/HTMLDocument';
@@ -1,4 +1,7 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
2
5
  import CustomElementRegistry from '../custom-element/CustomElementRegistry';
3
6
  import Document from '../nodes/document/Document';
4
7
  import HTMLDocument from '../nodes/html-document/HTMLDocument';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "7.3.0",
3
+ "version": "7.5.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -75,5 +75,5 @@
75
75
  "ts-jest": "^27.1.3",
76
76
  "typescript": "^4.6.2"
77
77
  },
78
- "gitHead": "43c5b622692bf31a49d17d69edca1d13cdba03a0"
78
+ "gitHead": "74c34698afe9331bce2e3266aaac1bc6eec35bcf"
79
79
  }
@@ -86,6 +86,10 @@ export default abstract class AbstractCSSStyleDeclaration {
86
86
  this._ownerElement['_attributes']['style'].name = 'style';
87
87
  }
88
88
 
89
+ if (this._ownerElement.isConnected) {
90
+ this._ownerElement.ownerDocument['_cacheID']++;
91
+ }
92
+
89
93
  this._ownerElement['_attributes']['style'].value = style.toString();
90
94
  }
91
95
  } else {
@@ -137,6 +141,10 @@ export default abstract class AbstractCSSStyleDeclaration {
137
141
  const style = this._elementStyle.getElementStyle();
138
142
  style.set(name, value, !!priority);
139
143
 
144
+ if (this._ownerElement.isConnected) {
145
+ this._ownerElement.ownerDocument['_cacheID']++;
146
+ }
147
+
140
148
  this._ownerElement['_attributes']['style'].value = style.toString();
141
149
  } else {
142
150
  this._style.set(name, value, !!priority);
@@ -163,6 +171,10 @@ export default abstract class AbstractCSSStyleDeclaration {
163
171
  style.remove(name);
164
172
  const newCSSText = style.toString();
165
173
  if (newCSSText) {
174
+ if (this._ownerElement.isConnected) {
175
+ this._ownerElement.ownerDocument['_cacheID']++;
176
+ }
177
+
166
178
  this._ownerElement['_attributes']['style'].value = newCSSText;
167
179
  } else {
168
180
  delete this._ownerElement['_attributes']['style'];
@@ -12,14 +12,29 @@ import CSSStyleRule from '../../rules/CSSStyleRule';
12
12
  import CSSStyleDeclarationElementDefaultCSS from './CSSStyleDeclarationElementDefaultCSS';
13
13
  import CSSStyleDeclarationElementInheritedProperties from './CSSStyleDeclarationElementInheritedProperties';
14
14
  import CSSStyleDeclarationCSSParser from './CSSStyleDeclarationCSSParser';
15
+ import QuerySelector from '../../../query-selector/QuerySelector';
15
16
 
16
17
  const CSS_VARIABLE_REGEXP = /var\( *(--[^) ]+)\)/g;
17
18
 
19
+ type IStyleAndElement = {
20
+ element: IElement | IShadowRoot | IDocument;
21
+ cssTexts: Array<{ cssText: string; priorityWeight: number }>;
22
+ };
23
+
18
24
  /**
19
25
  * CSS Style Declaration utility
20
26
  */
21
27
  export default class CSSStyleDeclarationElementStyle {
22
- private cache: { [k: string]: CSSStyleDeclarationPropertyManager } = {};
28
+ private cache: {
29
+ propertyManager: CSSStyleDeclarationPropertyManager;
30
+ cssText: string;
31
+ documentCacheID: number;
32
+ } = {
33
+ propertyManager: null,
34
+ cssText: null,
35
+ documentCacheID: null
36
+ };
37
+
23
38
  private element: IElement;
24
39
  private computed: boolean;
25
40
 
@@ -47,11 +62,12 @@ export default class CSSStyleDeclarationElementStyle {
47
62
  const cssText = this.element['_attributes']['style']?.value;
48
63
 
49
64
  if (cssText) {
50
- if (this.cache[cssText]) {
51
- return this.cache[cssText];
65
+ if (this.cache.propertyManager && this.cache.cssText === cssText) {
66
+ return this.cache.propertyManager;
52
67
  }
53
- this.cache[cssText] = new CSSStyleDeclarationPropertyManager({ cssText });
54
- return this.cache[cssText];
68
+ this.cache.cssText = cssText;
69
+ this.cache.propertyManager = new CSSStyleDeclarationPropertyManager({ cssText });
70
+ return this.cache.propertyManager;
55
71
  }
56
72
 
57
73
  return new CSSStyleDeclarationPropertyManager();
@@ -64,28 +80,37 @@ export default class CSSStyleDeclarationElementStyle {
64
80
  * @returns Style sheets.
65
81
  */
66
82
  private getComputedElementStyle(): CSSStyleDeclarationPropertyManager {
67
- const documentElements: Array<{ element: IElement; cssText: string }> = [];
68
- const parentElements: Array<{ element: IElement; cssText: string }> = [];
69
- let styleAndElement = {
83
+ const documentElements: Array<IStyleAndElement> = [];
84
+ const parentElements: Array<IStyleAndElement> = [];
85
+ let styleAndElement: IStyleAndElement = {
70
86
  element: <IElement | IShadowRoot | IDocument>this.element,
71
- cssText: ''
87
+ cssTexts: []
72
88
  };
73
- let shadowRootElements: Array<{ element: IElement; cssText: string }> = [];
89
+ let shadowRootElements: Array<IStyleAndElement> = [];
74
90
 
75
91
  if (!this.element.isConnected) {
76
92
  return new CSSStyleDeclarationPropertyManager();
77
93
  }
78
94
 
95
+ if (
96
+ this.cache.propertyManager &&
97
+ this.cache.documentCacheID === this.element.ownerDocument['_cacheID']
98
+ ) {
99
+ return this.cache.propertyManager;
100
+ }
101
+
102
+ this.cache.documentCacheID = this.element.ownerDocument['_cacheID'];
103
+
79
104
  // Walks through all parent elements and stores them in an array with element and matching CSS text.
80
105
  while (styleAndElement.element) {
81
106
  if (styleAndElement.element.nodeType === NodeTypeEnum.elementNode) {
82
107
  const rootNode = styleAndElement.element.getRootNode();
83
108
  if (rootNode.nodeType === NodeTypeEnum.documentNode) {
84
- documentElements.unshift(<{ element: IElement; cssText: string }>styleAndElement);
109
+ documentElements.unshift(styleAndElement);
85
110
  } else {
86
- shadowRootElements.unshift(<{ element: IElement; cssText: string }>styleAndElement);
111
+ shadowRootElements.unshift(styleAndElement);
87
112
  }
88
- parentElements.unshift(<{ element: IElement; cssText: string }>styleAndElement);
113
+ parentElements.unshift(styleAndElement);
89
114
  }
90
115
 
91
116
  if (styleAndElement.element === this.element.ownerDocument) {
@@ -103,7 +128,7 @@ export default class CSSStyleDeclarationElementStyle {
103
128
  }
104
129
  }
105
130
 
106
- styleAndElement = { element: null, cssText: '' };
131
+ styleAndElement = { element: null, cssTexts: [] };
107
132
  } else if ((<IShadowRoot>styleAndElement.element).host) {
108
133
  const styleSheets = <INodeList<IHTMLStyleElement>>(
109
134
  (<IShadowRoot>styleAndElement.element).querySelectorAll('style,link[rel="stylesheet"]')
@@ -111,7 +136,7 @@ export default class CSSStyleDeclarationElementStyle {
111
136
 
112
137
  styleAndElement = {
113
138
  element: <IElement>(<IShadowRoot>styleAndElement.element).host,
114
- cssText: ''
139
+ cssTexts: []
115
140
  };
116
141
 
117
142
  for (const styleSheet of styleSheets) {
@@ -120,39 +145,58 @@ export default class CSSStyleDeclarationElementStyle {
120
145
  this.parseCSSRules({
121
146
  elements: shadowRootElements,
122
147
  cssRules: sheet.cssRules,
123
- hostElement: <{ element: IElement; cssText: string }>styleAndElement
148
+ hostElement: styleAndElement
124
149
  });
125
150
  }
126
151
  }
127
152
  shadowRootElements = [];
128
153
  } else {
129
- styleAndElement = { element: <IElement>styleAndElement.element.parentNode, cssText: '' };
154
+ styleAndElement = { element: <IElement>styleAndElement.element.parentNode, cssTexts: [] };
130
155
  }
131
156
  }
132
157
 
133
158
  // Concatenates all parent element CSS to one string.
134
159
  const targetElement = parentElements[parentElements.length - 1];
135
- let inheritedCSSText = CSSStyleDeclarationElementDefaultCSS.default;
160
+ let inheritedCSSText = '';
136
161
 
137
162
  for (const parentElement of parentElements) {
138
163
  if (parentElement !== targetElement) {
139
- inheritedCSSText +=
140
- (CSSStyleDeclarationElementDefaultCSS[parentElement.element.tagName] || '') +
141
- parentElement.cssText +
142
- (parentElement.element['_attributes']['style']?.value || '');
164
+ parentElement.cssTexts.sort((a, b) => a.priorityWeight - b.priorityWeight);
165
+
166
+ if (CSSStyleDeclarationElementDefaultCSS[(<IElement>parentElement.element).tagName]) {
167
+ inheritedCSSText +=
168
+ CSSStyleDeclarationElementDefaultCSS[(<IElement>parentElement.element).tagName];
169
+ }
170
+
171
+ for (const cssText of parentElement.cssTexts) {
172
+ inheritedCSSText += cssText.cssText;
173
+ }
174
+
175
+ if (parentElement.element['_attributes']['style']?.value) {
176
+ inheritedCSSText += parentElement.element['_attributes']['style'].value;
177
+ }
143
178
  }
144
179
  }
145
180
 
146
181
  const cssVariables: { [k: string]: string } = {};
147
182
  const properties = {};
148
- const targetCSSText =
149
- (CSSStyleDeclarationElementDefaultCSS[targetElement.element.tagName] || '') +
150
- targetElement.cssText +
151
- (targetElement.element['_attributes']['style']?.value || '');
183
+ let targetCSSText =
184
+ CSSStyleDeclarationElementDefaultCSS[(<IElement>targetElement.element).tagName] || '';
185
+
186
+ targetElement.cssTexts.sort((a, b) => a.priorityWeight - b.priorityWeight);
187
+
188
+ for (const cssText of targetElement.cssTexts) {
189
+ targetCSSText += cssText.cssText;
190
+ }
191
+
192
+ if (targetElement.element['_attributes']['style']?.value) {
193
+ targetCSSText += targetElement.element['_attributes']['style'].value;
194
+ }
195
+
152
196
  const combinedCSSText = inheritedCSSText + targetCSSText;
153
197
 
154
- if (this.cache[combinedCSSText]) {
155
- return this.cache[combinedCSSText];
198
+ if (this.cache.propertyManager && this.cache.cssText === combinedCSSText) {
199
+ return this.cache.propertyManager;
156
200
  }
157
201
 
158
202
  // Parses the parent element CSS and stores CSS variables and inherited properties.
@@ -204,7 +248,8 @@ export default class CSSStyleDeclarationElementStyle {
204
248
  propertyManager.set(name, properties[name].value, properties[name].important);
205
249
  }
206
250
 
207
- this.cache[combinedCSSText] = propertyManager;
251
+ this.cache.cssText = combinedCSSText;
252
+ this.cache.propertyManager = propertyManager;
208
253
 
209
254
  return propertyManager;
210
255
  }
@@ -216,13 +261,11 @@ export default class CSSStyleDeclarationElementStyle {
216
261
  * @param options.elements Elements.
217
262
  * @param options.cssRules CSS rules.
218
263
  * @param [options.hostElement] Host element.
219
- * @param [options.hostElement.element] Element.
220
- * @param [options.hostElement.cssText] CSS text.
221
264
  */
222
265
  private parseCSSRules(options: {
223
266
  cssRules: CSSRule[];
224
- elements: Array<{ element: IElement; cssText: string }>;
225
- hostElement?: { element: IElement; cssText: string };
267
+ elements: Array<IStyleAndElement>;
268
+ hostElement?: IStyleAndElement;
226
269
  }): void {
227
270
  if (!options.elements.length) {
228
271
  return;
@@ -236,12 +279,19 @@ export default class CSSStyleDeclarationElementStyle {
236
279
  if (selectorText) {
237
280
  if (selectorText.startsWith(':host')) {
238
281
  if (options.hostElement) {
239
- options.hostElement.cssText += (<CSSStyleRule>rule)._cssText;
282
+ options.hostElement.cssTexts.push({
283
+ cssText: (<CSSStyleRule>rule)._cssText,
284
+ priorityWeight: 0
285
+ });
240
286
  }
241
287
  } else {
242
288
  for (const element of options.elements) {
243
- if (element.element.matches(selectorText)) {
244
- element.cssText += (<CSSStyleRule>rule)._cssText;
289
+ const matchResult = QuerySelector.match(element.element, selectorText);
290
+ if (matchResult.matches) {
291
+ element.cssTexts.push({
292
+ cssText: (<CSSStyleRule>rule)._cssText,
293
+ priorityWeight: matchResult.priorityWeight
294
+ });
245
295
  }
246
296
  }
247
297
  }
@@ -77,12 +77,28 @@ export default abstract class EventTarget implements IEventTarget {
77
77
  /**
78
78
  * Adds an event listener.
79
79
  *
80
- * This is only supported by IE8- and Opera, but for some reason React uses it and calls it, so therefore we will keep support for it until they stop using it.
80
+ * TODO:
81
+ * Was used by with IE8- and Opera. React believed Happy DOM was a legacy browser and used them, but that is no longer the case, so we should remove this method after that this is verified.
81
82
  *
83
+ * @deprecated
82
84
  * @param type Event type.
83
85
  * @param listener Listener.
84
86
  */
85
87
  public attachEvent(type: string, listener: ((event: Event) => void) | IEventListener): void {
86
88
  this.addEventListener(type.replace('on', ''), listener);
87
89
  }
90
+
91
+ /**
92
+ * Removes an event listener.
93
+ *
94
+ * TODO:
95
+ * Was used by IE8- and Opera. React believed Happy DOM was a legacy browser and used them, but that is no longer the case, so we should remove this method after that this is verified.
96
+ *
97
+ * @deprecated
98
+ * @param type Event type.
99
+ * @param listener Listener.
100
+ */
101
+ public detachEvent(type: string, listener: ((event: Event) => void) | IEventListener): void {
102
+ this.removeEventListener(type.replace('on', ''), listener);
103
+ }
88
104
  }
@@ -28,4 +28,26 @@ export default interface IEventTarget {
28
28
  * @returns The return value is false if event is cancelable and at least one of the event handlers which handled this event called Event.preventDefault().
29
29
  */
30
30
  dispatchEvent(event: Event): boolean;
31
+
32
+ /**
33
+ * Adds an event listener.
34
+ *
35
+ * This is only supported by IE8- and Opera, but for some reason React uses it and calls it, so therefore we will keep support for it until they stop using it.
36
+ *
37
+ * @deprecated
38
+ * @param type Event type.
39
+ * @param listener Listener.
40
+ */
41
+ attachEvent(type: string, listener: ((event: Event) => void) | IEventListener): void;
42
+
43
+ /**
44
+ * Removes an event listener.
45
+ *
46
+ * This is only supported by IE8- and Opera, but for some reason React uses it and calls it, so therefore we will keep support for it until they stop using it.
47
+ *
48
+ * @deprecated
49
+ * @param type Event type.
50
+ * @param listener Listener.
51
+ */
52
+ detachEvent(type: string, listener: ((event: Event) => void) | IEventListener): void;
31
53
  }
@@ -40,5 +40,6 @@ export default [
40
40
  'TrackEvent',
41
41
  'TransitionEvent',
42
42
  'UserProximityEvent',
43
- 'WebGLContextEvent'
43
+ 'WebGLContextEvent',
44
+ 'TextEvent'
44
45
  ];
@@ -56,6 +56,10 @@ export default abstract class CharacterData extends Node implements ICharacterDa
56
56
  const oldValue = this._data;
57
57
  this._data = data;
58
58
 
59
+ if (this.isConnected) {
60
+ this.ownerDocument['_cacheID']++;
61
+ }
62
+
59
63
  // MutationObserver
60
64
  if (this._observers.length > 0) {
61
65
  for (const observer of this._observers) {