|
1 | 1 | import _ from 'lodash' |
2 | 2 | import postcss from 'postcss' |
3 | 3 | import applyClassPrefix from '../util/applyClassPrefix' |
4 | | -import wrapWithVariants from '../util/wrapWithVariants' |
5 | | - |
| 4 | +import generateModules from '../util/generateModules' |
6 | 5 | import container from '../generators/container' |
7 | | - |
8 | | -import lists from '../generators/lists' |
9 | | -import appearance from '../generators/appearance' |
10 | | -import backgroundColors from '../generators/backgroundColors' |
11 | | -import backgroundPosition from '../generators/backgroundPosition' |
12 | | -import backgroundSize from '../generators/backgroundSize' |
13 | | -import borderColors from '../generators/borderColors' |
14 | | -import borderRadius from '../generators/borderRadius' |
15 | | -import borderStyle from '../generators/borderStyle' |
16 | | -import borderWidths from '../generators/borderWidths' |
17 | | -import cursor from '../generators/cursor' |
18 | | -import display from '../generators/display' |
19 | | -import flexbox from '../generators/flexbox' |
20 | | -import float from '../generators/float' |
21 | | -import fonts from '../generators/fonts' |
22 | | -import fontWeights from '../generators/fontWeights' |
23 | | -import height from '../generators/height' |
24 | | -import leading from '../generators/leading' |
25 | | -import margin from '../generators/margin' |
26 | | -import maxHeight from '../generators/maxHeight' |
27 | | -import maxWidth from '../generators/maxWidth' |
28 | | -import minHeight from '../generators/minHeight' |
29 | | -import minWidth from '../generators/minWidth' |
30 | | -import negativeMargin from '../generators/negativeMargin' |
31 | | -import opacity from '../generators/opacity' |
32 | | -import overflow from '../generators/overflow' |
33 | | -import padding from '../generators/padding' |
34 | | -import pointerEvents from '../generators/pointerEvents' |
35 | | -import position from '../generators/position' |
36 | | -import resize from '../generators/resize' |
37 | | -import shadows from '../generators/shadows' |
38 | | -import textAlign from '../generators/textAlign' |
39 | | -import textColors from '../generators/textColors' |
40 | | -import textSizes from '../generators/textSizes' |
41 | | -import textStyle from '../generators/textStyle' |
42 | | -import tracking from '../generators/tracking' |
43 | | -import userSelect from '../generators/userSelect' |
44 | | -import verticalAlign from '../generators/verticalAlign' |
45 | | -import visibility from '../generators/visibility' |
46 | | -import whitespace from '../generators/whitespace' |
47 | | -import width from '../generators/width' |
48 | | -import zIndex from '../generators/zIndex' |
49 | | - |
50 | | -function modules() { |
51 | | - return [ |
52 | | - { name: 'lists', generator: lists }, |
53 | | - { name: 'appearance', generator: appearance }, |
54 | | - { name: 'backgroundColors', generator: backgroundColors }, |
55 | | - { name: 'backgroundPosition', generator: backgroundPosition }, |
56 | | - { name: 'backgroundSize', generator: backgroundSize }, |
57 | | - { name: 'borderColors', generator: borderColors }, |
58 | | - { name: 'borderRadius', generator: borderRadius }, |
59 | | - { name: 'borderStyle', generator: borderStyle }, |
60 | | - { name: 'borderWidths', generator: borderWidths }, |
61 | | - { name: 'cursor', generator: cursor }, |
62 | | - { name: 'display', generator: display }, |
63 | | - { name: 'flexbox', generator: flexbox }, |
64 | | - { name: 'float', generator: float }, |
65 | | - { name: 'fonts', generator: fonts }, |
66 | | - { name: 'fontWeights', generator: fontWeights }, |
67 | | - { name: 'height', generator: height }, |
68 | | - { name: 'leading', generator: leading }, |
69 | | - { name: 'margin', generator: margin }, |
70 | | - { name: 'maxHeight', generator: maxHeight }, |
71 | | - { name: 'maxWidth', generator: maxWidth }, |
72 | | - { name: 'minHeight', generator: minHeight }, |
73 | | - { name: 'minWidth', generator: minWidth }, |
74 | | - { name: 'negativeMargin', generator: negativeMargin }, |
75 | | - { name: 'opacity', generator: opacity }, |
76 | | - { name: 'overflow', generator: overflow }, |
77 | | - { name: 'padding', generator: padding }, |
78 | | - { name: 'pointerEvents', generator: pointerEvents }, |
79 | | - { name: 'position', generator: position }, |
80 | | - { name: 'resize', generator: resize }, |
81 | | - { name: 'shadows', generator: shadows }, |
82 | | - { name: 'textAlign', generator: textAlign }, |
83 | | - { name: 'textColors', generator: textColors }, |
84 | | - { name: 'textSizes', generator: textSizes }, |
85 | | - { name: 'textStyle', generator: textStyle }, |
86 | | - { name: 'tracking', generator: tracking }, |
87 | | - { name: 'userSelect', generator: userSelect }, |
88 | | - { name: 'verticalAlign', generator: verticalAlign }, |
89 | | - { name: 'visibility', generator: visibility }, |
90 | | - { name: 'whitespace', generator: whitespace }, |
91 | | - { name: 'width', generator: width }, |
92 | | - { name: 'zIndex', generator: zIndex }, |
93 | | - ] |
94 | | -} |
| 6 | +import utilityModules from '../utilityModules' |
95 | 7 |
|
96 | 8 | export default function(config) { |
97 | 9 | return function(css) { |
98 | 10 | const unwrappedConfig = config() |
99 | 11 |
|
100 | 12 | css.walkAtRules('tailwind', atRule => { |
101 | | - if (atRule.params === 'utilities') { |
102 | | - const utilities = postcss.root({ |
103 | | - nodes: _.flatMap(modules(), module => |
104 | | - wrapWithVariants( |
105 | | - module.generator(unwrappedConfig), |
106 | | - unwrappedConfig.options.modules[module.name] |
107 | | - ) |
108 | | - ), |
109 | | - }) |
| 13 | + if (atRule.params !== 'utilities') { |
| 14 | + return |
| 15 | + } |
| 16 | + |
| 17 | + const utilities = generateModules(utilityModules, unwrappedConfig.options.modules, unwrappedConfig) |
110 | 18 |
|
111 | | - if (_.get(unwrappedConfig, 'options.important', false)) { |
112 | | - utilities.walkDecls(decl => (decl.important = true)) |
113 | | - } |
| 19 | + if (_.get(unwrappedConfig, 'options.important', false)) { |
| 20 | + utilities.walkDecls(decl => (decl.important = true)) |
| 21 | + } |
114 | 22 |
|
115 | | - const tailwindClasses = postcss.root({ |
116 | | - nodes: [...container(unwrappedConfig), ...utilities.nodes], |
117 | | - }) |
| 23 | + const tailwindClasses = postcss.root({ |
| 24 | + nodes: [...container(unwrappedConfig), ...utilities.nodes], |
| 25 | + }) |
118 | 26 |
|
119 | | - applyClassPrefix(tailwindClasses, _.get(unwrappedConfig, 'options.prefix', '')) |
| 27 | + applyClassPrefix(tailwindClasses, _.get(unwrappedConfig, 'options.prefix', '')) |
120 | 28 |
|
121 | | - atRule.before(tailwindClasses) |
122 | | - atRule.remove() |
123 | | - } |
| 29 | + atRule.before(tailwindClasses) |
| 30 | + atRule.remove() |
124 | 31 | }) |
125 | 32 | } |
126 | 33 | } |
0 commit comments