28 lines
1.2 KiB
JavaScript
28 lines
1.2 KiB
JavaScript
const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
|
|
const isCSSVariableName =
|
|
/*@__PURE__*/ checkStringStartsWith("--");
|
|
const startsAsVariableToken =
|
|
/*@__PURE__*/ checkStringStartsWith("var(--");
|
|
const isCSSVariableToken = (value) => {
|
|
const startsWithToken = startsAsVariableToken(value);
|
|
if (!startsWithToken)
|
|
return false;
|
|
// Ensure any comments are stripped from the value as this can harm performance of the regex.
|
|
return singleCssVariableRegex.test(value.split("/*")[0].trim());
|
|
};
|
|
const singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
|
|
/**
|
|
* Check if a value contains a CSS variable anywhere (e.g. inside calc()).
|
|
* Unlike isCSSVariableToken which checks if the value IS a var() token,
|
|
* this checks if the value CONTAINS var() somewhere in the string.
|
|
*/
|
|
function containsCSSVariable(value) {
|
|
if (typeof value !== "string")
|
|
return false;
|
|
// Strip comments to avoid false positives
|
|
return value.split("/*")[0].includes("var(--");
|
|
}
|
|
|
|
export { containsCSSVariable, isCSSVariableName, isCSSVariableToken };
|
|
//# sourceMappingURL=is-css-variable.mjs.map
|