CSSMediaRule.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //.CommonJS
  2. var CSSOM = {
  3. CSSRule: require("./CSSRule").CSSRule,
  4. CSSRuleList: require("./CSSRuleList").CSSRuleList,
  5. CSSGroupingRule: require("./CSSGroupingRule").CSSGroupingRule,
  6. CSSConditionRule: require("./CSSConditionRule").CSSConditionRule,
  7. MediaList: require("./MediaList").MediaList
  8. };
  9. ///CommonJS
  10. /**
  11. * @constructor
  12. * @see http://dev.w3.org/csswg/cssom/#cssmediarule
  13. * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule
  14. */
  15. CSSOM.CSSMediaRule = function CSSMediaRule() {
  16. CSSOM.CSSConditionRule.call(this);
  17. this.__media = new CSSOM.MediaList();
  18. };
  19. CSSOM.CSSMediaRule.prototype = Object.create(CSSOM.CSSConditionRule.prototype);
  20. CSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;
  21. Object.setPrototypeOf(CSSOM.CSSMediaRule, CSSOM.CSSConditionRule);
  22. Object.defineProperty(CSSOM.CSSMediaRule.prototype, "type", {
  23. value: 4,
  24. writable: false
  25. });
  26. // https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp
  27. Object.defineProperties(CSSOM.CSSMediaRule.prototype, {
  28. "media": {
  29. get: function() {
  30. return this.__media;
  31. },
  32. set: function(value) {
  33. if (typeof value === "string") {
  34. this.__media.mediaText = value;
  35. } else {
  36. this.__media = value;
  37. }
  38. },
  39. configurable: true,
  40. enumerable: true
  41. },
  42. "conditionText": {
  43. get: function() {
  44. return this.media.mediaText;
  45. }
  46. },
  47. "cssText": {
  48. get: function() {
  49. var values = "";
  50. var valuesArr = [" {"];
  51. if (this.cssRules.length) {
  52. valuesArr.push(this.cssRules.reduce(function(acc, rule){
  53. if (rule.cssText !== "") {
  54. acc.push(rule.cssText);
  55. }
  56. return acc;
  57. }, []).join("\n "));
  58. }
  59. values = valuesArr.join("\n ") + "\n}";
  60. return "@media " + this.media.mediaText + values;
  61. }
  62. }
  63. });
  64. //.CommonJS
  65. exports.CSSMediaRule = CSSOM.CSSMediaRule;
  66. ///CommonJS