|
| 1 | +//.CommonJS |
| 2 | +var CSSOM = { |
| 3 | + CSSRule: require("./CSSRule").CSSRule |
| 4 | +}; |
| 5 | +///CommonJS |
| 6 | + |
| 7 | + |
| 8 | +/** |
| 9 | + * @constructor |
| 10 | + * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface |
| 11 | + */ |
| 12 | +CSSOM.CSSGroupingRule = function CSSGroupingRule() { |
| 13 | + CSSOM.CSSRule.call(this); |
| 14 | + this.cssRules = []; |
| 15 | +}; |
| 16 | + |
| 17 | +CSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule(); |
| 18 | +CSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule; |
| 19 | + |
| 20 | + |
| 21 | +/** |
| 22 | + * Used to insert a new CSS rule to a list of CSS rules. |
| 23 | + * |
| 24 | + * @example |
| 25 | + * cssGroupingRule.cssText |
| 26 | + * -> "body{margin:0;}" |
| 27 | + * cssGroupingRule.insertRule("img{border:none;}", 1) |
| 28 | + * -> 1 |
| 29 | + * cssGroupingRule.cssText |
| 30 | + * -> "body{margin:0;}img{border:none;}" |
| 31 | + * |
| 32 | + * @param {string} rule |
| 33 | + * @param {number} [index] |
| 34 | + * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule |
| 35 | + * @return {number} The index within the grouping rule's collection of the newly inserted rule. |
| 36 | + */ |
| 37 | + CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) { |
| 38 | + if (index < 0 || index > this.cssRules.length) { |
| 39 | + throw new RangeError("INDEX_SIZE_ERR"); |
| 40 | + } |
| 41 | + var cssRule = CSSOM.parse(rule).cssRules[0]; |
| 42 | + cssRule.parentRule = this; |
| 43 | + this.cssRules.splice(index, 0, cssRule); |
| 44 | + return index; |
| 45 | +}; |
| 46 | + |
| 47 | +/** |
| 48 | + * Used to delete a rule from the grouping rule. |
| 49 | + * |
| 50 | + * cssGroupingRule.cssText |
| 51 | + * -> "img{border:none;}body{margin:0;}" |
| 52 | + * cssGroupingRule.deleteRule(0) |
| 53 | + * cssGroupingRule.cssText |
| 54 | + * -> "body{margin:0;}" |
| 55 | + * |
| 56 | + * @param {number} index within the grouping rule's rule list of the rule to remove. |
| 57 | + * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule |
| 58 | + */ |
| 59 | + CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) { |
| 60 | + if (index < 0 || index >= this.cssRules.length) { |
| 61 | + throw new RangeError("INDEX_SIZE_ERR"); |
| 62 | + } |
| 63 | + this.cssRules.splice(index, 1)[0].parentRule = null; |
| 64 | +}; |
| 65 | + |
| 66 | +//.CommonJS |
| 67 | +exports.CSSGroupingRule = CSSOM.CSSGroupingRule; |
| 68 | +///CommonJS |
0 commit comments