@@ -405,38 +405,9 @@ const selectors4SyntaxDefinition = extendSyntaxDefinition(selectors3SyntaxDefini
405405 NoArgument : [ 'marker' ] ,
406406 Selector : [ 'part' ]
407407 }
408- } ,
409- // Include all the latest modules
410- modules : [
411- 'css-position-4' ,
412- 'css-scoping-1' ,
413- 'css-pseudo-4' ,
414- 'css-shadow-parts-1'
415- ]
416- } ) ;
417-
418- const progressiveSyntaxDefinition = extendSyntaxDefinition ( selectors4SyntaxDefinition , {
419- pseudoElements : {
420- unknown : 'accept'
421- } ,
422- pseudoClasses : {
423- unknown : 'accept'
424- } ,
425- attributes : {
426- unknownCaseSensitivityModifiers : 'accept'
427408 }
428409} ) ;
429410
430- export const cssSyntaxDefinitions : Record < CssLevel , SyntaxDefinition > = {
431- css1 : css1SyntaxDefinition ,
432- css2 : css2SyntaxDefinition ,
433- css3 : selectors3SyntaxDefinition ,
434- 'selectors-3' : selectors3SyntaxDefinition ,
435- 'selectors-4' : selectors4SyntaxDefinition ,
436- latest : selectors4SyntaxDefinition ,
437- progressive : progressiveSyntaxDefinition
438- } ;
439-
440411/**
441412 * CSS Modules with their syntax definitions.
442413 * These can be used to extend the parser with specific CSS modules.
@@ -447,20 +418,23 @@ export const cssSyntaxDefinitions: Record<CssLevel, SyntaxDefinition> = {
447418 */
448419export const cssModules = {
449420 'css-position-1' : {
421+ latest : false ,
450422 pseudoClasses : {
451423 definitions : {
452424 NoArgument : [ 'static' , 'relative' , 'absolute' ]
453425 }
454426 }
455427 } ,
456428 'css-position-2' : {
429+ latest : false ,
457430 pseudoClasses : {
458431 definitions : {
459432 NoArgument : [ 'static' , 'relative' , 'absolute' , 'fixed' ]
460433 }
461434 }
462435 } ,
463436 'css-position-3' : {
437+ latest : false ,
464438 pseudoClasses : {
465439 definitions : {
466440 NoArgument : [ 'sticky' , 'fixed' , 'absolute' , 'relative' , 'static' ]
@@ -519,11 +493,40 @@ export const cssModules = {
519493 }
520494 }
521495 }
522- } satisfies Record < string , SyntaxDefinition & { latest ?: true } > ;
496+ } satisfies Record < string , SyntaxDefinition & { latest ?: boolean } > ;
523497
524498/**
525499 * CSS Module name.
526500 * @example 'css-position-3'
527501 * @example 'css-scoping-1'
528502 */
529503export type CssModule = keyof typeof cssModules ;
504+
505+ const latestSyntaxDefinition = {
506+ ...selectors4SyntaxDefinition ,
507+ modules : ( Object . entries ( cssModules ) as [ CssModule , SyntaxDefinition & { latest ?: boolean } ] [ ] )
508+ . filter ( ( [ , { latest} ] ) => latest )
509+ . map ( ( [ name ] ) => name )
510+ } ;
511+
512+ const progressiveSyntaxDefinition = extendSyntaxDefinition ( latestSyntaxDefinition , {
513+ pseudoElements : {
514+ unknown : 'accept'
515+ } ,
516+ pseudoClasses : {
517+ unknown : 'accept'
518+ } ,
519+ attributes : {
520+ unknownCaseSensitivityModifiers : 'accept'
521+ }
522+ } ) ;
523+
524+ export const cssSyntaxDefinitions : Record < CssLevel , SyntaxDefinition > = {
525+ css1 : css1SyntaxDefinition ,
526+ css2 : css2SyntaxDefinition ,
527+ css3 : selectors3SyntaxDefinition ,
528+ 'selectors-3' : selectors3SyntaxDefinition ,
529+ 'selectors-4' : selectors4SyntaxDefinition ,
530+ latest : latestSyntaxDefinition ,
531+ progressive : progressiveSyntaxDefinition
532+ } ;
0 commit comments