| //.CommonJS |
| var CSSOM = { |
| CSSStyleSheet: require("./CSSStyleSheet").CSSStyleSheet, |
| CSSStyleRule: require("./CSSStyleRule").CSSStyleRule, |
| CSSMediaRule: require("./CSSMediaRule").CSSMediaRule, |
| 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 |
| }; |
| |
| 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('cssRules')) { |
| ruleClone.cssRules = clone(rule).cssRules; |
| } |
| } |
| |
| return cloned; |
| |
| }; |
| |
| //.CommonJS |
| exports.clone = CSSOM.clone; |
| ///CommonJS |