CSSScopeRule.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //.CommonJS
  2. var CSSOM = {
  3. CSSRule: require("./CSSRule").CSSRule,
  4. CSSRuleList: require("./CSSRuleList").CSSRuleList,
  5. CSSGroupingRule: require("./CSSGroupingRule").CSSGroupingRule,
  6. };
  7. ///CommonJS
  8. /**
  9. * @constructor
  10. * @see https://drafts.csswg.org/css-cascade-6/#cssscoperule
  11. */
  12. CSSOM.CSSScopeRule = function CSSScopeRule() {
  13. CSSOM.CSSGroupingRule.call(this);
  14. this.__start = null;
  15. this.__end = null;
  16. };
  17. CSSOM.CSSScopeRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);
  18. CSSOM.CSSScopeRule.prototype.constructor = CSSOM.CSSScopeRule;
  19. Object.setPrototypeOf(CSSOM.CSSScopeRule, CSSOM.CSSGroupingRule);
  20. Object.defineProperties(CSSOM.CSSScopeRule.prototype, {
  21. type: {
  22. value: 0,
  23. writable: false,
  24. },
  25. cssText: {
  26. get: function () {
  27. var values = "";
  28. var valuesArr = [" {"];
  29. if (this.cssRules.length) {
  30. valuesArr.push(this.cssRules.reduce(function(acc, rule){
  31. if (rule.cssText !== "") {
  32. acc.push(rule.cssText);
  33. }
  34. return acc;
  35. }, []).join("\n "));
  36. }
  37. values = valuesArr.join("\n ") + "\n}";
  38. return "@scope" + (this.start ? " (" + this.start + ")" : "") + (this.end ? " to (" + this.end + ")" : "") + values;
  39. },
  40. configurable: true,
  41. enumerable: true,
  42. },
  43. start: {
  44. get: function () {
  45. return this.__start;
  46. }
  47. },
  48. end: {
  49. get: function () {
  50. return this.__end;
  51. }
  52. }
  53. });
  54. //.CommonJS
  55. exports.CSSScopeRule = CSSOM.CSSScopeRule;
  56. ///CommonJS