tailwindcss/tests/util/invokePlugin.js
Robin Malfait a34bd62bb6
Remove lodash (#5390)
* remove `lodash` usage

* implement custom cloneDeep to replace lodash's

* drop lodash in processPlugins

* add `toPath` utility

* add `tap` utility

* add `cloneDeep` utility

* drop lodash in evaluateTailwindFunctions

* add `defaults` utility

* drop lodash from `resolveConfig`

* remove `lodash` dependency
2021-09-06 14:15:10 -04:00

44 lines
1.1 KiB
JavaScript

import dlv from 'dlv'
import escapeClassName from '../src/util/escapeClassName'
export default function (plugin, config) {
const addedUtilities = []
const getConfigValue = (path, defaultValue) => dlv(config, path, defaultValue)
const pluginApi = {
config: getConfigValue,
e: escapeClassName,
theme: (path, defaultValue) => getConfigValue(`theme.${path}`, defaultValue),
variants: (path, defaultValue) => {
if (Array.isArray(config.variants)) {
return config.variants
}
return getConfigValue(`variants.${path}`, defaultValue)
},
addUtilities(utilities, variants) {
addedUtilities.push([utilities, variants])
},
corePlugins(corePlugin) {
if (config.corePlugins === undefined) {
return false
}
if (Array.isArray(config.corePlugins)) {
return config.corePlugins.includes(corePlugin)
}
return config.corePlugins[corePlugin] !== false
},
}
plugin(pluginApi)
return {
utilities: addedUtilities.map(([utilities, variants]) => [
Object.assign({}, ...(Array.isArray(utilities) ? utilities : [utilities])),
variants,
]),
}
}