Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81143 views
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
89
90