UNPKG

@vci/postcss-adapt

Version:

it`s a plugin of postcss, it can transform that the size of your code like wpx or px or hpx to vw or vh for adapt screen

2 lines (1 loc) 935 B
const e=/"[^"]+"|'[^']+'|url\([^\\)]+\)|(\d*\.?\d+)(px)/gi,t=/"[^"]+"|'[^']+'|url\([^\\)]+\)|(\d*\.?\d+)(hpx|\shpx)/gi,i={enabled:!0,viewportWidth:1920,viewportHeight:1080,unitPrecision:6,viewportUnitWidth:"vw",viewportUnitHeight:"vh",ignoreSelectors:[]};function r(e,t,i){return function(r,n){if(n){return parseFloat(n)<=1?r:(parseFloat(n)/(e/100)).toFixed(t)+i}return r}}const n=(n={})=>{const o=Object.assign({},i,n),p=r(o.viewportWidth,o.unitPrecision,o.viewportUnitWidth),s=r(o.viewportHeight,o.unitPrecision,o.viewportUnitHeight);return{postcssPlugin:"vci-adapt",Declaration:{"*":i=>{o.enabled?["px","hpx"].some(e=>i.value.includes(e))&&(o.ignoreSelectors.some(e=>"string"==typeof e?i.parent.selector.includes(e):i.parent.selector.match(e))||(i.value=i.value.replace(e,p).replace(t,s))):-1!==i.value.indexOf("hpx")&&(i.value=i.value.replace(t,function(e,t){return t?parseFloat(e)+"px":e}))}}}};n.postcss=!0;export{n as default};