@@ -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