CSSContainerRule.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. };
  8. ///CommonJS
  9. /**
  10. * @constructor
  11. * @see https://drafts.csswg.org/css-contain-3/
  12. * @see https://www.w3.org/TR/css-contain-3/
  13. */
  14. CSSOM.CSSContainerRule = function CSSContainerRule() {
  15. CSSOM.CSSConditionRule.call(this);
  16. };
  17. CSSOM.CSSContainerRule.prototype = Object.create(CSSOM.CSSConditionRule.prototype);
  18. CSSOM.CSSContainerRule.prototype.constructor = CSSOM.CSSContainerRule;
  19. Object.setPrototypeOf(CSSOM.CSSContainerRule, CSSOM.CSSConditionRule);
  20. Object.defineProperty(CSSOM.CSSContainerRule.prototype, "type", {
  21. value: 17,
  22. writable: false
  23. });
  24. Object.defineProperties(CSSOM.CSSContainerRule.prototype, {
  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 "@container " + this.conditionText + values;
  39. }
  40. },
  41. "containerName": {
  42. get: function() {
  43. var parts = this.conditionText.trim().split(/\s+/);
  44. if (parts.length > 1 && parts[0] !== '(' && !parts[0].startsWith('(')) {
  45. return parts[0];
  46. }
  47. return "";
  48. }
  49. },
  50. "containerQuery": {
  51. get: function() {
  52. var parts = this.conditionText.trim().split(/\s+/);
  53. if (parts.length > 1 && parts[0] !== '(' && !parts[0].startsWith('(')) {
  54. return parts.slice(1).join(' ');
  55. }
  56. return this.conditionText;
  57. }
  58. },
  59. });
  60. //.CommonJS
  61. exports.CSSContainerRule = CSSOM.CSSContainerRule;
  62. ///CommonJS