@maizzle/framework
Version:
Maizzle is a framework that helps you quickly build HTML emails with Tailwind CSS.
49 lines (48 loc) • 1.48 kB
JavaScript
//#region src/plugins/postcss/pruneVars.ts
const PLUGIN_NAME = "postcss-prune-var";
const VAR_RE = /var\(\s*(--[^ ,);]+)/g;
var pruneVars_default = () => {
return {
postcssPlugin: PLUGIN_NAME,
Once(root) {
const records = /* @__PURE__ */ new Map();
const usedVars = /* @__PURE__ */ new Set();
const getRecord = (name) => {
let r = records.get(name);
if (!r) {
r = {
uses: 0,
declarations: /* @__PURE__ */ new Set(),
dependencies: /* @__PURE__ */ new Set()
};
records.set(name, r);
}
return r;
};
const registerUse = (name, seen = /* @__PURE__ */ new Set()) => {
const r = getRecord(name);
r.uses++;
seen.add(name);
for (const dep of r.dependencies) if (!seen.has(dep)) registerUse(dep, seen);
};
root.walkDecls((decl) => {
const isVar = decl.prop.startsWith("--");
if (isVar) getRecord(decl.prop).declarations.add(decl);
if (!decl.value.includes("var(")) return;
let m;
VAR_RE.lastIndex = 0;
while (m = VAR_RE.exec(decl.value)) {
const ref = m[1].trim();
if (isVar) getRecord(decl.prop).dependencies.add(ref);
else usedVars.add(ref);
}
});
for (const v of usedVars) registerUse(v);
for (const { uses, declarations } of records.values()) if (uses === 0) for (const decl of declarations) decl.remove();
}
};
};
const postcss = true;
//#endregion
export { pruneVars_default as default, postcss };
//# sourceMappingURL=pruneVars.js.map