astro-ghostcms/.pnpm-store/v3/files/e3/58fac11612af3745605a25edc61...

37 lines
1.4 KiB
Plaintext

import { defaultSplitRE, isValidSelector } from '@unocss/core';
const sourceMapRE = /\/\/#\s*sourceMappingURL=.*\n?/g;
function removeSourceMap(code) {
if (code.includes("sourceMappingURL="))
return code.replace(sourceMapRE, "");
return code;
}
const quotedArbitraryValuesRE = /(?:[\w&:[\]-]|\[\S+=\S+\])+\[\\?['"]?\S+?['"]\]\]?[\w:-]*/g;
const arbitraryPropertyRE = /\[(\\\W|[\w-])+:[^\s:]*?("\S+?"|'\S+?'|`\S+?`|[^\s:]+?)[^\s:]*?\)?\]/g;
const arbitraryPropertyCandidateRE = /^\[(\\\W|[\w-])+:['"]?\S+?['"]?\]$/;
function splitCodeWithArbitraryVariants(code) {
const result = [];
for (const match of code.matchAll(arbitraryPropertyRE)) {
if (match.index !== 0 && !code[match.index - 1]?.match(/^[\s'"`]/))
continue;
result.push(match[0]);
}
for (const match of code.matchAll(quotedArbitraryValuesRE))
result.push(match[0]);
code.split(defaultSplitRE).forEach((match) => {
if (isValidSelector(match) && !arbitraryPropertyCandidateRE.test(match))
result.push(match);
});
return result;
}
const extractorArbitraryVariants = {
name: "@unocss/extractor-arbitrary-variants",
order: 0,
extract({ code }) {
return splitCodeWithArbitraryVariants(removeSourceMap(code));
}
};
export { arbitraryPropertyRE, extractorArbitraryVariants as default, extractorArbitraryVariants, quotedArbitraryValuesRE, splitCodeWithArbitraryVariants };