happy-dom 6.0.4 → 7.0.1

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 (179) hide show
  1. package/lib/css/CSSParser.js +12 -6
  2. package/lib/css/CSSParser.js.map +1 -1
  3. package/lib/css/CSSRule.d.ts +15 -13
  4. package/lib/css/CSSRule.js +18 -13
  5. package/lib/css/CSSRule.js.map +1 -1
  6. package/lib/css/CSSRuleTypeEnum.d.ts +17 -0
  7. package/lib/css/CSSRuleTypeEnum.js +21 -0
  8. package/lib/css/CSSRuleTypeEnum.js.map +1 -0
  9. package/lib/css/CSSStyleSheet.d.ts +6 -16
  10. package/lib/css/CSSStyleSheet.js +11 -19
  11. package/lib/css/CSSStyleSheet.js.map +1 -1
  12. package/lib/css/declaration/AbstractCSSStyleDeclaration.d.ts +76 -0
  13. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +182 -0
  14. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -0
  15. package/lib/css/declaration/CSSStyleDeclaration.d.ts +1194 -0
  16. package/lib/css/declaration/CSSStyleDeclaration.js +3566 -0
  17. package/lib/css/declaration/CSSStyleDeclaration.js.map +1 -0
  18. package/lib/css/declaration/utilities/CSSStyleDeclarationCSSParser.d.ts +12 -0
  19. package/lib/css/declaration/utilities/CSSStyleDeclarationCSSParser.js +34 -0
  20. package/lib/css/declaration/utilities/CSSStyleDeclarationCSSParser.js.map +1 -0
  21. package/lib/css/declaration/utilities/CSSStyleDeclarationElementDefaultCSS.d.ts +131 -0
  22. package/lib/css/declaration/utilities/CSSStyleDeclarationElementDefaultCSS.js +133 -0
  23. package/lib/css/declaration/utilities/CSSStyleDeclarationElementDefaultCSS.js.map +1 -0
  24. package/lib/css/declaration/utilities/CSSStyleDeclarationElementInheritedProperties.d.ts +40 -0
  25. package/lib/css/declaration/utilities/CSSStyleDeclarationElementInheritedProperties.js +42 -0
  26. package/lib/css/declaration/utilities/CSSStyleDeclarationElementInheritedProperties.js.map +1 -0
  27. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.d.ts +49 -0
  28. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js +244 -0
  29. package/lib/css/declaration/utilities/CSSStyleDeclarationElementStyle.js.map +1 -0
  30. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyGetParser.d.ts +167 -0
  31. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyGetParser.js +537 -0
  32. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyGetParser.js.map +1 -0
  33. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyManager.d.ts +65 -0
  34. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyManager.js +565 -0
  35. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertyManager.js.map +1 -0
  36. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertySetParser.d.ts +809 -0
  37. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertySetParser.js +2303 -0
  38. package/lib/css/declaration/utilities/CSSStyleDeclarationPropertySetParser.js.map +1 -0
  39. package/lib/css/declaration/utilities/CSSStyleDeclarationValueParser.d.ts +127 -0
  40. package/lib/css/declaration/utilities/CSSStyleDeclarationValueParser.js +411 -0
  41. package/lib/css/declaration/utilities/CSSStyleDeclarationValueParser.js.map +1 -0
  42. package/lib/css/declaration/utilities/ICSSStyleDeclarationPropertyValue.d.ts +4 -0
  43. package/lib/css/declaration/utilities/ICSSStyleDeclarationPropertyValue.js +3 -0
  44. package/lib/css/declaration/utilities/ICSSStyleDeclarationPropertyValue.js.map +1 -0
  45. package/lib/css/rules/CSSContainerRule.d.ts +15 -0
  46. package/lib/css/rules/CSSContainerRule.js +31 -0
  47. package/lib/css/rules/CSSContainerRule.js.map +1 -0
  48. package/lib/css/rules/CSSFontFaceRule.d.ts +10 -3
  49. package/lib/css/rules/CSSFontFaceRule.js +16 -0
  50. package/lib/css/rules/CSSFontFaceRule.js.map +1 -1
  51. package/lib/css/rules/CSSKeyframeRule.d.ts +10 -3
  52. package/lib/css/rules/CSSKeyframeRule.js +16 -0
  53. package/lib/css/rules/CSSKeyframeRule.js.map +1 -1
  54. package/lib/css/rules/CSSKeyframesRule.d.ts +1 -1
  55. package/lib/css/rules/CSSKeyframesRule.js +1 -1
  56. package/lib/css/rules/CSSKeyframesRule.js.map +1 -1
  57. package/lib/css/rules/CSSMediaRule.d.ts +1 -1
  58. package/lib/css/rules/CSSStyleRule.d.ts +10 -3
  59. package/lib/css/rules/CSSStyleRule.js +16 -0
  60. package/lib/css/rules/CSSStyleRule.js.map +1 -1
  61. package/lib/event/Event.d.ts +2 -3
  62. package/lib/event/Event.js.map +1 -1
  63. package/lib/event/events/IMediaQueryListInit.d.ts +5 -0
  64. package/lib/event/events/IMediaQueryListInit.js +3 -0
  65. package/lib/event/events/IMediaQueryListInit.js.map +1 -0
  66. package/lib/event/events/MediaQueryListEvent.d.ts +16 -0
  67. package/lib/event/events/MediaQueryListEvent.js +28 -0
  68. package/lib/event/events/MediaQueryListEvent.js.map +1 -0
  69. package/lib/exception/DOMException.js +5 -3
  70. package/lib/exception/DOMException.js.map +1 -1
  71. package/lib/exception/DOMExceptionNameEnum.d.ts +2 -1
  72. package/lib/exception/DOMExceptionNameEnum.js +1 -0
  73. package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
  74. package/lib/file/Blob.d.ts +9 -0
  75. package/lib/file/Blob.js +14 -0
  76. package/lib/file/Blob.js.map +1 -1
  77. package/lib/index.d.ts +9 -2
  78. package/lib/index.js +16 -2
  79. package/lib/index.js.map +1 -1
  80. package/lib/match-media/MediaQueryList.d.ts +19 -8
  81. package/lib/match-media/MediaQueryList.js +56 -13
  82. package/lib/match-media/MediaQueryList.js.map +1 -1
  83. package/lib/{attribute → nodes/attr}/Attr.d.ts +8 -7
  84. package/lib/{attribute → nodes/attr}/Attr.js +12 -5
  85. package/lib/nodes/attr/Attr.js.map +1 -0
  86. package/lib/nodes/attr/IAttr.d.ts +14 -0
  87. package/lib/nodes/attr/IAttr.js +3 -0
  88. package/lib/nodes/attr/IAttr.js.map +1 -0
  89. package/lib/nodes/child-node/ChildNodeUtility.js +2 -1
  90. package/lib/nodes/child-node/ChildNodeUtility.js.map +1 -1
  91. package/lib/nodes/document/Document.d.ts +4 -4
  92. package/lib/nodes/document/Document.js +5 -8
  93. package/lib/nodes/document/Document.js.map +1 -1
  94. package/lib/nodes/document/IDocument.d.ts +3 -3
  95. package/lib/nodes/element/Element.d.ts +11 -9
  96. package/lib/nodes/element/Element.js +2 -1
  97. package/lib/nodes/element/Element.js.map +1 -1
  98. package/lib/nodes/element/IElement.d.ts +10 -8
  99. package/lib/nodes/html-element/HTMLElement.d.ts +21 -5
  100. package/lib/nodes/html-element/HTMLElement.js +74 -11
  101. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  102. package/lib/nodes/html-element/IHTMLElement.d.ts +5 -1
  103. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +2 -2
  104. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  105. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +2 -2
  106. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  107. package/lib/nodes/html-select-element/HTMLSelectElement.js +1 -1
  108. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  109. package/lib/nodes/html-style-element/HTMLStyleElement.js +1 -1
  110. package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
  111. package/lib/nodes/node/INode.d.ts +2 -0
  112. package/lib/nodes/node/Node.d.ts +5 -1
  113. package/lib/nodes/node/Node.js +7 -1
  114. package/lib/nodes/node/Node.js.map +1 -1
  115. package/lib/nodes/node/NodeTypeEnum.d.ts +2 -0
  116. package/lib/nodes/node/NodeTypeEnum.js +2 -0
  117. package/lib/nodes/node/NodeTypeEnum.js.map +1 -1
  118. package/lib/nodes/svg-element/ISVGElement.d.ts +1 -1
  119. package/lib/nodes/svg-element/SVGElement.d.ts +4 -4
  120. package/lib/nodes/svg-element/SVGElement.js +2 -2
  121. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  122. package/lib/window/IWindow.d.ts +23 -3
  123. package/lib/window/Window.d.ts +35 -6
  124. package/lib/window/Window.js +58 -23
  125. package/lib/window/Window.js.map +1 -1
  126. package/package.json +2 -2
  127. package/src/css/CSSParser.ts +14 -6
  128. package/src/css/CSSRule.ts +15 -13
  129. package/src/css/CSSRuleTypeEnum.ts +18 -0
  130. package/src/css/CSSStyleSheet.ts +12 -22
  131. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +202 -0
  132. package/src/css/declaration/CSSStyleDeclaration.ts +4743 -0
  133. package/src/css/declaration/utilities/CSSStyleDeclarationCSSParser.ts +35 -0
  134. package/src/css/declaration/utilities/CSSStyleDeclarationElementDefaultCSS.ts +130 -0
  135. package/src/css/declaration/utilities/CSSStyleDeclarationElementInheritedProperties.ts +39 -0
  136. package/src/css/declaration/utilities/CSSStyleDeclarationElementStyle.ts +282 -0
  137. package/src/css/declaration/utilities/CSSStyleDeclarationPropertyGetParser.ts +743 -0
  138. package/src/css/declaration/utilities/CSSStyleDeclarationPropertyManager.ts +592 -0
  139. package/src/css/declaration/utilities/CSSStyleDeclarationPropertySetParser.ts +3026 -0
  140. package/src/css/declaration/utilities/CSSStyleDeclarationValueParser.ts +437 -0
  141. package/src/css/declaration/utilities/ICSSStyleDeclarationPropertyValue.ts +4 -0
  142. package/src/css/rules/CSSContainerRule.ts +23 -0
  143. package/src/css/rules/CSSFontFaceRule.ts +17 -2
  144. package/src/css/rules/CSSKeyframeRule.ts +17 -2
  145. package/src/css/rules/CSSKeyframesRule.ts +1 -1
  146. package/src/css/rules/CSSStyleRule.ts +17 -2
  147. package/src/event/Event.ts +2 -3
  148. package/src/event/events/IMediaQueryListInit.ts +6 -0
  149. package/src/event/events/MediaQueryListEvent.ts +25 -0
  150. package/src/exception/DOMException.ts +3 -3
  151. package/src/exception/DOMExceptionNameEnum.ts +2 -1
  152. package/src/file/Blob.ts +16 -0
  153. package/src/index.ts +15 -1
  154. package/src/match-media/MediaQueryList.ts +63 -10
  155. package/src/{attribute → nodes/attr}/Attr.ts +11 -8
  156. package/src/nodes/attr/IAttr.ts +15 -0
  157. package/src/nodes/child-node/ChildNodeUtility.ts +2 -1
  158. package/src/nodes/document/Document.ts +8 -10
  159. package/src/nodes/document/IDocument.ts +3 -3
  160. package/src/nodes/element/Element.ts +13 -10
  161. package/src/nodes/element/IElement.ts +8 -8
  162. package/src/nodes/html-element/HTMLElement.ts +94 -16
  163. package/src/nodes/html-element/IHTMLElement.ts +3 -1
  164. package/src/nodes/html-link-element/HTMLLinkElement.ts +2 -2
  165. package/src/nodes/html-script-element/HTMLScriptElement.ts +2 -2
  166. package/src/nodes/html-select-element/HTMLSelectElement.ts +1 -1
  167. package/src/nodes/html-style-element/HTMLStyleElement.ts +1 -1
  168. package/src/nodes/node/INode.ts +2 -0
  169. package/src/nodes/node/Node.ts +7 -1
  170. package/src/nodes/node/NodeTypeEnum.ts +2 -0
  171. package/src/nodes/svg-element/ISVGElement.ts +1 -1
  172. package/src/nodes/svg-element/SVGElement.ts +5 -5
  173. package/src/window/IWindow.ts +23 -3
  174. package/src/window/Window.ts +51 -11
  175. package/lib/attribute/Attr.js.map +0 -1
  176. package/lib/css/CSSStyleDeclaration.d.ts +0 -3017
  177. package/lib/css/CSSStyleDeclaration.js +0 -4643
  178. package/lib/css/CSSStyleDeclaration.js.map +0 -1
  179. package/src/css/CSSStyleDeclaration.ts +0 -5026
@@ -0,0 +1,565 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const CSSStyleDeclarationPropertySetParser_1 = __importDefault(require("./CSSStyleDeclarationPropertySetParser"));
7
+ const CSSStyleDeclarationValueParser_1 = __importDefault(require("./CSSStyleDeclarationValueParser"));
8
+ const CSSStyleDeclarationPropertyGetParser_1 = __importDefault(require("./CSSStyleDeclarationPropertyGetParser"));
9
+ const CSSStyleDeclarationCSSParser_1 = __importDefault(require("./CSSStyleDeclarationCSSParser"));
10
+ const TO_STRING_SHORTHAND_PROPERTIES = [
11
+ ['margin'],
12
+ ['padding'],
13
+ ['border', ['border-width', 'border-style', 'border-color', 'border-image']],
14
+ ['border-radius'],
15
+ ['background', 'background-position'],
16
+ ['font']
17
+ ];
18
+ /**
19
+ * Computed this.properties property parser.
20
+ */
21
+ class CSSStyleDeclarationPropertyManager {
22
+ /**
23
+ * Class construtor.
24
+ *
25
+ * @param [options] Options.
26
+ * @param [options.cssText] CSS string.
27
+ */
28
+ constructor(options) {
29
+ this.properties = {};
30
+ this.definedPropertyNames = {};
31
+ if (options?.cssText) {
32
+ CSSStyleDeclarationCSSParser_1.default.parse(options.cssText, (name, value, important) => {
33
+ if (important || !this.get(name)?.important) {
34
+ this.set(name, value, important);
35
+ }
36
+ });
37
+ }
38
+ }
39
+ /**
40
+ * Returns property value.
41
+ *
42
+ * @param name Property name.
43
+ * @returns Property value.
44
+ */
45
+ get(name) {
46
+ if (this.properties[name]) {
47
+ return this.properties[name];
48
+ }
49
+ switch (name) {
50
+ case 'margin':
51
+ return CSSStyleDeclarationPropertyGetParser_1.default.getMargin(this.properties);
52
+ case 'padding':
53
+ return CSSStyleDeclarationPropertyGetParser_1.default.getPadding(this.properties);
54
+ case 'border':
55
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorder(this.properties);
56
+ case 'border-top':
57
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderTop(this.properties);
58
+ case 'border-right':
59
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderRight(this.properties);
60
+ case 'border-bottom':
61
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderBottom(this.properties);
62
+ case 'border-left':
63
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderLeft(this.properties);
64
+ case 'border-color':
65
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderColor(this.properties);
66
+ case 'border-style':
67
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderStyle(this.properties);
68
+ case 'border-width':
69
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderWidth(this.properties);
70
+ case 'border-radius':
71
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderRadius(this.properties);
72
+ case 'border-image':
73
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBorderImage(this.properties);
74
+ case 'background':
75
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBackground(this.properties);
76
+ case 'background-position':
77
+ return CSSStyleDeclarationPropertyGetParser_1.default.getBackgroundPosition(this.properties);
78
+ case 'flex':
79
+ return CSSStyleDeclarationPropertyGetParser_1.default.getFlex(this.properties);
80
+ case 'font':
81
+ return CSSStyleDeclarationPropertyGetParser_1.default.getFont(this.properties);
82
+ }
83
+ return this.properties[name] || null;
84
+ }
85
+ /**
86
+ * Removes a property.
87
+ *
88
+ * @param name Property name.
89
+ */
90
+ remove(name) {
91
+ delete this.properties[name];
92
+ delete this.definedPropertyNames[name];
93
+ switch (name) {
94
+ case 'border':
95
+ delete this.properties['border-top-width'];
96
+ delete this.properties['border-right-width'];
97
+ delete this.properties['border-bottom-width'];
98
+ delete this.properties['border-left-width'];
99
+ delete this.properties['border-top-style'];
100
+ delete this.properties['border-right-style'];
101
+ delete this.properties['border-bottom-style'];
102
+ delete this.properties['border-left-style'];
103
+ delete this.properties['border-top-color'];
104
+ delete this.properties['border-right-color'];
105
+ delete this.properties['border-bottom-color'];
106
+ delete this.properties['border-left-color'];
107
+ delete this.properties['border-image-source'];
108
+ delete this.properties['border-image-slice'];
109
+ delete this.properties['border-image-width'];
110
+ delete this.properties['border-image-outset'];
111
+ delete this.properties['border-image-repeat'];
112
+ break;
113
+ case 'border-top':
114
+ delete this.properties['border-top-width'];
115
+ delete this.properties['border-top-style'];
116
+ delete this.properties['border-top-color'];
117
+ delete this.properties['border-image-source'];
118
+ delete this.properties['border-image-slice'];
119
+ delete this.properties['border-image-width'];
120
+ delete this.properties['border-image-outset'];
121
+ delete this.properties['border-image-repeat'];
122
+ break;
123
+ case 'border-right':
124
+ delete this.properties['border-right-width'];
125
+ delete this.properties['border-right-style'];
126
+ delete this.properties['border-right-color'];
127
+ delete this.properties['border-image-source'];
128
+ delete this.properties['border-image-slice'];
129
+ delete this.properties['border-image-width'];
130
+ delete this.properties['border-image-outset'];
131
+ delete this.properties['border-image-repeat'];
132
+ break;
133
+ case 'border-bottom':
134
+ delete this.properties['border-bottom-width'];
135
+ delete this.properties['border-bottom-style'];
136
+ delete this.properties['border-bottom-color'];
137
+ delete this.properties['border-image-source'];
138
+ delete this.properties['border-image-slice'];
139
+ delete this.properties['border-image-width'];
140
+ delete this.properties['border-image-outset'];
141
+ delete this.properties['border-image-repeat'];
142
+ break;
143
+ case 'border-left':
144
+ delete this.properties['border-left-width'];
145
+ delete this.properties['border-left-style'];
146
+ delete this.properties['border-left-color'];
147
+ delete this.properties['border-image-source'];
148
+ delete this.properties['border-image-slice'];
149
+ delete this.properties['border-image-width'];
150
+ delete this.properties['border-image-outset'];
151
+ delete this.properties['border-image-repeat'];
152
+ break;
153
+ case 'border-width':
154
+ delete this.properties['border-top-width'];
155
+ delete this.properties['border-right-width'];
156
+ delete this.properties['border-bottom-width'];
157
+ delete this.properties['border-left-width'];
158
+ break;
159
+ case 'border-style':
160
+ delete this.properties['border-top-style'];
161
+ delete this.properties['border-right-style'];
162
+ delete this.properties['border-bottom-style'];
163
+ delete this.properties['border-left-style'];
164
+ break;
165
+ case 'border-color':
166
+ delete this.properties['border-top-color'];
167
+ delete this.properties['border-right-color'];
168
+ delete this.properties['border-bottom-color'];
169
+ delete this.properties['border-left-color'];
170
+ break;
171
+ case 'border-image':
172
+ delete this.properties['border-image-source'];
173
+ delete this.properties['border-image-slice'];
174
+ delete this.properties['border-image-width'];
175
+ delete this.properties['border-image-outset'];
176
+ delete this.properties['border-image-repeat'];
177
+ break;
178
+ case 'border-radius':
179
+ delete this.properties['border-top-left-radius'];
180
+ delete this.properties['border-top-right-radius'];
181
+ delete this.properties['border-bottom-right-radius'];
182
+ delete this.properties['border-bottom-left-radius'];
183
+ break;
184
+ case 'background':
185
+ delete this.properties['background-color'];
186
+ delete this.properties['background-image'];
187
+ delete this.properties['background-repeat'];
188
+ delete this.properties['background-attachment'];
189
+ delete this.properties['background-position-x'];
190
+ delete this.properties['background-position-y'];
191
+ delete this.properties['background-size'];
192
+ delete this.properties['background-origin'];
193
+ delete this.properties['background-clip'];
194
+ break;
195
+ case 'background-position':
196
+ delete this.properties['background-position-x'];
197
+ delete this.properties['background-position-y'];
198
+ break;
199
+ case 'flex':
200
+ delete this.properties['flex-grow'];
201
+ delete this.properties['flex-shrink'];
202
+ delete this.properties['flex-basis'];
203
+ break;
204
+ case 'font':
205
+ delete this.properties['font-style'];
206
+ delete this.properties['font-variant'];
207
+ delete this.properties['font-weight'];
208
+ delete this.properties['font-stretch'];
209
+ delete this.properties['font-size'];
210
+ delete this.properties['line-height'];
211
+ delete this.properties['font-family'];
212
+ break;
213
+ case 'padding':
214
+ delete this.properties['padding-top'];
215
+ delete this.properties['padding-right'];
216
+ delete this.properties['padding-bottom'];
217
+ delete this.properties['padding-left'];
218
+ break;
219
+ case 'margin':
220
+ delete this.properties['margin-top'];
221
+ delete this.properties['margin-right'];
222
+ delete this.properties['margin-bottom'];
223
+ delete this.properties['margin-left'];
224
+ break;
225
+ }
226
+ }
227
+ /**
228
+ * Sets a property
229
+ *
230
+ * @param name Name.
231
+ * @param value Value.
232
+ * @param important Important.
233
+ */
234
+ set(name, value, important) {
235
+ if (value === null) {
236
+ this.remove(name);
237
+ return;
238
+ }
239
+ let properties = null;
240
+ switch (name) {
241
+ case 'border':
242
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorder(value, important);
243
+ break;
244
+ case 'border-top':
245
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTop(value, important);
246
+ break;
247
+ case 'border-right':
248
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderRight(value, important);
249
+ break;
250
+ case 'border-bottom':
251
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottom(value, important);
252
+ break;
253
+ case 'border-left':
254
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderLeft(value, important);
255
+ break;
256
+ case 'border-width':
257
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderWidth(value, important);
258
+ break;
259
+ case 'border-style':
260
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderStyle(value, important);
261
+ break;
262
+ case 'border-color':
263
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderColor(value, important);
264
+ break;
265
+ case 'border-image':
266
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImage(value, important);
267
+ break;
268
+ case 'border-image-source':
269
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImageSource(value, important);
270
+ break;
271
+ case 'border-image-slice':
272
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImageSlice(value, important);
273
+ break;
274
+ case 'border-image-width':
275
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImageWidth(value, important);
276
+ break;
277
+ case 'border-image-outset':
278
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImageOutset(value, important);
279
+ break;
280
+ case 'border-image-repeat':
281
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderImageRepeat(value, important);
282
+ break;
283
+ case 'border-top-width':
284
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTopWidth(value, important);
285
+ break;
286
+ case 'border-right-width':
287
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderRightWidth(value, important);
288
+ break;
289
+ case 'border-bottom-width':
290
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottomWidth(value, important);
291
+ break;
292
+ case 'border-left-width':
293
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderLeftWidth(value, important);
294
+ break;
295
+ case 'border-top-color':
296
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTopColor(value, important);
297
+ break;
298
+ case 'border-right-color':
299
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderRightColor(value, important);
300
+ break;
301
+ case 'border-bottom-color':
302
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottomColor(value, important);
303
+ break;
304
+ case 'border-left-color':
305
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderLeftColor(value, important);
306
+ break;
307
+ case 'border-top-style':
308
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTopStyle(value, important);
309
+ break;
310
+ case 'border-right-style':
311
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderRightStyle(value, important);
312
+ break;
313
+ case 'border-bottom-style':
314
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottomStyle(value, important);
315
+ break;
316
+ case 'border-left-style':
317
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderLeftStyle(value, important);
318
+ break;
319
+ case 'border-radius':
320
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderRadius(value, important);
321
+ break;
322
+ case 'border-top-left-radius':
323
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTopLeftRadius(value, important);
324
+ break;
325
+ case 'border-top-right-radius':
326
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderTopRightRadius(value, important);
327
+ break;
328
+ case 'border-bottom-right-radius':
329
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottomRightRadius(value, important);
330
+ break;
331
+ case 'border-bottom-right-radius':
332
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderBottomLeftRadius(value, important);
333
+ break;
334
+ case 'border-collapse':
335
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBorderCollapse(value, important);
336
+ break;
337
+ case 'clear':
338
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getClear(value, important);
339
+ break;
340
+ case 'clip':
341
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getClip(value, important);
342
+ break;
343
+ case 'css-float':
344
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getCSSFloat(value, important);
345
+ break;
346
+ case 'float':
347
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFloat(value, important);
348
+ break;
349
+ case 'display':
350
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getDisplay(value, important);
351
+ break;
352
+ case 'direction':
353
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getDirection(value, important);
354
+ break;
355
+ case 'flex':
356
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFlex(value, important);
357
+ break;
358
+ case 'flex-shrink':
359
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFlexShrink(value, important);
360
+ break;
361
+ case 'flex-grow':
362
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFlexGrow(value, important);
363
+ break;
364
+ case 'flex-basis':
365
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFlexBasis(value, important);
366
+ break;
367
+ case 'padding':
368
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getPadding(value, important);
369
+ break;
370
+ case 'padding-top':
371
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getPaddingTop(value, important);
372
+ break;
373
+ case 'padding-right':
374
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getPaddingRight(value, important);
375
+ break;
376
+ case 'padding-bottom':
377
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getPaddingBottom(value, important);
378
+ break;
379
+ case 'padding-left':
380
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getPaddingLeft(value, important);
381
+ break;
382
+ case 'margin':
383
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getMargin(value, important);
384
+ break;
385
+ case 'margin-top':
386
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getMarginTop(value, important);
387
+ break;
388
+ case 'margin-right':
389
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getMarginRight(value, important);
390
+ break;
391
+ case 'margin-bottom':
392
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getMarginBottom(value, important);
393
+ break;
394
+ case 'margin-left':
395
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getMarginLeft(value, important);
396
+ break;
397
+ case 'background':
398
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackground(value, important);
399
+ break;
400
+ case 'background-image':
401
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackgroundImage(value, important);
402
+ break;
403
+ case 'background-color':
404
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackgroundColor(value, important);
405
+ break;
406
+ case 'background-repeat':
407
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackgroundRepeat(value, important);
408
+ break;
409
+ case 'background-attachment':
410
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackgroundAttachment(value, important);
411
+ break;
412
+ case 'background-position':
413
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBackgroundPosition(value, important);
414
+ break;
415
+ case 'width':
416
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getWidth(value, important);
417
+ break;
418
+ case 'top':
419
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getTop(value, important);
420
+ break;
421
+ case 'right':
422
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getRight(value, important);
423
+ break;
424
+ case 'bottom':
425
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getBottom(value, important);
426
+ break;
427
+ case 'left':
428
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getLeft(value, important);
429
+ break;
430
+ case 'font':
431
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFont(value, important);
432
+ break;
433
+ case 'font-style':
434
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontStyle(value, important);
435
+ break;
436
+ case 'font-variant':
437
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontVariant(value, important);
438
+ break;
439
+ case 'font-weight':
440
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontWeight(value, important);
441
+ break;
442
+ case 'font-stretch':
443
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontStretch(value, important);
444
+ break;
445
+ case 'font-size':
446
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontSize(value, important);
447
+ break;
448
+ case 'line-height':
449
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getLineHeight(value, important);
450
+ break;
451
+ case 'font-family':
452
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFontFamily(value, important);
453
+ break;
454
+ case 'color':
455
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getColor(value, important);
456
+ break;
457
+ case 'flood-color':
458
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getFloodColor(value, important);
459
+ break;
460
+ case 'text-transform':
461
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getTextTransform(value, important);
462
+ break;
463
+ case 'visibility':
464
+ properties = CSSStyleDeclarationPropertySetParser_1.default.getVisibility(value, important);
465
+ break;
466
+ default:
467
+ const trimmedValue = value.trim();
468
+ if (trimmedValue) {
469
+ const globalValue = CSSStyleDeclarationValueParser_1.default.getGlobal(trimmedValue);
470
+ properties = {
471
+ [name]: { value: globalValue || trimmedValue, important }
472
+ };
473
+ }
474
+ break;
475
+ }
476
+ if (properties !== null && Object.keys(properties).length > 0) {
477
+ this.definedPropertyNames[name] = true;
478
+ Object.assign(this.properties, properties);
479
+ }
480
+ }
481
+ /**
482
+ * Returns a clone.
483
+ *
484
+ * @returns Clone.
485
+ */
486
+ clone() {
487
+ const _class = this.constructor;
488
+ const clone = new _class();
489
+ clone.properties = JSON.parse(JSON.stringify(this.properties));
490
+ clone.definedPropertyNames = Object.assign({}, this.definedPropertyNames);
491
+ return clone;
492
+ }
493
+ /**
494
+ * Returns size.
495
+ *
496
+ * @returns Size.
497
+ */
498
+ size() {
499
+ return Object.keys(this.properties).length;
500
+ }
501
+ /**
502
+ * Returns property name.
503
+ *
504
+ * @param index Index.
505
+ * @returns Property name.
506
+ */
507
+ item(index) {
508
+ return Object.keys(this.properties)[index] || '';
509
+ }
510
+ /**
511
+ * Converts properties to string.
512
+ *
513
+ * @returns String.
514
+ */
515
+ toString() {
516
+ const result = [];
517
+ const clone = this.clone();
518
+ const properties = {};
519
+ for (const shorthandPropertyGroup of TO_STRING_SHORTHAND_PROPERTIES) {
520
+ for (const shorthandProperty of shorthandPropertyGroup) {
521
+ if (Array.isArray(shorthandProperty)) {
522
+ let isMatch = false;
523
+ for (const childShorthandProperty of shorthandProperty) {
524
+ const property = clone.get(childShorthandProperty);
525
+ if (property) {
526
+ properties[childShorthandProperty] = property;
527
+ clone.remove(childShorthandProperty);
528
+ isMatch = true;
529
+ }
530
+ }
531
+ if (isMatch) {
532
+ break;
533
+ }
534
+ }
535
+ else {
536
+ const property = clone.get(shorthandProperty);
537
+ if (property) {
538
+ properties[shorthandProperty] = property;
539
+ clone.remove(shorthandProperty);
540
+ break;
541
+ }
542
+ }
543
+ }
544
+ }
545
+ for (const name of Object.keys(clone.properties)) {
546
+ properties[name] = clone.get(name);
547
+ }
548
+ for (const definedPropertyName of Object.keys(this.definedPropertyNames)) {
549
+ const property = properties[definedPropertyName];
550
+ if (property) {
551
+ result.push(`${definedPropertyName}: ${property.value}${property.important ? ' !important' : ''};`);
552
+ delete properties[definedPropertyName];
553
+ }
554
+ }
555
+ for (const propertyName of Object.keys(properties)) {
556
+ const property = properties[propertyName];
557
+ if (property) {
558
+ result.push(`${propertyName}: ${property.value}${property.important ? ' !important' : ''};`);
559
+ }
560
+ }
561
+ return result.join(' ');
562
+ }
563
+ }
564
+ exports.default = CSSStyleDeclarationPropertyManager;
565
+ //# sourceMappingURL=CSSStyleDeclarationPropertyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSSStyleDeclarationPropertyManager.js","sourceRoot":"","sources":["../../../../src/css/declaration/utilities/CSSStyleDeclarationPropertyManager.ts"],"names":[],"mappings":"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"}