11var _ = require ( 'lodash' )
22var flatten = require ( 'flat' )
33
4+
5+ const FLATTEN_CONFIG = { delimiter : '-' , maxDepth : 2 }
6+ const getName = name => name . split ( '-default' ) . join ( '' )
7+
8+
49module . exports = function ( ) {
510 return function ( {
611 addUtilities, addComponents, addBase, addVariant,
712 e, prefix, theme, variants, config,
813 } ) {
9- const buildObjectFromTheme = themeKey => {
14+ const buildObjectFromTheme = ( themeKey , ... fallbackKeys ) => {
1015 const buildObject = ( [ modifier , value ] ) => [ modifier , { [ themeKey ] : value } ]
11- const themeEntries = Object . entries ( theme ( themeKey , { } ) ) . map ( entry => buildObject ( entry ) )
16+ const getThemeSettings = ( themeKey , fallbackKeys ) => {
17+ return theme ( themeKey , false ) || getThemeSettings ( [ themeKey , ...fallbackKeys ] = fallbackKeys )
18+ }
19+ const themeEntries = Object
20+ . entries ( flatten ( getThemeSettings ( themeKey , fallbackKeys ) , FLATTEN_CONFIG ) )
21+ . map ( entry => buildObject ( entry ) )
22+
1223 return _ . fromPairs ( themeEntries )
1324 }
1425
@@ -25,13 +36,14 @@ module.exports = function () {
2536 Object . entries ( pluginUtilities )
2637 . filter ( ( [ modifier , values ] ) => ! _ . isEmpty ( values ) )
2738 . forEach ( ( [ modifier , values ] ) => {
39+ const className = _ . kebabCase ( modifier )
2840 const variantName = Object . keys ( Object . entries ( values ) [ 0 ] [ 1 ] ) [ 0 ]
29- const utilities = flatten (
30- { [ `.${ e ( `bg-${ modifier } ` ) } ` ] : values } ,
31- { delimiter : '-' , maxDepth : 2 } ,
32- )
41+ const utilities = flatten ( { [ `.${ e ( `${ className } ` ) } ` ] : values } , FLATTEN_CONFIG )
3342
34- addUtilities ( utilities , variants ( variantName , [ 'responsive' ] ) )
43+ addUtilities (
44+ _ . mapKeys ( utilities , ( value , key ) => getName ( key ) ) ,
45+ variants ( variantName , [ 'responsive' ] )
46+ )
3547 } )
3648 }
3749}
0 commit comments