UNPKG

@cherrywind/postcss

Version:

A collection of PostCSS plugins for modern CSS development.

3 lines (2 loc) 2.25 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function v(r){return e=>r.some(t=>typeof t=="string"?e.includes(t):t.test(e))}const l=/pxtovar-disable-next-line/;function d(r){const e=r.includes("*"),t=r.filter(n=>!n.startsWith("!")),i=r.filter(n=>n.startsWith("!")).map(n=>n.slice(1));function a(n,o){return o.some(s=>s==="*"?!0:s.endsWith("*")?n.startsWith(s.slice(0,-1)):n===s)}return n=>e&&!a(n,i)?!0:a(n,t)&&!a(n,i)}const f=/"[^"]+"|'[^']+'|url\([^)]+\)|(-?\d*\.?\d+)px/g,g={rootValue:16,unitPrecision:5,selectorBlackList:[],propList:["*"],replace:!0,mediaQuery:!1,minPixelValue:0,exclude:null,varName:"--local-scope-rem"};function h(r,e){return!r||!e?!1:typeof r=="function"?r(e):r instanceof RegExp?r.test(e):!1}function P(r,e){return parseFloat(r.toFixed(e)).toString()}function p(r){return function(e,t){if(!t)return e;const i=parseFloat(t);if(Math.abs(i)<=r.minPixelValue)return e;const a=P(i/r.rootValue,r.unitPrecision);return`calc(var(${r.varName}, 1rem) * ${a})`}}function V(r){let e=r;for(;e;){const t=e.parent;if(!t||!Array.isArray(t.nodes))break;const i=t.nodes.indexOf(e);if(i>0){const a=t.nodes[i-1];if(a.type==="comment"&&l.test(a.text))return!0}e=t}return r.raws&&typeof r.raws.before=="string"?l.test(r.raws.before):!1}const m=(r={})=>{const e={...g,...r},t=d(e.propList),i=v(e.selectorBlackList);return{postcssPlugin:"postcss-px-to-local-var",Once(a){var o;const n=(o=a.source)==null?void 0:o.input.file;h(e.exclude,n)||(a.walkDecls(s=>{var c;if(V(s)||!t(s.prop)||i(((c=s.parent)==null?void 0:c.selector)||"")||s.value.indexOf("px")===-1)return;const u=s.value.replace(f,p(e));u!==s.value&&(e.replace?s.value=u:s.cloneAfter({value:u}))}),e.mediaQuery&&a.walkAtRules("media",s=>{s.params.indexOf("px")!==-1&&(s.params=s.params.replace(f,p(e)))}))}}};m.postcss=!0;const x=(r={})=>{const{varName:e="--local-scope-rem"}=r;return{postcssPlugin:"postcss-rem-to-local-var",Declaration(t){if(t._remToVarProcessed||t.value.includes(`calc(var(${e}, 1rem) * `))return;const i=/(-?(?:\d+|\d*\.\d+))rem\b/g;t.value=t.value.replace(i,(a,n)=>`calc(var(${e}, 1rem) * ${n})`),t._remToVarProcessed=!0}}};x.postcss=!0;exports.postcssPxToLocalVar=m;exports.postcssRemToCssVars=x; //# sourceMappingURL=index.cjs.map