You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.4 KiB
88 lines
2.4 KiB
//.CommonJS |
|
var CSSOM = { |
|
StyleSheet: require("./StyleSheet").StyleSheet, |
|
CSSStyleRule: require("./CSSStyleRule").CSSStyleRule |
|
}; |
|
///CommonJS |
|
|
|
|
|
/** |
|
* @constructor |
|
* @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet |
|
*/ |
|
CSSOM.CSSStyleSheet = function CSSStyleSheet() { |
|
CSSOM.StyleSheet.call(this); |
|
this.cssRules = []; |
|
}; |
|
|
|
|
|
CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet(); |
|
CSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet; |
|
|
|
|
|
/** |
|
* Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade. |
|
* |
|
* sheet = new Sheet("body {margin: 0}") |
|
* sheet.toString() |
|
* -> "body{margin:0;}" |
|
* sheet.insertRule("img {border: none}", 0) |
|
* -> 0 |
|
* sheet.toString() |
|
* -> "img{border:none;}body{margin:0;}" |
|
* |
|
* @param {string} rule |
|
* @param {number} index |
|
* @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule |
|
* @return {number} The index within the style sheet's rule collection of the newly inserted rule. |
|
*/ |
|
CSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) { |
|
if (index < 0 || index > this.cssRules.length) { |
|
throw new RangeError("INDEX_SIZE_ERR"); |
|
} |
|
var cssRule = CSSOM.parse(rule).cssRules[0]; |
|
cssRule.parentStyleSheet = this; |
|
this.cssRules.splice(index, 0, cssRule); |
|
return index; |
|
}; |
|
|
|
|
|
/** |
|
* Used to delete a rule from the style sheet. |
|
* |
|
* sheet = new Sheet("img{border:none} body{margin:0}") |
|
* sheet.toString() |
|
* -> "img{border:none;}body{margin:0;}" |
|
* sheet.deleteRule(0) |
|
* sheet.toString() |
|
* -> "body{margin:0;}" |
|
* |
|
* @param {number} index within the style sheet's rule list of the rule to remove. |
|
* @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule |
|
*/ |
|
CSSOM.CSSStyleSheet.prototype.deleteRule = function(index) { |
|
if (index < 0 || index >= this.cssRules.length) { |
|
throw new RangeError("INDEX_SIZE_ERR"); |
|
} |
|
this.cssRules.splice(index, 1); |
|
}; |
|
|
|
|
|
/** |
|
* NON-STANDARD |
|
* @return {string} serialize stylesheet |
|
*/ |
|
CSSOM.CSSStyleSheet.prototype.toString = function() { |
|
var result = ""; |
|
var rules = this.cssRules; |
|
for (var i=0; i<rules.length; i++) { |
|
result += rules[i].cssText + "\n"; |
|
} |
|
return result; |
|
}; |
|
|
|
|
|
//.CommonJS |
|
exports.CSSStyleSheet = CSSOM.CSSStyleSheet; |
|
CSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js |
|
///CommonJS
|
|
|