@@ -6,14 +6,14 @@ import prefixSelector from '../util/prefixSelector'
66
77function generatePseudoClassVariant ( pseudoClass , selectorPrefix = pseudoClass ) {
88 return generateVariantFunction ( ( { modifySelectors, separator } ) => {
9- return modifySelectors ( ( { selector } ) => {
10- return selectorParser ( selectors => {
11- selectors . walkClasses ( sel => {
12- sel . value = `${ selectorPrefix } ${ separator } ${ sel . value } `
13- sel . parent . insertAfter ( sel , selectorParser . pseudo ( { value : `:${ pseudoClass } ` } ) )
14- } )
15- } ) . processSync ( selector )
9+ const parser = selectorParser ( selectors => {
10+ selectors . walkClasses ( sel => {
11+ sel . value = `${ selectorPrefix } ${ separator } ${ sel . value } `
12+ sel . parent . insertAfter ( sel , selectorParser . pseudo ( { value : `:${ pseudoClass } ` } ) )
13+ } )
1614 } )
15+
16+ return modifySelectors ( ( { selector } ) => parser . processSync ( selector ) )
1717 } )
1818}
1919
@@ -24,13 +24,12 @@ function ensureIncludesDefault(variants) {
2424const defaultVariantGenerators = config => ( {
2525 default : generateVariantFunction ( ( ) => { } ) ,
2626 'motion-safe' : generateVariantFunction ( ( { container, separator, modifySelectors } ) => {
27- const modified = modifySelectors ( ( { selector } ) => {
28- return selectorParser ( selectors => {
29- selectors . walkClasses ( sel => {
30- sel . value = `motion-safe${ separator } ${ sel . value } `
31- } )
32- } ) . processSync ( selector )
27+ const parser = selectorParser ( selectors => {
28+ selectors . walkClasses ( sel => {
29+ sel . value = `motion-safe${ separator } ${ sel . value } `
30+ } )
3331 } )
32+ const modified = modifySelectors ( ( { selector } ) => parser . processSync ( selector ) )
3433 const mediaQuery = postcss . atRule ( {
3534 name : 'media' ,
3635 params : '(prefers-reduced-motion: no-preference)' ,
@@ -39,42 +38,42 @@ const defaultVariantGenerators = config => ({
3938 container . append ( mediaQuery )
4039 } ) ,
4140 'motion-reduce' : generateVariantFunction ( ( { container, separator, modifySelectors } ) => {
42- const modified = modifySelectors ( ( { selector } ) => {
43- return selectorParser ( selectors => {
44- selectors . walkClasses ( sel => {
45- sel . value = `motion-reduce${ separator } ${ sel . value } `
46- } )
47- } ) . processSync ( selector )
41+ const parser = selectorParser ( selectors => {
42+ selectors . walkClasses ( sel => {
43+ sel . value = `motion-reduce${ separator } ${ sel . value } `
44+ } )
45+ } )
46+ const modified = modifySelectors ( ( { selector } ) => parser . processSync ( selector ) )
47+ const mediaQuery = postcss . atRule ( {
48+ name : 'media' ,
49+ params : '(prefers-reduced-motion: reduce)' ,
4850 } )
49- const mediaQuery = postcss . atRule ( { name : 'media' , params : '(prefers-reduced-motion: reduce)' } )
5051 mediaQuery . append ( modified )
5152 container . append ( mediaQuery )
5253 } ) ,
5354 'group-hover' : generateVariantFunction ( ( { modifySelectors, separator } ) => {
54- return modifySelectors ( ( { selector } ) => {
55- return selectorParser ( selectors => {
56- selectors . walkClasses ( sel => {
57- sel . value = `group-hover${ separator } ${ sel . value } `
58- sel . parent . insertBefore (
59- sel ,
60- selectorParser ( ) . astSync ( prefixSelector ( config . prefix , '.group:hover ' ) )
61- )
62- } )
63- } ) . processSync ( selector )
55+ const parser = selectorParser ( selectors => {
56+ selectors . walkClasses ( sel => {
57+ sel . value = `group-hover${ separator } ${ sel . value } `
58+ sel . parent . insertBefore (
59+ sel ,
60+ selectorParser ( ) . astSync ( prefixSelector ( config . prefix , '.group:hover ' ) )
61+ )
62+ } )
6463 } )
64+ return modifySelectors ( ( { selector } ) => parser . processSync ( selector ) )
6565 } ) ,
6666 'group-focus' : generateVariantFunction ( ( { modifySelectors, separator } ) => {
67- return modifySelectors ( ( { selector } ) => {
68- return selectorParser ( selectors => {
69- selectors . walkClasses ( sel => {
70- sel . value = `group-focus${ separator } ${ sel . value } `
71- sel . parent . insertBefore (
72- sel ,
73- selectorParser ( ) . astSync ( prefixSelector ( config . prefix , '.group:focus ' ) )
74- )
75- } )
76- } ) . processSync ( selector )
67+ const parser = selectorParser ( selectors => {
68+ selectors . walkClasses ( sel => {
69+ sel . value = `group-focus${ separator } ${ sel . value } `
70+ sel . parent . insertBefore (
71+ sel ,
72+ selectorParser ( ) . astSync ( prefixSelector ( config . prefix , '.group:focus ' ) )
73+ )
74+ } )
7775 } )
76+ return modifySelectors ( ( { selector } ) => parser . processSync ( selector ) )
7877 } ) ,
7978 hover : generatePseudoClassVariant ( 'hover' ) ,
8079 'focus-within' : generatePseudoClassVariant ( 'focus-within' ) ,
0 commit comments