From ccc4522a0cbf0b56a32fa8c92075618a49c09342 Mon Sep 17 00:00:00 2001 From: CGQAQ Date: Mon, 16 Jan 2023 14:41:43 +0800 Subject: [PATCH 1/3] optimize(postcss-cascade-layers): shorter result --- .../src/adjust-selector-specificity.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/postcss-cascade-layers/src/adjust-selector-specificity.ts b/plugins/postcss-cascade-layers/src/adjust-selector-specificity.ts index 979e9df63..1a247c77c 100644 --- a/plugins/postcss-cascade-layers/src/adjust-selector-specificity.ts +++ b/plugins/postcss-cascade-layers/src/adjust-selector-specificity.ts @@ -25,10 +25,15 @@ function generateNot(specificity: number) { return ''; } - let list = ''; - for (let i = 0; i < specificity; i++) { - list += ':not(#\\#)'; // something short but still very uncommon + if (specificity === 1) { + return ':not(#\\#)'; } + let list = ':not(#\\#)'; + for (let i = 0; i < specificity - 2; i++) { + list += ':not(_)'; // something short but still very uncommon + } + list += ':not(#\\#)'; + return list; } From c91c15c972f8df754974debda099005c219d1111 Mon Sep 17 00:00:00 2001 From: CGQAQ Date: Mon, 16 Jan 2023 14:42:13 +0800 Subject: [PATCH 2/3] chore(postcss-cascade-layers): run npm build --- plugins/postcss-cascade-layers/dist/index.cjs | 2 +- plugins/postcss-cascade-layers/dist/index.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/postcss-cascade-layers/dist/index.cjs b/plugins/postcss-cascade-layers/dist/index.cjs index 17560b752..7204b1cd2 100644 --- a/plugins/postcss-cascade-layers/dist/index.cjs +++ b/plugins/postcss-cascade-layers/dist/index.cjs @@ -1 +1 @@ -"use strict";var e=require("postcss-selector-parser"),r=require("@csstools/selector-specificity");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);const s="csstools-invalid-layer",n="csstools-layer-with-selector-rules",o="6efdb677-bb05-44e5-840f-29d2175862fd",l="b147acf6-11a6-4338-a4d0-80aef4cd1a2f",i=["media","supports"],u=["keyframes"],p=new Set(["layer","supports","media","container","scope"]);function y(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!p.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class m{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-${o}`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-${l}`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(y(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e{this.layerOrder.set(e[0],r)}))}}function c(e,r){const a=t.default().astSync(e),s=t.default().astSync(function(e){if(0===e)return"";let r="";for(let a=0;a{if(r(e))return a=!0,!1})),a}function f(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function h(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(y(r))return r;r=r.parent}else r=r.parent;return null}function w(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...i].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function g(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function P(e,r,{result:a,options:t}){e.walkAtRules((e=>{if(!y(e))return;const s=r.getLayerParams(e),n=s.join(".");r.layerOrder.has(n)||(t.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(i.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith(l)&&!e.params.endsWith(o)&&e.warn(a,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(n)||r.layerParamsParsed.set(n,[n]),r.layerNameParts.has(n)||r.layerNameParts.set(n,[...s]),r.getLayerNameList(n).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const L=e=>{const a=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},e);return{postcssPlugin:"postcss-cascade-layers",OnceExit(e,{result:o}){a.onRevertLayerKeyword&&e.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(o,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),a.onImportLayerRule&&e.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(o,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&u.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),w(r)}))}(e);const l=new m;if(function(e,r){e.walkAtRules((e=>{if(!y(e))return;if(e.params){const a=[];let n=!1;if(t.default().astSync(e.params).each((e=>{const t=[];e.walk((e=>{switch(e.type){case"class":case"tag":t.push(e.value);break;default:n=!0}})),n||(a.push(t.join(".")),r.addLayerNameParts(t))})),r.addLayerParams(e.params,a),e.nodes&&a.length>1&&(n=!0),n)return void(e.name=s);if(!e.nodes||0===e.nodes.length){if(a.length<=1)return;return a.slice(0,-1).forEach((a=>{r.addLayerParams(a,a),e.cloneBefore({params:a})})),r.addLayerParams(a[a.length-1],a[a.length-1]),void(e.params=a[a.length-1])}}e.params||(e.raws.afterName=" ",e.params=r.createAnonymousLayerName());const a=f(e,(e=>y(e))),n=d(e,(r=>{if("rule"===r.type)return h(r)===e}));if(a&&n){const a=r.createImplicitLayerName(e.params),t=e.clone({params:a});t.walkAtRules((e=>{y(e)&&e.remove()})),e.walk((r=>{"atrule"===r.type&&y(r)||"atrule"===r.type&&i.includes(r.name.toLowerCase())||h(r)===e&&r.remove()})),e.append(t),w(e),g(e)}}))}(e,l),P(e,l,{result:o,options:a}),!l.layerCount)return void e.walkAtRules(s,(e=>{e.name="layer"}));let p=0;for(e.walkRules((e=>{e.selectors.forEach((e=>{const a=r.selectorSpecificity(t.default().astSync(e));p=Math.max(p,a.a+1)}))})),e.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase())||h(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>c(e,l.layerCount*p))))})),l.sortLayerNames(),function(e,r){for(;f(e,(e=>e.nodes&&f(e,(e=>y(e)))));){let a=!1;if(e.walkAtRules((t=>{if(y(t)&&t.parent!==e){if("atrule"===t.parent.type&&y(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),w(e),void g(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),w(e),void g(e)}a=!0}})),a)break}}(e,l),function(e,r){e.walkAtRules((e=>{if(!y(e))return;const r=e.clone(),a=e.clone();r.walkAtRules((e=>{if(u.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),w(r),void g(r)}if(d(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),w(r),g(r)})),a.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),w(r),g(r)})),a.walkAtRules((e=>{if(i.includes(e.name.toLowerCase()))return w(e),void g(e)})),r.name=n,e.replaceWith(r,a),0===r.nodes.length&&r.remove(),0===a.nodes.length&&a.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules(n,(e=>{e.name="layer"}))}(e,l),e.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase()))return;const r=h(e);if(!r)return;const a=l.getLayerParams(r).join(".");let t=l.layerOrder.get(a)*p;e.some((e=>"decl"===e.type&&e.important))&&(t=l.layerCount-t),e.selectors=e.selectors.map((e=>c(e,t)))}));f(e,(e=>y(e)));)e.walkAtRules((e=>{y(e)&&e.replaceWith(e.nodes)}));e.walkAtRules(s,(e=>{e.name="layer"}))}}};L.postcss=!0,module.exports=L; +"use strict";var e=require("postcss-selector-parser"),r=require("@csstools/selector-specificity");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);const s="csstools-invalid-layer",n="csstools-layer-with-selector-rules",o="6efdb677-bb05-44e5-840f-29d2175862fd",l="b147acf6-11a6-4338-a4d0-80aef4cd1a2f",i=["media","supports"],u=["keyframes"],p=new Set(["layer","supports","media","container","scope"]);function y(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!p.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class m{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-${o}`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-${l}`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(y(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e{this.layerOrder.set(e[0],r)}))}}function c(e,r){const a=t.default().astSync(e),s=t.default().astSync(function(e){if(0===e)return"";if(1===e)return":not(#\\#)";let r=":not(#\\#)";for(let a=0;a{if(r(e))return a=!0,!1})),a}function f(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function h(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(y(r))return r;r=r.parent}else r=r.parent;return null}function w(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...i].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function g(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function P(e,r,{result:a,options:t}){e.walkAtRules((e=>{if(!y(e))return;const s=r.getLayerParams(e),n=s.join(".");r.layerOrder.has(n)||(t.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(i.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith(l)&&!e.params.endsWith(o)&&e.warn(a,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(n)||r.layerParamsParsed.set(n,[n]),r.layerNameParts.has(n)||r.layerNameParts.set(n,[...s]),r.getLayerNameList(n).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const L=e=>{const a=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},e);return{postcssPlugin:"postcss-cascade-layers",OnceExit(e,{result:o}){a.onRevertLayerKeyword&&e.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(o,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),a.onImportLayerRule&&e.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(o,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&u.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),w(r)}))}(e);const l=new m;if(function(e,r){e.walkAtRules((e=>{if(!y(e))return;if(e.params){const a=[];let n=!1;if(t.default().astSync(e.params).each((e=>{const t=[];e.walk((e=>{switch(e.type){case"class":case"tag":t.push(e.value);break;default:n=!0}})),n||(a.push(t.join(".")),r.addLayerNameParts(t))})),r.addLayerParams(e.params,a),e.nodes&&a.length>1&&(n=!0),n)return void(e.name=s);if(!e.nodes||0===e.nodes.length){if(a.length<=1)return;return a.slice(0,-1).forEach((a=>{r.addLayerParams(a,a),e.cloneBefore({params:a})})),r.addLayerParams(a[a.length-1],a[a.length-1]),void(e.params=a[a.length-1])}}e.params||(e.raws.afterName=" ",e.params=r.createAnonymousLayerName());const a=f(e,(e=>y(e))),n=d(e,(r=>{if("rule"===r.type)return h(r)===e}));if(a&&n){const a=r.createImplicitLayerName(e.params),t=e.clone({params:a});t.walkAtRules((e=>{y(e)&&e.remove()})),e.walk((r=>{"atrule"===r.type&&y(r)||"atrule"===r.type&&i.includes(r.name.toLowerCase())||h(r)===e&&r.remove()})),e.append(t),w(e),g(e)}}))}(e,l),P(e,l,{result:o,options:a}),!l.layerCount)return void e.walkAtRules(s,(e=>{e.name="layer"}));let p=0;for(e.walkRules((e=>{e.selectors.forEach((e=>{const a=r.selectorSpecificity(t.default().astSync(e));p=Math.max(p,a.a+1)}))})),e.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase())||h(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>c(e,l.layerCount*p))))})),l.sortLayerNames(),function(e,r){for(;f(e,(e=>e.nodes&&f(e,(e=>y(e)))));){let a=!1;if(e.walkAtRules((t=>{if(y(t)&&t.parent!==e){if("atrule"===t.parent.type&&y(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),w(e),void g(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),w(e),void g(e)}a=!0}})),a)break}}(e,l),function(e,r){e.walkAtRules((e=>{if(!y(e))return;const r=e.clone(),a=e.clone();r.walkAtRules((e=>{if(u.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),w(r),void g(r)}if(d(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),w(r),g(r)})),a.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),w(r),g(r)})),a.walkAtRules((e=>{if(i.includes(e.name.toLowerCase()))return w(e),void g(e)})),r.name=n,e.replaceWith(r,a),0===r.nodes.length&&r.remove(),0===a.nodes.length&&a.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules(n,(e=>{e.name="layer"}))}(e,l),e.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&u.includes(e.parent.name.toLowerCase()))return;const r=h(e);if(!r)return;const a=l.getLayerParams(r).join(".");let t=l.layerOrder.get(a)*p;e.some((e=>"decl"===e.type&&e.important))&&(t=l.layerCount-t),e.selectors=e.selectors.map((e=>c(e,t)))}));f(e,(e=>y(e)));)e.walkAtRules((e=>{y(e)&&e.replaceWith(e.nodes)}));e.walkAtRules(s,(e=>{e.name="layer"}))}}};L.postcss=!0,module.exports=L; diff --git a/plugins/postcss-cascade-layers/dist/index.mjs b/plugins/postcss-cascade-layers/dist/index.mjs index 6b9c68fe6..fa4f3744f 100644 --- a/plugins/postcss-cascade-layers/dist/index.mjs +++ b/plugins/postcss-cascade-layers/dist/index.mjs @@ -1 +1 @@ -import e from"postcss-selector-parser";import{selectorSpecificity as r}from"@csstools/selector-specificity";const a="csstools-invalid-layer",t="csstools-layer-with-selector-rules",s="6efdb677-bb05-44e5-840f-29d2175862fd",n="b147acf6-11a6-4338-a4d0-80aef4cd1a2f",o=["media","supports"],l=["keyframes"],i=new Set(["layer","supports","media","container","scope"]);function u(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!i.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class m{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-${s}`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-${n}`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(u(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e{this.layerOrder.set(e[0],r)}))}}function p(r,a){const t=e().astSync(r),s=e().astSync(function(e){if(0===e)return"";let r="";for(let a=0;a{if(r(e))return a=!0,!1})),a}function c(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function d(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(u(r))return r;r=r.parent}else r=r.parent;return null}function f(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...o].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function h(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function w(e,r,{result:a,options:t}){e.walkAtRules((e=>{if(!u(e))return;const l=r.getLayerParams(e),i=l.join(".");r.layerOrder.has(i)||(t.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(o.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith(n)&&!e.params.endsWith(s)&&e.warn(a,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(i)||r.layerParamsParsed.set(i,[i]),r.layerNameParts.has(i)||r.layerNameParts.set(i,[...l]),r.getLayerNameList(i).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const g=s=>{const n=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},s);return{postcssPlugin:"postcss-cascade-layers",OnceExit(s,{result:i}){n.onRevertLayerKeyword&&s.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(i,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),n.onImportLayerRule&&s.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(i,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&l.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),f(r)}))}(s);const g=new m;if(function(r,t){r.walkAtRules((r=>{if(!u(r))return;if(r.params){const s=[];let n=!1;if(e().astSync(r.params).each((e=>{const r=[];e.walk((e=>{switch(e.type){case"class":case"tag":r.push(e.value);break;default:n=!0}})),n||(s.push(r.join(".")),t.addLayerNameParts(r))})),t.addLayerParams(r.params,s),r.nodes&&s.length>1&&(n=!0),n)return void(r.name=a);if(!r.nodes||0===r.nodes.length){if(s.length<=1)return;return s.slice(0,-1).forEach((e=>{t.addLayerParams(e,e),r.cloneBefore({params:e})})),t.addLayerParams(s[s.length-1],s[s.length-1]),void(r.params=s[s.length-1])}}r.params||(r.raws.afterName=" ",r.params=t.createAnonymousLayerName());const s=c(r,(e=>u(e))),n=y(r,(e=>{if("rule"===e.type)return d(e)===r}));if(s&&n){const e=t.createImplicitLayerName(r.params),a=r.clone({params:e});a.walkAtRules((e=>{u(e)&&e.remove()})),r.walk((e=>{"atrule"===e.type&&u(e)||"atrule"===e.type&&o.includes(e.name.toLowerCase())||d(e)===r&&e.remove()})),r.append(a),f(r),h(r)}}))}(s,g),w(s,g,{result:i,options:n}),!g.layerCount)return void s.walkAtRules(a,(e=>{e.name="layer"}));let P=0;for(s.walkRules((a=>{a.selectors.forEach((a=>{const t=r(e().astSync(a));P=Math.max(P,t.a+1)}))})),s.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase())||d(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>p(e,g.layerCount*P))))})),g.sortLayerNames(),function(e,r){for(;c(e,(e=>e.nodes&&c(e,(e=>u(e)))));){let a=!1;if(e.walkAtRules((t=>{if(u(t)&&t.parent!==e){if("atrule"===t.parent.type&&u(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),f(e),void h(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),f(e),void h(e)}a=!0}})),a)break}}(s,g),function(e,r){e.walkAtRules((e=>{if(!u(e))return;const r=e.clone(),a=e.clone();r.walkAtRules((e=>{if(l.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),f(r),void h(r)}if(y(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),f(r),h(r)})),a.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),f(r),h(r)})),a.walkAtRules((e=>{if(o.includes(e.name.toLowerCase()))return f(e),void h(e)})),r.name=t,e.replaceWith(r,a),0===r.nodes.length&&r.remove(),0===a.nodes.length&&a.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules(t,(e=>{e.name="layer"}))}(s,g),s.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase()))return;const r=d(e);if(!r)return;const a=g.getLayerParams(r).join(".");let t=g.layerOrder.get(a)*P;e.some((e=>"decl"===e.type&&e.important))&&(t=g.layerCount-t),e.selectors=e.selectors.map((e=>p(e,t)))}));c(s,(e=>u(e)));)s.walkAtRules((e=>{u(e)&&e.replaceWith(e.nodes)}));s.walkAtRules(a,(e=>{e.name="layer"}))}}};g.postcss=!0;export{g as default}; +import e from"postcss-selector-parser";import{selectorSpecificity as r}from"@csstools/selector-specificity";const a="csstools-invalid-layer",t="csstools-layer-with-selector-rules",s="6efdb677-bb05-44e5-840f-29d2175862fd",n="b147acf6-11a6-4338-a4d0-80aef4cd1a2f",o=["media","supports"],l=["keyframes"],i=new Set(["layer","supports","media","container","scope"]);function u(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!i.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class m{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-${s}`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-${n}`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(u(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e{this.layerOrder.set(e[0],r)}))}}function p(r,a){const t=e().astSync(r),s=e().astSync(function(e){if(0===e)return"";if(1===e)return":not(#\\#)";let r=":not(#\\#)";for(let a=0;a{if(r(e))return a=!0,!1})),a}function c(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function d(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(u(r))return r;r=r.parent}else r=r.parent;return null}function f(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...o].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function h(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function w(e,r,{result:a,options:t}){e.walkAtRules((e=>{if(!u(e))return;const l=r.getLayerParams(e),i=l.join(".");r.layerOrder.has(i)||(t.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(o.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith(n)&&!e.params.endsWith(s)&&e.warn(a,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(i)||r.layerParamsParsed.set(i,[i]),r.layerNameParts.has(i)||r.layerNameParts.set(i,[...l]),r.getLayerNameList(i).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const g=s=>{const n=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},s);return{postcssPlugin:"postcss-cascade-layers",OnceExit(s,{result:i}){n.onRevertLayerKeyword&&s.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(i,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),n.onImportLayerRule&&s.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(i,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&l.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),f(r)}))}(s);const g=new m;if(function(r,t){r.walkAtRules((r=>{if(!u(r))return;if(r.params){const s=[];let n=!1;if(e().astSync(r.params).each((e=>{const r=[];e.walk((e=>{switch(e.type){case"class":case"tag":r.push(e.value);break;default:n=!0}})),n||(s.push(r.join(".")),t.addLayerNameParts(r))})),t.addLayerParams(r.params,s),r.nodes&&s.length>1&&(n=!0),n)return void(r.name=a);if(!r.nodes||0===r.nodes.length){if(s.length<=1)return;return s.slice(0,-1).forEach((e=>{t.addLayerParams(e,e),r.cloneBefore({params:e})})),t.addLayerParams(s[s.length-1],s[s.length-1]),void(r.params=s[s.length-1])}}r.params||(r.raws.afterName=" ",r.params=t.createAnonymousLayerName());const s=c(r,(e=>u(e))),n=y(r,(e=>{if("rule"===e.type)return d(e)===r}));if(s&&n){const e=t.createImplicitLayerName(r.params),a=r.clone({params:e});a.walkAtRules((e=>{u(e)&&e.remove()})),r.walk((e=>{"atrule"===e.type&&u(e)||"atrule"===e.type&&o.includes(e.name.toLowerCase())||d(e)===r&&e.remove()})),r.append(a),f(r),h(r)}}))}(s,g),w(s,g,{result:i,options:n}),!g.layerCount)return void s.walkAtRules(a,(e=>{e.name="layer"}));let P=0;for(s.walkRules((a=>{a.selectors.forEach((a=>{const t=r(e().astSync(a));P=Math.max(P,t.a+1)}))})),s.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase())||d(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>p(e,g.layerCount*P))))})),g.sortLayerNames(),function(e,r){for(;c(e,(e=>e.nodes&&c(e,(e=>u(e)))));){let a=!1;if(e.walkAtRules((t=>{if(u(t)&&t.parent!==e){if("atrule"===t.parent.type&&u(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),f(e),void h(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),f(e),void h(e)}a=!0}})),a)break}}(s,g),function(e,r){e.walkAtRules((e=>{if(!u(e))return;const r=e.clone(),a=e.clone();r.walkAtRules((e=>{if(l.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),f(r),void h(r)}if(y(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),f(r),h(r)})),a.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),f(r),h(r)})),a.walkAtRules((e=>{if(o.includes(e.name.toLowerCase()))return f(e),void h(e)})),r.name=t,e.replaceWith(r,a),0===r.nodes.length&&r.remove(),0===a.nodes.length&&a.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules(t,(e=>{e.name="layer"}))}(s,g),s.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&l.includes(e.parent.name.toLowerCase()))return;const r=d(e);if(!r)return;const a=g.getLayerParams(r).join(".");let t=g.layerOrder.get(a)*P;e.some((e=>"decl"===e.type&&e.important))&&(t=g.layerCount-t),e.selectors=e.selectors.map((e=>p(e,t)))}));c(s,(e=>u(e)));)s.walkAtRules((e=>{u(e)&&e.replaceWith(e.nodes)}));s.walkAtRules(a,(e=>{e.name="layer"}))}}};g.postcss=!0;export{g as default}; From 90f3ab3a9e9001c5721bb6c26cb128a887dffa5b Mon Sep 17 00:00:00 2001 From: CGQAQ Date: Mon, 16 Jan 2023 14:47:18 +0800 Subject: [PATCH 3/3] chore(postcss-cascade-layers): update test cases --- .../test/anon-layer.expect.css | 4 ++-- .../postcss-cascade-layers/test/atrules.expect.css | 4 ++-- .../postcss-cascade-layers/test/basic.expect.css | 6 +++--- .../test/container-scope--reference.expect.css | 10 +++++----- .../test/container-scope.expect.css | 10 +++++----- .../test/nested-case-insensitive.expect.css | 12 ++++++------ .../test/nested-complex.expect.css | 14 +++++++------- .../postcss-cascade-layers/test/nested.expect.css | 14 +++++++------- .../pre-defined-order-for-nested-layer.expect.css | 2 +- .../test/specificity-buckets-a.expect.css | 2 +- .../test/specificity-buckets-b.expect.css | 10 +++++----- .../test/warnings.with-postcss-import.expect.css | 6 +++--- 12 files changed, 47 insertions(+), 47 deletions(-) diff --git a/plugins/postcss-cascade-layers/test/anon-layer.expect.css b/plugins/postcss-cascade-layers/test/anon-layer.expect.css index b842cab64..9c72591e5 100644 --- a/plugins/postcss-cascade-layers/test/anon-layer.expect.css +++ b/plugins/postcss-cascade-layers/test/anon-layer.expect.css @@ -11,10 +11,10 @@ target:not(#\#):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(#\#) { color: green; } -target:not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(#\#) { color: purple; } diff --git a/plugins/postcss-cascade-layers/test/atrules.expect.css b/plugins/postcss-cascade-layers/test/atrules.expect.css index 75773c54e..918a48910 100644 --- a/plugins/postcss-cascade-layers/test/atrules.expect.css +++ b/plugins/postcss-cascade-layers/test/atrules.expect.css @@ -49,7 +49,7 @@ } } -#target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +#target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { animation: anim 1s paused; } @@ -57,7 +57,7 @@ from { background-color: green; } } -#target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::before { +#target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#)::before { content: counter(dont-care, custom-counter-style); } diff --git a/plugins/postcss-cascade-layers/test/basic.expect.css b/plugins/postcss-cascade-layers/test/basic.expect.css index 55fd6d09f..994e0feb4 100644 --- a/plugins/postcss-cascade-layers/test/basic.expect.css +++ b/plugins/postcss-cascade-layers/test/basic.expect.css @@ -3,14 +3,14 @@ color: red; } -#foo:not(#\#):not(#\#):not(#\#) #bar target::before:hover { +#foo:not(#\#):not(_):not(#\#) #bar target::before:hover { color: green; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: purple; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before { +target:not(#\#):not(_):not(_):not(_):not(_):not(#\#):before { color: pink; } diff --git a/plugins/postcss-cascade-layers/test/container-scope--reference.expect.css b/plugins/postcss-cascade-layers/test/container-scope--reference.expect.css index 59c0f9e2e..cf2703a99 100644 --- a/plugins/postcss-cascade-layers/test/container-scope--reference.expect.css +++ b/plugins/postcss-cascade-layers/test/container-scope--reference.expect.css @@ -12,22 +12,22 @@ color: red; } -#foo:not(#\#):not(#\#):not(#\#) #bar target::before:hover { +#foo:not(#\#):not(_):not(#\#) #bar target::before:hover { color: green; } -#target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +#target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: orange; } -#target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +#target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: purple; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#):before { color: pink; } diff --git a/plugins/postcss-cascade-layers/test/container-scope.expect.css b/plugins/postcss-cascade-layers/test/container-scope.expect.css index e91580156..83b5adacd 100644 --- a/plugins/postcss-cascade-layers/test/container-scope.expect.css +++ b/plugins/postcss-cascade-layers/test/container-scope.expect.css @@ -18,25 +18,25 @@ } @container (min-width: 700px) { - #foo:not(#\#):not(#\#):not(#\#) #bar target::before:hover { + #foo:not(#\#):not(_):not(#\#) #bar target::before:hover { color: green; } } -#target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +#target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: orange; } @scope (.media) to (.content) { - #target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + #target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: purple; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#):before { color: pink; } diff --git a/plugins/postcss-cascade-layers/test/nested-case-insensitive.expect.css b/plugins/postcss-cascade-layers/test/nested-case-insensitive.expect.css index 479aaaf1e..a028d2a97 100644 --- a/plugins/postcss-cascade-layers/test/nested-case-insensitive.expect.css +++ b/plugins/postcss-cascade-layers/test/nested-case-insensitive.expect.css @@ -25,31 +25,31 @@ i:not(#\#) { color: red; } -target:not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } @mediA (prefers-color-scheme: dark) { - h1:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + h1:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: red; background: black; } } @mediA (prefers-color-scheme: dark) { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: lime; } } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: red; } diff --git a/plugins/postcss-cascade-layers/test/nested-complex.expect.css b/plugins/postcss-cascade-layers/test/nested-complex.expect.css index c58fac034..e9dda00eb 100644 --- a/plugins/postcss-cascade-layers/test/nested-complex.expect.css +++ b/plugins/postcss-cascade-layers/test/nested-complex.expect.css @@ -22,13 +22,13 @@ } @media screen { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { layered: no; order: 3; } @container (min-width: 701px) { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { layered: no; order: 3.1; } @@ -36,12 +36,12 @@ } @media screen { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(#\#) { order: 6; } @media screen { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(#\#) { order: 7; } } @@ -50,12 +50,12 @@ @media screen { @media screen { - target:not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(#\#) { order: 8; } @media screen { - target:not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(#\#) { order: 9; } } @@ -75,7 +75,7 @@ } @media screen { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { layered: no; order: 5; } diff --git a/plugins/postcss-cascade-layers/test/nested.expect.css b/plugins/postcss-cascade-layers/test/nested.expect.css index fa78ccfa3..0f13bfc17 100644 --- a/plugins/postcss-cascade-layers/test/nested.expect.css +++ b/plugins/postcss-cascade-layers/test/nested.expect.css @@ -35,35 +35,35 @@ i:not(#\#) { color: red; } -target:not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } -h1:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +h1:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: pink; } @media (prefers-color-scheme: dark) { - h2:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + h2:not(#\#):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: red; background: black; } } @media (prefers-color-scheme: dark) { - target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { + target:not(#\#):not(_):not(_):not(_):not(_):not(#\#) { color: lime; } } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: yellow; } -target:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +target:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { color: red; } diff --git a/plugins/postcss-cascade-layers/test/pre-defined-order-for-nested-layer.expect.css b/plugins/postcss-cascade-layers/test/pre-defined-order-for-nested-layer.expect.css index a4cf7996b..a98e180f2 100644 --- a/plugins/postcss-cascade-layers/test/pre-defined-order-for-nested-layer.expect.css +++ b/plugins/postcss-cascade-layers/test/pre-defined-order-for-nested-layer.expect.css @@ -14,7 +14,7 @@ order: 1; } -.test:not(#\#):not(#\#):not(#\#):not(#\#) { +.test:not(#\#):not(_):not(_):not(#\#) { /* Most specific */ order: 0; } diff --git a/plugins/postcss-cascade-layers/test/specificity-buckets-a.expect.css b/plugins/postcss-cascade-layers/test/specificity-buckets-a.expect.css index 04c2cc285..fb23316be 100644 --- a/plugins/postcss-cascade-layers/test/specificity-buckets-a.expect.css +++ b/plugins/postcss-cascade-layers/test/specificity-buckets-a.expect.css @@ -1,4 +1,4 @@ -#foo:not(#\#):not(#\#):not(#\#):not(#\#) { +#foo:not(#\#):not(_):not(_):not(#\#) { bucket: 1; } diff --git a/plugins/postcss-cascade-layers/test/specificity-buckets-b.expect.css b/plugins/postcss-cascade-layers/test/specificity-buckets-b.expect.css index b5f4e2831..f5be2d103 100644 --- a/plugins/postcss-cascade-layers/test/specificity-buckets-b.expect.css +++ b/plugins/postcss-cascade-layers/test/specificity-buckets-b.expect.css @@ -1,4 +1,4 @@ -foo:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#) { +foo:not(#\#):not(_):not(_):not(_):not(_):not(_):not(_):not(#\#) { bucket: 1; } @@ -18,18 +18,18 @@ foo { bucket: 2; } -foo:not(#\#):not(#\#):not(#\#):not(#\#) { +foo:not(#\#):not(_):not(_):not(#\#) { bucket: 3; } -#foo:not(#\#):not(#\#):not(#\#):not(#\#) { +#foo:not(#\#):not(_):not(_):not(#\#) { bucket: 3; } -#foo:not(#\#):not(#\#):not(#\#):not(#\#) #fooz { +#foo:not(#\#):not(_):not(_):not(#\#) #fooz { bucket: 3; } -#foo:not(#\#):not(#\#):not(#\#):not(#\#) #fooz #foos { +#foo:not(#\#):not(_):not(_):not(#\#) #fooz #foos { bucket: 3; } diff --git a/plugins/postcss-cascade-layers/test/warnings.with-postcss-import.expect.css b/plugins/postcss-cascade-layers/test/warnings.with-postcss-import.expect.css index e628fba06..692f6e2a0 100644 --- a/plugins/postcss-cascade-layers/test/warnings.with-postcss-import.expect.css +++ b/plugins/postcss-cascade-layers/test/warnings.with-postcss-import.expect.css @@ -19,13 +19,13 @@ color: revert-layer; }/* [postcss-cascade-layers]: handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions. */ @media (min-width: 10px) { - .foo:not(#\#):not(#\#):not(#\#) { + .foo:not(#\#):not(_):not(#\#) { color: red; } } -.foo:not(#\#):not(#\#):not(#\#):not(#\#) { +.foo:not(#\#):not(_):not(_):not(#\#) { color: pink; } -.foo:not(#\#):not(#\#):not(#\#) { +.foo:not(#\#):not(_):not(#\#) { color: red; }