UNPKG

unplugin-jade-garden

Version:

Build tool plugin for creating CSS with Jade Garden

44 lines (37 loc) 4.8 kB
"use strict";var A=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var W=Object.prototype.hasOwnProperty;var E=(n,s)=>{for(var o in s)A(n,o,{get:s[o],enumerable:!0})},K=(n,s,o,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of T(s))!W.call(n,t)&&t!==o&&A(n,t,{get:()=>s[t],enumerable:!(e=F(s,t))||e.enumerable});return n};var D=n=>K(A({},"__esModule",{value:!0}),n);var B={};E(B,{rollupPluginJadeGarden:()=>R,rspackPluginJadeGarden:()=>I,vitePluginJadeGarden:()=>G,webpackPluginJadeGarden:()=>k});module.exports=D(B);var j=require("unplugin");var u=require("fs"),C=require("path"),x=require("es-toolkit");function P(n){var s,o,e="";if(typeof n=="string"||typeof n=="number")e+=n;else if(typeof n=="object")if(Array.isArray(n)){var t=n.length;for(s=0;s<t;s++)n[s]&&(o=P(n[s]))&&(e&&(e+=" "),e+=o)}else for(o in n)n[o]&&(e&&(e+=" "),e+=o);return e}function $(){for(var n,s,o=0,e="",t=arguments.length;o<t;o++)(n=arguments[o])&&(s=P(n))&&(e&&(e+=" "),e+=s);return e}var N=require("unplugin-utils");var d=require("es-toolkit"),S=(n,s)=>{let o=(0,d.kebabCase)(n.name),e=n.base?` .${o} { @apply ${s(n.base)}; }`:"";if(n.compoundVariants)for(let t of n.compoundVariants){let r=Object.keys(t).filter(a=>a!=="class"&&a!=="className").map(a=>`.${o}.${o}__${(0,d.kebabCase)(a)}--${(0,d.kebabCase)(t[a])}`).join(`, `),l=s(t.class,t.className);r&&l.length&&(e+=`${e.length?` `:""} ${r} { @apply ${l}; }`)}if(n.variants)for(let t in n.variants){let r=n.variants[t];for(let l in r){let a=s(r[l]);a.length&&(e+=`${e.length?` `:""} .${o}.${o}__${(0,d.kebabCase)(t)}--${(0,d.kebabCase)(l)} { @apply ${a}; }`)}}return`@layer components { ${e} } `};var p=require("es-toolkit"),V=(n,s)=>{let o=(0,p.kebabCase)(n.name),e="";if(n.compoundSlots)for(let t of n.compoundSlots){let r=Object.keys(t).filter(i=>i!=="slots"&&i!=="class"&&i!=="className").map(i=>`__${(0,p.kebabCase)(i)}--${(0,p.kebabCase)(t[i])}`).join(""),l=t.slots.map(i=>`.${o}--${(0,p.kebabCase)(String(i))}${r}`).join(`, `),a=s(t.class,t.className);a.length&&(e+=`${e.length?` `:""} ${l} { @apply ${a}; }`)}for(let t in n.slots){let r=s(n.slots[t]);r.length&&(e+=`${e.length?` `:""} .${o}--${(0,p.kebabCase)(t)} { @apply ${r}; }`)}if(n.compoundVariants){for(let t of n.compoundVariants)for(let r in n.slots)if(t.class?.[r]||t.className?.[r]){let l=`.${o}--${(0,p.kebabCase)(r)}`,a=Object.keys(t).filter(c=>c!=="class"&&c!=="className"&&c!==r).map(c=>`${l}__${(0,p.kebabCase)(c)}--${(0,p.kebabCase)(t[c])}`).join(""),i=s(t.class?.[r],t.className?.[r]);i.length&&(e+=`${e.length?` `:""} ${l}${a} { @apply ${i}; }`)}}if(n.variants)for(let t in n.variants){let r=n.variants[t];for(let l in r){let a=r[l];for(let i in a){let c=s(a[i]);if(!c.length)continue;let m=`.${o}--${(0,p.kebabCase)(i)}`;e+=`${e.length?` `:""} ${m}${m}__${(0,p.kebabCase)(t)}--${(0,p.kebabCase)(l)} { @apply ${c}; }`}}}return`@layer components { ${e} } `};var f=n=>{let s={entry:n?.entry??"",components:n?.components??{cva:[],sva:[]},mergeFn:n?.mergeFn??$},o=(0,N.createFilter)(s.entry),e=new Map,t=r=>{let{components:l,id:a,mergeFn:i,type:c}=r,m=(0,C.join)(a,`../components/${c}`);(0,u.existsSync)(m)||(0,u.mkdirSync)(m,{recursive:!0});let b=0,v="";for(let y of l){let g=y.name;if(!g){console.warn(`\x1B[33m[WARN]: ${c} does not have "name" in config.\x1B[0m`),console.info(`\x1B[36mConfig: ${JSON.stringify(y,null," ")}\x1B[0m`);continue}let h=`${(0,x.kebabCase)(g)}.css`;if(v+=`@import "./${h}"; `,e.has(g)&&(0,x.isEqual)(e.get(g),y))continue;e.set(g,y);let w=c==="cva"?S(y,i):V(y,i);b++,(0,u.writeFileSync)(`${m}/${h}`,w)}(0,u.writeFileSync)(`${m}/index.css`,v),console.info(` \x1B[36m${c}: ${b} files written\x1B[0m`)};return{name:"unplugin-jade-garden",enforce:"pre",transform(r,l){if(!o(l))return;let a=typeof s.components;if(a!=="object"||Array.isArray(s.components)){console.warn(` \x1B[33m[WARN]: The "components" prop must be an object.\x1B[0m`),console.info(` \x1B[36mReceived: ${a==="object"?"array":a}\x1B[0m`);return}let{cva:i,sva:c}=s.components;if(!Array.isArray(i)&&!Array.isArray(c)){console.warn(` \x1B[33m[WARN]: "components.cva" and "components.sva" props must be arrays.\x1B[0m`),console.info(` \x1B[36mcva: 0 files written\x1B[0m \x1B[36msva: 0 files written\x1B[0m`);return}let{mergeFn:m}=s;i?.length&&t({components:i,id:l,mergeFn:m,type:"cva"}),c?.length&&t({components:c,id:l,mergeFn:m,type:"sva"})}}};var U=(0,j.createRollupPlugin)(f),R=U;var O=require("unplugin");var q=(0,O.createRspackPlugin)(f),I=q;var J=require("unplugin");var M=(0,J.createVitePlugin)(f),G=M;var _=require("unplugin");var z=(0,_.createWebpackPlugin)(f),k=z;0&&(module.exports={rollupPluginJadeGarden,rspackPluginJadeGarden,vitePluginJadeGarden,webpackPluginJadeGarden});