Skip to content

Commit 87bb058

Browse files
committed
Eliminate lookbehind assertions in expand apply at rules
1 parent 1a26b63 commit 87bb058

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/lib/expandApplyAtRules.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ function extractClasses(node) {
3434
return Object.assign(classes, { groups: normalizedGroups })
3535
}
3636

37+
let selectorExtractor = parser((root) => root.nodes.map((node) => node.toString()))
38+
39+
/**
40+
* @param {string} ruleSelectors
41+
*/
42+
function extractSelectors(ruleSelectors) {
43+
return selectorExtractor.transformSync(ruleSelectors)
44+
}
45+
3746
function extractBaseCandidates(candidates, separator) {
3847
let baseClasses = new Set()
3948

@@ -295,10 +304,9 @@ function processApply(root, context, localCache) {
295304
function replaceSelector(selector, utilitySelectors, candidate) {
296305
let needle = `.${escapeClassName(candidate)}`
297306
let needles = [...new Set([needle, needle.replace(/\\2c /g, '\\,')])]
298-
let utilitySelectorsList = utilitySelectors.split(/\s*(?<!\\)\,(?![^(]*\))\s*/g)
307+
let utilitySelectorsList = extractSelectors(utilitySelectors)
299308

300-
return selector
301-
.split(/\s*(?<!\\)\,(?![^(]*\))\s*/g)
309+
return extractSelectors(selector)
302310
.map((s) => {
303311
let replaced = []
304312

0 commit comments

Comments
 (0)