@acemir/cssom 0.9.23 → 0.9.25

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.
@@ -22,9 +22,15 @@ CSSOM.CSSNestedDeclarations = function CSSNestedDeclarations() {
22
22
  this.__style.parentRule = this;
23
23
  };
24
24
 
25
- CSSOM.CSSNestedDeclarations.prototype = new CSSOM.CSSRule();
25
+ CSSOM.CSSNestedDeclarations.prototype = Object.create(CSSOM.CSSRule.prototype);
26
26
  CSSOM.CSSNestedDeclarations.prototype.constructor = CSSOM.CSSNestedDeclarations;
27
- CSSOM.CSSNestedDeclarations.prototype.type = 0;
27
+
28
+ Object.setPrototypeOf(CSSOM.CSSNestedDeclarations, CSSOM.CSSRule);
29
+
30
+ Object.defineProperty(CSSOM.CSSNestedDeclarations.prototype, "type", {
31
+ value: 0,
32
+ writable: false
33
+ });
28
34
 
29
35
  Object.defineProperty(CSSOM.CSSNestedDeclarations.prototype, "style", {
30
36
  get: function() {
@@ -42,9 +48,7 @@ Object.defineProperty(CSSOM.CSSNestedDeclarations.prototype, "style", {
42
48
  Object.defineProperty(CSSOM.CSSNestedDeclarations.prototype, "cssText", {
43
49
  get: function () {
44
50
  return this.style.cssText;
45
- },
46
- configurable: true,
47
- enumerable: true,
51
+ }
48
52
  });
49
53
 
50
54
  //.CommonJS
package/lib/CSSOM.js CHANGED
@@ -1,3 +1,18 @@
1
- var CSSOM = {};
1
+ var __globalObject = null;
2
2
 
3
+ var CSSOM = {
4
+ setup: function(opts) {
5
+ if (opts.globalObject) {
6
+ __globalObject = opts.globalObject;
7
+ }
8
+ },
9
+ getGlobalObject: function() {
10
+ return __globalObject;
11
+ }
12
+ };
13
+
14
+ //.CommonJS
15
+ exports.setup = CSSOM.setup;
16
+ exports.getGlobalObject = CSSOM.getGlobalObject;
17
+ ///CommonJS
3
18
 
@@ -24,9 +24,11 @@ CSSOM.CSSPageRule = function CSSPageRule() {
24
24
  this.__style.parentRule = this;
25
25
  };
26
26
 
27
- CSSOM.CSSPageRule.prototype = new CSSOM.CSSGroupingRule();
27
+ CSSOM.CSSPageRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);
28
28
  CSSOM.CSSPageRule.prototype.constructor = CSSOM.CSSPageRule;
29
29
 
30
+ Object.setPrototypeOf(CSSOM.CSSPageRule, CSSOM.CSSGroupingRule);
31
+
30
32
  Object.defineProperty(CSSOM.CSSPageRule.prototype, "type", {
31
33
  value: 6,
32
34
  writable: false
@@ -106,170 +108,24 @@ Object.defineProperty(CSSOM.CSSPageRule.prototype, "style", {
106
108
 
107
109
  Object.defineProperty(CSSOM.CSSPageRule.prototype, "cssText", {
108
110
  get: function() {
109
- var values = ""
111
+ var values = "";
110
112
  if (this.cssRules.length) {
111
113
  var valuesArr = [" {"];
112
114
  this.style.cssText && valuesArr.push(this.style.cssText);
113
- valuesArr.push(this.cssRules.map(function(rule){ return rule.cssText }).join("\n "));
114
- values = valuesArr.join("\n ") + "\n}"
115
+ valuesArr.push(this.cssRules.reduce(function(acc, rule){
116
+ if (rule.cssText !== "") {
117
+ acc.push(rule.cssText);
118
+ }
119
+ return acc;
120
+ }, []).join("\n "));
121
+ values = valuesArr.join("\n ") + "\n}";
115
122
  } else {
116
123
  values = " {" + (this.style.cssText ? " " + this.style.cssText : "") + " }";
117
124
  }
118
125
  return "@page" + (this.selectorText ? " " + this.selectorText : "") + values;
119
- },
120
- set: function(cssText) {
121
- if (typeof value === "string") {
122
- var rule = CSSOM.CSSPageRule.parse(cssText);
123
- this.__style = rule.style;
124
- this.selectorText = rule.selectorText;
125
- }
126
126
  }
127
127
  });
128
128
 
129
- /**
130
- * NON-STANDARD
131
- * lightweight version of parse.js.
132
- * @param {string} ruleText
133
- * @return CSSPageRule
134
- */
135
- CSSOM.CSSPageRule.parse = function(ruleText) {
136
- var i = 0;
137
- var state = "selector";
138
- var index;
139
- var j = i;
140
- var buffer = "";
141
-
142
- var SIGNIFICANT_WHITESPACE = {
143
- "selector": true,
144
- "value": true
145
- };
146
-
147
- var pageRule = new CSSOM.CSSPageRule();
148
- var name, priority="";
149
-
150
- for (var character; (character = ruleText.charAt(i)); i++) {
151
-
152
- switch (character) {
153
-
154
- case " ":
155
- case "\t":
156
- case "\r":
157
- case "\n":
158
- case "\f":
159
- if (SIGNIFICANT_WHITESPACE[state]) {
160
- // Squash 2 or more white-spaces in the row into 1
161
- switch (ruleText.charAt(i - 1)) {
162
- case " ":
163
- case "\t":
164
- case "\r":
165
- case "\n":
166
- case "\f":
167
- break;
168
- default:
169
- buffer += " ";
170
- break;
171
- }
172
- }
173
- break;
174
-
175
- // String
176
- case '"':
177
- j = i + 1;
178
- index = ruleText.indexOf('"', j) + 1;
179
- if (!index) {
180
- throw '" is missing';
181
- }
182
- buffer += ruleText.slice(i, index);
183
- i = index - 1;
184
- break;
185
-
186
- case "'":
187
- j = i + 1;
188
- index = ruleText.indexOf("'", j) + 1;
189
- if (!index) {
190
- throw "' is missing";
191
- }
192
- buffer += ruleText.slice(i, index);
193
- i = index - 1;
194
- break;
195
-
196
- // Comment
197
- case "/":
198
- if (ruleText.charAt(i + 1) === "*") {
199
- i += 2;
200
- index = ruleText.indexOf("*/", i);
201
- if (index === -1) {
202
- throw new SyntaxError("Missing */");
203
- } else {
204
- i = index + 1;
205
- }
206
- } else {
207
- buffer += character;
208
- }
209
- break;
210
-
211
- case "{":
212
- if (state === "selector") {
213
- pageRule.selectorText = buffer.trim();
214
- buffer = "";
215
- state = "name";
216
- }
217
- break;
218
-
219
- case ":":
220
- if (state === "name") {
221
- name = buffer.trim();
222
- buffer = "";
223
- state = "value";
224
- } else {
225
- buffer += character;
226
- }
227
- break;
228
-
229
- case "!":
230
- if (state === "value" && ruleText.indexOf("!important", i) === i) {
231
- priority = "important";
232
- i += "important".length;
233
- } else {
234
- buffer += character;
235
- }
236
- break;
237
-
238
- case ";":
239
- if (state === "value") {
240
- pageRule.style.setProperty(name, buffer.trim(), priority);
241
- priority = "";
242
- buffer = "";
243
- state = "name";
244
- } else {
245
- buffer += character;
246
- }
247
- break;
248
-
249
- case "}":
250
- if (state === "value") {
251
- pageRule.style.setProperty(name, buffer.trim(), priority);
252
- priority = "";
253
- buffer = "";
254
- } else if (state === "name") {
255
- break;
256
- } else {
257
- buffer += character;
258
- }
259
- state = "selector";
260
- break;
261
-
262
- default:
263
- buffer += character;
264
- break;
265
-
266
- }
267
- }
268
-
269
- return pageRule;
270
-
271
- };
272
-
273
129
  //.CommonJS
274
130
  exports.CSSPageRule = CSSOM.CSSPageRule;
275
131
  ///CommonJS
package/lib/CSSRule.js CHANGED
@@ -43,6 +43,16 @@ Object.defineProperties(CSSOM.CSSRule.prototype, {
43
43
  enumerable: true
44
44
  },
45
45
 
46
+ cssText: {
47
+ get: function() {
48
+ // Default getter: subclasses should override this
49
+ return "";
50
+ },
51
+ set: function(cssText) {
52
+ return cssText;
53
+ }
54
+ },
55
+
46
56
  parentRule: {
47
57
  get: function() {
48
58
  return this.__parentRule
@@ -16,9 +16,10 @@ CSSOM.CSSScopeRule = function CSSScopeRule() {
16
16
  this.__end = null;
17
17
  };
18
18
 
19
- CSSOM.CSSScopeRule.prototype = new CSSOM.CSSGroupingRule();
19
+ CSSOM.CSSScopeRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);
20
20
  CSSOM.CSSScopeRule.prototype.constructor = CSSOM.CSSScopeRule;
21
21
 
22
+ Object.setPrototypeOf(CSSOM.CSSScopeRule, CSSOM.CSSGroupingRule);
22
23
 
23
24
  Object.defineProperties(CSSOM.CSSScopeRule.prototype, {
24
25
  type: {
@@ -27,11 +28,18 @@ Object.defineProperties(CSSOM.CSSScopeRule.prototype, {
27
28
  },
28
29
  cssText: {
29
30
  get: function () {
30
- var cssTexts = [];
31
- for (var i = 0, length = this.cssRules.length; i < length; i++) {
32
- cssTexts.push(this.cssRules[i].cssText);
31
+ var values = "";
32
+ var valuesArr = [" {"];
33
+ if (this.cssRules.length) {
34
+ valuesArr.push(this.cssRules.reduce(function(acc, rule){
35
+ if (rule.cssText !== "") {
36
+ acc.push(rule.cssText);
37
+ }
38
+ return acc;
39
+ }, []).join("\n "));
33
40
  }
34
- return "@scope " + (this.start ? "(" + this.start + ") " : "") + (this.end ? "to (" + this.end + ") " : "") + "{" + (cssTexts.length ? "\n " + cssTexts.join("\n ") : "") + "\n}";
41
+ values = valuesArr.join("\n ") + "\n}";
42
+ return "@scope" + (this.start ? " (" + this.start + ")" : "") + (this.end ? " to (" + this.end + ")" : "") + values;
35
43
  },
36
44
  configurable: true,
37
45
  enumerable: true,
@@ -15,20 +15,34 @@ CSSOM.CSSStartingStyleRule = function CSSStartingStyleRule() {
15
15
  CSSOM.CSSGroupingRule.call(this);
16
16
  };
17
17
 
18
- CSSOM.CSSStartingStyleRule.prototype = new CSSOM.CSSGroupingRule();
18
+ CSSOM.CSSStartingStyleRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);
19
19
  CSSOM.CSSStartingStyleRule.prototype.constructor = CSSOM.CSSStartingStyleRule;
20
- CSSOM.CSSStartingStyleRule.prototype.type = 1002;
20
+
21
+ Object.setPrototypeOf(CSSOM.CSSStartingStyleRule, CSSOM.CSSGroupingRule);
22
+
23
+ Object.defineProperty(CSSOM.CSSStartingStyleRule.prototype, "type", {
24
+ value: 1002,
25
+ writable: false
26
+ });
27
+
21
28
  //FIXME
22
29
  //CSSOM.CSSStartingStyleRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
23
30
  //CSSOM.CSSStartingStyleRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
24
31
 
25
32
  Object.defineProperty(CSSOM.CSSStartingStyleRule.prototype, "cssText", {
26
33
  get: function() {
27
- var cssTexts = [];
28
- for (var i=0, length=this.cssRules.length; i < length; i++) {
29
- cssTexts.push(this.cssRules[i].cssText);
34
+ var values = "";
35
+ var valuesArr = [" {"];
36
+ if (this.cssRules.length) {
37
+ valuesArr.push(this.cssRules.reduce(function(acc, rule){
38
+ if (rule.cssText !== "") {
39
+ acc.push(rule.cssText);
40
+ }
41
+ return acc;
42
+ }, []).join("\n "));
30
43
  }
31
- return "@starting-style {" + (cssTexts.length ? "\n " + cssTexts.join("\n ") : "") + "\n}";
44
+ values = valuesArr.join("\n ") + "\n}";
45
+ return "@starting-style" + values;
32
46
  }
33
47
  });
34
48
 
@@ -26,9 +26,11 @@ CSSOM.CSSStyleRule = function CSSStyleRule() {
26
26
  this.__style.parentRule = this;
27
27
  };
28
28
 
29
- CSSOM.CSSStyleRule.prototype = new CSSOM.CSSGroupingRule();
29
+ CSSOM.CSSStyleRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);
30
30
  CSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;
31
31
 
32
+ Object.setPrototypeOf(CSSOM.CSSStyleRule, CSSOM.CSSGroupingRule);
33
+
32
34
  Object.defineProperty(CSSOM.CSSStyleRule.prototype, "type", {
33
35
  value: 1,
34
36
  writable: false
@@ -73,12 +75,17 @@ Object.defineProperty(CSSOM.CSSStyleRule.prototype, "cssText", {
73
75
  get: function() {
74
76
  var text;
75
77
  if (this.selectorText) {
76
- var values = ""
78
+ var values = "";
77
79
  if (this.cssRules.length) {
78
80
  var valuesArr = [" {"];
79
81
  this.style.cssText && valuesArr.push(this.style.cssText);
80
- valuesArr.push(this.cssRules.map(function(rule){ return rule.cssText }).join("\n "));
81
- values = valuesArr.join("\n ") + "\n}"
82
+ valuesArr.push(this.cssRules.reduce(function(acc, rule){
83
+ if (rule.cssText !== "") {
84
+ acc.push(rule.cssText);
85
+ }
86
+ return acc;
87
+ }, []).join("\n "));
88
+ values = valuesArr.join("\n ") + "\n}";
82
89
  } else {
83
90
  values = " {" + (this.style.cssText ? " " + this.style.cssText : "") + " }";
84
91
  }
@@ -87,162 +94,9 @@ Object.defineProperty(CSSOM.CSSStyleRule.prototype, "cssText", {
87
94
  text = "";
88
95
  }
89
96
  return text;
90
- },
91
- set: function(cssText) {
92
- if (typeof cssText === "string") {
93
- var rule = CSSOM.CSSStyleRule.parse(cssText);
94
- this.__style = rule.style;
95
- this.selectorText = rule.selectorText;
96
- }
97
97
  }
98
98
  });
99
99
 
100
-
101
- /**
102
- * NON-STANDARD
103
- * lightweight version of parse.js.
104
- * @param {string} ruleText
105
- * @return CSSStyleRule
106
- */
107
- CSSOM.CSSStyleRule.parse = function(ruleText) {
108
- var i = 0;
109
- var state = "selector";
110
- var index;
111
- var j = i;
112
- var buffer = "";
113
-
114
- var SIGNIFICANT_WHITESPACE = {
115
- "selector": true,
116
- "value": true
117
- };
118
-
119
- var styleRule = new CSSOM.CSSStyleRule();
120
- var name, priority="";
121
-
122
- for (var character; (character = ruleText.charAt(i)); i++) {
123
-
124
- switch (character) {
125
-
126
- case " ":
127
- case "\t":
128
- case "\r":
129
- case "\n":
130
- case "\f":
131
- if (SIGNIFICANT_WHITESPACE[state]) {
132
- // Squash 2 or more white-spaces in the row into 1
133
- switch (ruleText.charAt(i - 1)) {
134
- case " ":
135
- case "\t":
136
- case "\r":
137
- case "\n":
138
- case "\f":
139
- break;
140
- default:
141
- buffer += " ";
142
- break;
143
- }
144
- }
145
- break;
146
-
147
- // String
148
- case '"':
149
- j = i + 1;
150
- index = ruleText.indexOf('"', j) + 1;
151
- if (!index) {
152
- throw '" is missing';
153
- }
154
- buffer += ruleText.slice(i, index);
155
- i = index - 1;
156
- break;
157
-
158
- case "'":
159
- j = i + 1;
160
- index = ruleText.indexOf("'", j) + 1;
161
- if (!index) {
162
- throw "' is missing";
163
- }
164
- buffer += ruleText.slice(i, index);
165
- i = index - 1;
166
- break;
167
-
168
- // Comment
169
- case "/":
170
- if (ruleText.charAt(i + 1) === "*") {
171
- i += 2;
172
- index = ruleText.indexOf("*/", i);
173
- if (index === -1) {
174
- throw new SyntaxError("Missing */");
175
- } else {
176
- i = index + 1;
177
- }
178
- } else {
179
- buffer += character;
180
- }
181
- break;
182
-
183
- case "{":
184
- if (state === "selector") {
185
- styleRule.selectorText = buffer.trim();
186
- buffer = "";
187
- state = "name";
188
- }
189
- break;
190
-
191
- case ":":
192
- if (state === "name") {
193
- name = buffer.trim();
194
- buffer = "";
195
- state = "value";
196
- } else {
197
- buffer += character;
198
- }
199
- break;
200
-
201
- case "!":
202
- if (state === "value" && ruleText.indexOf("!important", i) === i) {
203
- priority = "important";
204
- i += "important".length;
205
- } else {
206
- buffer += character;
207
- }
208
- break;
209
-
210
- case ";":
211
- if (state === "value") {
212
- styleRule.style.setProperty(name, buffer.trim(), priority);
213
- priority = "";
214
- buffer = "";
215
- state = "name";
216
- } else {
217
- buffer += character;
218
- }
219
- break;
220
-
221
- case "}":
222
- if (state === "value") {
223
- styleRule.style.setProperty(name, buffer.trim(), priority);
224
- priority = "";
225
- buffer = "";
226
- } else if (state === "name") {
227
- break;
228
- } else {
229
- buffer += character;
230
- }
231
- state = "selector";
232
- break;
233
-
234
- default:
235
- buffer += character;
236
- break;
237
-
238
- }
239
- }
240
-
241
- return styleRule;
242
-
243
- };
244
-
245
-
246
100
  //.CommonJS
247
101
  exports.CSSStyleRule = CSSOM.CSSStyleRule;
248
102
  ///CommonJS
@@ -1,5 +1,6 @@
1
1
  //.CommonJS
2
2
  var CSSOM = {
3
+ getGlobalObject: require('./CSSOM').getGlobalObject,
3
4
  MediaList: require("./MediaList").MediaList,
4
5
  StyleSheet: require("./StyleSheet").StyleSheet,
5
6
  CSSRuleList: require("./CSSRuleList").CSSRuleList,
@@ -11,20 +12,52 @@ var errorUtils = require("./errorUtils").errorUtils;
11
12
 
12
13
  /**
13
14
  * @constructor
15
+ * @param {CSSStyleSheetInit} [opts] - CSSStyleSheetInit options.
16
+ * @param {string} [opts.baseURL] - The base URL of the stylesheet.
17
+ * @param {boolean} [opts.disabled] - The disabled attribute of the stylesheet.
18
+ * @param {MediaList | string} [opts.media] - The media attribute of the stylesheet.
14
19
  * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet
15
20
  */
16
- CSSOM.CSSStyleSheet = function CSSStyleSheet() {
21
+ CSSOM.CSSStyleSheet = function CSSStyleSheet(opts) {
17
22
  CSSOM.StyleSheet.call(this);
18
- this.cssRules = new CSSOM.CSSRuleList();
23
+ this.__constructed = true;
24
+ this.__cssRules = new CSSOM.CSSRuleList();
25
+ this.__ownerRule = null;
26
+
27
+ if (opts && typeof opts === "object") {
28
+ if (opts.baseURL && typeof opts.baseURL === "string") {
29
+ this.__baseURL = opts.baseURL;
30
+ }
31
+ if (opts.media && typeof opts.media === "string") {
32
+ this.media.mediaText = opts.media;
33
+ }
34
+ if (typeof opts.disabled === "boolean") {
35
+ this.disabled = opts.disabled;
36
+ }
37
+ }
19
38
  };
20
39
 
21
40
 
22
- CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();
41
+ CSSOM.CSSStyleSheet.prototype = Object.create(CSSOM.StyleSheet.prototype);
23
42
  CSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;
24
43
 
44
+ Object.setPrototypeOf(CSSOM.CSSStyleSheet, CSSOM.StyleSheet);
45
+
46
+ Object.defineProperty(CSSOM.CSSStyleSheet.prototype, "cssRules", {
47
+ get: function() {
48
+ return this.__cssRules;
49
+ }
50
+ });
51
+
25
52
  Object.defineProperty(CSSOM.CSSStyleSheet.prototype, "rules", {
26
53
  get: function() {
27
- return this.cssRules;
54
+ return this.__cssRules;
55
+ }
56
+ });
57
+
58
+ Object.defineProperty(CSSOM.CSSStyleSheet.prototype, "ownerRule", {
59
+ get: function() {
60
+ return this.__ownerRule;
28
61
  }
29
62
  });
30
63
 
@@ -227,6 +260,84 @@ CSSOM.CSSStyleSheet.prototype.removeRule = function(index) {
227
260
  this.deleteRule(index);
228
261
  };
229
262
 
263
+
264
+ /**
265
+ * Replaces the rules of a {@link CSSStyleSheet}
266
+ *
267
+ * @returns a promise
268
+ * @see https://www.w3.org/TR/cssom-1/#dom-cssstylesheet-replace
269
+ */
270
+ CSSOM.CSSStyleSheet.prototype.replace = function(text) {
271
+ var _Promise;
272
+ if (CSSOM.getGlobalObject() && CSSOM.getGlobalObject()['Promise']) {
273
+ _Promise = CSSOM.getGlobalObject()['Promise'];
274
+ } else {
275
+ _Promise = Promise;
276
+ }
277
+ var sheet = this;
278
+ return new _Promise(function (resolve, reject) {
279
+ // If the constructed flag is not set, or the disallow modification flag is set, throw a NotAllowedError DOMException.
280
+ if (!sheet.__constructed || sheet.__disallowModification) {
281
+ reject(errorUtils.createError(sheet, 'DOMException',
282
+ "Failed to execute 'replaceSync' on '" + sheet.constructor.name + "': Not allowed.",
283
+ 'NotAllowedError'));
284
+ }
285
+ // Set the disallow modification flag.
286
+ sheet.__disallowModification = true;
287
+
288
+ // In parallel, do these steps:
289
+ setTimeout(function() {
290
+ // Let rules be the result of running parse a stylesheet's contents from text.
291
+ var rules = new CSSOM.CSSRuleList();
292
+ CSSOM.parse(text, { styleSheet: sheet, cssRules: rules });
293
+ // If rules contains one or more @import rules, remove those rules from rules.
294
+ var i = 0;
295
+ while (i < rules.length) {
296
+ if (rules[i].constructor.name === 'CSSImportRule') {
297
+ rules.splice(i, 1);
298
+ } else {
299
+ i++;
300
+ }
301
+ }
302
+ // Set sheet's CSS rules to rules.
303
+ sheet.__cssRules = rules;
304
+ // Unset sheet’s disallow modification flag.
305
+ delete sheet.__disallowModification;
306
+ // Resolve promise with sheet.
307
+ resolve(sheet);
308
+ })
309
+ });
310
+ }
311
+
312
+ /**
313
+ * Synchronously replaces the rules of a {@link CSSStyleSheet}
314
+ *
315
+ * @see https://www.w3.org/TR/cssom-1/#dom-cssstylesheet-replacesync
316
+ */
317
+ CSSOM.CSSStyleSheet.prototype.replaceSync = function(text) {
318
+ var sheet = this;
319
+ // If the constructed flag is not set, or the disallow modification flag is set, throw a NotAllowedError DOMException.
320
+ if (!sheet.__constructed || sheet.__disallowModification) {
321
+ errorUtils.throwError(sheet, 'DOMException',
322
+ "Failed to execute 'replaceSync' on '" + sheet.constructor.name + "': Not allowed.",
323
+ 'NotAllowedError');
324
+ }
325
+ // Let rules be the result of running parse a stylesheet's contents from text.
326
+ var rules = new CSSOM.CSSRuleList();
327
+ CSSOM.parse(text, { styleSheet: sheet, cssRules: rules });
328
+ // If rules contains one or more @import rules, remove those rules from rules.
329
+ var i = 0;
330
+ while (i < rules.length) {
331
+ if (rules[i].constructor.name === 'CSSImportRule') {
332
+ rules.splice(i, 1);
333
+ } else {
334
+ i++;
335
+ }
336
+ }
337
+ // Set sheet's CSS rules to rules.
338
+ sheet.__cssRules = rules;
339
+ }
340
+
230
341
  /**
231
342
  * NON-STANDARD
232
343
  * @return {string} serialize stylesheet