tailwindcss 0.0.0-insiders.ec1f7b0 → 0.0.0-insiders.ef325ea
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -3
- package/lib/cli.js +60 -60
- package/lib/constants.js +1 -1
- package/lib/corePluginList.js +1 -0
- package/lib/corePlugins.js +58 -43
- package/lib/featureFlags.js +3 -3
- package/lib/lib/collapseDuplicateDeclarations.js +2 -2
- package/lib/lib/detectNesting.js +17 -2
- package/lib/lib/evaluateTailwindFunctions.js +9 -5
- package/lib/lib/expandApplyAtRules.js +7 -7
- package/lib/lib/generateRules.js +10 -10
- package/lib/lib/resolveDefaultsAtRules.js +2 -2
- package/lib/lib/setupContextUtils.js +7 -7
- package/lib/lib/sharedState.js +1 -1
- package/lib/lib/substituteScreenAtRules.js +7 -4
- package/lib/util/buildMediaQuery.js +13 -24
- package/lib/util/createUtilityPlugin.js +2 -2
- package/lib/util/dataTypes.js +11 -0
- package/lib/util/formatVariantSelector.js +83 -8
- package/lib/util/normalizeConfig.js +7 -7
- package/lib/util/normalizeScreens.js +58 -0
- package/lib/util/parseBoxShadowValue.js +77 -0
- package/lib/util/pluginUtils.js +12 -11
- package/lib/util/resolveConfig.js +8 -8
- package/package.json +6 -6
- package/peers/index.js +3064 -2456
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +46 -35
- package/src/lib/detectNesting.js +22 -3
- package/src/lib/evaluateTailwindFunctions.js +5 -2
- package/src/lib/substituteScreenAtRules.js +6 -3
- package/src/util/buildMediaQuery.js +14 -18
- package/src/util/dataTypes.js +13 -0
- package/src/util/formatVariantSelector.js +81 -0
- package/src/util/normalizeScreens.js +42 -0
- package/src/util/parseBoxShadowValue.js +71 -0
- package/src/util/pluginUtils.js +2 -0
- package/stubs/defaultConfig.stub.js +8 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018))
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106))
|
|
17
|
+
- Add tuple syntax for configuring screens while guaranteeing order ([#5956](https://github.com/tailwindlabs/tailwindcss/pull/5956))
|
|
18
|
+
|
|
19
|
+
## [3.0.0-alpha.2] - 2021-11-08
|
|
20
|
+
|
|
10
21
|
### Changed
|
|
11
22
|
|
|
12
23
|
- Don't use pointer cursor on disabled buttons by default ([#5772](https://github.com/tailwindlabs/tailwindcss/pull/5772))
|
|
@@ -22,7 +33,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
22
33
|
- Add all standard `cursor-*` values by default ([#5734](https://github.com/tailwindlabs/tailwindcss/pull/5734))
|
|
23
34
|
- Add `grow-*` and `shrink-*` utilities, deprecate `flex-grow-*` and `flex-shrink-*` ([#5733](https://github.com/tailwindlabs/tailwindcss/pull/5733))
|
|
24
35
|
- Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760))
|
|
25
|
-
- Add declarative `addVariant`
|
|
36
|
+
- Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809))
|
|
37
|
+
- Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885))
|
|
38
|
+
- Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933))
|
|
39
|
+
- Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979))
|
|
26
40
|
|
|
27
41
|
### Fixed
|
|
28
42
|
|
|
@@ -33,6 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
33
47
|
- Allow `_` inside `url()` when using arbitrary values ([#5853](https://github.com/tailwindlabs/tailwindcss/pull/5853))
|
|
34
48
|
- Prevent crashes when using comments in `@layer` AtRules ([#5854](https://github.com/tailwindlabs/tailwindcss/pull/5854))
|
|
35
49
|
- Handle color transformations properly with `theme(...)` for all relevant plugins ([#4533](https://github.com/tailwindlabs/tailwindcss/pull/4533), [#5871](https://github.com/tailwindlabs/tailwindcss/pull/5871))
|
|
50
|
+
- Ensure `@apply`-ing a utility with multiple definitions works ([#5870](https://github.com/tailwindlabs/tailwindcss/pull/5870))
|
|
36
51
|
|
|
37
52
|
## [3.0.0-alpha.1] - 2021-10-01
|
|
38
53
|
|
|
@@ -77,7 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
77
92
|
|
|
78
93
|
### Fixed
|
|
79
94
|
|
|
80
|
-
- Ensure `corePlugins`
|
|
95
|
+
- Ensure `corePlugins` order is consisent in AOT mode ([#5928](https://github.com/tailwindlabs/tailwindcss/pull/5928))
|
|
81
96
|
|
|
82
97
|
## [2.2.18] - 2021-10-29
|
|
83
98
|
|
|
@@ -1649,7 +1664,8 @@ No release notes
|
|
|
1649
1664
|
|
|
1650
1665
|
- Everything!
|
|
1651
1666
|
|
|
1652
|
-
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.
|
|
1667
|
+
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...HEAD
|
|
1668
|
+
[3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2
|
|
1653
1669
|
[3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1
|
|
1654
1670
|
[2.2.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.18...v2.2.19
|
|
1655
1671
|
[2.2.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.17...v2.2.18
|
package/lib/cli.js
CHANGED
|
@@ -110,7 +110,7 @@ function oneOf(...options) {
|
|
|
110
110
|
manualParsing: true
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
-
let
|
|
113
|
+
let commands1 = {
|
|
114
114
|
init: {
|
|
115
115
|
run: init,
|
|
116
116
|
args: {
|
|
@@ -187,30 +187,30 @@ if (process.stdout.isTTY /* Detect redirecting output to a file */ && (process.
|
|
|
187
187
|
'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
|
|
188
188
|
'tailwindcss init [--full] [--postcss] [options...]',
|
|
189
189
|
],
|
|
190
|
-
commands: Object.keys(
|
|
190
|
+
commands: Object.keys(commands1).filter((command)=>command !== 'build'
|
|
191
191
|
).map((command)=>`${command} [options]`
|
|
192
192
|
),
|
|
193
193
|
options: {
|
|
194
|
-
...
|
|
194
|
+
...commands1.build.args,
|
|
195
195
|
...sharedFlags
|
|
196
196
|
}
|
|
197
197
|
});
|
|
198
198
|
process.exit(0);
|
|
199
199
|
}
|
|
200
|
-
let
|
|
200
|
+
let command1 = ((arg = '')=>arg.startsWith('-') ? undefined : arg
|
|
201
201
|
)(process.argv[2]) || 'build';
|
|
202
|
-
if (
|
|
203
|
-
if (_fs.default.existsSync(_path.default.resolve(
|
|
202
|
+
if (commands1[command1] === undefined) {
|
|
203
|
+
if (_fs.default.existsSync(_path.default.resolve(command1))) {
|
|
204
204
|
// TODO: Deprecate this in future versions
|
|
205
205
|
// Check if non-existing command, might be a file.
|
|
206
|
-
|
|
206
|
+
command1 = 'build';
|
|
207
207
|
} else {
|
|
208
208
|
help({
|
|
209
|
-
message: `Invalid command: ${
|
|
209
|
+
message: `Invalid command: ${command1}`,
|
|
210
210
|
usage: [
|
|
211
211
|
'tailwindcss <command> [options]'
|
|
212
212
|
],
|
|
213
|
-
commands: Object.keys(
|
|
213
|
+
commands: Object.keys(commands1).filter((command)=>command !== 'build'
|
|
214
214
|
).map((command)=>`${command} [options]`
|
|
215
215
|
),
|
|
216
216
|
options: sharedFlags
|
|
@@ -219,11 +219,11 @@ if (commands[command] === undefined) {
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
// Execute command
|
|
222
|
-
let { args:
|
|
223
|
-
let
|
|
222
|
+
let { args: flags1 , run } = commands1[command1];
|
|
223
|
+
let args1 = (()=>{
|
|
224
224
|
try {
|
|
225
225
|
let result = (0, _arg).default(Object.fromEntries(Object.entries({
|
|
226
|
-
...
|
|
226
|
+
...flags1,
|
|
227
227
|
...sharedFlags
|
|
228
228
|
}).filter(([_key, value])=>{
|
|
229
229
|
var ref;
|
|
@@ -240,11 +240,11 @@ let args = (()=>{
|
|
|
240
240
|
let flag = result['_'][i];
|
|
241
241
|
if (!flag.startsWith('-')) continue;
|
|
242
242
|
let flagName = flag;
|
|
243
|
-
let handler =
|
|
243
|
+
let handler = flags1[flag];
|
|
244
244
|
// Resolve flagName & handler
|
|
245
245
|
while(typeof handler === 'string'){
|
|
246
246
|
flagName = handler;
|
|
247
|
-
handler =
|
|
247
|
+
handler = flags1[handler];
|
|
248
248
|
}
|
|
249
249
|
if (!handler) continue;
|
|
250
250
|
let args = [];
|
|
@@ -264,8 +264,8 @@ let args = (()=>{
|
|
|
264
264
|
//
|
|
265
265
|
// E.g.: tailwindcss input.css -> _: ['build', 'input.css']
|
|
266
266
|
// E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
|
|
267
|
-
if (result['_'][0] !==
|
|
268
|
-
result['_'].unshift(
|
|
267
|
+
if (result['_'][0] !== command1) {
|
|
268
|
+
result['_'].unshift(command1);
|
|
269
269
|
}
|
|
270
270
|
return result;
|
|
271
271
|
} catch (err) {
|
|
@@ -282,14 +282,14 @@ let args = (()=>{
|
|
|
282
282
|
throw err;
|
|
283
283
|
}
|
|
284
284
|
})();
|
|
285
|
-
if (
|
|
285
|
+
if (args1['--help']) {
|
|
286
286
|
help({
|
|
287
287
|
options: {
|
|
288
|
-
...
|
|
288
|
+
...flags1,
|
|
289
289
|
...sharedFlags
|
|
290
290
|
},
|
|
291
291
|
usage: [
|
|
292
|
-
`tailwindcss ${
|
|
292
|
+
`tailwindcss ${command1} [options]`
|
|
293
293
|
]
|
|
294
294
|
});
|
|
295
295
|
process.exit(0);
|
|
@@ -299,17 +299,17 @@ run();
|
|
|
299
299
|
function init() {
|
|
300
300
|
let messages = [];
|
|
301
301
|
var ref;
|
|
302
|
-
let tailwindConfigLocation = _path.default.resolve((ref =
|
|
302
|
+
let tailwindConfigLocation = _path.default.resolve((ref = args1['_'][1]) !== null && ref !== void 0 ? ref : './tailwind.config.js');
|
|
303
303
|
if (_fs.default.existsSync(tailwindConfigLocation)) {
|
|
304
304
|
messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
|
|
305
305
|
} else {
|
|
306
|
-
let stubFile = _fs.default.readFileSync(
|
|
306
|
+
let stubFile = _fs.default.readFileSync(args1['--full'] ? _path.default.resolve(__dirname, '../stubs/defaultConfig.stub.js') : _path.default.resolve(__dirname, '../stubs/simpleConfig.stub.js'), 'utf8');
|
|
307
307
|
// Change colors import
|
|
308
308
|
stubFile = stubFile.replace('../colors', 'tailwindcss/colors');
|
|
309
309
|
_fs.default.writeFileSync(tailwindConfigLocation, stubFile, 'utf8');
|
|
310
310
|
messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
|
|
311
311
|
}
|
|
312
|
-
if (
|
|
312
|
+
if (args1['--postcss']) {
|
|
313
313
|
let postcssConfigLocation = _path.default.resolve('./postcss.config.js');
|
|
314
314
|
if (_fs.default.existsSync(postcssConfigLocation)) {
|
|
315
315
|
messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
|
|
@@ -327,27 +327,27 @@ function init() {
|
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
329
|
async function build() {
|
|
330
|
-
let input =
|
|
331
|
-
let output =
|
|
332
|
-
let shouldWatch =
|
|
333
|
-
let includePostCss =
|
|
330
|
+
let input = args1['--input'];
|
|
331
|
+
let output = args1['--output'];
|
|
332
|
+
let shouldWatch = args1['--watch'];
|
|
333
|
+
let includePostCss = args1['--postcss'];
|
|
334
334
|
// TODO: Deprecate this in future versions
|
|
335
|
-
if (!input &&
|
|
335
|
+
if (!input && args1['_'][1]) {
|
|
336
336
|
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
|
|
337
|
-
input =
|
|
337
|
+
input = args1['--input'] = args1['_'][1];
|
|
338
338
|
}
|
|
339
339
|
if (input && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
340
|
-
console.error(`Specified input file ${
|
|
340
|
+
console.error(`Specified input file ${args1['--input']} does not exist.`);
|
|
341
341
|
process.exit(9);
|
|
342
342
|
}
|
|
343
|
-
if (
|
|
344
|
-
console.error(`Specified config file ${
|
|
343
|
+
if (args1['--config'] && !_fs.default.existsSync(args1['--config'] = _path.default.resolve(args1['--config']))) {
|
|
344
|
+
console.error(`Specified config file ${args1['--config']} does not exist.`);
|
|
345
345
|
process.exit(9);
|
|
346
346
|
}
|
|
347
|
-
let configPath =
|
|
347
|
+
let configPath = args1['--config'] ? args1['--config'] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null
|
|
348
348
|
)(_path.default.resolve('./tailwind.config.js'));
|
|
349
349
|
async function loadPostCssPlugins() {
|
|
350
|
-
let customPostCssPath = typeof
|
|
350
|
+
let customPostCssPath = typeof args1['--postcss'] === 'string' ? args1['--postcss'] : undefined;
|
|
351
351
|
let { plugins: configPlugins } = customPostCssPath ? await (async ()=>{
|
|
352
352
|
let file = _path.default.resolve(customPostCssPath);
|
|
353
353
|
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0.1/src/index.js
|
|
@@ -386,17 +386,17 @@ async function build() {
|
|
|
386
386
|
let config = configPath ? require(configPath) : {
|
|
387
387
|
};
|
|
388
388
|
let resolvedConfig = (0, _resolveConfig).default(config);
|
|
389
|
-
if (
|
|
389
|
+
if (args1['--purge']) {
|
|
390
390
|
_log.default.warn('purge-flag-deprecated', [
|
|
391
391
|
'The `--purge` flag has been deprecated.',
|
|
392
392
|
'Please use `--content` instead.',
|
|
393
393
|
]);
|
|
394
|
-
if (!
|
|
395
|
-
|
|
394
|
+
if (!args1['--content']) {
|
|
395
|
+
args1['--content'] = args1['--purge'];
|
|
396
396
|
}
|
|
397
397
|
}
|
|
398
|
-
if (
|
|
399
|
-
resolvedConfig.content.files =
|
|
398
|
+
if (args1['--content']) {
|
|
399
|
+
resolvedConfig.content.files = args1['--content'].split(/(?<!{[^}]+),/);
|
|
400
400
|
}
|
|
401
401
|
return resolvedConfig;
|
|
402
402
|
}
|
|
@@ -457,9 +457,9 @@ async function build() {
|
|
|
457
457
|
let plugins = [
|
|
458
458
|
...beforePlugins,
|
|
459
459
|
tailwindPlugin,
|
|
460
|
-
!
|
|
460
|
+
!args1['--minify'] && formatNodes,
|
|
461
461
|
...afterPlugins,
|
|
462
|
-
!
|
|
462
|
+
!args1['--no-autoprefixer'] && (()=>{
|
|
463
463
|
// Try to load a local `autoprefixer` version first
|
|
464
464
|
try {
|
|
465
465
|
return require('autoprefixer');
|
|
@@ -467,7 +467,7 @@ async function build() {
|
|
|
467
467
|
}
|
|
468
468
|
return (0, _indexJs).lazyAutoprefixer();
|
|
469
469
|
})(),
|
|
470
|
-
|
|
470
|
+
args1['--minify'] && (()=>{
|
|
471
471
|
let options = {
|
|
472
472
|
preset: [
|
|
473
473
|
'default',
|
|
@@ -510,8 +510,8 @@ async function build() {
|
|
|
510
510
|
console.error('Done in', (end - start) / BigInt(1000000) + 'ms.');
|
|
511
511
|
});
|
|
512
512
|
}
|
|
513
|
-
let
|
|
514
|
-
return processCSS(
|
|
513
|
+
let css1 = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
|
|
514
|
+
return processCSS(css1);
|
|
515
515
|
}
|
|
516
516
|
let context = null;
|
|
517
517
|
async function startWatcher() {
|
|
@@ -521,8 +521,8 @@ async function build() {
|
|
|
521
521
|
let watcher = null;
|
|
522
522
|
function refreshConfig() {
|
|
523
523
|
env.DEBUG && console.time('Module dependencies');
|
|
524
|
-
for (let
|
|
525
|
-
delete require.cache[require.resolve(
|
|
524
|
+
for (let file1 of configDependencies){
|
|
525
|
+
delete require.cache[require.resolve(file1)];
|
|
526
526
|
}
|
|
527
527
|
if (configPath) {
|
|
528
528
|
configDependencies = (0, _getModuleDependencies).default(configPath).map(({ file })=>file
|
|
@@ -541,9 +541,9 @@ async function build() {
|
|
|
541
541
|
let plugins = [
|
|
542
542
|
...beforePlugins,
|
|
543
543
|
'__TAILWIND_PLUGIN_POSITION__',
|
|
544
|
-
!
|
|
544
|
+
!args1['--minify'] && formatNodes,
|
|
545
545
|
...afterPlugins,
|
|
546
|
-
!
|
|
546
|
+
!args1['--no-autoprefixer'] && (()=>{
|
|
547
547
|
// Try to load a local `autoprefixer` version first
|
|
548
548
|
try {
|
|
549
549
|
return require('autoprefixer');
|
|
@@ -551,7 +551,7 @@ async function build() {
|
|
|
551
551
|
}
|
|
552
552
|
return (0, _indexJs).lazyAutoprefixer();
|
|
553
553
|
})(),
|
|
554
|
-
|
|
554
|
+
args1['--minify'] && (()=>{
|
|
555
555
|
let options = {
|
|
556
556
|
preset: [
|
|
557
557
|
'default',
|
|
@@ -636,18 +636,18 @@ async function build() {
|
|
|
636
636
|
}
|
|
637
637
|
});
|
|
638
638
|
}
|
|
639
|
-
let
|
|
640
|
-
let result1 = await processCSS(
|
|
639
|
+
let css2 = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
|
|
640
|
+
let result1 = await processCSS(css2);
|
|
641
641
|
env.DEBUG && console.timeEnd('Finished in');
|
|
642
642
|
return result1;
|
|
643
643
|
}
|
|
644
|
-
let
|
|
644
|
+
let config1 = refreshConfig(configPath);
|
|
645
645
|
if (input) {
|
|
646
646
|
contextDependencies.add(_path.default.resolve(input));
|
|
647
647
|
}
|
|
648
648
|
watcher = _chokidar.default.watch([
|
|
649
649
|
...contextDependencies,
|
|
650
|
-
...extractFileGlobs(
|
|
650
|
+
...extractFileGlobs(config1)
|
|
651
651
|
], {
|
|
652
652
|
ignoreInitial: true,
|
|
653
653
|
awaitWriteFinish: process.platform === 'win32' ? {
|
|
@@ -660,16 +660,16 @@ async function build() {
|
|
|
660
660
|
if (contextDependencies.has(file)) {
|
|
661
661
|
env.DEBUG && console.time('Resolve config');
|
|
662
662
|
context = null;
|
|
663
|
-
|
|
663
|
+
config1 = refreshConfig(configPath);
|
|
664
664
|
env.DEBUG && console.timeEnd('Resolve config');
|
|
665
665
|
env.DEBUG && console.time('Watch new files');
|
|
666
|
-
let globs = extractFileGlobs(
|
|
666
|
+
let globs = extractFileGlobs(config1);
|
|
667
667
|
watcher.add(configDependencies);
|
|
668
668
|
watcher.add(globs);
|
|
669
669
|
env.DEBUG && console.timeEnd('Watch new files');
|
|
670
670
|
chain = chain.then(async ()=>{
|
|
671
|
-
changedContent.push(...getChangedContent(
|
|
672
|
-
await rebuild(
|
|
671
|
+
changedContent.push(...getChangedContent(config1));
|
|
672
|
+
await rebuild(config1);
|
|
673
673
|
});
|
|
674
674
|
} else {
|
|
675
675
|
chain = chain.then(async ()=>{
|
|
@@ -677,7 +677,7 @@ async function build() {
|
|
|
677
677
|
content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
|
|
678
678
|
extension: _path.default.extname(file).slice(1)
|
|
679
679
|
});
|
|
680
|
-
await rebuild(
|
|
680
|
+
await rebuild(config1);
|
|
681
681
|
});
|
|
682
682
|
}
|
|
683
683
|
});
|
|
@@ -687,12 +687,12 @@ async function build() {
|
|
|
687
687
|
content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
|
|
688
688
|
extension: _path.default.extname(file).slice(1)
|
|
689
689
|
});
|
|
690
|
-
await rebuild(
|
|
690
|
+
await rebuild(config1);
|
|
691
691
|
});
|
|
692
692
|
});
|
|
693
693
|
chain = chain.then(()=>{
|
|
694
|
-
changedContent.push(...getChangedContent(
|
|
695
|
-
return rebuild(
|
|
694
|
+
changedContent.push(...getChangedContent(config1));
|
|
695
|
+
return rebuild(config1);
|
|
696
696
|
});
|
|
697
697
|
}
|
|
698
698
|
if (shouldWatch) {
|
package/lib/constants.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.
|
|
5
|
+
exports.defaultPostCssConfigStubFile = exports.simpleConfigStubFile = exports.defaultConfigStubFile = exports.supportedPostCssConfigFile = exports.supportedConfigFiles = exports.cjsPostCssConfigFile = exports.cjsConfigFile = exports.defaultPostCssConfigFile = exports.defaultConfigFile = exports.cli = void 0;
|
|
6
6
|
var _path = _interopRequireDefault(require("path"));
|
|
7
7
|
function _interopRequireDefault(obj) {
|
|
8
8
|
return obj && obj.__esModule ? obj : {
|
package/lib/corePluginList.js
CHANGED
package/lib/corePlugins.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.
|
|
5
|
+
exports.corePlugins = exports.variantPlugins = void 0;
|
|
6
6
|
var _fs = _interopRequireDefault(require("fs"));
|
|
7
7
|
var path = _interopRequireWildcard(require("path"));
|
|
8
8
|
var _postcss = _interopRequireDefault(require("postcss"));
|
|
@@ -16,6 +16,8 @@ var _isPlainObject = _interopRequireDefault(require("./util/isPlainObject"));
|
|
|
16
16
|
var _transformThemeValue = _interopRequireDefault(require("./util/transformThemeValue"));
|
|
17
17
|
var _packageJson = require("../package.json");
|
|
18
18
|
var _log = _interopRequireDefault(require("./util/log"));
|
|
19
|
+
var _normalizeScreens = require("./util/normalizeScreens");
|
|
20
|
+
var _parseBoxShadowValue = require("./util/parseBoxShadowValue");
|
|
19
21
|
function _interopRequireDefault(obj) {
|
|
20
22
|
return obj && obj.__esModule ? obj : {
|
|
21
23
|
default: obj
|
|
@@ -57,6 +59,7 @@ let variantPlugins = {
|
|
|
57
59
|
'&::selection'
|
|
58
60
|
]);
|
|
59
61
|
addVariant('file', '&::file-selector-button');
|
|
62
|
+
addVariant('placeholder', '&::placeholder');
|
|
60
63
|
addVariant('before', ({ container })=>{
|
|
61
64
|
container.walkRules((rule)=>{
|
|
62
65
|
let foundContent = false;
|
|
@@ -196,15 +199,14 @@ let variantPlugins = {
|
|
|
196
199
|
addVariant('print', '@media print');
|
|
197
200
|
},
|
|
198
201
|
screenVariants: ({ theme , addVariant })=>{
|
|
199
|
-
for(let screen
|
|
200
|
-
let
|
|
201
|
-
|
|
202
|
-
addVariant(screen, `@media ${query}`);
|
|
202
|
+
for (let screen of (0, _normalizeScreens).normalizeScreens(theme('screens'))){
|
|
203
|
+
let query = (0, _buildMediaQuery).default(screen);
|
|
204
|
+
addVariant(screen.name, `@media ${query}`);
|
|
203
205
|
}
|
|
204
206
|
}
|
|
205
207
|
};
|
|
206
208
|
exports.variantPlugins = variantPlugins;
|
|
207
|
-
let
|
|
209
|
+
let corePlugins1 = {
|
|
208
210
|
preflight: ({ addBase })=>{
|
|
209
211
|
let preflightStyles = _postcss.default.parse(_fs.default.readFileSync(path.join(__dirname, './css/preflight.css'), 'utf8'));
|
|
210
212
|
addBase([
|
|
@@ -215,27 +217,11 @@ let corePlugins = {
|
|
|
215
217
|
]);
|
|
216
218
|
},
|
|
217
219
|
container: (()=>{
|
|
218
|
-
function extractMinWidths(breakpoints) {
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
min: breakpoints
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
if (!Array.isArray(breakpoints)) {
|
|
227
|
-
breakpoints = [
|
|
228
|
-
breakpoints
|
|
229
|
-
];
|
|
230
|
-
}
|
|
231
|
-
return breakpoints.filter((breakpoint)=>{
|
|
232
|
-
var ref;
|
|
233
|
-
return (breakpoint === null || breakpoint === void 0 ? void 0 : (ref = breakpoint.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(breakpoint, 'min')) || (breakpoint === null || breakpoint === void 0 ? void 0 : breakpoint.hasOwnProperty('min-width'));
|
|
234
|
-
}).map((breakpoint)=>{
|
|
235
|
-
var ref;
|
|
236
|
-
return (ref = breakpoint['min-width']) !== null && ref !== void 0 ? ref : breakpoint.min;
|
|
237
|
-
});
|
|
238
|
-
});
|
|
220
|
+
function extractMinWidths(breakpoints = []) {
|
|
221
|
+
return breakpoints.flatMap((breakpoint1)=>breakpoint1.values.map((breakpoint)=>breakpoint.min
|
|
222
|
+
)
|
|
223
|
+
).filter((v)=>v !== undefined
|
|
224
|
+
);
|
|
239
225
|
}
|
|
240
226
|
function mapMinWidthsToPadding(minWidths, screens, paddings) {
|
|
241
227
|
if (typeof paddings === 'undefined') {
|
|
@@ -259,25 +245,25 @@ let corePlugins = {
|
|
|
259
245
|
});
|
|
260
246
|
}
|
|
261
247
|
for (let minWidth of minWidths){
|
|
262
|
-
for (let
|
|
263
|
-
let
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
248
|
+
for (let screen of screens){
|
|
249
|
+
for (let { min } of screen.values){
|
|
250
|
+
if (min === minWidth) {
|
|
251
|
+
mapping.push({
|
|
252
|
+
minWidth,
|
|
253
|
+
padding: paddings[screen.name]
|
|
254
|
+
});
|
|
255
|
+
}
|
|
270
256
|
}
|
|
271
257
|
}
|
|
272
258
|
}
|
|
273
259
|
return mapping;
|
|
274
260
|
}
|
|
275
261
|
return function({ addComponents , theme }) {
|
|
276
|
-
let screens = theme('container.screens', theme('screens'));
|
|
262
|
+
let screens = (0, _normalizeScreens).normalizeScreens(theme('container.screens', theme('screens')));
|
|
277
263
|
let minWidths = extractMinWidths(screens);
|
|
278
264
|
let paddings = mapMinWidthsToPadding(minWidths, screens, theme('container.padding'));
|
|
279
265
|
let generatePaddingFor = (minWidth)=>{
|
|
280
|
-
let paddingConfig = paddings.find((padding)
|
|
266
|
+
let paddingConfig = paddings.find((padding)=>padding.minWidth === minWidth
|
|
281
267
|
);
|
|
282
268
|
if (!paddingConfig) {
|
|
283
269
|
return {
|
|
@@ -989,8 +975,8 @@ let corePlugins = {
|
|
|
989
975
|
];
|
|
990
976
|
}));
|
|
991
977
|
matchUtilities({
|
|
992
|
-
animate: (
|
|
993
|
-
let animations = (0, _parseAnimationValue).default(
|
|
978
|
+
animate: (value1)=>{
|
|
979
|
+
let animations = (0, _parseAnimationValue).default(value1);
|
|
994
980
|
return [
|
|
995
981
|
...animations.flatMap((animation)=>keyframes[animation.name]
|
|
996
982
|
),
|
|
@@ -2995,24 +2981,52 @@ let corePlugins = {
|
|
|
2995
2981
|
'@defaults box-shadow': {
|
|
2996
2982
|
'--tw-ring-offset-shadow': '0 0 #0000',
|
|
2997
2983
|
'--tw-ring-shadow': '0 0 #0000',
|
|
2998
|
-
'--tw-shadow': '0 0 #0000'
|
|
2984
|
+
'--tw-shadow': '0 0 #0000',
|
|
2985
|
+
'--tw-shadow-colored': '0 0 #0000'
|
|
2999
2986
|
}
|
|
3000
2987
|
});
|
|
3001
2988
|
matchUtilities({
|
|
3002
2989
|
shadow: (value)=>{
|
|
3003
2990
|
value = transformValue(value);
|
|
2991
|
+
let ast = (0, _parseBoxShadowValue).parseBoxShadowValue(value);
|
|
2992
|
+
for (let shadow of ast){
|
|
2993
|
+
// Don't override color if the whole shadow is a variable
|
|
2994
|
+
if (!shadow.valid) {
|
|
2995
|
+
continue;
|
|
2996
|
+
}
|
|
2997
|
+
shadow.color = 'var(--tw-shadow-color)';
|
|
2998
|
+
}
|
|
3004
2999
|
return {
|
|
3005
3000
|
'@defaults box-shadow': {
|
|
3006
3001
|
},
|
|
3007
3002
|
'--tw-shadow': value === 'none' ? '0 0 #0000' : value,
|
|
3003
|
+
'--tw-shadow-colored': value === 'none' ? '0 0 #0000' : (0, _parseBoxShadowValue).formatBoxShadowValue(ast),
|
|
3008
3004
|
'box-shadow': defaultBoxShadow
|
|
3009
3005
|
};
|
|
3010
3006
|
}
|
|
3011
3007
|
}, {
|
|
3012
|
-
values: theme('boxShadow')
|
|
3008
|
+
values: theme('boxShadow'),
|
|
3009
|
+
type: [
|
|
3010
|
+
'shadow'
|
|
3011
|
+
]
|
|
3013
3012
|
});
|
|
3014
3013
|
};
|
|
3015
3014
|
})(),
|
|
3015
|
+
boxShadowColor: ({ matchUtilities , theme })=>{
|
|
3016
|
+
matchUtilities({
|
|
3017
|
+
shadow: (value)=>{
|
|
3018
|
+
return {
|
|
3019
|
+
'--tw-shadow-color': (0, _toColorValue).default(value),
|
|
3020
|
+
'--tw-shadow': 'var(--tw-shadow-colored)'
|
|
3021
|
+
};
|
|
3022
|
+
}
|
|
3023
|
+
}, {
|
|
3024
|
+
values: (0, _flattenColorPalette).default(theme('boxShadowColor')),
|
|
3025
|
+
type: [
|
|
3026
|
+
'color'
|
|
3027
|
+
]
|
|
3028
|
+
});
|
|
3029
|
+
},
|
|
3016
3030
|
outlineStyle: ({ addUtilities })=>{
|
|
3017
3031
|
addUtilities({
|
|
3018
3032
|
'.outline-none': {
|
|
@@ -3089,7 +3103,8 @@ let corePlugins = {
|
|
|
3089
3103
|
'--tw-ring-color': ringColorDefault,
|
|
3090
3104
|
'--tw-ring-offset-shadow': '0 0 #0000',
|
|
3091
3105
|
'--tw-ring-shadow': '0 0 #0000',
|
|
3092
|
-
'--tw-shadow': '0 0 #0000'
|
|
3106
|
+
'--tw-shadow': '0 0 #0000',
|
|
3107
|
+
'--tw-shadow-colored': '0 0 #0000'
|
|
3093
3108
|
}
|
|
3094
3109
|
});
|
|
3095
3110
|
matchUtilities({
|
|
@@ -3559,4 +3574,4 @@ let corePlugins = {
|
|
|
3559
3574
|
],
|
|
3560
3575
|
])
|
|
3561
3576
|
};
|
|
3562
|
-
exports.corePlugins =
|
|
3577
|
+
exports.corePlugins = corePlugins1;
|
package/lib/featureFlags.js
CHANGED
|
@@ -28,9 +28,9 @@ function flagEnabled(config, flag) {
|
|
|
28
28
|
return config.future === 'all' || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);
|
|
29
29
|
}
|
|
30
30
|
if (featureFlags.experimental.includes(flag)) {
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
return config.experimental === 'all' || ((
|
|
31
|
+
var ref3;
|
|
32
|
+
var ref4, ref5;
|
|
33
|
+
return config.experimental === 'all' || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);
|
|
34
34
|
}
|
|
35
35
|
return false;
|
|
36
36
|
}
|
package/lib/lib/detectNesting.js
CHANGED
|
@@ -6,12 +6,27 @@ exports.default = _default;
|
|
|
6
6
|
function _default(_context) {
|
|
7
7
|
return (root, result)=>{
|
|
8
8
|
let found = false;
|
|
9
|
+
root.walkAtRules('tailwind', (node)=>{
|
|
10
|
+
if (found) return false;
|
|
11
|
+
if (node.parent && node.parent.type !== 'root') {
|
|
12
|
+
found = true;
|
|
13
|
+
node.warn(result, [
|
|
14
|
+
'Nested @tailwind rules were detected, but are not supported.',
|
|
15
|
+
"Consider using a prefix to scope Tailwind's classes: https://tailwindcss.com/docs/configuration#prefix",
|
|
16
|
+
'Alternatively, use the important selector strategy: https://tailwindcss.com/docs/configuration#selector-strategy',
|
|
17
|
+
].join('\n'));
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
9
21
|
root.walkRules((rule)=>{
|
|
10
22
|
if (found) return false;
|
|
11
23
|
rule.walkRules((nestedRule)=>{
|
|
12
24
|
found = true;
|
|
13
|
-
nestedRule.warn(result,
|
|
14
|
-
|
|
25
|
+
nestedRule.warn(result, [
|
|
26
|
+
'Nested CSS was detected, but CSS nesting has not been configured correctly.',
|
|
27
|
+
'Please enable a CSS nesting plugin *before* Tailwind in your configuration.',
|
|
28
|
+
'See how here: https://tailwindcss.com/docs/using-with-preprocessors#nesting',
|
|
29
|
+
].join('\n'));
|
|
15
30
|
return false;
|
|
16
31
|
});
|
|
17
32
|
});
|