From a0579f91bbdf0de62b59df381d97a008bb98df57 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Mon, 30 Oct 2023 16:45:38 +0800 Subject: update/upgrade --- node_modules/postcss-unnot/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 node_modules/postcss-unnot/index.js (limited to 'node_modules/postcss-unnot/index.js') diff --git a/node_modules/postcss-unnot/index.js b/node_modules/postcss-unnot/index.js new file mode 100644 index 00000000..e7a160fd --- /dev/null +++ b/node_modules/postcss-unnot/index.js @@ -0,0 +1,34 @@ +var postcss = require('postcss'); +var parser = require('postcss-selector-parser'); + +module.exports = postcss.plugin('postcss-unnot', function (opts) { + var method = opts && /^(move|pseudo|warn)$/.test(opts.method) ? opts.method : 'remove'; + + return function (css, result) { + css.walkRules(function (rule) { + var cloneSelectors = []; + + if (rule.selector.indexOf(':not') !== -1) { + var parsedSelector = parser(function (selectors) { + selectors.each(function (selector) { + selector.eachPseudo(function (pseudo) { + if (pseudo.value === ':not') { + if (method === 'move') cloneSelectors.push(String(selector)); + + if (method === 'remove' || method === 'move') return selector.removeSelf() && false; + else if (method === 'pseudo') pseudo.removeSelf(); + else if (method === 'warn') result.warn(':not detected', { node: rule }); + } + }); + }); + }).process(rule.selector).result; + + if (parsedSelector !== rule.selector) { + if (cloneSelectors.length) rule.parent.insertBefore(rule, rule.clone({ selector: String(cloneSelectors).trim() })); + + rule.selector = parsedSelector; + } + } + }); + }; +}); -- cgit v1.2.3