UNPKG

@mapcss/core

Version:

Tiny, composable Atomic CSS engine

61 lines (60 loc) 2.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.minifySelector = void 0; const postcss_selector_parser_js_1 = __importDefault(require("../../deps/esm.sh/postcss-selector-parser.js")); const postcss_value_parser_js_1 = __importDefault(require("../../deps/esm.sh/postcss-value-parser.js")); const selectorProcessor = (0, postcss_selector_parser_js_1.default)((selectors) => { selectors.walk((selector) => { selector.spaces = { before: "", after: "" }; }); }); function minifySelector(value) { return selectorProcessor.processSync(value); } exports.minifySelector = minifySelector; function minifyValue(value) { const parsed = (0, postcss_value_parser_js_1.default)(value.trim()); parsed.walk((node) => { if (node.type === "div" || node.type === "function") { node.before = ""; node.after = ""; } if (node.type === "space") node.value = " "; }); return parsed.toString(); } function plugin() { return { postcssPlugin: "postcss-minify", AtRule: (atrule) => { atrule.raws = { before: "", after: "", afterName: " " }; atrule.params = minifyValue(atrule.params); }, Comment: (comment) => { if (comment.text[0] === "!") { comment.raws.before = ""; comment.raws.after = ""; } else { comment.remove(); } }, Declaration: (decl) => { decl.raws = { before: "", between: ":", value: decl.raws.value }; decl.value = minifyValue(decl.value); }, Rule: (rule) => { rule.raws = { before: "", between: "", after: "", semicolon: false }; rule.selector = minifySelector(rule.selector); }, OnceExit: (css) => { css.raws.after = ""; }, }; } plugin.postcss = true; exports.default = plugin;