tailwindcss 0.0.0-insiders.fda68f7 → 0.0.0-oxide.6bf5e56
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 +603 -2
- package/LICENSE +1 -2
- package/README.md +14 -6
- package/colors.d.ts +3 -0
- package/colors.js +2 -304
- package/defaultConfig.d.ts +3 -0
- package/defaultConfig.js +2 -4
- package/defaultTheme.d.ts +4 -0
- package/defaultTheme.js +2 -4
- package/lib/cli/build/deps.js +54 -0
- package/lib/cli/build/index.js +48 -0
- package/lib/cli/build/plugin.js +367 -0
- package/lib/cli/build/utils.js +78 -0
- package/lib/cli/build/watching.js +178 -0
- package/lib/cli/help/index.js +71 -0
- package/lib/cli/index.js +18 -0
- package/lib/cli/init/index.js +46 -0
- package/lib/cli/shared.js +13 -0
- package/lib/cli-peer-dependencies.js +22 -14
- package/lib/cli.js +217 -743
- package/lib/constants.js +41 -34
- package/lib/corePluginList.js +178 -5
- package/lib/corePlugins.js +3879 -2941
- package/lib/css/preflight.css +22 -9
- package/lib/featureFlags.js +61 -50
- package/lib/index.js +45 -28
- package/lib/lib/cacheInvalidation.js +90 -0
- package/lib/lib/collapseAdjacentRules.js +52 -36
- package/lib/lib/collapseDuplicateDeclarations.js +83 -0
- package/lib/lib/content.js +176 -0
- package/lib/lib/defaultExtractor.js +236 -0
- package/lib/lib/detectNesting.js +37 -0
- package/lib/lib/evaluateTailwindFunctions.js +203 -161
- package/lib/lib/expandApplyAtRules.js +502 -221
- package/lib/lib/expandTailwindAtRules.js +258 -243
- package/lib/lib/findAtConfigPath.js +44 -0
- package/lib/lib/generateRules.js +775 -320
- package/lib/lib/getModuleDependencies.js +44 -46
- package/lib/lib/normalizeTailwindDirectives.js +79 -60
- package/lib/lib/offsets.js +217 -0
- package/lib/lib/partitionApplyAtRules.js +56 -0
- package/lib/lib/regex.js +60 -0
- package/lib/lib/resolveDefaultsAtRules.js +150 -94
- package/lib/lib/setupContextUtils.js +1146 -599
- package/lib/lib/setupTrackingContext.js +129 -177
- package/lib/lib/sharedState.js +53 -21
- package/lib/lib/substituteScreenAtRules.js +26 -28
- package/{nesting → lib/postcss-plugins/nesting}/README.md +2 -2
- package/lib/postcss-plugins/nesting/index.js +19 -0
- package/lib/postcss-plugins/nesting/plugin.js +87 -0
- package/lib/processTailwindFeatures.js +58 -53
- package/lib/public/colors.js +331 -0
- package/lib/public/create-plugin.js +15 -0
- package/lib/public/default-config.js +16 -0
- package/lib/public/default-theme.js +16 -0
- package/lib/public/resolve-config.js +22 -0
- package/lib/util/bigSign.js +7 -6
- package/lib/util/buildMediaQuery.js +21 -32
- package/lib/util/cloneDeep.js +16 -14
- package/lib/util/cloneNodes.js +29 -15
- package/lib/util/color.js +90 -66
- package/lib/util/configurePlugins.js +17 -15
- package/lib/util/createPlugin.js +23 -26
- package/lib/util/createUtilityPlugin.js +46 -46
- package/lib/util/dataTypes.js +242 -0
- package/lib/util/defaults.js +20 -15
- package/lib/util/escapeClassName.js +18 -17
- package/lib/util/escapeCommas.js +7 -6
- package/lib/util/flattenColorPalette.js +13 -12
- package/lib/util/formatVariantSelector.js +285 -0
- package/lib/util/getAllConfigs.js +44 -18
- package/lib/util/hashConfig.js +15 -12
- package/lib/util/isKeyframeRule.js +7 -6
- package/lib/util/isPlainObject.js +11 -11
- package/lib/util/isSyntacticallyValidPropertyValue.js +72 -0
- package/lib/util/log.js +52 -33
- package/lib/util/nameClass.js +37 -26
- package/lib/util/negateValue.js +31 -17
- package/lib/util/normalizeConfig.js +281 -0
- package/lib/util/normalizeScreens.js +170 -0
- package/lib/util/parseAnimationValue.js +85 -54
- package/lib/util/parseBoxShadowValue.js +84 -0
- package/lib/util/parseDependency.js +41 -70
- package/lib/util/parseGlob.js +34 -0
- package/lib/util/parseObjectStyles.js +30 -24
- package/lib/util/pluginUtils.js +252 -287
- package/lib/util/prefixSelector.js +20 -20
- package/lib/util/removeAlphaVariables.js +29 -0
- package/lib/util/resolveConfig.js +221 -256
- package/lib/util/resolveConfigPath.js +43 -48
- package/lib/util/responsive.js +18 -14
- package/lib/util/splitAtTopLevelOnly.js +43 -0
- package/lib/util/tap.js +8 -7
- package/lib/util/toColorValue.js +7 -6
- package/lib/util/toPath.js +27 -8
- package/lib/util/transformThemeValue.js +67 -28
- package/lib/util/validateConfig.js +24 -0
- package/lib/util/validateFormalSyntax.js +24 -0
- package/lib/util/withAlphaVariable.js +67 -57
- package/nesting/index.js +2 -12
- package/package.json +60 -65
- package/peers/index.js +76445 -84221
- package/plugin.d.ts +11 -0
- package/plugin.js +1 -2
- package/resolveConfig.d.ts +12 -0
- package/resolveConfig.js +2 -7
- package/scripts/create-plugin-list.js +2 -2
- package/scripts/generate-types.js +105 -0
- package/scripts/release-channel.js +18 -0
- package/scripts/release-notes.js +21 -0
- package/scripts/type-utils.js +27 -0
- package/src/cli/build/deps.js +56 -0
- package/src/cli/build/index.js +49 -0
- package/src/cli/build/plugin.js +439 -0
- package/src/cli/build/utils.js +76 -0
- package/src/cli/build/watching.js +227 -0
- package/src/cli/help/index.js +70 -0
- package/src/cli/index.js +3 -0
- package/src/cli/init/index.js +50 -0
- package/src/cli/shared.js +6 -0
- package/src/cli-peer-dependencies.js +7 -1
- package/src/cli.js +50 -575
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +2405 -1948
- package/src/css/preflight.css +22 -9
- package/src/featureFlags.js +26 -10
- package/src/index.js +19 -6
- package/src/lib/cacheInvalidation.js +52 -0
- package/src/lib/collapseAdjacentRules.js +21 -2
- package/src/lib/collapseDuplicateDeclarations.js +93 -0
- package/src/lib/content.js +212 -0
- package/src/lib/defaultExtractor.js +211 -0
- package/src/lib/detectNesting.js +39 -0
- package/src/lib/evaluateTailwindFunctions.js +84 -10
- package/src/lib/expandApplyAtRules.js +508 -153
- package/src/lib/expandTailwindAtRules.js +130 -104
- package/src/lib/findAtConfigPath.js +48 -0
- package/src/lib/generateRules.js +596 -70
- package/src/lib/normalizeTailwindDirectives.js +10 -3
- package/src/lib/offsets.js +270 -0
- package/src/lib/partitionApplyAtRules.js +52 -0
- package/src/lib/regex.js +74 -0
- package/src/lib/resolveDefaultsAtRules.js +105 -47
- package/src/lib/setupContextUtils.js +828 -196
- package/src/lib/setupTrackingContext.js +19 -54
- package/src/lib/sharedState.js +45 -7
- package/src/lib/substituteScreenAtRules.js +6 -3
- package/src/postcss-plugins/nesting/README.md +42 -0
- package/src/postcss-plugins/nesting/index.js +13 -0
- package/src/postcss-plugins/nesting/plugin.js +80 -0
- package/src/processTailwindFeatures.js +19 -2
- package/src/public/colors.js +300 -0
- package/src/public/create-plugin.js +2 -0
- package/src/public/default-config.js +4 -0
- package/src/public/default-theme.js +4 -0
- package/src/public/resolve-config.js +7 -0
- package/src/util/buildMediaQuery.js +14 -16
- package/src/util/cloneNodes.js +19 -2
- package/src/util/color.js +31 -14
- package/src/util/createUtilityPlugin.js +2 -11
- package/src/util/dataTypes.js +256 -0
- package/src/util/defaults.js +6 -0
- package/src/util/formatVariantSelector.js +319 -0
- package/src/util/getAllConfigs.js +19 -0
- package/src/util/isSyntacticallyValidPropertyValue.js +61 -0
- package/src/util/log.js +23 -22
- package/src/util/nameClass.js +14 -6
- package/src/util/negateValue.js +15 -5
- package/src/util/normalizeConfig.js +300 -0
- package/src/util/normalizeScreens.js +140 -0
- package/src/util/parseAnimationValue.js +7 -1
- package/src/util/parseBoxShadowValue.js +72 -0
- package/src/util/parseDependency.js +37 -38
- package/src/util/parseGlob.js +24 -0
- package/src/util/pluginUtils.js +216 -197
- package/src/util/prefixSelector.js +7 -8
- package/src/util/removeAlphaVariables.js +24 -0
- package/src/util/resolveConfig.js +86 -91
- package/src/util/splitAtTopLevelOnly.js +45 -0
- package/src/util/toPath.js +23 -1
- package/src/util/transformThemeValue.js +33 -8
- package/src/util/validateConfig.js +13 -0
- package/src/util/validateFormalSyntax.js +34 -0
- package/src/util/withAlphaVariable.js +14 -9
- package/stubs/defaultConfig.stub.js +186 -117
- package/stubs/simpleConfig.stub.js +1 -1
- package/types/config.d.ts +362 -0
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +276 -0
- package/types/generated/corePluginList.d.ts +1 -0
- package/types/generated/default-theme.d.ts +342 -0
- package/types/index.d.ts +7 -0
- package/lib/lib/setupWatchingContext.js +0 -331
- package/nesting/plugin.js +0 -41
- package/src/lib/setupWatchingContext.js +0 -306
|
@@ -1,192 +1,234 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) {
|
|
21
|
-
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>_default
|
|
8
|
+
});
|
|
9
|
+
const _dlv = /*#__PURE__*/ _interopRequireDefault(require("dlv"));
|
|
10
|
+
const _didyoumean = /*#__PURE__*/ _interopRequireDefault(require("didyoumean"));
|
|
11
|
+
const _transformThemeValue = /*#__PURE__*/ _interopRequireDefault(require("../util/transformThemeValue"));
|
|
12
|
+
const _postcssValueParser = /*#__PURE__*/ _interopRequireDefault(require("postcss-value-parser"));
|
|
13
|
+
const _normalizeScreens = require("../util/normalizeScreens");
|
|
14
|
+
const _buildMediaQuery = /*#__PURE__*/ _interopRequireDefault(require("../util/buildMediaQuery"));
|
|
15
|
+
const _toPath = require("../util/toPath");
|
|
16
|
+
const _withAlphaVariable = require("../util/withAlphaVariable");
|
|
17
|
+
const _pluginUtils = require("../util/pluginUtils");
|
|
18
|
+
const _log = /*#__PURE__*/ _interopRequireDefault(require("../util/log"));
|
|
19
|
+
function _interopRequireDefault(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
22
24
|
function isObject(input) {
|
|
23
|
-
|
|
25
|
+
return typeof input === "object" && input !== null;
|
|
24
26
|
}
|
|
25
|
-
|
|
26
27
|
function findClosestExistingPath(theme, path) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return parts.length ? parts : undefined;
|
|
28
|
+
let parts = (0, _toPath.toPath)(path);
|
|
29
|
+
do {
|
|
30
|
+
parts.pop();
|
|
31
|
+
if ((0, _dlv.default)(theme, parts) !== undefined) break;
|
|
32
|
+
}while (parts.length);
|
|
33
|
+
return parts.length ? parts : undefined;
|
|
35
34
|
}
|
|
36
|
-
|
|
37
35
|
function pathToString(path) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
if (typeof path === "string") return path;
|
|
37
|
+
return path.reduce((acc, cur, i)=>{
|
|
38
|
+
if (cur.includes(".")) return `${acc}[${cur}]`;
|
|
39
|
+
return i === 0 ? cur : `${acc}.${cur}`;
|
|
40
|
+
}, "");
|
|
43
41
|
}
|
|
44
|
-
|
|
45
42
|
function list(items) {
|
|
46
|
-
|
|
43
|
+
return items.map((key)=>`'${key}'`).join(", ");
|
|
47
44
|
}
|
|
48
|
-
|
|
49
45
|
function listKeys(obj) {
|
|
50
|
-
|
|
46
|
+
return list(Object.keys(obj));
|
|
51
47
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (closestPath) {
|
|
76
|
-
const closestValue = (0, _dlv.default)(config.theme, closestPath);
|
|
77
|
-
|
|
78
|
-
if (isObject(closestValue)) {
|
|
79
|
-
error += ` '${pathToString(closestPath)}' has the following keys: ${listKeys(closestValue)}`;
|
|
48
|
+
function validatePath(config, path, defaultValue, themeOpts = {}) {
|
|
49
|
+
const pathString = Array.isArray(path) ? pathToString(path) : path.replace(/^['"]+|['"]+$/g, "");
|
|
50
|
+
const pathSegments = Array.isArray(path) ? path : (0, _toPath.toPath)(pathString);
|
|
51
|
+
const value = (0, _dlv.default)(config.theme, pathSegments, defaultValue);
|
|
52
|
+
if (value === undefined) {
|
|
53
|
+
let error = `'${pathString}' does not exist in your theme config.`;
|
|
54
|
+
const parentSegments = pathSegments.slice(0, -1);
|
|
55
|
+
const parentValue = (0, _dlv.default)(config.theme, parentSegments);
|
|
56
|
+
if (isObject(parentValue)) {
|
|
57
|
+
const validKeys = Object.keys(parentValue).filter((key)=>validatePath(config, [
|
|
58
|
+
...parentSegments,
|
|
59
|
+
key
|
|
60
|
+
]).isValid);
|
|
61
|
+
const suggestion = (0, _didyoumean.default)(pathSegments[pathSegments.length - 1], validKeys);
|
|
62
|
+
if (suggestion) {
|
|
63
|
+
error += ` Did you mean '${pathToString([
|
|
64
|
+
...parentSegments,
|
|
65
|
+
suggestion
|
|
66
|
+
])}'?`;
|
|
67
|
+
} else if (validKeys.length > 0) {
|
|
68
|
+
error += ` '${pathToString(parentSegments)}' has the following valid keys: ${list(validKeys)}`;
|
|
69
|
+
}
|
|
80
70
|
} else {
|
|
81
|
-
|
|
71
|
+
const closestPath = findClosestExistingPath(config.theme, pathString);
|
|
72
|
+
if (closestPath) {
|
|
73
|
+
const closestValue = (0, _dlv.default)(config.theme, closestPath);
|
|
74
|
+
if (isObject(closestValue)) {
|
|
75
|
+
error += ` '${pathToString(closestPath)}' has the following keys: ${listKeys(closestValue)}`;
|
|
76
|
+
} else {
|
|
77
|
+
error += ` '${pathToString(closestPath)}' is not an object.`;
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
error += ` Your theme has the following top-level keys: ${listKeys(config.theme)}`;
|
|
81
|
+
}
|
|
82
82
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
return {
|
|
84
|
+
isValid: false,
|
|
85
|
+
error
|
|
86
|
+
};
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
88
|
+
if (!(typeof value === "string" || typeof value === "number" || typeof value === "function" || value instanceof String || value instanceof Number || Array.isArray(value))) {
|
|
89
|
+
let error1 = `'${pathString}' was found but does not resolve to a string.`;
|
|
90
|
+
if (isObject(value)) {
|
|
91
|
+
let validKeys1 = Object.keys(value).filter((key)=>validatePath(config, [
|
|
92
|
+
...pathSegments,
|
|
93
|
+
key
|
|
94
|
+
]).isValid);
|
|
95
|
+
if (validKeys1.length) {
|
|
96
|
+
error1 += ` Did you mean something like '${pathToString([
|
|
97
|
+
...pathSegments,
|
|
98
|
+
validKeys1[0]
|
|
99
|
+
])}'?`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
isValid: false,
|
|
104
|
+
error: error1
|
|
105
|
+
};
|
|
103
106
|
}
|
|
104
|
-
|
|
107
|
+
const [themeSection] = pathSegments;
|
|
105
108
|
return {
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
isValid: true,
|
|
110
|
+
value: (0, _transformThemeValue.default)(themeSection)(value, themeOpts)
|
|
108
111
|
};
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const [themeSection] = pathSegments;
|
|
112
|
-
return {
|
|
113
|
-
isValid: true,
|
|
114
|
-
value: (0, _transformThemeValue.default)(themeSection)(value)
|
|
115
|
-
};
|
|
116
112
|
}
|
|
117
|
-
|
|
118
113
|
function extractArgs(node, vNodes, functions) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
114
|
+
vNodes = vNodes.map((vNode)=>resolveVNode(node, vNode, functions));
|
|
115
|
+
let args = [
|
|
116
|
+
""
|
|
117
|
+
];
|
|
118
|
+
for (let vNode of vNodes){
|
|
119
|
+
if (vNode.type === "div" && vNode.value === ",") {
|
|
120
|
+
args.push("");
|
|
121
|
+
} else {
|
|
122
|
+
args[args.length - 1] += _postcssValueParser.default.stringify(vNode);
|
|
123
|
+
}
|
|
127
124
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return args;
|
|
125
|
+
return args;
|
|
131
126
|
}
|
|
132
|
-
|
|
133
127
|
function resolveVNode(node, vNode, functions) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return vNode;
|
|
128
|
+
if (vNode.type === "function" && functions[vNode.value] !== undefined) {
|
|
129
|
+
let args = extractArgs(node, vNode.nodes, functions);
|
|
130
|
+
vNode.type = "word";
|
|
131
|
+
vNode.value = functions[vNode.value](node, ...args);
|
|
132
|
+
}
|
|
133
|
+
return vNode;
|
|
141
134
|
}
|
|
142
|
-
|
|
143
135
|
function resolveFunctions(node, input, functions) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
136
|
+
return (0, _postcssValueParser.default)(input).walk((vNode)=>{
|
|
137
|
+
resolveVNode(node, vNode, functions);
|
|
138
|
+
}).toString();
|
|
147
139
|
}
|
|
148
|
-
|
|
149
140
|
let nodeTypePropertyMap = {
|
|
150
|
-
|
|
151
|
-
|
|
141
|
+
atrule: "params",
|
|
142
|
+
decl: "value"
|
|
152
143
|
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (config.theme.screens[screen] === undefined) {
|
|
175
|
-
throw node.error(`The '${screen}' screen does not exist in your theme.`);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return (0, _buildMediaQuery.default)(config.theme.screens[screen]);
|
|
144
|
+
/**
|
|
145
|
+
* @param {string} path
|
|
146
|
+
* @returns {Iterable<[path: string, alpha: string|undefined]>}
|
|
147
|
+
*/ function* toPaths(path) {
|
|
148
|
+
// Strip quotes from beginning and end of string
|
|
149
|
+
// This allows the alpha value to be present inside of quotes
|
|
150
|
+
path = path.replace(/^['"]+|['"]+$/g, "");
|
|
151
|
+
let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/);
|
|
152
|
+
let alpha = undefined;
|
|
153
|
+
yield [
|
|
154
|
+
path,
|
|
155
|
+
undefined
|
|
156
|
+
];
|
|
157
|
+
if (matches) {
|
|
158
|
+
path = matches[1];
|
|
159
|
+
alpha = matches[2];
|
|
160
|
+
yield [
|
|
161
|
+
path,
|
|
162
|
+
alpha
|
|
163
|
+
];
|
|
179
164
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
*
|
|
168
|
+
* @param {any} config
|
|
169
|
+
* @param {string} path
|
|
170
|
+
* @param {any} defaultValue
|
|
171
|
+
*/ function resolvePath(config, path, defaultValue) {
|
|
172
|
+
const results = Array.from(toPaths(path)).map(([path, alpha])=>{
|
|
173
|
+
return Object.assign(validatePath(config, path, defaultValue, {
|
|
174
|
+
opacityValue: alpha
|
|
175
|
+
}), {
|
|
176
|
+
resolvedPath: path,
|
|
177
|
+
alpha
|
|
178
|
+
});
|
|
190
179
|
});
|
|
191
|
-
|
|
192
|
-
|
|
180
|
+
var ref;
|
|
181
|
+
return (ref = results.find((result)=>result.isValid)) !== null && ref !== void 0 ? ref : results[0];
|
|
182
|
+
}
|
|
183
|
+
function _default(context) {
|
|
184
|
+
let config = context.tailwindConfig;
|
|
185
|
+
let functions = {
|
|
186
|
+
theme: (node, path, ...defaultValue)=>{
|
|
187
|
+
let { isValid , value , error , alpha } = resolvePath(config, path, defaultValue.length ? defaultValue : undefined);
|
|
188
|
+
if (!isValid) {
|
|
189
|
+
var ref;
|
|
190
|
+
let parentNode = node.parent;
|
|
191
|
+
let candidate = (ref = parentNode === null || parentNode === void 0 ? void 0 : parentNode.raws.tailwind) === null || ref === void 0 ? void 0 : ref.candidate;
|
|
192
|
+
if (parentNode && candidate !== undefined) {
|
|
193
|
+
// Remove this utility from any caches
|
|
194
|
+
context.markInvalidUtilityNode(parentNode);
|
|
195
|
+
// Remove the CSS node from the markup
|
|
196
|
+
parentNode.remove();
|
|
197
|
+
// Show a warning
|
|
198
|
+
_log.default.warn("invalid-theme-key-in-class", [
|
|
199
|
+
`The utility \`${candidate}\` contains an invalid theme value and was not generated.`
|
|
200
|
+
]);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
throw node.error(error);
|
|
204
|
+
}
|
|
205
|
+
let maybeColor = (0, _pluginUtils.parseColorFormat)(value);
|
|
206
|
+
let isColorFunction = maybeColor !== undefined && typeof maybeColor === "function";
|
|
207
|
+
if (alpha !== undefined || isColorFunction) {
|
|
208
|
+
if (alpha === undefined) {
|
|
209
|
+
alpha = 1.0;
|
|
210
|
+
}
|
|
211
|
+
value = (0, _withAlphaVariable.withAlphaValue)(maybeColor, alpha, maybeColor);
|
|
212
|
+
}
|
|
213
|
+
return value;
|
|
214
|
+
},
|
|
215
|
+
screen: (node, screen)=>{
|
|
216
|
+
screen = screen.replace(/^['"]+/g, "").replace(/['"]+$/g, "");
|
|
217
|
+
let screens = (0, _normalizeScreens.normalizeScreens)(config.theme.screens);
|
|
218
|
+
let screenDefinition = screens.find(({ name })=>name === screen);
|
|
219
|
+
if (!screenDefinition) {
|
|
220
|
+
throw node.error(`The '${screen}' screen does not exist in your theme.`);
|
|
221
|
+
}
|
|
222
|
+
return (0, _buildMediaQuery.default)(screenDefinition);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
return (root)=>{
|
|
226
|
+
root.walk((node)=>{
|
|
227
|
+
let property = nodeTypePropertyMap[node.type];
|
|
228
|
+
if (property === undefined) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
node[property] = resolveFunctions(node, node[property], functions);
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
}
|