unnestcss
Version:
Parse nested css
29 lines • 877 B
JavaScript
export const nestSelector = (sl, parent) => {
if (sl.includes("&")) {
return sl.replace(/&/g, parent || ":scope");
}
return parent ? parent + " " + sl : sl;
};
export const combineSelectors = (sl, parent) => {
if (!parent) {
return sl.map((s0) => nestSelector(s0));
}
return sl.map((s1) => parent.map((p1) => nestSelector(s1, p1))).flat();
};
export const combineAtRules = (...ats) => {
const record = {};
ats.forEach(({ name, params }) => {
record[name] || (record[name] = []);
record[name].push(params);
});
return Object.keys(record).map((name) => {
const value = record[name];
if (name === "layer") {
return { name, params: value.join(".") };
}
return {
name, params: value.join(" and ")
};
});
};
//# sourceMappingURL=combine.js.map