@@ -35,23 +35,24 @@ CSSOM.parse = function parse(token) {
3535 "importRule-begin" : true ,
3636 "importRule" : true ,
3737 "atBlock" : true ,
38+ "containerBlock" : true ,
3839 "conditionBlock" : true ,
3940 'documentRule-begin' : true
4041 } ;
4142
4243 var styleSheet = new CSSOM . CSSStyleSheet ( ) ;
4344
44- // @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule
45+ // @type CSSStyleSheet|CSSMediaRule|CSSContainerRule| CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule
4546 var currentScope = styleSheet ;
4647
47- // @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule
48+ // @type CSSMediaRule|CSSContainerRule| CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule
4849 var parentRule ;
4950
5051 var ancestorRules = [ ] ;
5152 var hasAncestors = false ;
5253 var prevScope ;
5354
54- var name , priority = "" , styleRule , mediaRule , supportsRule , importRule , fontFaceRule , keyframesRule , documentRule , hostRule , startingStyleRule ;
55+ var name , priority = "" , styleRule , mediaRule , containerRule , supportsRule , importRule , fontFaceRule , keyframesRule , documentRule , hostRule , startingStyleRule ;
5556
5657 var atKeyframesRegExp = / @ ( - (?: \w + - ) + ) ? k e y f r a m e s / g;
5758
@@ -157,6 +158,13 @@ CSSOM.parse = function parse(token) {
157158 i += "media" . length ;
158159 buffer = "" ;
159160 break ;
161+ } else if ( token . indexOf ( "@container" , i ) === i ) {
162+ state = "containerBlock" ;
163+ containerRule = new CSSOM . CSSContainerRule ( ) ;
164+ containerRule . __starts = i ;
165+ i += "container" . length ;
166+ buffer = "" ;
167+ break ;
160168 } else if ( token . indexOf ( "@supports" , i ) === i ) {
161169 state = "conditionBlock" ;
162170 supportsRule = new CSSOM . CSSSupportsRule ( ) ;
@@ -225,6 +233,16 @@ CSSOM.parse = function parse(token) {
225233 mediaRule . parentStyleSheet = styleSheet ;
226234 buffer = "" ;
227235 state = "before-selector" ;
236+ } else if ( state === "containerBlock" ) {
237+ containerRule . containerText = buffer . trim ( ) ;
238+
239+ if ( parentRule ) {
240+ ancestorRules . push ( parentRule ) ;
241+ }
242+ currentScope = parentRule = containerRule ;
243+ containerRule . parentStyleSheet = styleSheet ;
244+ buffer = "" ;
245+ state = "before-selector" ;
228246 } else if ( state === "conditionBlock" ) {
229247 supportsRule . conditionText = buffer . trim ( ) ;
230248
@@ -411,6 +429,7 @@ CSSOM.parse = function parse(token) {
411429 if (
412430 parentRule . constructor . name === "CSSMediaRule"
413431 || parentRule . constructor . name === "CSSSupportsRule"
432+ || parentRule . constructor . name === "CSSContainerRule"
414433 ) {
415434 prevScope = currentScope ;
416435 currentScope = parentRule ;
@@ -470,6 +489,7 @@ CSSOM.CSSStyleRule = require("./CSSStyleRule").CSSStyleRule;
470489CSSOM . CSSImportRule = require ( "./CSSImportRule" ) . CSSImportRule ;
471490CSSOM . CSSGroupingRule = require ( "./CSSGroupingRule" ) . CSSGroupingRule ;
472491CSSOM . CSSMediaRule = require ( "./CSSMediaRule" ) . CSSMediaRule ;
492+ CSSOM . CSSContainerRule = require ( "./CSSContainerRule" ) . CSSContainerRule ;
473493CSSOM . CSSConditionRule = require ( "./CSSConditionRule" ) . CSSConditionRule ;
474494CSSOM . CSSSupportsRule = require ( "./CSSSupportsRule" ) . CSSSupportsRule ;
475495CSSOM . CSSFontFaceRule = require ( "./CSSFontFaceRule" ) . CSSFontFaceRule ;
0 commit comments