UNPKG

@maizzle/framework

Version:

Maizzle is a framework that helps you quickly build HTML emails with Tailwind CSS.

49 lines (48 loc) 1.48 kB
//#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