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
 | 
						|
 |