Spaces:
Sleeping
Sleeping
| import transformThemeValue from './transformThemeValue' | |
| export default function createUtilityPlugin( | |
| themeKey, | |
| utilityVariations = [[themeKey, [themeKey]]], | |
| { filterDefault = false, ...options } = {} | |
| ) { | |
| let transformValue = transformThemeValue(themeKey) | |
| return function ({ matchUtilities, theme }) { | |
| for (let utilityVariation of utilityVariations) { | |
| let group = Array.isArray(utilityVariation[0]) ? utilityVariation : [utilityVariation] | |
| matchUtilities( | |
| group.reduce((obj, [classPrefix, properties]) => { | |
| return Object.assign(obj, { | |
| [classPrefix]: (value) => { | |
| return properties.reduce((obj, name) => { | |
| if (Array.isArray(name)) { | |
| return Object.assign(obj, { [name[0]]: name[1] }) | |
| } | |
| return Object.assign(obj, { [name]: transformValue(value) }) | |
| }, {}) | |
| }, | |
| }) | |
| }, {}), | |
| { | |
| ...options, | |
| values: filterDefault | |
| ? Object.fromEntries( | |
| Object.entries(theme(themeKey) ?? {}).filter(([modifier]) => modifier !== 'DEFAULT') | |
| ) | |
| : theme(themeKey), | |
| } | |
| ) | |
| } | |
| } | |
| } | |