1 | //.CommonJS
|
2 | var CSSOM = {
|
3 | StyleSheet: require("./StyleSheet").StyleSheet,
|
4 | CSSStyleRule: require("./CSSStyleRule").CSSStyleRule
|
5 | };
|
6 | ///CommonJS
|
7 |
|
8 |
|
9 | /**
|
10 | * @constructor
|
11 | * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet
|
12 | */
|
13 | CSSOM.CSSStyleSheet = function CSSStyleSheet() {
|
14 | CSSOM.StyleSheet.call(this);
|
15 | this.cssRules = [];
|
16 | };
|
17 |
|
18 |
|
19 | CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();
|
20 | CSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;
|
21 |
|
22 |
|
23 | /**
|
24 | * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.
|
25 | *
|
26 | * sheet = new Sheet("body {margin: 0}")
|
27 | * sheet.toString()
|
28 | * -> "body{margin:0;}"
|
29 | * sheet.insertRule("img {border: none}", 0)
|
30 | * -> 0
|
31 | * sheet.toString()
|
32 | * -> "img{border:none;}body{margin:0;}"
|
33 | *
|
34 | * @param {string} rule
|
35 | * @param {number} index
|
36 | * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule
|
37 | * @return {number} The index within the style sheet's rule collection of the newly inserted rule.
|
38 | */
|
39 | CSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {
|
40 | if (index < 0 || index > this.cssRules.length) {
|
41 | throw new RangeError("INDEX_SIZE_ERR");
|
42 | }
|
43 | var cssRule = CSSOM.parse(rule).cssRules[0];
|
44 | cssRule.parentStyleSheet = this;
|
45 | this.cssRules.splice(index, 0, cssRule);
|
46 | return index;
|
47 | };
|
48 |
|
49 |
|
50 | /**
|
51 | * Used to delete a rule from the style sheet.
|
52 | *
|
53 | * sheet = new Sheet("img{border:none} body{margin:0}")
|
54 | * sheet.toString()
|
55 | * -> "img{border:none;}body{margin:0;}"
|
56 | * sheet.deleteRule(0)
|
57 | * sheet.toString()
|
58 | * -> "body{margin:0;}"
|
59 | *
|
60 | * @param {number} index within the style sheet's rule list of the rule to remove.
|
61 | * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule
|
62 | */
|
63 | CSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {
|
64 | if (index < 0 || index >= this.cssRules.length) {
|
65 | throw new RangeError("INDEX_SIZE_ERR");
|
66 | }
|
67 | this.cssRules.splice(index, 1);
|
68 | };
|
69 |
|
70 |
|
71 | /**
|
72 | * NON-STANDARD
|
73 | * @return {string} serialize stylesheet
|
74 | */
|
75 | CSSOM.CSSStyleSheet.prototype.toString = function() {
|
76 | var result = "";
|
77 | var rules = this.cssRules;
|
78 | for (var i=0; i<rules.length; i++) {
|
79 | result += rules[i].cssText + "\n";
|
80 | }
|
81 | return result;
|
82 | };
|
83 |
|
84 |
|
85 | //.CommonJS
|
86 | exports.CSSStyleSheet = CSSOM.CSSStyleSheet;
|
87 | CSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js
|
88 | ///CommonJS
|