@@ -213,10 +213,12 @@ function removeCSSRule(list, index) {
213213 * @returns {CSSRuleImpl|CSSFontFeatureValuesMapImpl }
214214 */
215215function createCSSRule ( node , name , prelude , value ) {
216+ const parentRule = getRule ( node ) . value
217+ const parentStyleSheet = getRoot ( node ) . value
216218 const properties = {
217219 name,
218- parentRule : getRule ( node ) ?. value ,
219- parentStyleSheet : getRoot ( node ) . value ,
220+ parentRule : parentRule === parentStyleSheet ? null : parentRule ,
221+ parentStyleSheet,
220222 prelude,
221223 value,
222224 }
@@ -288,20 +290,19 @@ function getDeclarationDefinition(context, name) {
288290 * @returns {object|null }
289291 */
290292function getRuleDefinition ( context , name , prelude , type ) {
291- const contextDefinition = context . definition . value ?? context . definition
292293 if ( name ) {
293294 name = `@${ name } `
294295 const alias = compatibility . rules . aliases . get ( name )
295296 if ( alias ) {
296297 name = alias
297298 }
298- return contextDefinition . rules ?. find ( rule =>
299+ return context . definition . value . rules ?. find ( rule =>
299300 ! rule . qualified
300301 && ( rule . name === name || rule . names ?. includes ( name ) )
301302 && ( rule . prelude ? true : prelude . length === 0 )
302303 && ( rule . value ? 'block' : 'statement' ) === type )
303304 }
304- return contextDefinition . rules ?. find ( rule => rule . qualified )
305+ return context . definition . value . rules ?. find ( rule => rule . qualified )
305306}
306307
307308/**
@@ -319,8 +320,7 @@ function createContext(value) {
319320 if ( CSSRule . isImpl ( value ) ) {
320321 const { parentRule, parentStyleSheet } = value
321322 const context = createContext ( parentRule ?? parentStyleSheet )
322- const contextDefinition = context . definition . value ?? context . definition
323- const definition = contextDefinition . rules . find ( definition => cssom [ definition . cssom ] . isImpl ( value ) )
323+ const definition = context . definition . value . rules . find ( definition => cssom [ definition . cssom ] . isImpl ( value ) )
324324 return { ...context , context, definition, value }
325325 }
326326 if ( CSSFontFeatureValuesMap . isImpl ( value ) ) {
@@ -356,14 +356,13 @@ function createContext(value) {
356356 if ( Array . isArray ( value ) ) {
357357 return value . reduce (
358358 ( context , name ) => {
359- const contextDefinition = context . definition . value ?? context . definition
360- const definition = contextDefinition . rules . find ( rule => rule . name === name )
359+ const definition = context . definition . value . rules . find ( rule => rule . name === name )
361360 return { ...context , context, definition }
362361 } ,
363362 context )
364363 }
365364 // Assert: value is an Element
366- const definition = root . rules . find ( definition => definition . qualified )
365+ const definition = root . value . rules . find ( definition => definition . qualified )
367366 return { ...context , context, definition }
368367}
369368
@@ -933,7 +932,7 @@ function parseCSSArbitrarySubstitution(value, context) {
933932 if ( value . types [ 0 ] !== '<function>' ) {
934933 return null
935934 }
936- const { definition : { cascading, elemental } } = getRule ( context ) ?? { definition : { } }
935+ const { definition : { cascading, elemental } } = getRule ( context )
937936 for ( const { cascade, definition, element, name } of substitutions . arbitrary ) {
938937 if ( ! elemental && ( element || ( cascade && ! cascading ) ) ) {
939938 continue
0 commit comments