UNPKG

2.42 kBJavaScriptView Raw
1//.CommonJS
2var 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 */
13CSSOM.CSSStyleSheet = function CSSStyleSheet() {
14 CSSOM.StyleSheet.call(this);
15 this.cssRules = [];
16};
17
18
19CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();
20CSSOM.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 */
39CSSOM.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 */
63CSSOM.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 */
75CSSOM.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
86exports.CSSStyleSheet = CSSOM.CSSStyleSheet;
87CSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js
88///CommonJS