epiphany/node_modules/postcss-custom-properties/dist/index.cjs
2023-12-09 22:48:07 -08:00

1 line
6.9 KiB
JavaScript

"use strict";var e=require("postcss-value-parser"),r=require("@csstools/cascade-layer-name-parser");const t=r.parse("csstools-implicit-layer")[0];function collectCascadeLayerOrder(e){const n=new Map,o=new Map,s=[];e.walkAtRules((e=>{var a;if("layer"!==e.name.toLowerCase())return;{let r=e.parent;for(;r;){if("atrule"!==r.type||"layer"!==r.name.toLowerCase()){if(r===e.root())break;return}r=r.parent}}let l;if(e.nodes)l=normalizeLayerName(e.params,1);else{if(!e.params.trim())return;l=e.params}let i=r.parse(l);if(null!=(a=i)&&a.length){{let r=e.parent;for(;r&&"atrule"===r.type&&"layer"===r.name.toLowerCase();){const e=o.get(r);e?(i=i.map((r=>e.concat(r))),r=r.parent):r=r.parent}}if(r.addLayerToModel(s,i),e.nodes){const r=i[0].concat(t);n.set(e,r),o.set(e,i[0])}}}));for(const e of n.values())r.addLayerToModel(s,[e]);const a=new WeakMap;for(const[e,r]of n)a.set(e,s.findIndex((e=>r.equal(e))));return a}function normalizeLayerName(e,r){return e.trim()?e:"csstools-anon-layer--"+r++}const n=/(!\s*)?postcss-custom-properties:\s*off\b/i,o=new WeakMap;function isBlockIgnored(e){if(!e||!e.nodes)return!1;if(o.has(e))return o.get(e);const r=e.some((e=>isIgnoreComment(e,n)));return o.set(e,r),r}const s=/(!\s*)?postcss-custom-properties:\s*ignore\s+next\b/i;function isDeclarationIgnored(e){return!!e&&(!!isBlockIgnored(e.parent)||isIgnoreComment(e.prev(),s))}function isIgnoreComment(e,r){return!!e&&"comment"===e.type&&r.test(e.text)}const a=new Set(["layer"]);function isProcessableRule(e){let r=e.parent;for(;r;){if("atrule"===r.type&&!a.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}const l=/^html$/i,i=/^:where\(html\)$/i,c=/^:root$/i,u=/^:where\(:root\)$/i,p=/(html|:root)/i,d=/^var$/i;function isVarFunction(e){return"function"===e.type&&d.test(e.value)&&Object(e.nodes).length>0}const f=/var\(/i;function removeCyclicReferences(e,r){const t=new Set;let n=r;for(;e.size>0;)try{toposort(Array.from(e.keys()),n);break}catch(r){if(!r._graphNode)throw r;e.delete(r._graphNode),t.add(r._graphNode),n=n.filter((e=>-1===e.indexOf(r._graphNode)))}return t}function toposort(e,r){let t=e.length;const n=new Array(t),o={};let s=t;const a=makeOutgoingEdges(r),l=makeNodesHash(e);for(;s--;)o[s]||visit(e[s],s,new Set);return n;function visit(e,r,s){if(s.has(e)){const r=new Error("Cyclic dependency"+JSON.stringify(e));throw r._graphNode=e,r}if(!l.has(e))return;if(o[r])return;o[r]=!0;let i=a.get(e)||new Set;if(i=Array.from(i),r=i.length){s.add(e);do{const e=i[--r];visit(e,l.get(e),s)}while(r);s.delete(e)}n[--t]=e}}function makeOutgoingEdges(e){const r=new Map;for(let t=0,n=e.length;t<n;t++){const n=e[t];r.has(n[0])||r.set(n[0],new Set),r.has(n[1])||r.set(n[1],new Set),r.get(n[0]).add(n[1])}return r}function makeNodesHash(e){const r=new Map;for(let t=0,n=e.length;t<n;t++)r.set(e[t],t);return r}function parseOrCached(r,t){let n=t.get(r);return n||(n=e(r),t.set(r,n),n)}function getCustomPropertiesFromRoot(r,t){const n=new Map,o=new Map,s=collectCascadeLayerOrder(r);r.walkRules((e=>{var r;p.test(e.selector)&&null!=(r=e.nodes)&&r.length&&isProcessableRule(e)&&(isBlockIgnored(e)||e.selectors.forEach((r=>{let t=-1;if(i.test(r)||u.test(r))t=0;else if(l.test(r))t=1;else{if(!c.test(r))return;t=2}const a=(d=s,((p=e).parent&&"atrule"===p.parent.type&&"layer"===p.parent.name.toLowerCase()?d.has(p.parent)?d.get(p.parent)+1:0:1e7)+10+t);var p,d;e.each((e=>{if("decl"!==e.type)return;if(!e.variable||isDeclarationIgnored(e))return;if("initial"===e.value.toLowerCase().trim())return;const r=o.get(e.prop)??-1;a>=r&&(o.set(e.prop,a),n.set(e.prop,e.value))}))})))}));const a=[],d=new Map;for(const[r,o]of n.entries()){const n=parseOrCached(o,t);e.walk(n.nodes,(e=>{if(isVarFunction(e)){const[t]=e.nodes.filter((e=>"word"===e.type));a.push([t.value,r])}})),d.set(r,n)}return removeCyclicReferences(d,a),d}function transformValueAST(r,t,n){var o;if(null==(o=r.nodes)||!o.length)return"";const s=new Map;return r.nodes.forEach((e=>{s.set(e,r)})),e.walk(r.nodes,(e=>{"nodes"in e&&e.nodes.length&&e.nodes.forEach((r=>{s.set(r,e)}))})),e.walk(r.nodes,(r=>{var o,a;if(!isVarFunction(r))return;const[l,...i]=r.nodes.filter((e=>"div"!==e.type)),{value:c}=l,u=s.get(r);if(!u)return;const p=u.nodes.indexOf(r);if(-1===p)return;let d=!1;i&&e.walk(i,(e=>{if(isVarFunction(e)){const[r]=e.nodes.filter((e=>"word"===e.type));if(t.has(r.value)||n.has(r.value))return;return d=!0,!1}}));let f=(null==(o=n.get(c))?void 0:o.nodes)??(null==(a=t.get(c))?void 0:a.nodes);f||!i.length||d||(f=r.nodes.slice(r.nodes.indexOf(i[0]))),void 0!==f&&(f.length?(u.nodes.splice(p,1,...f),u.nodes.forEach((e=>s.set(e,u)))):(u.nodes.splice(p,1,{type:"comment",value:"",sourceIndex:r.sourceIndex,sourceEndIndex:r.sourceEndIndex}),u.nodes.forEach((e=>s.set(e,u)))))}),!0),e.stringify(r.nodes)}function transformProperties(r,t,n,o,s){if(isTransformableDecl(r)&&!isDeclarationIgnored(r)){const o=r.value;let i=transformValueAST(e(o),t,n);const c=new Set;for(;f.test(i)&&!c.has(i);){c.add(i);i=transformValueAST(e(i),t,n)}if(i!==o){if(parentHasExactFallback(r,i))return void(s.preserve||r.remove());if(s.preserve){var a;const e=r.cloneBefore({value:i});hasTrailingComment(e)&&null!=(a=e.raws)&&a.value&&(e.raws.value.value=e.value.replace(v,"$1"),e.raws.value.raw=e.raws.value.value+e.raws.value.raw.replace(v,"$2"))}else{var l;r.value=i,hasTrailingComment(r)&&null!=(l=r.raws)&&l.value&&(r.raws.value.value=r.value.replace(v,"$1"),r.raws.value.raw=r.raws.value.value+r.raws.value.raw.replace(v,"$2"))}}}}const isTransformableDecl=e=>!e.variable&&e.value.includes("--")&&e.value.toLowerCase().includes("var("),hasTrailingComment=e=>{var r,t;return"value"in Object(Object(e.raws).value)&&"raw"in((null==(r=e.raws)?void 0:r.value)??{})&&v.test((null==(t=e.raws.value)?void 0:t.raw)??"")},v=/^([\W\w]+)(\s*\/\*[\W\w]+?\*\/)$/;function parentHasExactFallback(e,r){if(!e||!e.parent)return!1;let t=!1;const n=e.parent.index(e);return e.parent.each(((o,s)=>o!==e&&(!(s>=n)&&void("decl"===o.type&&o.prop.toLowerCase()===e.prop.toLowerCase()&&o.value===r&&(t=!0))))),t}function hasSupportsAtRuleAncestor(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name.toLowerCase()&&/([^\w]var\()|(\(top: var\(--f\))/i.test(r.params))return!0;r=r.parent}else r=r.parent;return!1}const w=/^initial$/i,creator=e=>{const r=!("preserve"in Object(e))||Boolean(null==e?void 0:e.preserve);if("importFrom"in Object(e))throw new Error('[postcss-custom-properties] "importFrom" is no longer supported');if("exportTo"in Object(e))throw new Error('[postcss-custom-properties] "exportTo" is no longer supported');return{postcssPlugin:"postcss-custom-properties",prepare:()=>{let e=new Map;const t=new Map;return{Once:r=>{e=getCustomPropertiesFromRoot(r,t)},Declaration:n=>{if(!f.test(n.value))return;if(hasSupportsAtRuleAncestor(n))return;const o=new Map;r&&n.parent&&n.parent.each((e=>{"decl"===e.type&&e.variable&&n!==e&&(isDeclarationIgnored(e)||(w.test(e.value)?o.delete(e.prop):o.set(e.prop,parseOrCached(e.value,t))))})),transformProperties(n,e,o,0,{preserve:r})}}}}};creator.postcss=!0,module.exports=creator;