UNPKG

@thi.ng/meta-css

Version:

Data-driven CSS framework codegen, transpiler & bundler

49 lines (44 loc) 41 kB
// @bun var io={default:95,command:92,error:91,hint:90,multi:90,param:96,required:33};var wt=(t)=>t;function Y(t,o=Object.create(null)){return(...n)=>{let r=n.join("-");return r in o?o[r]:o[r]=t(...n)}}var rt=Y((t,o)=>t.repeat(o));var jo=(t)=>/^[a-f0-9]+$/i.test(t);var Xo=(t)=>/^[-+]?\d+$/.test(t),Zo=(t)=>/^[-+]?\d*\.?\d+(e[-+]?\d+)?$/i.test(t);var D=(t,o=(n)=>n!==void 0?": "+n:"")=>class extends Error{origMessage;constructor(n){super(t(n)+o(n));this.origMessage=n!==void 0?String(n):""}};var Fr=D(()=>"illegal argument(s)"),h=(t)=>{throw new Fr(t)};var Go=(t)=>Zo(t)?parseFloat(t):h(`not a numeric value: ${t}`),No=(t)=>jo(t)?parseInt(t,16):h(`not a hex value: ${t}`),Oo=(t)=>Xo(t)?parseInt(t):h(`not an integer: ${t}`);var Hr=(t,o)=>t+(o?`[${o}..]`:""),Yt=(t,o,n)=>(r)=>({type:t,coerce:o,hint:n,group:"main",...r}),Dt=(t,o,n,r=",")=>(m)=>({type:t,delim:r,hint:Hr(n,m.delim??r),coerce:(f)=>f.map(o),group:"main",multi:!0,...m}),I=(t)=>({type:"flag",group:"flags",default:!1,...t}),z=Yt("string",wt,"STR"),zt=Dt("strings",wt,"STR"),uf=Yt("float",Go,"NUM"),Cf=Dt("floats",Go,"NUM"),Jt=Yt("int",Oo,"INT"),Af=Dt("ints",Oo,"INT"),Bf=Yt("hex",No,"HEX"),Lf=Dt("hexes",No,"HEX");var $f={dryRun:I({desc:"Dry run (no changes applied)"})},Tf={quiet:I({alias:"q",desc:"Disable all logging"})},Ko={verbose:I({alias:"v",desc:"Display extra information"})};var B=Array.isArray;var L=((t)=>{return t[t.FINE=0]="FINE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.SEVERE=4]="SEVERE",t[t.NONE=5]="NONE",t})(L||{});var Rr=0;class yt{constructor(t,o=L.FINE,n){this.parent=n,this.id=t||`logger-${Rr++}`,this.level=typeof o==="string"?L[o]:o}parent;id;level;addChild(t){return t.parent=this,t}enabled(t){return this.level<=t}fine(...t){this.log(L.FINE,t)}debug(...t){this.log(L.DEBUG,t)}info(...t){this.log(L.INFO,t)}warn(...t){this.log(L.WARN,t)}severe(...t){this.log(L.SEVERE,t)}none(){}log(t,o){this.level<=t&&this.logEntry([t,this.id,Date.now(),...o])}}var bo=(t)=>t.map((o)=>{if(typeof o==="function")o=o();if(o instanceof Error)o=o.stack??o.message;if(o instanceof RegExp)o=o.source;if(!(typeof o==="string"||typeof o==="number"))o=JSON.stringify(o);return o});class Pt extends yt{constructor(t,o,n,r){super(o,n,r);this.target=t}target;childLogger(t,o){return new Pt(this.target,t,o??this.level,this)}logEntry(t){if(t[0]<this.level)return;this.target.write(`[${L[t[0]]}] ${t[1]}: ${bo(t.slice(3)).join(" ")} `),this.parent?.logEntry(t)}}var _o={black:1,blue:5,cyan:7,gray:17,green:3,magenta:6,red:2,white:24,yellow:4,lightBlue:21,lightCyan:23,lightGray:8,lightGreen:19,lightMagenta:22,lightRed:18,lightYellow:20,bgBlack:32,bgBlue:160,bgCyan:224,bgGray:544,bgGreen:96,bgMagenta:192,bgRed:64,bgWhite:768,bgYellow:128,bgLightBlue:672,bgLightCyan:736,bgLightGray:256,bgLightGreen:608,bgLightMagenta:704,bgLightRed:576,bgLightYellow:640};var Mr=(t,o)=>(n)=>t.format(o,n),ho=(t)=>Object.keys(_o).reduce((o,n)=>(o[n]=Mr(t,_o[n]),o),{format:t});var Vo="\x1B[0m";var Ir=["","1","2","1;2","4","1;4","2;4","1;2;4"],jt={format:(t,o)=>jt.start(t)+o+jt.end,start:Y((t)=>{let o=[],n=t&15;return n&&o.push(29+(t>>4&1)*60+n),n=t>>5&15,n&&o.push(39+(t>>9&1)*60+n),n=t>>10,n&&o.push(Ir[n]),"\x1B["+o.join(";")+"m"}),end:Vo,prefix:Vo,suffix:` `};var qo={format:(t,o)=>String(o),prefix:"",suffix:` `,start:()=>"",end:""};var Xt=ho(jt),po=ho(qo);var Wr=(t)=>t.toUpperCase(),Qo=(t)=>t.toLowerCase(),Zt=(t)=>t.length?t[0].toUpperCase()+t.substring(1):t,mt=(t,o="-")=>Qo(t.replace(/([a-z0-9\u00e0-\u00fd])([A-Z\u00c0-\u00dd])/g,(n,r,m)=>r+o+m));var ko=(t,o="-")=>Qo(t).replace(new RegExp(`\\${o}+(\\w)`,"g"),(n,r)=>Wr(r));var vo=(t=!1,o)=>(n)=>t||typeof n!=="string"&&typeof n!=="number"?JSON.stringify(n instanceof Error?n.stack??n.message:n instanceof RegExp?n.source:n,null,o):String(n);var lo=Object.getPrototypeOf,J=(t)=>{let o;return t!=null&&typeof t==="object"&&((o=lo(t))===null||lo(o)===null)};var Ur=/\x1b\[[0-9;]+m/g,Yr=(t)=>t.replace(Ur,"");var Kt=(t)=>Yr(t).length;var go=Y((t,o=" ")=>{let n=rt(String(o),t);return(r,m)=>{if(r==null)return n;return r=r.toString(),m=m!==void 0?m:r.length,m<t?r+n.substring(m):r}});function*ft(t,o=/\r?\n/g,n=!1){let r=0,m=t.length,f=~~n,e;if(typeof o==="string")e=new RegExp(o,"g");else if(!o.flags.includes("g"))e=new RegExp(o,o.flags+"g");else e=o;for(;r<m;){let E=e.exec(t);if(!E){yield t.substring(r);return}let i=E[0].length;yield t.substring(r,E.index+f*i),r=E.index+i}}class uo{n=0;w=[];constructor(t,o){t!=null&&this.add(t,o)}add(t,o=t.length){return this.w.push(t),this.n+=o+~~(this.n>0),this}toString(){return this.w.join(" ")}}var Dr={length:(t)=>t.length,split:(t,o)=>o},xo={length:Kt,split:(t,o)=>{let n=/\x1b\[[0-9;]+m/g,r=o,m;while(m=n.exec(t)){if(m.index>=o)break;let f=m[0].length;r+=f,o+=f}return r}},ao=(t,o,n,r)=>{let m=t[t.length-1];m&&r-m.n>n?m.add(o,n):t.push(new uo(o,n))},zr=(t,{width:o,min:n,hard:r,splitter:m},f=0,e=[])=>{let E=m.length(t),i=o-f;if(i<n&&i<E)i=o;while(r&&E>i){let G=m.split(t,i),N=t.substring(0,G);ao(e,N,i,o),t=t.substring(G),i=o,E=m.length(t)}return ao(e,t,E,o),e},Jr=(t,o,n=[])=>{if(!t.length)return n.push(new uo),n;let r={width:80,min:4,hard:!1,splitter:Dr,...o};for(let m of ft(t,o.delimWord||/\s/g)){let f=n[n.length-1];zr(m,r,f&&f.n>0?f.n+1:0,n)}return n},so=(t,o)=>{let n=[];for(let r of ft(t,o.delimLine))n=n.concat(Jr(r,o));return n};var U=(t,o)=>o!=null?`\x1B[${o}m${t}\x1B[0m`:t,bt=(t,o)=>go(o)(t,Kt(t)),Vt=(t,o)=>t?so(t,{width:o,splitter:xo,hard:!1}):[],qt=(t,o,n)=>{let r=rt(" ",o);return Vt(t,n-o).map((m,f)=>f?r+m:m).join(` `)},l=(t)=>J(t)?{...io,...t}:t!==!1?io:{};var St=(t,o={})=>{o={lineWidth:80,paramWidth:32,showDefaults:!0,prefix:"",suffix:"",groups:["flags","main"],...o};let n=l(o.color),r=(e)=>e.map((E)=>Pr(E,t[E],o,n,o.paramWidth)),m=Object.keys(t).sort(),f=o.groups?o.groups.map((e)=>[e,m.filter((E)=>t[E].group===e)]).filter((e)=>!!e[1].length):[["options",m]];return[...Vt(o.prefix,o.lineWidth),...f.map(([e,E])=>[...o.showGroupNames?[`${Zt(e)}: `]:[],...r(E),""].join(` `)),...Vt(o.suffix,o.lineWidth)].join(` `)},Pr=(t,o,n,r,m)=>{let f=jr(o,r),e=Xr(o,r,f),E=U(`--${mt(t)}`,r.param),i=`${e}${E}${f}`,G=!!o.required&&o.default===void 0,N=[];G&&N.push("required"),o.multi&&N.push("multiple");let _=Zr(N,r,G)+(o.desc||"")+Kr(o,n,r);return bt(i,n.paramWidth)+qt(_,m,n.lineWidth)},jr=(t,o)=>t.hint?U(" "+t.hint,o.hint):"",Xr=(t,o,n)=>t.alias?`${U("-"+t.alias,o.param)}${n}, `:"",Zr=(t,o,n)=>t.length?U(`[${t.join(", ")}] `,n?o.required:o.multi):"",Kr=(t,o,n)=>o.showDefaults&&t.default!=null&&t.default!==!1?U(` (default: ${vo(!0)(t.defaultHint!=null?t.defaultHint:t.default)})`,n.default):"";var br=D(()=>"parse error"),co=(t,o,n)=>{n={start:2,showUsage:!0,help:["--help","-h"],...n};try{return Vr(t,o,n)}catch(r){if(n.showUsage)console.log(U(r.message,l(n.usageOpts?.color).error)+` `+St(t,n.usageOpts));throw new br(r.message)}},Vr=(t,o,n)=>{let r=qr(t),m={},f,e,E=n.start;for(;E<o.length;){let i=o[E];if(!f){if(n.help.includes(i)){console.log(St(t,n.usageOpts));return}let G=pr(t,r,m,i);if(f=G.id,e=G.spec,E=E+~~(G.state<2),G.state)break}else{if(Qr(e,m,f,i))break;f=null,E++}}return f&&h(`missing value for: --${mt(f)}`),{result:kr(t,m),index:E,rest:o.slice(E),done:E>=o.length}},qr=(t)=>Object.entries(t).reduce((o,[n,r])=>r.alias?(o[r.alias]=n,o):o,{}),pr=(t,o,n,r)=>{if(r[0]!=="-")return{state:2};let m;if(r[1]==="-"){if(r.length===2)return{state:1};m=ko(r.substring(2))}else m=o[r.substring(1)],!m&&h(`unknown option: ${r}`);let f=t[m];if(!f&&h(m),f.type==="flag"){if(n[m]=!0,m=void 0,f.fn&&!f.fn("true"))return{state:1,spec:f}}return{state:0,id:m,spec:f}},Qr=(t,o,n,r)=>{if(t.multi)B(o[n])?o[n].push(r):o[n]=[r];else o[n]=r;return t.fn&&!t.fn(r)},kr=(t,o)=>{let n;for(let r in t)if(n=t[r],o[r]===void 0){if(n.default!==void 0)o[r]=n.default;else if(n.required)h(`missing arg: --${mt(r)}`)}else if(n.coerce)dr(n,o,r);return o},dr=(t,o,n)=>{try{if(t.multi&&t.delim&&t.split!==!1)o[n]=o[n].reduce((r,m)=>(r.push(...m.split(t.delim)),r),[]);o[n]=t.coerce(o[n])}catch(r){throw Error(`arg --${mt(n)}: ${r.message}`)}};var rn=async(t)=>{let o=t.argv||process.argv,n=!process.env.NO_COLOR,r=l(n),m={prefix:"",color:n,...t.usage};try{let f,e,E=t.start??2;if(t.single){if(f=Object.keys(t.commands)[0],!f)h("no command provided");e=t.commands[f]}else{if(f=o[E],e=t.commands[f],e)m.prefix+=on({[f]:e},m,` Current command: `);else m.prefix+=on(t.commands,m),tn(t.opts,m);E++}let i={...t.opts,...e.opts},G;try{G=co(i,o,{usageOpts:m,start:E})}catch(_){process.exit(1)}if(!G)process.exit(0);if(e.inputs!==void 0){let _=G.rest.length,O;if(B(e.inputs)){let[u,y]=e.inputs;if(_<u||_>y)O=y<1/0?`expected ${u}-${y} inputs`:`expected at least ${u} input(s)`}else if(_!==e.inputs)O=`expected ${e.inputs} input(s)`;if(O)nn(O,r),tn(i,m)}let N=await t.ctx({logger:new Pt(process.stderr,t.name,"INFO"),format:n?Xt:po,opts:G.result,inputs:G.rest},e);if(await e.fn(N),t.post)await t.post(N,e)}catch(f){nn(f.message,r),process.exit(1)}},tn=(t,o)=>{process.stderr.write(St(t,o)),process.exit(1)},on=(t,{color:o,lineWidth:n=80}={},r=` Available commands: `)=>{let m=Object.keys(t).sort(),f=Math.max(...m.map((E)=>E.length)),e=l(o);return[r,...m.map((E)=>`${bt(U(E,e.command),f)} : ${qt(t[E].desc,f+3,n)}`),` `].join(` `)},nn=(t,o)=>process.stderr.write(U(t,o.error)+` `);var mn=(t,o,n=!1)=>{if(n)t.level=L.NONE;else if(o)t.level=L.DEBUG};var fn=(t,o,n)=>` \u2588 \u2588 \u2588 \u2502 \u2588\u2588 \u2588 \u2502 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2502 ${t} v${o} \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2502 ${n} \u2588 \u2502 \u2588 \u2588 \u2502`;var $=(t)=>typeof t==="string";var vr=[[process.env.HOME?new RegExp(process.env.HOME,"g"):/~/,"~"]];var pt=(t)=>{for(let[o,n]of vr)t=t.replace(o,n);return t};import{existsSync as lr,mkdirSync as gr,statSync as WE}from"fs";import{dirname as ar}from"path";var xr=(t)=>t.length>0&&!lr(t)?(gr(t,{recursive:!0}),!0):!1,En=(t)=>xr(ar(t));var X=(t)=>typeof t==="function";import{readFileSync as tm}from"fs";import{writeFileSync as sr}from"fs";var en=(t,o,n,r,m=!1)=>cr(sr,t,o,n,r,m);var cr=(t,o,n,r,m,f=!1)=>{if(m?.info(`${f?"[dryrun] ":""}writing file: ${pt(o)}`),f)return;return En(o),t(o,n,!r&&$(n)?"utf-8":r)};var S=(t,o,n="utf-8")=>{return o?.debug("reading file:",pt(t)),tm(t,n)};var Co=(t,o,n,r=!1)=>en(t,B(o)?o.join(` `):o,"utf-8",n,r);var Z=(t,o)=>JSON.parse(S(t,o));var b=Symbol(),Ao=()=>{};var Et=Object.freeze({level:L.NONE,addChild(t){return t},childLogger:()=>Et,enabled:()=>!1,fine(){},debug(){},info(){},warn(){},severe(){},none(){},logEntry(){}});import{join as km}from"path";var Bo=(t,o)=>{if(t===o)return 0;if(t==null)return o==null?0:-1;if(o==null)return t==null?0:1;if(typeof t.compare==="function")return t.compare(o);if(typeof o.compare==="function")return-o.compare(t);return t<o?-1:t>o?1:0};var om=D(()=>"Assertion failed"),Qt=(typeof process<"u"&&process.env!==void 0?!0:import.meta.env?import.meta.env.MODE!=="production"||!!import.meta.env.UMBRELLA_ASSERTS||!!import.meta.env.VITE_UMBRELLA_ASSERTS:!0)?(t,o)=>{if(typeof t==="function"&&!t()||!t)throw new om(typeof o==="function"?o():o)}:()=>{};var kt=(t)=>t!=null&&typeof t!=="function"&&t.length!==void 0;var Gn=(t)=>{return(t==null||!t[Symbol.iterator])&&h(`value is not iterable: ${t}`),t};var Nn=(t)=>kt(t)?t:[...Gn(t)];var Ft=(t)=>t[t.length-1];var dt=(t,o)=>typeof t?.[o]==="function";var T=(t)=>typeof t?.[Symbol.iterator]==="function";var vt=(t)=>t!=null&&typeof t!=="string"&&typeof t[Symbol.iterator]==="function";var nm=D(()=>"illegal arity"),et=(t)=>{throw new nm(t)};var rm=D(()=>"illegal state"),it=(t)=>{throw new rm(t)};var On=["-moz-","-ms-","-o-","-webkit-"],Gt={rules:"",ruleSep:",",valSep:"",decls:"",declStart:"{",declEnd:"}",indent:"",comments:!1},lt={rules:` `,ruleSep:", ",valSep:" ",decls:` `,declStart:` { `,declEnd:`} `,indent:" ",comments:!0};function Lo(...t){let[o,n,r,m,f,e,E,i,G,N]=t;switch(t.length){case 0:et(0);case 1:return o;case 2:return(...O)=>o(n(...O));case 3:return(...O)=>o(n(r(...O)));case 4:return(...O)=>o(n(r(m(...O))));case 5:return(...O)=>o(n(r(m(f(...O)))));case 6:return(...O)=>o(n(r(m(f(e(...O))))));case 7:return(...O)=>o(n(r(m(f(e(E(...O)))))));case 8:return(...O)=>o(n(r(m(f(e(E(i(...O))))))));case 9:return(...O)=>o(n(r(m(f(e(E(i(G(...O)))))))));case 10:default:let _=(...O)=>o(n(r(m(f(e(E(i(G(N(...O))))))))));return t.length===10?_:Lo(_,...t.slice(10))}}var g=(t)=>dt(t,"xform")?t.xform():t;function P(...t){return t=t.map(g),Lo.apply(null,t)}var V=(t,o)=>[t[0],t[1],o];class Ht{value;constructor(t){this.value=t}deref(){return this.value}}var F=(t)=>t instanceof Ht,_n=(t)=>t instanceof Ht?t:new Ht(t),j=(t)=>t instanceof Ht?t.deref():t;var mm=(t)=>t.length===2?[void 0,t[1]]:t.length===3?[t[1],t[2]]:et(t.length);function Nt(...t){let o=t[0],n=o[0],r=o[1],m=o[2];t=mm(t);let f=t[0]==null?n():t[0],e=t[1];return j(r(dt(e,"$reduce")?e.$reduce(m,f):kt(e)?fm(m,f,e):Em(m,f,e)))}var fm=(t,o,n)=>{for(let r=0,m=n.length;r<m;r++)if(o=t(o,n[r]),F(o)){o=o.deref();break}return o},Em=(t,o,n)=>{for(let r of n)if(o=t(o,r),F(o)){o=o.deref();break}return o},Ot=(t,o)=>[t,wt,o],hn=(t,o)=>{let n=o.length-1;return T(o[n])?o.length>1?Nt(t.apply(null,o.slice(0,n)),o[n]):Nt(t(),o[0]):void 0};function _t(t){return t?[...t]:Ot(()=>[],(o,n)=>(o.push(n),o))}function*ht(t,o){let n=g(t)(_t()),r=n[1],m=n[2];for(let f of o){let e=m([],f);if(F(e)){yield*j(r(e.deref()));return}if(e.length)yield*e}yield*j(r([]))}function*a(t,o){let n=g(t)([Ao,Ao,(r,m)=>m])[2];for(let r of o){let m=n(b,r);if(F(m)){if(m=j(m.deref()),m!==b)yield m;return}if(m!==b)yield m}}var gt=(t,o,n=a)=>{let r=o.length-1;return T(o[r])?o.length>1?n(t.apply(null,o.slice(0,r)),o[r]):n(t(),o[0]):void 0};function $o(t,o){return T(o)?ht($o(t),$(o)?[o]:o):(n)=>{let r=n[2],m=(f,e)=>{let E=t(e);if(E){for(let i of E)if(f=m(f,i),F(f))break;return f}return r(f,e)};return V(n,m)}}function un(t){return $o((o)=>vt(o)?o:void 0,t)}function A(t,o){return T(o)?a(A(t),o):(n)=>{let r=n[2];return V(n,(m,f)=>r(m,t(f)))}}function*at(...t){let o=t.length-1;if(o<0)return;let n=Array(o+1).fill(0),r=t.map(Nn),m=r.reduce((f,e)=>f*e.length,1);for(let f=0;f<m;f++){let e=[];for(let E=o;E>=0;E--){let i=r[E],G=n[E];if(G===i.length)n[E]=G=0,E>0&&n[E-1]++;e[E]=i[G]}n[o]++,yield e}}function*Cn(t,o=1/0){while(o-- >0)yield t}function To(t,o){t=t||"";let n=!0;return o?[...o].join(t):Ot(()=>"",(r,m)=>(r=n?r+m:r+t+m,n=!1,r))}function xt(...t){return em(xt,Nt,t)}var em=(t,o,n)=>{let r,m;switch(n.length){case 4:m=n[3],r=n[2];break;case 3:m=n[2];break;case 2:return A((f)=>t(n[0],n[1],f));default:et(n.length)}return o(g(n[0])(n[1]),r,m)};var im=new Set,Gm=":[",An=P(un(),A((t)=>t[0]==="&"?t.substring(1):Gm.includes(t[0])?t:" "+t)),Nm=(t,o)=>P(t,A((n)=>$(n)&&n.startsWith(" .")?n+o:n)),ut=(t,o,n,r)=>{let m=n.length,f=[],e,E,i=(G,N)=>{let _=null;if(B(N))ut(t,wo(o,f),N,r);else if(T(N)&&!$(N))ut(t,wo(o,f),[...N],r);else if((E=X(N))||(_=r.fns[N]))if(!o.length){if(_)return _.apply(null,n.slice(G+1))(t,r),!0;N(t,r)}else if(E)i(G,N());else h(`quoted fn ('${N}') only allowed at head position`);else if(J(N))e=Object.assign(e||{},N);else if(N!=null)f.push(N)};for(let G=0;G<m;G++)if(i(G,n[G]))return t;return e&&t.push(Om(o,f,e,r)),t},wo=(t,o)=>t.length?[...at(t,o)]:o,Om=(t,o,n,r)=>{let m=r.format,f=W(r),e=r.scope?Nm(An,r.scope):An;return[f,xt(A((E)=>xt(e,To(),B(E)?E:[E]).trim()),To(m.ruleSep),wo(t,o)),m.declStart,x(n,r),f,m.declEnd].join("")},x=(t,o)=>{let n=o.format,r=o.autoprefix||im,m=W(o,o.depth+1),f=[];for(let e in t)if(t.hasOwnProperty(e)){let E=t[e];if(E==null)continue;if(X(E))E=E(t);if(B(E))E=E.map((i)=>B(i)?i.join(" "):i).join(n.ruleSep);if(r.has(e))for(let i of o.vendors)f.push(`${m}${i}${e}:${n.valSep}${E};`);f.push(`${m}${e}:${n.valSep}${E};`)}return f.join(n.decls)+n.decls},W=(t,o=t.depth)=>o>1?[...Cn(t.format.indent,o)].join(""):o>0?t.format.indent:"";function Bn(t,...o){let n=o.length===1?o[0]:o.reduce((r,m,f)=>{return r[f/(o.length-1)*100|0]=m,r},{});return(r,m)=>{let f=W(m);m.depth++;let e=W(m);r.push(`${f}@keyframes ${t}${m.format.declStart}`);for(let E in n)if(n.hasOwnProperty(E))r.push([e,E+"%",m.format.declStart,x(n[E],m),e,m.format.declEnd].join(""));return m.depth--,r.push(f+m.format.declEnd),r}}var Ln=(t,o=!1)=>(n,r)=>{let m=W(r),f=W(r,r.depth+1);if(r.format.comments||o)n.push(m+"/*",t.split(` `).map((e)=>f+e).join(` `),m+"*/");return n};var st=(t,o,n)=>(r,m)=>{let f=W(m);return r.push(`${f}${t} ${_m(o)}${m.format.declStart}`),m.depth++,ut(r,[],n,m),m.depth--,r.push(f+m.format.declEnd),r},_m=(t)=>{if($(t))return t;let o=[];for(let n in t)if(t.hasOwnProperty(n)){let r=t[n];if(r===!0)r=$n.has(n)?n:`(${n})`;else if(r===!1)r=`(not ${$n.has(n)?n:`(${n})`})`;else if(r==="only")r+=" "+n;else r=`(${n}:${r})`;o.push(r)}return o.join(" and ")},$n=new Set(["all","print","screen"]);var s=(t,o)=>{return o={format:Gt,vendors:On,fns:{},depth:0,...o},B(o.autoprefix)&&(o.autoprefix=new Set(o.autoprefix)),J(t)?x(t,o):X(t)?t([],o).join(o.format.rules):ut([],[],B(t)?t:vt(t)?[...t]:h("invalid rules"),o).join(o.format.rules)};var Tn=(t)=>{return(o,n)=>{let r=W(n);return o.push(`${r}@font-face${n.format.declStart}${x({"font-family":t.family,"font-style":t.style,"font-weight":t.weight,"font-stretch":t.stretch,"font-display":t.display,src:t.src.map(({format:m,url:f})=>`url(${f}) format(${m})`),"unicode-range":t.unicode,"ascent-override":t.ascent,"descent-override":t.ascent,"font-feature-settings":t.feature,"font-variation-settings":t.variation,"line-gap-override":t.lineGap,"size-adjust":t.size},n)}${r}${n.format.declEnd}`),o}};var wn=(t,...o)=>(n,r)=>(n.push(o.length?`@import url(${t}) ${o.join(r.format.ruleSep)};`:`@import url(${t});`),n);var Ct=(t,o)=>st("@media",t,o);function yn(...t){return(o,n)=>(o.push(t.length>1?`@namespace ${t[0]} url(${t[1]});`:`@namespace url(${t[0]});`),o)}var Sn=(t,o)=>st("@supports",t,o);var ct={"@comment":Ln,"@font-face":Tn,"@import":wn,"@keyframes":Bn,"@media":Ct,"@namespace":yn,"@supports":Sn};var Fn=4,Hn=(t)=>Fn=t,M=(t)=>t===(t|0)?String(t):t.toFixed(Fn).replace(/^0./,".").replace(/^-0./,"-.").replace(/0+$/,"");var Rn=(t)=>`${M(t)}em`,Mn=(t)=>`${M(t)}ex`;var In=(t)=>`${M(t)}rem`,yo=(t)=>`${M(t)}%`,Wn=(t)=>`${M(t)}px`,Un=(t)=>`${M(t)}vh`,Yn=(t)=>`${M(t)}vw`,Dn=(t)=>`${M(t)}vmin`,zn=(t)=>`${M(t)}vmax`,Jn=(t)=>`${t|0}ms`,Pn=(t)=>`${M(t)}s`;var jn=(t)=>`${M(t)}deg`,Xn=(t)=>`${M(t)}rad`,Zn=(t)=>`${M(t)}turn`,Kn=(t)=>`url(${t})`;var w=((t)=>{return t[t.IDLE=0]="IDLE",t[t.ACTIVE=1]="ACTIVE",t[t.DONE=2]="DONE",t[t.UNSUBSCRIBED=3]="UNSUBSCRIBED",t[t.ERROR=4]="ERROR",t})(w||{});class So extends yt{set(t){this.parent=t}childLogger(t,o){return new So(t,o??this.level,this)}logEntry(t){this.parent.logEntry(t)}}var Rt=new So("root",L.FINE,Et);var hm=0,um=()=>hm++,c=(t,o)=>!o||!o.id?{...o,id:t+"-"+um()}:o;var H=Rt.childLogger("rstream");class q{constructor(t,o){this.wrapped=t,o=c("sub",{closeIn:"last",closeOut:"last",cache:!0,...o}),this.parent=o.parent,this.id=o.id,this.closeIn=o.closeIn,this.closeOut=o.closeOut,this.cacheLast=o.cache,o.xform&&(this.xform=o.xform(_t()))}wrapped;id;closeIn;closeOut;parent;__owner;xform;cacheLast;last=b;state=w.IDLE;subs=[];deref(){return this.last!==b?this.last:void 0}getState(){return this.state}setState(t){this.state=t}subscribe(t,o={}){this.ensureState();let n;if(t instanceof q&&!o.xform)t.ensureState(),Qt(!t.parent,`sub '${t.id}' already has a parent`),t.parent=this,n=t;else n=new q(t,{...o,parent:this});return this.subs.push(n),this.setState(w.ACTIVE),n.setState(w.ACTIVE),this.last!=b&&n.next(this.last),n}transform(...t){let o,n;if(J(Ft(t)))n=t.pop(),o={error:n.error};return this.subscribe(o,c("xform",t.length>0?{...n,xform:P(...t)}:n))}map(t,o){return this.transform(A(t),o||{})}unsubscribe(t){return t?this.unsubscribeChild(t):this.unsubscribeSelf()}unsubscribeSelf(){return H.debug(this.id,"unsub self"),this.parent?.unsubscribe(this),this.state<w.UNSUBSCRIBED&&(this.state=w.UNSUBSCRIBED),this.release(),!0}unsubscribeChild(t){H.debug(this.id,"unsub child",t.id);let o=this.subs.indexOf(t);if(o>=0){if(this.subs.splice(o,1),this.closeOut==="first"||!this.subs.length&&this.closeOut!=="never")this.unsubscribe();return!0}return!1}next(t){if(this.state>=w.DONE)return;this.xform?this.dispatchXform(t):this.dispatch(t)}done(){if(H.debug(this.id,"entering done()"),this.state>=w.DONE)return;if(this.xform){if(!this.dispatchXformDone())return}if(this.state=w.DONE,this.dispatchTo("done"))this.state<w.UNSUBSCRIBED&&this.unsubscribe();H.debug(this.id,"exiting done()")}error(t){let n=this.wrapped?.error;return n&&H.debug(this.id,"attempting wrapped error handler"),n?.(t)||this.unhandledError(t)}unhandledError(t){return(H.parent===Et||H.parent===Rt&&Rt.parent===Et?console:H).warn(this.id,"unhandled error:",t),this.unsubscribe(),this.state=w.ERROR,!1}dispatchTo(t,o){let n=this.wrapped;if(n)try{n[t]&&n[t](o)}catch(m){if(!this.error(m))return!1}let r=t==="next"?this.subs:[...this.subs];for(let m=r.length;m-- >0;){n=r[m];try{n[t]&&n[t](o)}catch(f){if(t==="error"||!n.error||!n.error(f))return this.unhandledError(f)}}return!0}dispatch(t){H.debug(this.id,"dispatch",t),this.cacheLast&&(this.last=t),this.dispatchTo("next",t)}dispatchXform(t){let o;try{o=this.xform[2]([],t)}catch(n){this.error(n);return}if(this.dispatchXformVals(o))F(o)&&this.done()}dispatchXformDone(){let t;try{t=this.xform[1]([])}catch(o){return this.error(o)}return this.dispatchXformVals(t)}dispatchXformVals(t){let o=j(t);for(let n=0,r=o.length;n<r&&this.state<w.DONE;n++)this.dispatch(o[n]);return this.state<w.ERROR}ensureState(){if(this.state>=w.DONE)it(`operation not allowed in state ${w[this.state]}`)}release(){this.subs.length=0,delete this.parent,delete this.xform,delete this.last}}var bn=(t,o)=>{let n=new Vn(o);return n.next(t),n};class Vn extends q{src;_cancel;_inited;constructor(t,o){let[n,r]=X(t)?[t,o||{}]:[void 0,t||{}];super(r.error?{error:r.error}:void 0,c("stream",r));this.src=n,this._inited=!1}subscribe(t,o={}){let n=super.subscribe(t,o);if(!this._inited){if(this.src)try{this._cancel=this.src(this)||(()=>{return})}catch(r){let m=this.wrapped;if(!m||!m.error||!m.error(r))this.unhandledError(r)}this._inited=!0}return n}unsubscribe(t){let o=super.unsubscribe(t);if(o&&(!t||(!this.subs||!this.subs.length)&&this.closeOut!=="never"))this.cancel();return o}done(){this.cancel(),super.done(),delete this.src,delete this._cancel}error(t){if(super.error(t))return!0;return this.cancel(),!1}cancel(){if(this._cancel){H.debug(this.id,"cancel");let t=this._cancel;delete this._cancel,t()}}}var qn=(t,o)=>t==="first"||t==="last"&&!o;function Fo(t){return t?Nt(Fo(),t):Ot(()=>({}),(o,[n,r])=>(o[n]=r,o))}var pn=()=>(t)=>{let o=t[2];return V(t,(n,r)=>{if(r){for(let m of j(r)||[])if(n=o(n,m),F(n))break}return F(r)?_n(n):n})};function Ho(t,o){return T(o)?ht(Ho(t),o):P(A(t),pn())}function Ro(t,o){return T(o)?a(Ro(t),o):A(X(t)?(n)=>[t(n),n]:(n)=>[t,n])}function Mo(...t){let o=gt(Mo,t);if(o)return o;let n=t[0],r=t[1]!==!1;return A((m)=>{let f=r?{}:m;for(let e in m)f[e]=n(m[e]);return f})}var Qn=(t)=>t;function Io(...t){let o=gt(Io,t,ht);if(o)return o;let{key:n=Qn,mergeOnly:r=!1,reset:m=!0,all:f=!0,backPressure:e=0}=t[1],E=B(t[0])?new Set(t[0]):t[0],i=new Set,G=new Map,N={},_=([O,u,y])=>{let d=!0;if(r||e<1)return[O,(C)=>{if(m&&f&&i.size>0||!m&&d)C=y(C,N),N={},i.clear(),d=!1;return u(C)},(C,v)=>{let R=n(v);if(E.has(R)){if(N[R]=v,i.add(R),r||kn(E,i))if(C=y(C,N),d=!1,m)N={},i.clear();else N={...N}}return C}];else return[O,(C)=>{if(f&&i.size>0)C=y(C,dn(G,i)),G.clear(),i.clear();return u(C)},(C,v)=>{let R=n(v);if(E.has(R)){let K=G.get(R);!K&&G.set(R,K=[]),K.length>=e&&it(`max back pressure (${e}) exceeded for input: ${String(R)}`),K.push(v),i.add(R);while(kn(E,i))if(C=y(C,dn(G,i)),d=!1,F(C))break}return C}]};return _.keys=()=>E,_.clear=()=>{G.clear(),E.clear(),i.clear(),N={}},_.add=(O)=>{E.add(O)},_.delete=(O,u=!0)=>{if(G.delete(O),E.delete(O),u)i.delete(O),delete N[O]},_}var kn=(t,o)=>{if(o.size<t.size)return!1;for(let n of t)if(!o.has(n))return!1;return!0},dn=(t,o)=>{let n={};for(let r of o){let m=t.get(r);n[r]=m.shift(),!m.length&&o.delete(r)}return n};var vn=(t,o)=>{let n=!0;for(let r of o)n=t.removeID(r)&&n;return n};var to=(t)=>new ln(t);class ln extends q{sources;idSources;realSourceIDs;invRealSourceIDs;psync;clean;constructor(t){let o=Io(new Set,{key:(r)=>r[0],mergeOnly:t.mergeOnly===!0,reset:t.reset===!0,all:t.all!==!1,backPressure:t.backPressure||0}),n=Mo((r)=>r[1]);super(void 0,c("streamsync",{...t,xform:t.xform?P(o,n,t.xform):P(o,n)}));this.sources=new Map,this.realSourceIDs=new Map,this.invRealSourceIDs=new Map,this.idSources=new Map,this.psync=o,this.clean=!!t.clean,t.src&&this.addAll(t.src)}add(t,o){o||(o=t.id),this.ensureState(),this.psync.add(o),this.realSourceIDs.set(o,t.id),this.invRealSourceIDs.set(t.id,o),this.idSources.set(t.id,t),this.sources.set(t,t.subscribe({next:(n)=>n[1]instanceof q?this.add(n[1]):this.next(n),done:()=>this.markDone(t),__owner:this},{xform:Ro(o),id:`in-${o}`}))}addAll(t){for(let o in t)this.psync.add(o);for(let o in t)this.add(t[o],o)}remove(t){let o=this.sources.get(t);if(o){let n=this.invRealSourceIDs.get(t.id);return H.info(`removing src: ${t.id} (${n})`),this.psync.delete(n,this.clean),this.realSourceIDs.delete(n),this.invRealSourceIDs.delete(t.id),this.idSources.delete(t.id),this.sources.delete(t),o.unsubscribe(),!0}return!1}removeID(t){let o=this.getSourceForID(t);return o?this.remove(o):!1}removeAll(t){for(let n of t)this.psync.delete(this.invRealSourceIDs.get(n.id));let o=!0;for(let n of t)o=this.remove(n)&&o;return o}removeAllIDs(t){return vn(this,t)}getSourceForID(t){return this.idSources.get(this.realSourceIDs.get(t))}getSources(){let t={};for(let[o,n]of this.idSources)t[this.invRealSourceIDs.get(o)]=n;return t}unsubscribe(t){if(!t){H.debug(this.id,"unsub sources");for(let o of this.sources.values())o.unsubscribe();this.sources.clear(),this.psync.clear(),this.realSourceIDs.clear(),this.invRealSourceIDs.clear(),this.idSources.clear()}return super.unsubscribe(t)}markDone(t){this.remove(t),qn(this.closeIn,this.sources.size)&&this.done()}}var Wo=Y((t,o=" ")=>{let n=rt(String(o),t);return(r,m)=>{if(r==null)return n;return r=r.toString(),m=m!==void 0?m:r.length,m<t?n.substring(m)+r:r}}),CG=Wo(2,"0"),AG=Wo(3,"0"),gn=Wo(4,"0");var Cm=/\{(\d+)\}/g;var Uo=(t,...o)=>o.length>0?t.replace(Cm,(n,r)=>String(o[parseInt(r,10)])):t;var an=(t)=>({key:(o)=>o,group:_t(),...t});function Yo(...t){let o=hn(Yo,t);if(o)return o;let n=an(t[0]),[r,m,f]=n.group;return[()=>({}),(e)=>{for(let E in e)e[E]=m(e[E]);return e},(e,E)=>{let i=n.key(E);return e[i]=e[i]?f(e[i],E):f(r(),E),e}]}function Do(t,o){return T(o)?a(Do(t),o):(n)=>{let r=n[2];return V(n,(m,f)=>t(f)?r(m,f):m)}}import{watch as or}from"fs";import{resolve as tt}from"path";var xn={specs:z({alias:"s",required:!0,desc:"Path to generated JSON defs"})},oo={bundle:I({alias:"b",desc:"Bundle inputs (see `out` option)"})},At={include:zt({alias:"I",desc:"Include CSS files (prepend)"})},no={eval:z({alias:"e",desc:"eval meta stylesheet in given string (ignores other inputs & includes)"})},ro={force:zt({alias:"f",hint:"STR",desc:"CSS classes to force include (wildcards are supported, @-prefix will read from file)",delim:","})},sn={media:zt({alias:"m",hint:"ID",desc:"Media query IDs (use 'ALL' for all)",delim:","})},cn={onlyDecls:I({desc:"Only emit framework decls"})},p={out:z({alias:"o",desc:"Output file (or stdout)"})},mo={prec:Jt({default:3,desc:"Number of fractional digits"})},Q={pretty:I({alias:"p",desc:"Pretty print output"})},Bt={noDecls:I({alias:"d",desc:"Don't emit framework decls"})},Lt={noHeader:I({desc:"Don't emit generated header comment"})},$t={scope:z({desc:"Suffix for CSS class names"})},Tt={watch:I({alias:"w",desc:"Watch input files for changes"})};import{watch as Am}from"fs";import{resolve as tr}from"path";var k=(t,o,n)=>{o=$(o)?o:o.join(` `),t?Co(tr(t),o,n):process.stdout.write(o+` `)},fo=({info:{name:t,version:o}})=>`/*! ${t} v${o} - generated by thi.ng/meta-css @ ${new Date().toISOString()} */`,Mt=(t,o)=>{let n=()=>{o.info("closing watchers..."),r.forEach((m)=>m.watcher.close())},r=t.map((m,f)=>{m=tr(m);let e=bn(S(m,o),{id:`in${gn(f)}`});return{input:e,watcher:Am(m,{},(E)=>{if(E==="change")try{e.next(S(m,o))}catch(i){o.warn(i.message),n()}else o.warn("input removed:",m),n()})}});return process.on("SIGINT",n),to({src:Fo(A(({input:m})=>[m.id,m],r))})},Eo=(t)=>Object.keys(t).reduce((o,n)=>{if(!n.startsWith("__"))o[n]=t[n];return o},{});var rr={desc:"Transpile (and optionally bundle) meta stylesheets to CSS",opts:{...oo,...no,...ro,...At,...Bt,...Lt,...p,...Q,...$t,...xn,...Tt,noWrite:I({desc:"Don't write files, use stdout only"})},fn:zo};async function zo(t){let o=Z(tt(t.opts.specs),t.logger),n=wm(o,t.opts.force||[],t.logger);if(t.opts.bundle)if(t.opts.watch)await Lm(t,n);else Wt(t,o,n,t.opts.eval?[t.opts.eval]:t.inputs.map((r)=>S(tt(r),t.logger)),t.opts.out);else if(t.opts.watch)await Bm(t,o,n);else if(t.opts.eval)try{Wt(t,o,n,[t.opts.eval])}catch(r){t.logger.warn(r.message)}else for(let r of t.inputs)try{r=tt(r);let m=!t.opts.noWrite?r.replace(/\.mcss$/,".css"):void 0;Wt(t,o,n,[S(r,t.logger)],m)}catch(m){t.logger.warn(m.message)}}var Bm=async(t,o,n)=>{let r=tt(t.opts.specs),m,f={process:()=>{try{return o=Z(r,t.logger),m.forEach((E)=>E.process()),!0}catch(E){return t.logger.warn(E.message+": "+r),!1}},watcher:or(r,{},(E)=>{if(E==="change")f.process();else t.logger.warn("specs file removed:",r),e()})},e=()=>{t.logger.info("closing watchers..."),f.watcher.close(),m.forEach((E)=>E.watcher.close())};m=t.inputs.map((E)=>{E=tt(E);let i=!t.opts.noWrite?E.replace(/\.mcss$/,".css"):void 0,G=()=>{try{return Wt(t,o,n,[S(E,t.logger)],i),!0}catch(N){if(t.logger.warn(N.message+": "+E),m)e();return!1}};if(!G())process.exit(1);return{process:G,watcher:or(E,{},(N)=>{if(N==="change")G();else t.logger.warn("input removed:",E),e()})}}),t.logger.info("waiting for changes, press ctrl+c to cancel..."),process.on("SIGINT",e)},Lm=async(t,o)=>{to({src:{styles:Mt(t.inputs,t.logger),specs:Mt([t.opts.specs],t.logger).map((n)=>JSON.parse(Object.values(n)[0]))}}).subscribe({next({styles:n,specs:r}){try{Wt(t,r,o,Object.keys(n).sort().map((m)=>n[m]),t.opts.out)}catch(m){t.logger.warn(m.message)}}})},Wt=({logger:t,opts:{include:o,noDecls:n,noHeader:r,pretty:m,scope:f}},e,E,i,G)=>{let N={logger:t,specs:e,css:{format:m?lt:Gt,fns:ct,scope:f},mediaQueryIDs:new Set(Object.keys(e.media)),mediaQueryRules:{...E.mediaQueryRules},plainRules:{...E.plainRules}},_=o?o.map((O)=>S(tt(O),t).trim()):[];if(!r)_.push(fo(e));if(!n&&e.decls.length)_.push(s(e.decls,N.css));i.forEach((O)=>ym(O,N)),Tm(_,N),$m(_,N),k(G,_,t)},$m=(t,{css:o,logger:n,mediaQueryRules:r,specs:m})=>{for(let f in r){let e=fr(r[f],m);n.debug("mediaquery rules",f,e),t.push(s(Ct(Rm(m.media,f),e),o))}},Tm=(t,{css:o,logger:n,plainRules:r,specs:m})=>{let f=fr(r,m);n.debug("plain rules",f),t.push(s(f,o))},wm=(t,o,n)=>{let r=new Set(Object.keys(t.media)),m=new Set(Object.keys(t.classes)),f={},e={};if(o.length&&o[0][0]==="@")o=[...ft(S(tt(o[0].substring(1)),n))];for(let E of o){if(!E||E.startsWith("//"))continue;let{token:i,query:G}=Er(E,r),N;if(i.includes("*")){let _=new RegExp(`^${i.replace("*",".*")}$`);N=[...Do((O)=>_.test(O),m)]}else if(m.has(i))N=[i];else{n.warn(`unknown include rule ID: ${E}, skipping...`);continue}for(let _ of N)n.debug("including class:",_),G?er(f,G,`.${_}`,_):ir(e,`.${_}`,_)}return{mediaQueryRules:f,plainRules:e}},ym=(t,{specs:o,mediaQueryIDs:n,mediaQueryRules:r,plainRules:m})=>{let f=Ut(),e=Ut(f),E={root:f,curr:e,scopes:[e]};for(let i of ft(t)){if(!i||/^\s*\/\//.test(i))continue;for(let G of Sm(i)){if(!G)continue;let N=E.curr;switch(N.state){case"sel":case"nest":if(G==="{"){if(N.state==="sel")N.sel=N.sel.map((_)=>_.replace(",","")),N.path=Fm(E.scopes);N.state="class"}else if(G==="}")nr(E);else{let _=Ft(N.sel);if(!_||_.endsWith(","))N.sel.push(G);else N.sel[N.sel.length-1]+=" "+G}break;case"class":if(G==="{")N.state="nest",E.scopes.push(E.curr=Ut(N));else if(G==="}")nr(E);else{let{token:_,query:O}=Er(G,n);if(!o.classes[_]&&!(Gr(_)||Or(_)||Nr(_)))h(`unknown class ID: ${_}`);if(O)er(r,O,N.path,_);else ir(m,N.path,_)}break;default:it(N.state)}}}};function*Sm(t){let o=-1,n=t.length,r=0,m=0,f=!1,e=!1;for(let E=0;E<n;E++){let i=t[E];if(i==='"'){if(!(r||m))if(f)yield t.substring(o,E+1),o=-1,f=!1;else f=!0;if(m)e=!e}else if(!e){if(i===" "||i==="\t"){if(!(r||m||f)&&o>=0)yield t.substring(o,E),o=-1}else if(i==="{"||i==="}"){if(o>=0)yield t.substring(o,E);yield i,o=-1}else if(i==="(")r++;else if(i===")"){if(--r<0)h(`invalid nesting in line: '${t}'`)}else if(i==="["){if(o<0)o=E;m++}else if(i==="]"){if(--m<0)h(`invalid arg nesting in line: '${t}'`)}else if(o<0)o=E}}if(f)h("string literals must be fully on a single line");if(r)h("template calls must be fully on a single line");if(m)h("verbatim properties must be fully on a single line");if(o>=0)yield t.substring(o,n)}var It=":",mr="///",Ut=(t)=>({state:"sel",sel:t?[]:["<root>"],path:"",parent:t}),nr=(t)=>{let o=!t.curr.sel.length;if(Qt(!!t.curr.parent,"stack underflow"),t.scopes.pop(),t.scopes.length>0){if(t.curr=Ft(t.scopes),!o&&t.curr.state==="nest")t.scopes.push(t.curr=Ut(t.curr))}else t.scopes.push(t.curr=Ut(t.root))},Fm=(t)=>t.map((o)=>o.sel.join(",")).join(mr),fr=(t,o)=>Object.entries(t).map(([n,r])=>Hm(n,r,o)),Hm=(t,o,n)=>{let r=[],m=r,f=t.split(mr);for(let e=0;e<f.length;e++){let E=f[e].split(",");if(e==f.length-1){let i=Object.assign({},...A((G)=>Or(G)?Wm(G):Gr(G)?Mm(G):Nr(G)?Im(n,G):Eo(n.classes[G]),o));E.push(i)}m.push(E),m=E}return r[0]},Er=(t,o)=>{if(/^::?/.test(t))return{token:t};let n=t.lastIndexOf(It);if(n<0)return{token:t};let r=t.indexOf("("),m=t.indexOf("[");if(r>0||m>0){let E=r>0?m>0?Math.min(r,m):r:m;if(E<n&&t.indexOf(It)>E)return{token:t};n=t.substring(0,E).lastIndexOf(It)}let f=t.substring(0,n);if(!f.split(It).every((E)=>o.has(E)))h(`invalid media query in token: ${t}`);return{token:t.substring(n+1),query:f}},Rm=(t,o)=>o.split(It).reduce((n,r)=>Object.assign(n,t[r]),{}),er=(t,o,n,r)=>{if(!t[o])t[o]={};(t[o][n]||(t[o][n]=new Set)).add(r)},ir=(t,o,n)=>(t[o]||(t[o]=new Set)).add(n),Mm=(t)=>{let o=t.indexOf("="),n=t.substring(0,o),r=t.substring(o+1);return{[`--${n}`]:r[0]==='"'?r.slice(1,-1):r}},Im=(t,o)=>{let n=o.indexOf("("),r=o.substring(0,n),m=o.substring(n+1,o.length-1).split(/(?<!\\),/g).map((e)=>e.trim().replace("\\,",",")),f=t.templates[r];if(!f)h(`unknown template: ${r}`);if(m.length!==f.__arity)h(`template "${r}" expected ${f.__arity} arguments`);return Object.entries(f).reduce((e,[E,i])=>{if(!E.startsWith("__")){if(E=Uo(E,...m),$(i))i=Uo(i,...m);e[E]=i}return e},{})},Wm=(t)=>{let[o,n,r]=/^(.+)-\[(.+)\]/.exec(t);return{[n]:r}},Gr=(t)=>/^[a-z0-9:_-]+=.+/i.test(t),Nr=(t)=>t.includes("(")&&t.endsWith(")"),Or=(t)=>t.indexOf("-[")>0&&t.endsWith("]");var hr={deg:jn,em:Rn,ex:Mn,ms:Jn,percent:yo,px:Wn,rad:Xn,rem:In,second:Pn,turn:Zn,url:Kn,vh:Un,vmax:zn,vmin:Dn,vw:Yn,"%":yo},Um={percent:"{0}%",second:"{0}s",url:"url({0})"},Ym={"":[""],a:[""],h:["-left","-right"],v:["-top","-bottom"],t:["-top"],top:["top"],b:["-bottom"],bottom:["bottom"],r:["-right"],right:["right"],l:["-left"],left:["left"],x:["-x"],y:["-y"],in:[""],out:[""]},ur={desc:"Generate framework rules from specs",opts:{...p,...mo,...Q,...Tt},fn:Jo};async function Jo(t){if(t.opts.watch)await Dm(t);else await Cr(t.inputs.map((o)=>S(o,t.logger)),t.opts,t.logger)}var Dm=async(t)=>{Mt(t.inputs,t.logger).subscribe({next(o){try{Cr(Object.keys(o).sort().map((n)=>o[n]),t.opts,t.logger)}catch(n){t.logger.warn(n.message)}}})},Cr=async(t,o,n)=>{let r={info:{name:"TODO",version:"0.0.0"},media:{},classes:{},templates:{},decls:[]};Hn(o.prec);for(let m of t){let f=JSON.parse(m);if(Object.assign(r.info,f.info),Object.assign(r.media,f.media),f.decls)r.decls.push(...f.decls);if(f.specs)for(let e of f.specs)try{Ar(f,e,r.classes,n)}catch(E){n.warn(`error processing spec: ${e.name}`,E,", skipping...")}if(f.templates)for(let e of f.templates)zm(f,e,r.templates,n)}return k(o.out,JSON.stringify(r,null,o.pretty?4:0),n),r},Ar=(t,o,n,r,m=!1)=>{let f=B(o.vars)?o.vars:[""],e=$(o.props)?{[o.props]:"<v>"}:o.props,E=Jm(o,t),i=new Set;for(let G of f){let N=t.vars?.[G]||Ym[G];if(!N)h(`unknown variation ID: ${G}`);for(let[_,O]of at(N,Object.keys(E))){let u=ot(o.name,G,_,O,E[O]),y=o.unit?ot(o.unit,G,_,O,E[O]):void 0,d=m?jm(y):Pm(E[O],y);if(!n[u]){if(n[u]={},o.user!=null)n[u].__user=o.user;if(o.doc!=null)n[u].__doc=Xm(o.doc,G,_,O,d)}else if(!i.has(u))h(`duplicate class ID: ${u}`);i.add(u);let C=-1;for(let[v,R]of Object.entries(e)){let K=ot(v,G,_,O,E[O]),eo=ot(!y||$(R)?String(R):hr[y](R),G,_,O,d);if(n[u][K]=eo,r.debug(u,K,eo),m)C=_r(eo,_r(K,C))}if(m)n[u].__arity=C+1}}return n},zm=(t,o,n,r)=>Ar(t,{...o,values:[""]},n,r,!0),_r=(t,o)=>{let n=/\{(\d+)\}/g,r;while(r=n.exec(t))o=Math.max(o,+r[1]);return o},Jm=(t,o)=>{let n=$(t.values)?o.tables?.[t.values]||h(`invalid table ID: ${t.values}`):t.values;if(J(n))return n;let r=t.key==="v"?(m)=>String(m):t.key==="i+1"?(m,f)=>String(f+1):t.key==="i"||t.key===void 0?(m,f)=>String(f):h(`invalid key type: ${t.key}`);return n.reduce((m,f,e)=>{return m[r(f,e)]=f,m},{})},Pm=(t,o)=>{if(!o||$(t))return t;let n=hr[o];if(!n)h(`invalid unit: ${o}`);return n(t)},jm=(t)=>t?Um[t]||"{0}"+t:"{0}",ot=(t,o,n,r,m)=>t.replace(/<vid>/g,o).replace(/<var>/g,n).replace(/<k>/g,r).replace(/<v>/g,String(m)),Xm=({group:t,desc:o,args:n},r,m,f,e)=>({group:t?ot(t,r,m,f,e):"TODO",desc:o?ot(o,r,m,f,e):void 0,args:n?n.map((E)=>ot(E,r,m,f,e)):void 0});var Br={desc:"Combination of the generate & convert commands",opts:{...oo,...no,...ro,...At,...Bt,...Lt,...mo,...Q,...$t,...Tt,outCss:z({desc:"Output file for CSS bundle",required:!0}),outSpecs:z({desc:"Output file for framework",required:!0})},fn:async(t)=>{let{opts:o,inputs:n}=t,[r,m]=n.reduce((E,i)=>(E[i.endsWith(".json")?0:1].push(i),E),[[],[]]),f={inputs:r,format:t.format,logger:t.logger,opts:{...o,out:o.outSpecs}},e={inputs:m,format:t.format,logger:t.logger,opts:{...o,noWrite:!1,out:o.outCss,scope:o.scope,specs:o.outSpecs}};await Jo(f),await zo(e)}};import{resolve as Zm}from"path";var Tr={desc:"Generate Markdown documentation for framework specs",opts:{...p,level:Jt({alias:"l",desc:"Initial heading level",default:1}),title:z({alias:"t",desc:"Custom main title, set to NONE to disable"})},inputs:1,fn:async(t)=>{let{logger:o,opts:n,inputs:r}=t,m=Z(Zm(r[0]),o),f=Km(m,n);k(n.out,f,o)}},Km=(t,{level:o,title:n})=>{let r=Object.keys(t.classes).length,m=Object.keys(t.templates).length,f=[`Currently, there are ${r+m} CSS utility classes (incl. ${m} templates) defined in "${t.info.name}" (v${t.info.version}):`,"",`${nt(o+1)} Classes by category`,"",...$r(t.classes,Vm,o+2),`${nt(o+1)} Templates by category`,"",...$r(t.templates,qm,o+2),`${nt(o+1)} Media queries`,"",...Object.entries(t.media).map(([e,E])=>`- **${e}**: \`${JSON.stringify(E)}\``),""];if(n!=="NONE")f.unshift(`${nt(o)} ${n??t.info.name} `);return f},Lr=(t)=>t.split(/(\d+)/).map((o)=>{let n=parseInt(o);return isNaN(n)?o:n}),bm=(t,o)=>{if(/\d+/.test(t)&&/\d+/.test(o)){let n=Lr(t),r=Lr(o),m=n.length;if(m===r.length){for(let f=0;f<m;f++)if(n[f]!==r[f])return Bo(n[f],r[f]);return 0}return n.length-r.length}return Bo(t,o)},$r=(t,o,n)=>{let r=Yo({key:([m,{__doc:f}])=>f?.group||"TODO",group:[()=>[],(m)=>m.sort(),(m,f)=>(m.push(f[0]),m)]},Object.entries(t));return Ho((m)=>{let f=r[m].sort(bm).map((E)=>o(E,t[E].__doc,n+1)),e=f.length;return[`${nt(n)} ${Zt(m)}`,e>3?` <details><summary>${e} items:</summary> `:"",f.join(` `),e>3?`</details> `:""]},Object.keys(r).sort())},Vm=(t,o)=>{if(!o?.desc)return`- \`${t}\``;let n=o.desc;if(/^-[a-z]/.test(n))n=n.substring(1);return`- \`${t}\` (${n})`},qm=(t,o,n)=>{if(!o?.args)return`${nt(n)} ${t}(...) TODO`;let r=o.args.map((m)=>/^\w+/.exec(m)[0]).join(", ");return[`${nt(n)} \`${t}(${r})\``,"",...o.args.map(pm),o.desc?` ${o.desc} `:""].join(` `)},pm=(t)=>`- ${t.replace(/^(\w+)/,(o,n)=>`**${n}**`)}`,nt=Y((t)=>"#".repeat(t));import{resolve as wr}from"path";var Sr={desc:"Export entire generated framework as CSS",opts:{...At,...Bt,...cn,...p,...Q,...Lt,...sn,...$t},inputs:1,fn:async(t)=>{let{logger:o,opts:{include:n,media:r,noDecls:m,noHeader:f,onlyDecls:e,out:E,pretty:i,scope:G},inputs:N}=t,_={format:i?lt:Gt,fns:ct,scope:G},O=Z(wr(N[0]),o),u=n?n.map((y)=>S(wr(y),o).trim()):[];if(!f)u.push(fo(O));if(!m&&O.decls.length)u.push(s(O.decls,_));if(!e)u.push(Qm(O,r,_,o));k(E,u,o)}},Qm=(t,o,n,r)=>{let m=yr("",t);if(o){let f=o[0]==="ALL"?Object.keys(t.media):o;for(let e of f)if(t.media[e])m.push(Ct(t.media[e],yr("-"+e,t)));else r.warn(`invalid media query ID: ${e}, skipping...`)}return s(m,n)},yr=(t,o)=>Object.entries(o.classes).map(([n,r])=>[`.${n}${t}`,Eo(r)]);var Po=Z(km(process.argv[2],"package.json"));rn({name:"metacss",start:3,opts:{...Ko},commands:{convert:rr,develop:Br,doc:Tr,export:Sr,generate:ur},ctx:async(t)=>{return mn(t.logger,t.opts.verbose),{...t,format:Xt}},usage:{prefix:`${fn(Po.name,Po.version,Po.description)} Usage: metacss <cmd> [opts] input [...] metacss <cmd> --help `,showGroupNames:!0,paramWidth:24}});