@patryk_walach/tailwind-variants
Version:
🦄 Tailwindcss first-class variant API
15 lines (10 loc) • 3.6 kB
JavaScript
import { a } from './chunk-FUBUDMV2.js';
var p={tv:/tv\s*\(/gs,tvExtend:/extend:\s*\w+(,| )\s*/,comment:/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,blankLine:/^\s*$(?:\r\n?|\n)/gm,extension:/\.\w+/g},m=n=>Array.isArray(n),y=n=>typeof n=="string",h=n=>typeof n=="object",C=n=>typeof n=="boolean",v=n=>typeof n=="function",f=n=>!!(!n||m(n)&&n.length===0||y(n)&&n.length===0||h(n)&&Object.keys(n).length===0),T=(n,r)=>{let t={},e=r.length,s=Object.prototype.hasOwnProperty;for(let c=0;c<e;c++){let o=r[c];s.call(n,o)&&(t[o]=n[o]);}return t},j=(n,r)=>{let t="https://github.com/nextui-org/tailwind-variants/issues/new/choose";console.log("\x1B[31m%s\x1B[0m",`${n}: ${r.message}`),console.log(`If you think this is an issue, please submit it at ${t}`);},x=(...n)=>r=>n.reduce((t,e)=>e(t),r),V=n=>{let t=n.replace(p.comment,"$1").toString().replace(p.blankLine,"").toString(),e=o=>o.replace(p.tvExtend,"").toString();Array.from(t.matchAll(p.tv));let c=[];for(let o of t.matchAll(p.tv)){let i=1,a=o.index+o[0].length;for(;i>0&&a<t.length;a++){if(t.charAt(a)==="("){i++;continue}t.charAt(a)===")"&&i--;}c.push(e(t.substring(o.index+o[0].length,a-1)));}return c},S=n=>{let r=V(n);if(!f(r))return r.map(t=>t.includes("responsiveVariants")?new Function(`
const [options, config] = [${t.toString()}];
return {options, config};
`)():{})},E=n=>n.flatMap(r=>r).toString().replaceAll(","," ").split(" "),$=(n,r)=>{let t={};for(let[e,s]of Object.entries(n))t[e]={},t[e].original=s,!f(s)&&(t.temp=m(s)?E(s):s.split(" "),r.forEach(c=>{let o="";t.temp.forEach(i=>{o+=`${c}:${i} `;}),t[e][c]=o.trimEnd();}),delete t.temp);return t},A=(n,r)=>y(n)?n.split(" "):m(n)?E(n):h(n)?$(n,r):n,b=(n,r)=>{let t={};for(let[e,s]of Object.entries(n))if(t[e]={},!f(s))for(let[c,o]of Object.entries(s)){if(t[e][c]={},t[e][c].original=o,f(o))continue;let i=A(o,r);if(!f(i)){if(!m(i)){t[e][c]=i;continue}r.forEach(a=>{let l="";i.forEach(u=>{l+=`${a}:${u} `;}),t[e][c][a]=l.trimEnd();});}}return t},O=({options:n,config:r},t)=>{var c,o;let e=(c=n==null?void 0:n.variants)!=null?c:{},s=(o=r==null?void 0:r.responsiveVariants)!=null?o:!1;if(!(!s||f(e))){if(C(s))return b(e,t);if(m(s))return b(e,s);if(h(s)){let i=[];for(let[a,l]of Object.entries(s)){if(!l||f(l))continue;let w={options:{variants:T(e,[a])},config:{responsiveVariants:l}};i.push(O(w,t));}return i}}},k=(n,r,t)=>{try{let e=["tailwind-variants"];if(!(m(t==null?void 0:t.aliases)?[...t.aliases,...e]:e).some(u=>n.includes(u)))return n;let o=S(n);if(f(o))return n;let i=JSON.stringify(o.map(u=>O(u,r)),void 0,2),a=`
/* Tailwind Variants Transformed Content Start
`,l=`
Tailwind Variants Transformed Content End */
`;return n.concat(a+i+l)}catch(e){return j("Tailwind Variants Transform Failed",e),n}},d=n=>{let r=n.map(t=>{if(h(t)&&t.extension)return t.extension;let e=t.match(p.extension);return e||(e=t.split("{"),e=e.pop().replace("}","").split(",")),e.map(s=>s.replace(".","").split(".")).flat()}).flatMap(t=>t);return Array.from(new Set(r)).filter(t=>t!=="html")},D=(n,r)=>{var c;let t=n;if(a(t.theme),f((c=t.content)==null?void 0:c.files)||!m(t.content.files))return t;let e=o=>{var i,a;return k(o,Object.keys((a=(i=t.theme)==null?void 0:i.screens)!=null?a:{}),r)},s=t.content.transform;if(f(s)){let i=d(t.content.files).map(a=>[a,e]);return t.content.transform=Object.fromEntries(i),t}if(v(s)){let i=d(t.content.files).map(a=>[a,x(e,s)]);return t.content.transform=Object.fromEntries(i),t}if(h(s)){let i=d(t.content.files).map(a=>v(s[a])?[a,x(e,s[a])]:[a,e]);return t.content.transform=Object.fromEntries(i),t}return t};
export { k as tvTransformer, D as withTV };