CSSGroupingRule.js 1.9 KB

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