summaryrefslogtreecommitdiff
path: root/node_modules/@csstools/postcss-logical-viewport-units/dist/index.cjs
blob: 8b0c9d63ab6d9cdaefceb2ad20624e9aea9f3a47 (plain)
1
"use strict";var e,t=require("@csstools/css-tokenizer");function hasFeature(e){{const t=e.toLowerCase();if(!t.includes("vb")&&!t.includes("vi"))return!1}const o=t.tokenizer({css:e});for(;;){const e=o.nextToken();if(!e)break;if(e[0]===t.TokenType.EOF)break;if(e[0]!==t.TokenType.Dimension)continue;const n=e[4].unit.toLowerCase();if("vb"===n||"vi"===n)return!0}return!1}function hasSupportsAtRuleAncestor(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name.toLowerCase()&&hasFeature(t.params))return!0;t=t.parent}else t=t.parent;return!1}function transform(e,o){const n=t.tokenizer({css:e}),r=[];let i=!1;for(;;){const e=n.nextToken();if(!e)break;if(r.push(e),e[0]===t.TokenType.EOF)break;if(e[0]!==t.TokenType.Dimension)continue;const s=e[4].unit.toLowerCase();let c;"vi"===s?c=o.vi:"vb"===s&&(c=o.vb),c&&(e[1]=e[4].value.toString()+c,e[4].unit=c,i=!0)}return i?t.stringify(...r):e}!function(e){e.TopToBottom="top-to-bottom",e.BottomToTop="bottom-to-top",e.RightToLeft="right-to-left",e.LeftToRight="left-to-right"}(e||(e={}));const o=/(?:vi|vb)\b/i,creator=t=>{const n=Object.assign({inlineDirection:e.LeftToRight,preserve:!0},t);switch(n.inlineDirection){case e.LeftToRight:case e.RightToLeft:case e.TopToBottom:case e.BottomToTop:break;default:throw new Error(`[postcss-logical-viewport-units] "inlineDirection" must be one of ${Object.values(e).join(", ")}`)}const r=[e.LeftToRight,e.RightToLeft].includes(n.inlineDirection),i={vb:"vh",vi:"vw"};return r||(i.vb="vw",i.vi="vh"),{postcssPlugin:"postcss-logical-viewport-units",Declaration(e,{atRule:t}){{if(!o.test(e.value))return;const t=e.prev();if(t&&"decl"===t.type&&t.prop===e.prop)return;if(hasSupportsAtRuleAncestor(e))return}const r=transform(e.value,i);if(r===e.value)return;if(e.cloneBefore({value:r}),!n.preserve)return void e.remove();if(!e.variable)return;const s=t({name:"supports",params:"(top: 1vi)",source:e.source}),c=e.parent;if(!c)return;const u=c.cloneAfter({nodes:[]});u.append(e),s.append(u),c.after(s)}}};creator.postcss=!0,module.exports=creator;