tailwindcss 0.0.0-insiders.ea139f2 → 0.0.0-insiders.ea4e1cd
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/LICENSE +1 -2
- package/README.md +15 -7
- package/colors.d.ts +3 -0
- package/colors.js +2 -1
- package/defaultConfig.d.ts +3 -0
- package/defaultConfig.js +2 -1
- package/defaultTheme.d.ts +4 -0
- package/defaultTheme.js +2 -1
- package/lib/cli/build/deps.js +62 -0
- package/lib/cli/build/index.js +54 -0
- package/lib/cli/build/plugin.js +378 -0
- package/lib/cli/build/utils.js +88 -0
- package/lib/cli/build/watching.js +182 -0
- package/lib/cli/help/index.js +73 -0
- package/lib/cli/index.js +230 -0
- package/lib/cli/init/index.js +63 -0
- package/lib/cli-peer-dependencies.js +28 -7
- package/lib/cli.js +4 -703
- package/lib/corePluginList.js +12 -3
- package/lib/corePlugins.js +2373 -1863
- package/lib/css/preflight.css +10 -8
- package/lib/featureFlags.js +49 -26
- package/lib/index.js +1 -31
- package/lib/lib/cacheInvalidation.js +92 -0
- package/lib/lib/collapseAdjacentRules.js +30 -10
- package/lib/lib/collapseDuplicateDeclarations.js +60 -4
- package/lib/lib/content.js +181 -0
- package/lib/lib/defaultExtractor.js +243 -0
- package/lib/lib/detectNesting.js +21 -10
- package/lib/lib/evaluateTailwindFunctions.js +115 -50
- package/lib/lib/expandApplyAtRules.js +467 -161
- package/lib/lib/expandTailwindAtRules.js +160 -133
- package/lib/lib/findAtConfigPath.js +46 -0
- package/lib/lib/generateRules.js +553 -200
- package/lib/lib/getModuleDependencies.js +88 -37
- package/lib/lib/load-config.js +42 -0
- package/lib/lib/normalizeTailwindDirectives.js +46 -33
- package/lib/lib/offsets.js +306 -0
- package/lib/lib/partitionApplyAtRules.js +58 -0
- package/lib/lib/regex.js +74 -0
- package/lib/lib/remap-bitfield.js +89 -0
- package/lib/lib/resolveDefaultsAtRules.js +98 -58
- package/lib/lib/setupContextUtils.js +773 -321
- package/lib/lib/setupTrackingContext.js +70 -75
- package/lib/lib/sharedState.js +78 -10
- package/lib/lib/substituteScreenAtRules.js +14 -10
- package/lib/oxide/cli/build/deps.js +89 -0
- package/lib/oxide/cli/build/index.js +53 -0
- package/lib/oxide/cli/build/plugin.js +375 -0
- package/lib/oxide/cli/build/utils.js +87 -0
- package/lib/oxide/cli/build/watching.js +179 -0
- package/lib/oxide/cli/help/index.js +72 -0
- package/lib/oxide/cli/index.js +214 -0
- package/lib/oxide/cli/init/index.js +52 -0
- package/lib/oxide/cli.js +5 -0
- package/lib/oxide/postcss-plugin.js +2 -0
- package/lib/plugin.js +98 -0
- package/{nesting → lib/postcss-plugins/nesting}/README.md +2 -2
- package/lib/postcss-plugins/nesting/index.js +21 -0
- package/lib/postcss-plugins/nesting/plugin.js +89 -0
- package/lib/processTailwindFeatures.js +39 -26
- package/lib/public/colors.js +272 -246
- package/lib/public/create-plugin.js +9 -5
- package/lib/public/default-config.js +10 -6
- package/lib/public/default-theme.js +10 -6
- package/lib/public/load-config.js +12 -0
- package/lib/public/resolve-config.js +11 -6
- package/lib/util/applyImportantSelector.js +36 -0
- package/lib/util/bigSign.js +6 -1
- package/lib/util/buildMediaQuery.js +13 -6
- package/lib/util/cloneDeep.js +9 -6
- package/lib/util/cloneNodes.js +23 -3
- package/lib/util/color.js +70 -38
- package/lib/util/colorNames.js +752 -0
- package/lib/util/configurePlugins.js +7 -2
- package/lib/util/createPlugin.js +8 -6
- package/lib/util/createUtilityPlugin.js +16 -16
- package/lib/util/dataTypes.js +173 -108
- package/lib/util/defaults.js +14 -3
- package/lib/util/escapeClassName.js +13 -8
- package/lib/util/escapeCommas.js +7 -2
- package/lib/util/flattenColorPalette.js +11 -12
- package/lib/util/formatVariantSelector.js +228 -151
- package/lib/util/getAllConfigs.js +33 -12
- package/lib/util/hashConfig.js +9 -4
- package/lib/util/isKeyframeRule.js +7 -2
- package/lib/util/isPlainObject.js +7 -2
- package/lib/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +25 -15
- package/lib/util/log.js +27 -13
- package/lib/util/nameClass.js +27 -10
- package/lib/util/negateValue.js +25 -8
- package/lib/util/normalizeConfig.js +139 -65
- package/lib/util/normalizeScreens.js +131 -11
- package/lib/util/parseAnimationValue.js +44 -40
- package/lib/util/parseBoxShadowValue.js +34 -23
- package/lib/util/parseDependency.js +39 -55
- package/lib/util/parseGlob.js +36 -0
- package/lib/util/parseObjectStyles.js +15 -10
- package/lib/util/pluginUtils.js +159 -69
- package/lib/util/prefixSelector.js +30 -12
- package/lib/util/pseudoElements.js +229 -0
- package/lib/util/removeAlphaVariables.js +31 -0
- package/lib/util/resolveConfig.js +97 -75
- package/lib/util/resolveConfigPath.js +30 -12
- package/lib/util/responsive.js +11 -6
- package/lib/util/splitAtTopLevelOnly.js +51 -0
- package/lib/util/tap.js +6 -1
- package/lib/util/toColorValue.js +7 -3
- package/lib/util/toPath.js +26 -3
- package/lib/util/transformThemeValue.js +40 -30
- package/lib/util/validateConfig.js +37 -0
- package/lib/util/validateFormalSyntax.js +26 -0
- package/lib/util/withAlphaVariable.js +27 -15
- package/loadConfig.d.ts +4 -0
- package/loadConfig.js +2 -0
- package/nesting/index.js +2 -12
- package/package.json +66 -57
- package/peers/index.js +75964 -55560
- package/plugin.d.ts +11 -0
- package/plugin.js +2 -1
- package/resolveConfig.d.ts +12 -0
- package/resolveConfig.js +2 -1
- package/scripts/generate-types.js +105 -0
- package/scripts/release-channel.js +18 -0
- package/scripts/release-notes.js +21 -0
- package/scripts/swap-engines.js +40 -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 +444 -0
- package/src/cli/build/utils.js +76 -0
- package/src/cli/build/watching.js +229 -0
- package/src/cli/help/index.js +70 -0
- package/src/cli/index.js +216 -0
- package/src/cli/init/index.js +79 -0
- package/src/cli-peer-dependencies.js +7 -1
- package/src/cli.js +4 -765
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +786 -306
- package/src/css/preflight.css +10 -8
- package/src/featureFlags.js +21 -5
- package/src/index.js +1 -34
- package/src/lib/cacheInvalidation.js +52 -0
- package/src/lib/collapseAdjacentRules.js +21 -2
- package/src/lib/collapseDuplicateDeclarations.js +66 -1
- package/src/lib/content.js +208 -0
- package/src/lib/defaultExtractor.js +217 -0
- package/src/lib/detectNesting.js +9 -1
- package/src/lib/evaluateTailwindFunctions.js +79 -8
- package/src/lib/expandApplyAtRules.js +515 -153
- package/src/lib/expandTailwindAtRules.js +115 -86
- package/src/lib/findAtConfigPath.js +48 -0
- package/src/lib/generateRules.js +545 -147
- package/src/lib/getModuleDependencies.js +70 -30
- package/src/lib/load-config.ts +31 -0
- package/src/lib/normalizeTailwindDirectives.js +7 -1
- package/src/lib/offsets.js +373 -0
- package/src/lib/partitionApplyAtRules.js +52 -0
- package/src/lib/regex.js +74 -0
- package/src/lib/remap-bitfield.js +82 -0
- package/src/lib/resolveDefaultsAtRules.js +59 -17
- package/src/lib/setupContextUtils.js +701 -175
- package/src/lib/setupTrackingContext.js +51 -62
- package/src/lib/sharedState.js +58 -7
- package/src/oxide/cli/build/deps.ts +91 -0
- package/src/oxide/cli/build/index.ts +47 -0
- package/src/oxide/cli/build/plugin.ts +442 -0
- package/src/oxide/cli/build/utils.ts +74 -0
- package/src/oxide/cli/build/watching.ts +225 -0
- package/src/oxide/cli/help/index.ts +69 -0
- package/src/oxide/cli/index.ts +204 -0
- package/src/oxide/cli/init/index.ts +59 -0
- package/src/oxide/cli.ts +1 -0
- package/src/oxide/postcss-plugin.ts +1 -0
- package/src/plugin.js +107 -0
- 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 +12 -2
- package/src/public/colors.js +22 -0
- package/src/public/default-config.js +1 -1
- package/src/public/default-theme.js +2 -2
- package/src/public/load-config.js +2 -0
- package/src/util/applyImportantSelector.js +27 -0
- package/src/util/buildMediaQuery.js +5 -3
- package/src/util/cloneNodes.js +19 -2
- package/src/util/color.js +44 -12
- package/src/util/colorNames.js +150 -0
- package/src/util/dataTypes.js +51 -16
- package/src/util/defaults.js +6 -0
- package/src/util/formatVariantSelector.js +264 -144
- package/src/util/getAllConfigs.js +21 -2
- package/src/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +1 -1
- package/src/util/log.js +11 -7
- package/src/util/nameClass.js +4 -0
- package/src/util/negateValue.js +11 -3
- package/src/util/normalizeConfig.js +57 -5
- package/src/util/normalizeScreens.js +105 -7
- package/src/util/parseBoxShadowValue.js +4 -3
- package/src/util/parseDependency.js +37 -42
- package/src/util/parseGlob.js +24 -0
- package/src/util/pluginUtils.js +123 -24
- package/src/util/prefixSelector.js +30 -10
- package/src/util/pseudoElements.js +170 -0
- package/src/util/removeAlphaVariables.js +24 -0
- package/src/util/resolveConfig.js +74 -26
- package/src/util/resolveConfigPath.js +12 -1
- package/src/util/splitAtTopLevelOnly.js +52 -0
- package/src/util/toPath.js +23 -1
- package/src/util/transformThemeValue.js +13 -3
- package/src/util/validateConfig.js +26 -0
- package/src/util/validateFormalSyntax.js +34 -0
- package/src/util/withAlphaVariable.js +1 -1
- package/stubs/.gitignore +1 -0
- package/stubs/.prettierrc.json +6 -0
- package/stubs/{defaultConfig.stub.js → config.full.js} +206 -166
- package/stubs/postcss.config.js +6 -0
- package/stubs/tailwind.config.cjs +2 -0
- package/stubs/tailwind.config.js +2 -0
- package/stubs/tailwind.config.ts +3 -0
- package/types/config.d.ts +368 -0
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +298 -0
- package/types/generated/corePluginList.d.ts +1 -0
- package/types/generated/default-theme.d.ts +371 -0
- package/types/index.d.ts +7 -0
- package/CHANGELOG.md +0 -1843
- package/lib/constants.js +0 -37
- package/lib/lib/setupWatchingContext.js +0 -288
- package/nesting/plugin.js +0 -41
- package/scripts/install-integrations.js +0 -27
- package/scripts/rebuildFixtures.js +0 -68
- package/src/constants.js +0 -17
- package/src/lib/setupWatchingContext.js +0 -311
- /package/stubs/{simpleConfig.stub.js → config.simple.js} +0 -0
- /package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -0
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _cloneDeep = require("../util/cloneDeep");
|
|
12
|
+
const _configfull = /*#__PURE__*/ _interop_require_default(require("../../stubs/config.full"));
|
|
13
|
+
function _interop_require_default(obj) {
|
|
9
14
|
return obj && obj.__esModule ? obj : {
|
|
10
15
|
default: obj
|
|
11
16
|
};
|
|
12
17
|
}
|
|
13
|
-
|
|
14
|
-
exports.default = _default;
|
|
18
|
+
const _default = (0, _cloneDeep.cloneDeep)(_configfull.default.theme);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _loadconfig = require("../lib/load-config");
|
|
12
|
+
const _default = _loadconfig.loadConfig;
|
|
@@ -2,17 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return resolveConfig;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../util/resolveConfig"));
|
|
12
|
+
const _getAllConfigs = /*#__PURE__*/ _interop_require_default(require("../util/getAllConfigs"));
|
|
13
|
+
function _interop_require_default(obj) {
|
|
9
14
|
return obj && obj.__esModule ? obj : {
|
|
10
15
|
default: obj
|
|
11
16
|
};
|
|
12
17
|
}
|
|
13
18
|
function resolveConfig(...configs) {
|
|
14
|
-
let [, ...defaultConfigs] = (0, _getAllConfigs
|
|
15
|
-
return (0, _resolveConfig
|
|
19
|
+
let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);
|
|
20
|
+
return (0, _resolveConfig.default)([
|
|
16
21
|
...configs,
|
|
17
22
|
...defaultConfigs
|
|
18
23
|
]);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "applyImportantSelector", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return applyImportantSelector;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
|
|
12
|
+
const _pseudoElements = require("./pseudoElements");
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function applyImportantSelector(selector, important) {
|
|
19
|
+
let sel = (0, _postcssselectorparser.default)().astSync(selector);
|
|
20
|
+
sel.each((sel)=>{
|
|
21
|
+
// Wrap with :is if it's not already wrapped
|
|
22
|
+
let isWrapped = sel.nodes[0].type === "pseudo" && sel.nodes[0].value === ":is" && sel.nodes.every((node)=>node.type !== "combinator");
|
|
23
|
+
if (!isWrapped) {
|
|
24
|
+
sel.nodes = [
|
|
25
|
+
_postcssselectorparser.default.pseudo({
|
|
26
|
+
value: ":is",
|
|
27
|
+
nodes: [
|
|
28
|
+
sel.clone()
|
|
29
|
+
]
|
|
30
|
+
})
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
(0, _pseudoElements.movePseudos)(sel);
|
|
34
|
+
});
|
|
35
|
+
return `${important} ${sel.toString()}`;
|
|
36
|
+
}
|
package/lib/util/bigSign.js
CHANGED
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return bigSign;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
6
11
|
function bigSign(bigIntValue) {
|
|
7
12
|
return (bigIntValue > 0n) - (bigIntValue < 0n);
|
|
8
13
|
}
|
|
@@ -2,19 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return buildMediaQuery;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
6
11
|
function buildMediaQuery(screens) {
|
|
7
12
|
screens = Array.isArray(screens) ? screens : [
|
|
8
13
|
screens
|
|
9
14
|
];
|
|
10
|
-
return screens.map((
|
|
15
|
+
return screens.map((screen)=>{
|
|
16
|
+
let values = screen.values.map((screen)=>{
|
|
11
17
|
if (screen.raw !== undefined) {
|
|
12
18
|
return screen.raw;
|
|
13
19
|
}
|
|
14
20
|
return [
|
|
15
21
|
screen.min && `(min-width: ${screen.min})`,
|
|
16
|
-
screen.max && `(max-width: ${screen.max})
|
|
17
|
-
].filter(Boolean).join(
|
|
18
|
-
})
|
|
19
|
-
|
|
22
|
+
screen.max && `(max-width: ${screen.max})`
|
|
23
|
+
].filter(Boolean).join(" and ");
|
|
24
|
+
});
|
|
25
|
+
return screen.not ? `not all and ${values}` : values;
|
|
26
|
+
}).join(", ");
|
|
20
27
|
}
|
package/lib/util/cloneDeep.js
CHANGED
|
@@ -2,18 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "cloneDeep", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return cloneDeep;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
6
11
|
function cloneDeep(value) {
|
|
7
12
|
if (Array.isArray(value)) {
|
|
8
|
-
return value.map((child)=>cloneDeep(child)
|
|
9
|
-
);
|
|
13
|
+
return value.map((child)=>cloneDeep(child));
|
|
10
14
|
}
|
|
11
|
-
if (typeof value ===
|
|
15
|
+
if (typeof value === "object" && value !== null) {
|
|
12
16
|
return Object.fromEntries(Object.entries(value).map(([k, v])=>[
|
|
13
17
|
k,
|
|
14
18
|
cloneDeep(v)
|
|
15
|
-
]
|
|
16
|
-
));
|
|
19
|
+
]));
|
|
17
20
|
}
|
|
18
21
|
return value;
|
|
19
22
|
}
|
package/lib/util/cloneNodes.js
CHANGED
|
@@ -2,12 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
6
|
-
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return cloneNodes;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function cloneNodes(nodes, source = undefined, raws = undefined) {
|
|
7
12
|
return nodes.map((node)=>{
|
|
13
|
+
var _node_raws_tailwind;
|
|
8
14
|
let cloned = node.clone();
|
|
9
|
-
|
|
15
|
+
// We always want override the source map
|
|
16
|
+
// except when explicitly told not to
|
|
17
|
+
let shouldOverwriteSource = ((_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.preserveSource) !== true || !cloned.source;
|
|
18
|
+
if (source !== undefined && shouldOverwriteSource) {
|
|
10
19
|
cloned.source = source;
|
|
20
|
+
if ("walk" in cloned) {
|
|
21
|
+
cloned.walk((child)=>{
|
|
22
|
+
child.source = source;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (raws !== undefined) {
|
|
27
|
+
cloned.raws.tailwind = {
|
|
28
|
+
...cloned.raws.tailwind,
|
|
29
|
+
...raws
|
|
30
|
+
};
|
|
11
31
|
}
|
|
12
32
|
return cloned;
|
|
13
33
|
});
|
package/lib/util/color.js
CHANGED
|
@@ -2,83 +2,115 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
parseColor: function() {
|
|
13
|
+
return parseColor;
|
|
14
|
+
},
|
|
15
|
+
formatColor: function() {
|
|
16
|
+
return formatColor;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _colorNames = /*#__PURE__*/ _interop_require_default(require("./colorNames"));
|
|
20
|
+
function _interop_require_default(obj) {
|
|
9
21
|
return obj && obj.__esModule ? obj : {
|
|
10
22
|
default: obj
|
|
11
23
|
};
|
|
12
24
|
}
|
|
13
25
|
let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
|
|
14
26
|
let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
|
|
15
|
-
let VALUE =
|
|
16
|
-
let SEP =
|
|
17
|
-
let ALPHA_SEP =
|
|
18
|
-
let
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
let VALUE = /(?:\d+|\d*\.\d+)%?/;
|
|
28
|
+
let SEP = /(?:\s*,\s*|\s+)/;
|
|
29
|
+
let ALPHA_SEP = /\s*[,/]\s*/;
|
|
30
|
+
let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)\)/;
|
|
31
|
+
let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
|
|
32
|
+
let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
|
|
33
|
+
function parseColor(value, { loose =false } = {}) {
|
|
34
|
+
var _match_, _match__toString;
|
|
35
|
+
if (typeof value !== "string") {
|
|
21
36
|
return null;
|
|
22
37
|
}
|
|
23
38
|
value = value.trim();
|
|
24
|
-
if (value ===
|
|
39
|
+
if (value === "transparent") {
|
|
25
40
|
return {
|
|
26
|
-
mode:
|
|
41
|
+
mode: "rgb",
|
|
27
42
|
color: [
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
43
|
+
"0",
|
|
44
|
+
"0",
|
|
45
|
+
"0"
|
|
31
46
|
],
|
|
32
|
-
alpha:
|
|
47
|
+
alpha: "0"
|
|
33
48
|
};
|
|
34
49
|
}
|
|
35
|
-
if (value in
|
|
50
|
+
if (value in _colorNames.default) {
|
|
36
51
|
return {
|
|
37
|
-
mode:
|
|
38
|
-
color:
|
|
39
|
-
)
|
|
52
|
+
mode: "rgb",
|
|
53
|
+
color: _colorNames.default[value].map((v)=>v.toString())
|
|
40
54
|
};
|
|
41
55
|
}
|
|
42
56
|
let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[
|
|
43
|
-
|
|
57
|
+
"#",
|
|
44
58
|
r,
|
|
45
59
|
r,
|
|
46
60
|
g,
|
|
47
61
|
g,
|
|
48
62
|
b,
|
|
49
63
|
b,
|
|
50
|
-
a ? a + a :
|
|
51
|
-
].join(
|
|
52
|
-
).match(HEX);
|
|
64
|
+
a ? a + a : ""
|
|
65
|
+
].join("")).match(HEX);
|
|
53
66
|
if (hex !== null) {
|
|
54
67
|
return {
|
|
55
|
-
mode:
|
|
68
|
+
mode: "rgb",
|
|
56
69
|
color: [
|
|
57
70
|
parseInt(hex[1], 16),
|
|
58
71
|
parseInt(hex[2], 16),
|
|
59
72
|
parseInt(hex[3], 16)
|
|
60
|
-
].map((v)=>v.toString()
|
|
61
|
-
),
|
|
73
|
+
].map((v)=>v.toString()),
|
|
62
74
|
alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined
|
|
63
75
|
};
|
|
64
76
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
77
|
+
var _value_match;
|
|
78
|
+
let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);
|
|
79
|
+
if (match === null) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
let color = [
|
|
83
|
+
match[2],
|
|
84
|
+
match[3],
|
|
85
|
+
match[4]
|
|
86
|
+
].filter(Boolean).map((v)=>v.toString());
|
|
87
|
+
// rgba(var(--my-color), 0.1)
|
|
88
|
+
// hsla(var(--my-color), 0.1)
|
|
89
|
+
if (color.length === 2 && color[0].startsWith("var(")) {
|
|
68
90
|
return {
|
|
69
91
|
mode: match[1],
|
|
70
92
|
color: [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
].map((v)=>v.toString()
|
|
75
|
-
),
|
|
76
|
-
alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)
|
|
93
|
+
color[0]
|
|
94
|
+
],
|
|
95
|
+
alpha: color[1]
|
|
77
96
|
};
|
|
78
97
|
}
|
|
79
|
-
|
|
98
|
+
if (!loose && color.length !== 3) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
if (color.length < 3 && !color.some((part)=>/^var\(.*?\)$/.test(part))) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
mode: match[1],
|
|
106
|
+
color,
|
|
107
|
+
alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)
|
|
108
|
+
};
|
|
80
109
|
}
|
|
81
110
|
function formatColor({ mode , color , alpha }) {
|
|
82
111
|
let hasAlpha = alpha !== undefined;
|
|
83
|
-
|
|
112
|
+
if (mode === "rgba" || mode === "hsla") {
|
|
113
|
+
return `${mode}(${color.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`;
|
|
114
|
+
}
|
|
115
|
+
return `${mode}(${color.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`;
|
|
84
116
|
}
|