diff --git a/__tests__/applyAtRule.test.js b/__tests__/applyAtRule.test.js index a099f1d86..d2ac99272 100644 --- a/__tests__/applyAtRule.test.js +++ b/__tests__/applyAtRule.test.js @@ -5,12 +5,14 @@ import resolveConfig from '../src/util/resolveConfig' import corePlugins from '../src/corePlugins' import defaultConfig from '../defaultConfig.stub.js' +const resolvedDefaultConfig = resolveConfig([defaultConfig]) + const { utilities: defaultUtilities } = processPlugins( - corePlugins(resolveConfig([defaultConfig])), - defaultConfig + corePlugins(resolvedDefaultConfig), + resolvedDefaultConfig ) -function run(input, config = defaultConfig, utilities = defaultUtilities) { +function run(input, config = resolvedDefaultConfig, utilities = defaultUtilities) { return postcss([substituteClassApplyAtRules(config, utilities)]).process(input, { from: undefined, }) diff --git a/__tests__/configurePlugins.test.js b/__tests__/configurePlugins.test.js index a06ea79d6..69c341a09 100644 --- a/__tests__/configurePlugins.test.js +++ b/__tests__/configurePlugins.test.js @@ -2,180 +2,17 @@ import configurePlugins from '../src/util/configurePlugins' test('setting a plugin to false removes it', () => { const plugins = { - fontSize: options => { - return { - plugin: 'fontSize', - options, - } - }, - display: options => { - return { - plugin: 'display', - options, - } - }, - backgroundPosition: options => { - return { - plugin: 'backgroundPosition', - options, - } - }, - } - - const configuredPlugins = configurePlugins(plugins, { - fontSize: {}, - display: false, - backgroundPosition: {}, - }) - - expect(configuredPlugins).toEqual([ - { plugin: 'fontSize', options: {} }, - { plugin: 'backgroundPosition', options: {} }, - ]) -}) - -test('setting a plugin to an object configures that plugin', () => { - const plugins = { - fontSize: options => { - return { - plugin: 'fontSize', - options, - } - }, - display: options => { - return { - plugin: 'display', - options, - } - }, - backgroundPosition: options => { - return { - plugin: 'backgroundPosition', - options, - } - }, - } - - const configuredPlugins = configurePlugins(plugins, { - fontSize: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - display: { variants: ['responsive'] }, - backgroundPosition: {}, - }) - - expect(configuredPlugins).toEqual([ - { - plugin: 'fontSize', - options: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - }, - { plugin: 'display', options: { variants: ['responsive'] } }, - { plugin: 'backgroundPosition', options: {} }, - ]) -}) - -test('plugins are configured with their default configuration if no custom config is provided', () => { - const plugins = { - fontSize: options => { - return { - plugin: 'fontSize', - options, - } - }, - display: options => { - return { - plugin: 'display', - options, - } - }, - backgroundPosition: options => { - return { - plugin: 'backgroundPosition', - options, - } - }, + fontSize: () => 'fontSize', + display: () => 'display', + backgroundPosition: () => 'backgroundPosition', } const configuredPlugins = configurePlugins( - plugins, { - fontSize: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - backgroundPosition: {}, + display: false, }, - { - display: { variants: ['responsive'] }, - } + plugins ) - expect(configuredPlugins).toEqual([ - { - plugin: 'fontSize', - options: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - }, - { plugin: 'display', options: { variants: ['responsive'] } }, - { plugin: 'backgroundPosition', options: {} }, - ]) -}) - -test('custom plugin configuration overrides default plugin configuration', () => { - const plugins = { - fontSize: options => { - return { - plugin: 'fontSize', - options, - } - }, - display: options => { - return { - plugin: 'display', - options, - } - }, - backgroundPosition: options => { - return { - plugin: 'backgroundPosition', - options, - } - }, - } - - const configuredPlugins = configurePlugins( - plugins, - { - fontSize: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - display: { variants: ['responsive'] }, - backgroundPosition: {}, - }, - { - fontSize: { - variants: ['focus', 'active'], - values: { sm: '.75rem', md: '1rem', lg: '1.5rem' }, - }, - } - ) - - expect(configuredPlugins).toEqual([ - { - plugin: 'fontSize', - options: { - variants: ['responsive', 'hover'], - values: { '12': '12px', '14': '14px', '16': '16px' }, - }, - }, - { plugin: 'display', options: { variants: ['responsive'] } }, - { plugin: 'backgroundPosition', options: {} }, - ]) + expect(configuredPlugins).toEqual(['fontSize', 'backgroundPosition']) }) diff --git a/src/corePlugins.js b/src/corePlugins.js index a1a586194..7711076af 100644 --- a/src/corePlugins.js +++ b/src/corePlugins.js @@ -61,25 +61,10 @@ import whitespace from './plugins/whitespace' import width from './plugins/width' import zIndex from './plugins/zIndex' -import _ from 'lodash' import configurePlugins from './util/configurePlugins' -function loadPlugins({ theme, variants, corePlugins }, plugins) { - const defaultCorePluginConfig = _.fromPairs( - Object.keys(plugins).map(plugin => [ - plugin, - { - values: theme[plugin], - variants: variants[plugin], - }, - ]) - ) - - return configurePlugins(plugins, corePlugins, defaultCorePluginConfig) -} - -export default function(config) { - return loadPlugins(config, { +export default function({ corePlugins: corePluginConfig }) { + return configurePlugins(corePluginConfig, { preflight, listStyle, appearance, diff --git a/src/plugins/alignContent.js b/src/plugins/alignContent.js index a70ec6cbe..52372d146 100644 --- a/src/plugins/alignContent.js +++ b/src/plugins/alignContent.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.content-center': { @@ -18,7 +18,7 @@ export default function({ variants }) { 'align-content': 'space-around', }, }, - variants + config('variants.alignContent') ) } } diff --git a/src/plugins/alignItems.js b/src/plugins/alignItems.js index 5933a829b..8391decc9 100644 --- a/src/plugins/alignItems.js +++ b/src/plugins/alignItems.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.items-start': { @@ -18,7 +18,7 @@ export default function({ variants }) { 'align-items': 'stretch', }, }, - variants + config('variants.alignItems') ) } } diff --git a/src/plugins/alignSelf.js b/src/plugins/alignSelf.js index 579fbf757..8d0fadaae 100644 --- a/src/plugins/alignSelf.js +++ b/src/plugins/alignSelf.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.self-auto': { @@ -18,7 +18,7 @@ export default function({ variants }) { 'align-self': 'stretch', }, }, - variants + config('variants.alignSelf') ) } } diff --git a/src/plugins/appearance.js b/src/plugins/appearance.js index 74bbd600d..bc8eff980 100644 --- a/src/plugins/appearance.js +++ b/src/plugins/appearance.js @@ -1,10 +1,10 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.appearance-none': { appearance: 'none' }, }, - variants + config('variants.appearance') ) } } diff --git a/src/plugins/backgroundAttachment.js b/src/plugins/backgroundAttachment.js index 9b9371b75..c85914eb6 100644 --- a/src/plugins/backgroundAttachment.js +++ b/src/plugins/backgroundAttachment.js @@ -1,12 +1,12 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.bg-fixed': { 'background-attachment': 'fixed' }, '.bg-local': { 'background-attachment': 'local' }, '.bg-scroll': { 'background-attachment': 'scroll' }, }, - variants + config('variants.backgroundAttachment') ) } } diff --git a/src/plugins/backgroundColor.js b/src/plugins/backgroundColor.js index b77413f02..49fca7f66 100644 --- a/src/plugins/backgroundColor.js +++ b/src/plugins/backgroundColor.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.backgroundColor'), (value, modifier) => { return [ `.${e(`bg-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.backgroundColor')) } } diff --git a/src/plugins/backgroundPosition.js b/src/plugins/backgroundPosition.js index 92df71400..530d89801 100644 --- a/src/plugins/backgroundPosition.js +++ b/src/plugins/backgroundPosition.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.backgroundPosition'), (value, modifier) => { return [ `.${e(`bg-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.backgroundPosition')) } } diff --git a/src/plugins/backgroundRepeat.js b/src/plugins/backgroundRepeat.js index 9cde18f42..0584e05c4 100644 --- a/src/plugins/backgroundRepeat.js +++ b/src/plugins/backgroundRepeat.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.bg-repeat': { 'background-repeat': 'repeat' }, @@ -7,7 +7,7 @@ export default function({ variants }) { '.bg-repeat-x': { 'background-repeat': 'repeat-x' }, '.bg-repeat-y': { 'background-repeat': 'repeat-y' }, }, - variants + config('variants.backgroundRepeat') ) } } diff --git a/src/plugins/backgroundSize.js b/src/plugins/backgroundSize.js index 3c2a00285..80114e59e 100644 --- a/src/plugins/backgroundSize.js +++ b/src/plugins/backgroundSize.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.backgroundSize'), (value, modifier) => { return [ `.${e(`bg-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.backgroundSize')) } } diff --git a/src/plugins/borderCollapse.js b/src/plugins/borderCollapse.js index 3a48f9712..0c1ab434e 100644 --- a/src/plugins/borderCollapse.js +++ b/src/plugins/borderCollapse.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.border-collapse': { 'border-collapse': 'collapse' }, '.border-separate': { 'border-collapse': 'separate' }, }, - variants + config('variants.borderCollapse') ) } } diff --git a/src/plugins/borderColor.js b/src/plugins/borderColor.js index 8b0c08b5b..d5af0be69 100644 --- a/src/plugins/borderColor.js +++ b/src/plugins/borderColor.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(_.omit(values, 'default'), (value, modifier) => { + _.map(_.omit(config('theme.borderColor'), 'default'), (value, modifier) => { return [ `.${e(`border-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.borderColor')) } } diff --git a/src/plugins/borderRadius.js b/src/plugins/borderRadius.js index 26a85d0c5..20b3e2019 100644 --- a/src/plugins/borderRadius.js +++ b/src/plugins/borderRadius.js @@ -1,7 +1,7 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const generators = [ (value, modifier) => ({ [`.${e(`rounded${modifier}`)}`]: { borderRadius: `${value}` }, @@ -33,11 +33,11 @@ export default function({ values, variants }) { ] const utilities = _.flatMap(generators, generator => { - return _.flatMap(values, (value, modifier) => { + return _.flatMap(config('theme.borderRadius'), (value, modifier) => { return generator(value, modifier === 'default' ? '' : `-${modifier}`) }) }) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.borderRadius')) } } diff --git a/src/plugins/borderStyle.js b/src/plugins/borderStyle.js index 336123890..5cb053243 100644 --- a/src/plugins/borderStyle.js +++ b/src/plugins/borderStyle.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.border-solid': { @@ -15,7 +15,7 @@ export default function({ variants }) { 'border-style': 'none', }, }, - variants + config('variants.borderStyle') ) } } diff --git a/src/plugins/borderWidth.js b/src/plugins/borderWidth.js index 07e3e1734..becebefa2 100644 --- a/src/plugins/borderWidth.js +++ b/src/plugins/borderWidth.js @@ -1,7 +1,7 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const generators = [ (value, modifier) => ({ [`.${e(`border${modifier}`)}`]: { borderWidth: `${value}` }, @@ -15,11 +15,11 @@ export default function({ values, variants }) { ] const utilities = _.flatMap(generators, generator => { - return _.flatMap(values, (value, modifier) => { + return _.flatMap(config('theme.borderWidth'), (value, modifier) => { return generator(value, modifier === 'default' ? '' : `-${modifier}`) }) }) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.borderWidth')) } } diff --git a/src/plugins/boxShadow.js b/src/plugins/boxShadow.js index e2ec6705f..7d188bc9d 100644 --- a/src/plugins/boxShadow.js +++ b/src/plugins/boxShadow.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.boxShadow'), (value, modifier) => { const className = modifier === 'default' ? 'shadow' : `shadow-${modifier}` return [ `.${e(className)}`, @@ -14,6 +14,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.boxShadow')) } } diff --git a/src/plugins/cursor.js b/src/plugins/cursor.js index a81f34ef0..c932ba2b7 100644 --- a/src/plugins/cursor.js +++ b/src/plugins/cursor.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.cursor'), (value, modifier) => { return [ `.${e(`cursor-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.cursor')) } } diff --git a/src/plugins/display.js b/src/plugins/display.js index 0dd583453..48d627962 100644 --- a/src/plugins/display.js +++ b/src/plugins/display.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.block': { @@ -30,7 +30,7 @@ export default function({ variants }) { display: 'none', }, }, - variants + config('variants.display') ) } } diff --git a/src/plugins/fill.js b/src/plugins/fill.js index 95d051651..d975cfd0d 100644 --- a/src/plugins/fill.js +++ b/src/plugins/fill.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.fill'), (value, modifier) => { return [ `.${e(`fill-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.fill')) } } diff --git a/src/plugins/flex.js b/src/plugins/flex.js index ee3e0c80f..0016cc885 100644 --- a/src/plugins/flex.js +++ b/src/plugins/flex.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.flex-1': { @@ -15,7 +15,7 @@ export default function({ variants }) { flex: 'none', }, }, - variants + config('variants.flex') ) } } diff --git a/src/plugins/flexDirection.js b/src/plugins/flexDirection.js index 338c113c2..1bbe00a26 100644 --- a/src/plugins/flexDirection.js +++ b/src/plugins/flexDirection.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.flex-row': { @@ -15,7 +15,7 @@ export default function({ variants }) { 'flex-direction': 'column-reverse', }, }, - variants + config('variants.flexDirection') ) } } diff --git a/src/plugins/flexGrow.js b/src/plugins/flexGrow.js index b7bd9a7f8..a33571dd3 100644 --- a/src/plugins/flexGrow.js +++ b/src/plugins/flexGrow.js @@ -1,10 +1,10 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { addUtilities( _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.flexGrow'), (value, modifier) => { const className = modifier === 'default' ? 'flex-grow' : `flex-grow-${modifier}` return [ `.${e(className)}`, @@ -14,7 +14,7 @@ export default function({ values, variants }) { ] }) ), - variants + config('variants.flexGrow') ) } } diff --git a/src/plugins/flexShrink.js b/src/plugins/flexShrink.js index cbce7c127..2dbc7ecbe 100644 --- a/src/plugins/flexShrink.js +++ b/src/plugins/flexShrink.js @@ -1,10 +1,10 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { addUtilities( _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.flexShrink'), (value, modifier) => { const className = modifier === 'default' ? 'flex-shrink' : `flex-shrink-${modifier}` return [ `.${e(className)}`, @@ -14,7 +14,7 @@ export default function({ values, variants }) { ] }) ), - variants + config('variants.flexShrink') ) } } diff --git a/src/plugins/flexWrap.js b/src/plugins/flexWrap.js index 369d1bb35..45e6783d2 100644 --- a/src/plugins/flexWrap.js +++ b/src/plugins/flexWrap.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.flex-wrap': { @@ -12,7 +12,7 @@ export default function({ variants }) { 'flex-wrap': 'nowrap', }, }, - variants + config('variants.flexWrap') ) } } diff --git a/src/plugins/float.js b/src/plugins/float.js index c39a4fbcf..03aed4583 100644 --- a/src/plugins/float.js +++ b/src/plugins/float.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.float-right': { float: 'right' }, @@ -11,7 +11,7 @@ export default function({ variants }) { clear: 'both', }, }, - variants + config('variants.float') ) } } diff --git a/src/plugins/fontFamily.js b/src/plugins/fontFamily.js index 03b3a8de1..49dced1ec 100644 --- a/src/plugins/fontFamily.js +++ b/src/plugins/fontFamily.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.fontFamily'), (value, modifier) => { return [ `.${e(`font-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.fontFamily')) } } diff --git a/src/plugins/fontSize.js b/src/plugins/fontSize.js index 05cc4fdd8..f49bec24a 100644 --- a/src/plugins/fontSize.js +++ b/src/plugins/fontSize.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.fontSize'), (value, modifier) => { return [ `.${e(`text-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.fontSize')) } } diff --git a/src/plugins/fontSmoothing.js b/src/plugins/fontSmoothing.js index d34fc6e8e..91186056e 100644 --- a/src/plugins/fontSmoothing.js +++ b/src/plugins/fontSmoothing.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.antialiased': { @@ -11,7 +11,7 @@ export default function({ variants }) { '-moz-osx-font-smoothing': 'auto', }, }, - variants + config('variants.fontSmoothing') ) } } diff --git a/src/plugins/fontStyle.js b/src/plugins/fontStyle.js index 110a628dc..5ff8ccd28 100644 --- a/src/plugins/fontStyle.js +++ b/src/plugins/fontStyle.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.italic': { 'font-style': 'italic' }, '.not-italic': { 'font-style': 'normal' }, }, - variants + config('variants.fontStyle') ) } } diff --git a/src/plugins/fontWeight.js b/src/plugins/fontWeight.js index ebc19d7db..b677f4f52 100644 --- a/src/plugins/fontWeight.js +++ b/src/plugins/fontWeight.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.fontWeight'), (value, modifier) => { return [ `.${e(`font-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.fontWeight')) } } diff --git a/src/plugins/height.js b/src/plugins/height.js index f3aed0399..6f87b9ea1 100644 --- a/src/plugins/height.js +++ b/src/plugins/height.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.height'), (value, modifier) => { return [ `.${e(`h-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.height')) } } diff --git a/src/plugins/justifyContent.js b/src/plugins/justifyContent.js index 1c18b2173..b6567c17d 100644 --- a/src/plugins/justifyContent.js +++ b/src/plugins/justifyContent.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.justify-start': { @@ -18,7 +18,7 @@ export default function({ variants }) { 'justify-content': 'space-around', }, }, - variants + config('variants.justifyContent') ) } } diff --git a/src/plugins/letterSpacing.js b/src/plugins/letterSpacing.js index 3fb1683f4..ae3e36857 100644 --- a/src/plugins/letterSpacing.js +++ b/src/plugins/letterSpacing.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.letterSpacing'), (value, modifier) => { return [ `.tracking-${modifier}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.letterSpacing')) } } diff --git a/src/plugins/lineHeight.js b/src/plugins/lineHeight.js index 882b62220..1a9b341a4 100644 --- a/src/plugins/lineHeight.js +++ b/src/plugins/lineHeight.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.lineHeight'), (value, modifier) => { return [ `.${e(`leading-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.lineHeight')) } } diff --git a/src/plugins/listStyle.js b/src/plugins/listStyle.js index 9d2782854..13a3f5cd2 100644 --- a/src/plugins/listStyle.js +++ b/src/plugins/listStyle.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.list-reset': { @@ -7,7 +7,7 @@ export default function({ variants }) { padding: '0', }, }, - variants + config('variants.listStyle') ) } } diff --git a/src/plugins/margin.js b/src/plugins/margin.js index f5c2937c8..c0ec76bc9 100644 --- a/src/plugins/margin.js +++ b/src/plugins/margin.js @@ -1,7 +1,7 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const generators = [ (size, modifier) => ({ [`.${e(`m-${modifier}`)}`]: { margin: `${size}` }, @@ -19,9 +19,9 @@ export default function({ values, variants }) { ] const utilities = _.flatMap(generators, generator => { - return _.flatMap(values, generator) + return _.flatMap(config('theme.margin'), generator) }) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.margin')) } } diff --git a/src/plugins/maxHeight.js b/src/plugins/maxHeight.js index b7a103f24..3d803fdbf 100644 --- a/src/plugins/maxHeight.js +++ b/src/plugins/maxHeight.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.maxHeight'), (value, modifier) => { return [ `.${e(`max-h-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.maxHeight')) } } diff --git a/src/plugins/maxWidth.js b/src/plugins/maxWidth.js index 2aa3720bc..4aa7b2070 100644 --- a/src/plugins/maxWidth.js +++ b/src/plugins/maxWidth.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.maxWidth'), (value, modifier) => { return [ `.${e(`max-w-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.maxWidth')) } } diff --git a/src/plugins/minHeight.js b/src/plugins/minHeight.js index 651d3d19f..70ae5920b 100644 --- a/src/plugins/minHeight.js +++ b/src/plugins/minHeight.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.minHeight'), (value, modifier) => { return [ `.${e(`min-h-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.minHeight')) } } diff --git a/src/plugins/minWidth.js b/src/plugins/minWidth.js index dff0e7b20..ff830170c 100644 --- a/src/plugins/minWidth.js +++ b/src/plugins/minWidth.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.minWidth'), (value, modifier) => { return [ `.${e(`min-w-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.minWidth')) } } diff --git a/src/plugins/negativeMargin.js b/src/plugins/negativeMargin.js index 9ef20dfa4..4353c5589 100644 --- a/src/plugins/negativeMargin.js +++ b/src/plugins/negativeMargin.js @@ -1,7 +1,7 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const generators = [ (size, modifier) => ({ [`.${e(`-m-${modifier}`)}`]: { margin: `${size}` }, @@ -19,11 +19,11 @@ export default function({ values, variants }) { ] const utilities = _.flatMap(generators, generator => { - return _.flatMap(values, (size, modifier) => { + return _.flatMap(config('theme.negativeMargin'), (size, modifier) => { return generator(`${size}` === '0' ? `${size}` : `-${size}`, modifier) }) }) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.negativeMargin')) } } diff --git a/src/plugins/objectFit.js b/src/plugins/objectFit.js index bfbcb42a4..883eaf192 100644 --- a/src/plugins/objectFit.js +++ b/src/plugins/objectFit.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.object-contain': { 'object-fit': 'contain' }, @@ -8,7 +8,7 @@ export default function({ variants }) { '.object-none': { 'object-fit': 'none' }, '.object-scale-down': { 'object-fit': 'scale-down' }, }, - variants + config('variants.objectFit') ) } } diff --git a/src/plugins/objectPosition.js b/src/plugins/objectPosition.js index fcabe4a14..a52202549 100644 --- a/src/plugins/objectPosition.js +++ b/src/plugins/objectPosition.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.objectPosition'), (value, modifier) => { return [ `.${e(`object-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.objectPosition')) } } diff --git a/src/plugins/opacity.js b/src/plugins/opacity.js index 350d62e76..88051c1a1 100644 --- a/src/plugins/opacity.js +++ b/src/plugins/opacity.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.opacity'), (value, modifier) => { return [ `.${e(`opacity-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.opacity')) } } diff --git a/src/plugins/outline.js b/src/plugins/outline.js index 352d979e6..4c6483947 100644 --- a/src/plugins/outline.js +++ b/src/plugins/outline.js @@ -1,10 +1,10 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.outline-none': { outline: '0' }, }, - variants + config('variants.outline') ) } } diff --git a/src/plugins/overflow.js b/src/plugins/overflow.js index d13969db2..bbd769836 100644 --- a/src/plugins/overflow.js +++ b/src/plugins/overflow.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.overflow-auto': { overflow: 'auto' }, @@ -17,7 +17,7 @@ export default function({ variants }) { '.scrolling-touch': { '-webkit-overflow-scrolling': 'touch' }, '.scrolling-auto': { '-webkit-overflow-scrolling': 'auto' }, }, - variants + config('variants.overflow') ) } } diff --git a/src/plugins/padding.js b/src/plugins/padding.js index 35462b28a..ef8ed7537 100644 --- a/src/plugins/padding.js +++ b/src/plugins/padding.js @@ -1,7 +1,7 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const generators = [ (size, modifier) => ({ [`.${e(`p-${modifier}`)}`]: { padding: `${size}` }, @@ -19,9 +19,9 @@ export default function({ values, variants }) { ] const utilities = _.flatMap(generators, generator => { - return _.flatMap(values, generator) + return _.flatMap(config('theme.padding'), generator) }) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.padding')) } } diff --git a/src/plugins/pointerEvents.js b/src/plugins/pointerEvents.js index b9d6826bf..c82659b76 100644 --- a/src/plugins/pointerEvents.js +++ b/src/plugins/pointerEvents.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.pointer-events-none': { 'pointer-events': 'none' }, '.pointer-events-auto': { 'pointer-events': 'auto' }, }, - variants + config('variants.pointerEvents') ) } } diff --git a/src/plugins/position.js b/src/plugins/position.js index 4c831aacb..1fdbb7269 100644 --- a/src/plugins/position.js +++ b/src/plugins/position.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.static': { position: 'static' }, @@ -26,7 +26,7 @@ export default function({ variants }) { '.pin-b': { bottom: 0 }, '.pin-l': { left: 0 }, }, - variants + config('variants.position') ) } } diff --git a/src/plugins/resize.js b/src/plugins/resize.js index d77a8fbe9..f92477d31 100644 --- a/src/plugins/resize.js +++ b/src/plugins/resize.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.resize-none': { resize: 'none' }, @@ -7,7 +7,7 @@ export default function({ variants }) { '.resize-x': { resize: 'horizontal' }, '.resize': { resize: 'both' }, }, - variants + config('variants.resize') ) } } diff --git a/src/plugins/stroke.js b/src/plugins/stroke.js index f8e0513c8..0fae615c3 100644 --- a/src/plugins/stroke.js +++ b/src/plugins/stroke.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.stroke'), (value, modifier) => { return [ `.${e(`stroke-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.stroke')) } } diff --git a/src/plugins/tableLayout.js b/src/plugins/tableLayout.js index b890a2370..88902937f 100644 --- a/src/plugins/tableLayout.js +++ b/src/plugins/tableLayout.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.table-auto': { 'table-layout': 'auto' }, '.table-fixed': { 'table-layout': 'fixed' }, }, - variants + config('variants.tableLayout') ) } } diff --git a/src/plugins/textAlign.js b/src/plugins/textAlign.js index 9cd80df08..81d1f286b 100644 --- a/src/plugins/textAlign.js +++ b/src/plugins/textAlign.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.text-left': { 'text-align': 'left' }, @@ -7,7 +7,7 @@ export default function({ variants }) { '.text-right': { 'text-align': 'right' }, '.text-justify': { 'text-align': 'justify' }, }, - variants + config('variants.textAlign') ) } } diff --git a/src/plugins/textColor.js b/src/plugins/textColor.js index 910110608..7737a5e61 100644 --- a/src/plugins/textColor.js +++ b/src/plugins/textColor.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.textColor'), (value, modifier) => { return [ `.${e(`text-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.textColor')) } } diff --git a/src/plugins/textDecoration.js b/src/plugins/textDecoration.js index 5217fd026..40a572f2b 100644 --- a/src/plugins/textDecoration.js +++ b/src/plugins/textDecoration.js @@ -1,12 +1,12 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.underline': { 'text-decoration': 'underline' }, '.line-through': { 'text-decoration': 'line-through' }, '.no-underline': { 'text-decoration': 'none' }, }, - variants + config('variants.textDecoration') ) } } diff --git a/src/plugins/textTransform.js b/src/plugins/textTransform.js index 8e5ed8439..a85d87811 100644 --- a/src/plugins/textTransform.js +++ b/src/plugins/textTransform.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.uppercase': { 'text-transform': 'uppercase' }, @@ -7,7 +7,7 @@ export default function({ variants }) { '.capitalize': { 'text-transform': 'capitalize' }, '.normal-case': { 'text-transform': 'none' }, }, - variants + config('variants.textTransform') ) } } diff --git a/src/plugins/userSelect.js b/src/plugins/userSelect.js index 2e60869bf..771ee5890 100644 --- a/src/plugins/userSelect.js +++ b/src/plugins/userSelect.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.select-none': { 'user-select': 'none' }, '.select-text': { 'user-select': 'text' }, }, - variants + config('variants.userSelect') ) } } diff --git a/src/plugins/verticalAlign.js b/src/plugins/verticalAlign.js index 3adae6a08..195aa7d2c 100644 --- a/src/plugins/verticalAlign.js +++ b/src/plugins/verticalAlign.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.align-baseline': { 'vertical-align': 'baseline' }, @@ -9,7 +9,7 @@ export default function({ variants }) { '.align-text-top': { 'vertical-align': 'text-top' }, '.align-text-bottom': { 'vertical-align': 'text-bottom' }, }, - variants + config('variants.verticalAlign') ) } } diff --git a/src/plugins/visibility.js b/src/plugins/visibility.js index 528b81a74..063b6c497 100644 --- a/src/plugins/visibility.js +++ b/src/plugins/visibility.js @@ -1,11 +1,11 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.visible': { visibility: 'visible' }, '.invisible': { visibility: 'hidden' }, }, - variants + config('variants.visibility') ) } } diff --git a/src/plugins/whitespace.js b/src/plugins/whitespace.js index 2660dae60..61bf32d32 100644 --- a/src/plugins/whitespace.js +++ b/src/plugins/whitespace.js @@ -1,5 +1,5 @@ -export default function({ variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { addUtilities( { '.whitespace-normal': { 'white-space': 'normal' }, @@ -20,7 +20,7 @@ export default function({ variants }) { 'white-space': 'nowrap', }, }, - variants + config('variants.whitespace') ) } } diff --git a/src/plugins/width.js b/src/plugins/width.js index 2d5e962ff..4ca39dbb8 100644 --- a/src/plugins/width.js +++ b/src/plugins/width.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities, e }) { +export default function() { + return function({ addUtilities, e, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.width'), (value, modifier) => { return [ `.${e(`w-${modifier}`)}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.width')) } } diff --git a/src/plugins/zIndex.js b/src/plugins/zIndex.js index 9125aff25..fdbee879b 100644 --- a/src/plugins/zIndex.js +++ b/src/plugins/zIndex.js @@ -1,9 +1,9 @@ import _ from 'lodash' -export default function({ values, variants }) { - return function({ addUtilities }) { +export default function() { + return function({ addUtilities, config }) { const utilities = _.fromPairs( - _.map(values, (value, modifier) => { + _.map(config('theme.zIndex'), (value, modifier) => { return [ `.z-${modifier}`, { @@ -13,6 +13,6 @@ export default function({ values, variants }) { }) ) - addUtilities(utilities, variants) + addUtilities(utilities, config('variants.zIndex')) } } diff --git a/src/util/configurePlugins.js b/src/util/configurePlugins.js index 0d9e1d225..8cda0a189 100644 --- a/src/util/configurePlugins.js +++ b/src/util/configurePlugins.js @@ -1,11 +1,9 @@ -import _ from 'lodash' - -export default function(plugins, pluginConfig, defaultPluginConfig = {}) { +export default function(pluginConfig, plugins) { return Object.keys(plugins) .filter(pluginName => { return pluginConfig[pluginName] !== false }) .map(pluginName => { - return plugins[pluginName](_.get(pluginConfig, pluginName, defaultPluginConfig[pluginName])) + return plugins[pluginName]() }) }