| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | //.CommonJSvar CSSOM = {};///CommonJS/** * @constructor * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration */CSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){	this.length = 0;	this.parentRule = null;	// NON-STANDARD	this._importants = {};};CSSOM.CSSStyleDeclaration.prototype = {	constructor: CSSOM.CSSStyleDeclaration,	/**	 *	 * @param {string} name	 * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue	 * @return {string} the value of the property if it has been explicitly set for this declaration block.	 * Returns the empty string if the property has not been set.	 */	getPropertyValue: function(name) {		return this[name] || "";	},	/**	 *	 * @param {string} name	 * @param {string} value	 * @param {string} [priority=null] "important" or null	 * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty	 */	setProperty: function(name, value, priority) {		if (this[name]) {			// Property already exist. Overwrite it.			var index = Array.prototype.indexOf.call(this, name);			if (index < 0) {				this[this.length] = name;				this.length++;			}		} else {			// New property.			this[this.length] = name;			this.length++;		}		this[name] = value + "";		this._importants[name] = priority;	},	/**	 *	 * @param {string} name	 * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty	 * @return {string} the value of the property if it has been explicitly set for this declaration block.	 * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.	 */	removeProperty: function(name) {		if (!(name in this)) {			return "";		}		var index = Array.prototype.indexOf.call(this, name);		if (index < 0) {			return "";		}		var prevValue = this[name];		this[name] = "";		// That's what WebKit and Opera do		Array.prototype.splice.call(this, index, 1);		// That's what Firefox does		//this[index] = ""		return prevValue;	},	getPropertyCSSValue: function() {		//FIXME	},	/**	 *	 * @param {String} name	 */	getPropertyPriority: function(name) {		return this._importants[name] || "";	},	/**	 *   element.style.overflow = "auto"	 *   element.style.getPropertyShorthand("overflow-x")	 *   -> "overflow"	 */	getPropertyShorthand: function() {		//FIXME	},	isPropertyImplicit: function() {		//FIXME	},	// Doesn't work in IE < 9	get cssText(){		var properties = [];		for (var i=0, length=this.length; i < length; ++i) {			var name = this[i];			var value = this.getPropertyValue(name);			var priority = this.getPropertyPriority(name);			if (priority) {				priority = " !" + priority;			}			properties[i] = name + ": " + value + priority + ";";		}		return properties.join(" ");	},	set cssText(text){		var i, name;		for (i = this.length; i--;) {			name = this[i];			this[name] = "";		}		Array.prototype.splice.call(this, 0, this.length);		this._importants = {};		var dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;		var length = dummyRule.length;		for (i = 0; i < length; ++i) {			name = dummyRule[i];			this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));		}	}};//.CommonJSexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;CSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js///CommonJS
 |