2 lines
6.1 KiB
JavaScript
2 lines
6.1 KiB
JavaScript
|
import e from"postcss-selector-parser";import{selectorSpecificity as o}from"@csstools/selector-specificity";function s(o,s){return e.isPseudoElement(o)?n.pseudoElement:n[s]}const n={universal:0,tag:1,pseudoElement:2,id:3,class:4,attribute:5,pseudo:6,selector:7,string:8,root:9,comment:10};function t(o,n,t,d){return o.flatMap((o=>{if(-1===o.indexOf(":-csstools-matches")&&-1===o.toLowerCase().indexOf(":is"))return o;const r=e().astSync(o);return r.walkPseudos((o=>{if(":is"===o.value.toLowerCase()&&o.nodes&&o.nodes.length&&"selector"===o.nodes[0].type&&0===o.nodes[0].nodes.length)return o.value=":not",void o.nodes[0].append(e.universal());if(":-csstools-matches"===o.value)if(!o.nodes||o.nodes.length){if(o.walkPseudos((o=>{if(e.isPseudoElement(o)){let e=o.value;if(e.startsWith("::-csstools-invalid-"))return;for(;e.startsWith(":");)e=e.slice(1);o.value=`::-csstools-invalid-${e}`,d()}})),1===o.nodes.length&&"selector"===o.nodes[0].type){if(1===o.nodes[0].nodes.length)return void o.replaceWith(o.nodes[0].nodes[0]);if(!o.nodes[0].some((e=>"combinator"===e.type)))return void o.replaceWith(...o.nodes[0].nodes)}1!==r.nodes.length||"selector"!==r.nodes[0].type||1!==r.nodes[0].nodes.length||r.nodes[0].nodes[0]!==o?function(e){return!(!e||!e.nodes||"selector"!==e.type||3!==e.nodes.length||!e.nodes[0]||"pseudo"!==e.nodes[0].type||":-csstools-matches"!==e.nodes[0].value||!e.nodes[1]||"combinator"!==e.nodes[1].type||"+"!==e.nodes[1].value||!e.nodes[2]||"pseudo"!==e.nodes[2].type||":-csstools-matches"!==e.nodes[2].value||!e.nodes[0].nodes||1!==e.nodes[0].nodes.length||"selector"!==e.nodes[0].nodes[0].type||!e.nodes[0].nodes[0].nodes||3!==e.nodes[0].nodes[0].nodes.length||!e.nodes[0].nodes[0].nodes||"combinator"!==e.nodes[0].nodes[0].nodes[1].type||">"!==e.nodes[0].nodes[0].nodes[1].value||!e.nodes[2].nodes||1!==e.nodes[2].nodes.length||"selector"!==e.nodes[2].nodes[0].type||!e.nodes[2].nodes[0].nodes||3!==e.nodes[2].nodes[0].nodes.length||!e.nodes[2].nodes[0].nodes||"combinator"!==e.nodes[2].nodes[0].nodes[1].type||">"!==e.nodes[2].nodes[0].nodes[1].value||(e.nodes[0].nodes[0].insertAfter(e.nodes[0].nodes[0].nodes[0],e.nodes[2].nodes[0].nodes[0].clone()),e.nodes[2].nodes[0].nodes[1].remove(),e.nodes[2].nodes[0].nodes[0].remove(),e.nodes[0].replaceWith(e.nodes[0].nodes[0]),e.nodes[2].replaceWith(e.nodes[2].nodes[0]),0))}(o.parent)||function(o){if(!o||!o.nodes)return!1;if("selector"!==o.type)return!1;if(2!==o.nodes.length)return!1;let s,n;return o.nodes[0]&&"pseudo"===o.nodes[0].type&&":-csstools-matches"===o.nodes[0].value?(s=0,n=1):o.nodes[1]&&"pseudo"===o.nodes[1].type&&":-csstools-matches"===o.nodes[1].value&&(s=1,n=0),!(!s||!o.nodes[n]||"selector"===o.nodes[n].type&&o.nodes[n].some((o=>"combinator"===o.type||e.isPseudoElement(o)))||(o.nodes[s].append(o.nodes[n].clone()),o.nodes[s].replaceWith(...o.nodes[s].nodes),o.nodes[n].remove(),0))}(o.parent)||("warning"===n.onComplexSelector&&t(),o.value=":is"):o.replaceWith(...o.nodes[0].nodes)}else o.remove()})),r.walk((e=>{"selector"===e.type&&"nodes"in e&&1===e.nodes.length&&"selector"===e.nodes[0].type&&e.replaceWith(e.nodes[0])})),r.walk((o=>{"nodes"in o&&function(o){if(!o||!o.nodes)return;const n=[];let t=[];for(let s=0;s<o.nodes.length;s++)"combinator"!==o.nodes[s].type?e.isPseudoElement(o.nodes[s])?(n.push(t),t=[o.nodes[s]]):t.push(o.nodes[s]):(n.push(t),n.push([o.nodes[s]]),t=[]);n.push(t);const d=[];for(let e=0;e<n.length;e++){const o=n[e];o.sort(((e,o)=>"selector"===e.type&&"selector"===o.type&&e.nodes.length&&o.nodes.length?s(e.nodes[0],e.nodes[0].type)-s(o.nodes[0],o.nodes[0].type):"selector"===e.type&&e.nodes.length?s(e.nodes[0],e.nodes[0].type)-s(o,o.type):"selector"===o.type&&o.nodes.length?s(e,e.type)-s(o.nodes[0],o.nodes[0].type):s(e,e.type)-s(o,o.type)));for(let e=0;e<o.length;e++)d.push(o[e])}for(let e=d.length-1;e>=0;e--)d[e].remove(),o.prepend(d[e])}(o)})),r.toString()})).filter((e=>!!e))}function d(s,n,t=0){const r=":not(#"+n.specificityMatchingName+")",l=":not(."+n.specificityMatchingName+")",c=":not("+n.specificityMatchingName+")";return s.flatMap((s=>{if(-1===s.toLowerC
|