UNPKG

@patryk_walach/tailwind-variants

Version:
25 lines (17 loc) • 4.08 kB
'use strict'; var w = require('fs'); var O = require('path'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var w__default = /*#__PURE__*/_interopDefault(w); var O__default = /*#__PURE__*/_interopDefault(O); var S=t=>{w__default.default.writeFileSync(O__default.default.join(__dirname,"generated.d.ts"),t);},C=t=>`export type TVGeneratedScreens = ${Object.keys(t).map(r=>`"${r}"`).join(" | ")}; `,g=t=>{queueMicrotask(()=>{if(t!=null&&t.screens){let r=C(t.screens);S(r);}});};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=t=>Array.isArray(t),b=t=>typeof t=="string",d=t=>typeof t=="object",V=t=>typeof t=="boolean",v=t=>typeof t=="function",f=t=>!!(!t||m(t)&&t.length===0||b(t)&&t.length===0||d(t)&&Object.keys(t).length===0),$=(t,r)=>{let n={},e=r.length,s=Object.prototype.hasOwnProperty;for(let c=0;c<e;c++){let o=r[c];s.call(t,o)&&(n[o]=t[o]);}return n},k=(t,r)=>{let n="https://github.com/nextui-org/tailwind-variants/issues/new/choose";console.log("\x1B[31m%s\x1B[0m",`${t}: ${r.message}`),console.log(`If you think this is an issue, please submit it at ${n}`);},y=(...t)=>r=>t.reduce((n,e)=>e(n),r),A=t=>{let n=t.replace(p.comment,"$1").toString().replace(p.blankLine,"").toString(),e=o=>o.replace(p.tvExtend,"").toString();Array.from(n.matchAll(p.tv));let c=[];for(let o of n.matchAll(p.tv)){let i=1,a=o.index+o[0].length;for(;i>0&&a<n.length;a++){if(n.charAt(a)==="("){i++;continue}n.charAt(a)===")"&&i--;}c.push(e(n.substring(o.index+o[0].length,a-1)));}return c},P=t=>{let r=A(t);if(!f(r))return r.map(n=>n.includes("responsiveVariants")?new Function(` const [options, config] = [${n.toString()}]; return {options, config}; `)():{})},E=t=>t.flatMap(r=>r).toString().replaceAll(","," ").split(" "),D=(t,r)=>{let n={};for(let[e,s]of Object.entries(t))n[e]={},n[e].original=s,!f(s)&&(n.temp=m(s)?E(s):s.split(" "),r.forEach(c=>{let o="";n.temp.forEach(i=>{o+=`${c}:${i} `;}),n[e][c]=o.trimEnd();}),delete n.temp);return n},F=(t,r)=>b(t)?t.split(" "):m(t)?E(t):d(t)?D(t,r):t,x=(t,r)=>{let n={};for(let[e,s]of Object.entries(t))if(n[e]={},!f(s))for(let[c,o]of Object.entries(s)){if(n[e][c]={},n[e][c].original=o,f(o))continue;let i=F(o,r);if(!f(i)){if(!m(i)){n[e][c]=i;continue}r.forEach(a=>{let l="";i.forEach(u=>{l+=`${a}:${u} `;}),n[e][c][a]=l.trimEnd();});}}return n},T=({options:t,config:r},n)=>{var c,o;let e=(c=t==null?void 0:t.variants)!=null?c:{},s=(o=r==null?void 0:r.responsiveVariants)!=null?o:!1;if(!(!s||f(e))){if(V(s))return x(e,n);if(m(s))return x(e,s);if(d(s)){let i=[];for(let[a,l]of Object.entries(s)){if(!l||f(l))continue;let j={options:{variants:$(e,[a])},config:{responsiveVariants:l}};i.push(T(j,n));}return i}}},I=(t,r,n)=>{try{let e=["tailwind-variants"];if(!(m(n==null?void 0:n.aliases)?[...n.aliases,...e]:e).some(u=>t.includes(u)))return t;let o=P(t);if(f(o))return t;let i=JSON.stringify(o.map(u=>T(u,r)),void 0,2),a=` /* Tailwind Variants Transformed Content Start `,l=` Tailwind Variants Transformed Content End */ `;return t.concat(a+i+l)}catch(e){return k("Tailwind Variants Transform Failed",e),t}},h=t=>{let r=t.map(n=>{if(d(n)&&n.extension)return n.extension;let e=n.match(p.extension);return e||(e=n.split("{"),e=e.pop().replace("}","").split(",")),e.map(s=>s.replace(".","").split(".")).flat()}).flatMap(n=>n);return Array.from(new Set(r)).filter(n=>n!=="html")},_=(t,r)=>{var c;let n=t;if(g(n.theme),f((c=n.content)==null?void 0:c.files)||!m(n.content.files))return n;let e=o=>{var i,a;return I(o,Object.keys((a=(i=n.theme)==null?void 0:i.screens)!=null?a:{}),r)},s=n.content.transform;if(f(s)){let i=h(n.content.files).map(a=>[a,e]);return n.content.transform=Object.fromEntries(i),n}if(v(s)){let i=h(n.content.files).map(a=>[a,y(e,s)]);return n.content.transform=Object.fromEntries(i),n}if(d(s)){let i=h(n.content.files).map(a=>v(s[a])?[a,y(e,s[a])]:[a,e]);return n.content.transform=Object.fromEntries(i),n}return n}; exports.tvTransformer = I; exports.withTV = _;