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.
		
		
		
		
		
			
		
			
				
					
					
						
							82 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							82 lines
						
					
					
						
							2.1 KiB
						
					
					
				//.CommonJS | 
						|
var CSSOM = { | 
						|
	CSSStyleSheet: require("./CSSStyleSheet").CSSStyleSheet, | 
						|
	CSSStyleRule: require("./CSSStyleRule").CSSStyleRule, | 
						|
	CSSMediaRule: require("./CSSMediaRule").CSSMediaRule, | 
						|
	CSSSupportsRule: require("./CSSSupportsRule").CSSSupportsRule, | 
						|
	CSSStyleDeclaration: require("./CSSStyleDeclaration").CSSStyleDeclaration, | 
						|
	CSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule, | 
						|
	CSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule | 
						|
}; | 
						|
///CommonJS | 
						|
 | 
						|
 | 
						|
/** | 
						|
 * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively. | 
						|
 * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet | 
						|
 * @nosideeffects | 
						|
 * @return {CSSOM.CSSStyleSheet} | 
						|
 */ | 
						|
CSSOM.clone = function clone(stylesheet) { | 
						|
 | 
						|
	var cloned = new CSSOM.CSSStyleSheet(); | 
						|
 | 
						|
	var rules = stylesheet.cssRules; | 
						|
	if (!rules) { | 
						|
		return cloned; | 
						|
	} | 
						|
 | 
						|
	var RULE_TYPES = { | 
						|
		1: CSSOM.CSSStyleRule, | 
						|
		4: CSSOM.CSSMediaRule, | 
						|
		//3: CSSOM.CSSImportRule, | 
						|
		//5: CSSOM.CSSFontFaceRule, | 
						|
		//6: CSSOM.CSSPageRule, | 
						|
		8: CSSOM.CSSKeyframesRule, | 
						|
		9: CSSOM.CSSKeyframeRule, | 
						|
		12: CSSOM.CSSSupportsRule | 
						|
	}; | 
						|
 | 
						|
	for (var i=0, rulesLength=rules.length; i < rulesLength; i++) { | 
						|
		var rule = rules[i]; | 
						|
		var ruleClone = cloned.cssRules[i] = new RULE_TYPES[rule.type](); | 
						|
 | 
						|
		var style = rule.style; | 
						|
		if (style) { | 
						|
			var styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration(); | 
						|
			for (var j=0, styleLength=style.length; j < styleLength; j++) { | 
						|
				var name = styleClone[j] = style[j]; | 
						|
				styleClone[name] = style[name]; | 
						|
				styleClone._importants[name] = style.getPropertyPriority(name); | 
						|
			} | 
						|
			styleClone.length = style.length; | 
						|
		} | 
						|
 | 
						|
		if (rule.hasOwnProperty('keyText')) { | 
						|
			ruleClone.keyText = rule.keyText; | 
						|
		} | 
						|
 | 
						|
		if (rule.hasOwnProperty('selectorText')) { | 
						|
			ruleClone.selectorText = rule.selectorText; | 
						|
		} | 
						|
 | 
						|
		if (rule.hasOwnProperty('mediaText')) { | 
						|
			ruleClone.mediaText = rule.mediaText; | 
						|
		} | 
						|
 | 
						|
		if (rule.hasOwnProperty('conditionText')) { | 
						|
			ruleClone.conditionText = rule.conditionText; | 
						|
		} | 
						|
 | 
						|
		if (rule.hasOwnProperty('cssRules')) { | 
						|
			ruleClone.cssRules = clone(rule).cssRules; | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	return cloned; | 
						|
 | 
						|
}; | 
						|
 | 
						|
//.CommonJS | 
						|
exports.clone = CSSOM.clone; | 
						|
///CommonJS
 | 
						|
 |