UNPKG

unplugin-jade-garden

Version:

Build tool plugin for creating CSS with Jade Garden

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