@thi.ng/meta-css 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/LICENSE +201 -0
- package/README.md +426 -0
- package/bin/metacss +12 -0
- package/index.js +15 -0
- package/package.json +107 -0
- package/specs/_info.json +26 -0
- package/specs/anim.json +12 -0
- package/specs/borders.json +46 -0
- package/specs/colors.json +141 -0
- package/specs/cursor.json +48 -0
- package/specs/dimensions.json +55 -0
- package/specs/display.json +24 -0
- package/specs/grid.json +41 -0
- package/specs/lists.json +11 -0
- package/specs/margins.json +23 -0
- package/specs/overflow.json +28 -0
- package/specs/positions.json +31 -0
- package/specs/typography.json +127 -0
package/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var L1={default:95,hint:90,multi:90,param:96,required:33};var _1=(X)=>X;var n=function(X,Z){return!Z&&(Z={}),(...J)=>{const V=JSON.stringify(J);if(V!==void 0)return V in Z?Z[V]:Z[V]=X.apply(null,J);return X.apply(null,J)}};var d=n((X,Z)=>X.repeat(Z));var B0=(X)=>/^[a-f0-9]+$/i.test(X);var Q0=(X)=>/^[-+]?\d+$/.test(X),K0=(X)=>/^[-+]?\d*\.?\d+(e[-+]?\d+)?$/i.test(X);var R=(X,Z=(J)=>J!==void 0?": "+J:"")=>class extends Error{constructor(J){super(X(J)+Z(J))}};var k8=R(()=>"illegal argument(s)"),C=(X)=>{throw new k8(X)};var S1=(X)=>K0(X)?parseFloat(X):C(`not a numeric value: ${X}`),z0=(X)=>X.map(S1),y1=(X)=>B0(X)?parseInt(X,16):C(`not a hex value: ${X}`),$0=(X)=>X.map(y1),h1=(X)=>Q0(X)?parseInt(X):C(`not an integer: ${X}`),q0=(X)=>X.map(h1);var Q1=(X,Z)=>(J)=>({coerce:X,hint:Z,group:"main",...J}),K1=(X,Z)=>(J)=>({hint:T8(Z,J.delim),multi:!0,coerce:X,group:"main",...J}),T8=(X,Z)=>X+(Z?`[${Z}..]`:""),l=(X)=>({flag:!0,default:!1,group:"flags",...X}),p=Q1(_1,"STR"),z1=K1(_1,"STR"),U4=Q1(S1,"NUM"),Y4=Q1(y1,"HEX"),C0=Q1(h1,"INT"),B4=K1(z0,"NUM"),Q4=K1($0,"HEX"),K4=K1(q0,"INT");var H=((X)=>{return X[X.FINE=0]="FINE",X[X.DEBUG=1]="DEBUG",X[X.INFO=2]="INFO",X[X.WARN=3]="WARN",X[X.SEVERE=4]="SEVERE",X[X.NONE=5]="NONE",X})(H||{});class f1{id;level;constructor(X,Z=H.FINE){this.id=X,this.level=typeof Z==="string"?H[Z]:Z}enabled(X){return this.level<=X}fine(...X){this.level<=H.FINE&&this.log(H.FINE,X)}debug(...X){this.level<=H.DEBUG&&this.log(H.DEBUG,X)}info(...X){this.level<=H.INFO&&this.log(H.INFO,X)}warn(...X){this.level<=H.WARN&&this.log(H.WARN,X)}severe(...X){this.level<=H.SEVERE&&this.log(H.SEVERE,X)}}var H0=(X)=>X.map((Z)=>{if(typeof Z==="function")Z=Z();if(!(typeof Z==="string"||typeof Z==="number"))Z=JSON.stringify(Z);return Z}).join(" ");class m1 extends f1{constructor(X,Z,J=H.FINE){super(Z,J);this.target=X}log(X,Z){this.target.write(`[${H[X]}] ${this.id}: ${H0(Z)}
|
|
3
|
+
`)}}var $1=n((X,Z=" ")=>{const J=d(String(Z),X);return(V,W)=>{if(V==null)return J;return V=V.toString(),W=W!==void 0?W:V.length,W<X?V+J.substring(W):V}});var M0=(X,Z)=>{return!Z&&(Z=new Map),(J)=>{let V;return Z.has(J)?Z.get(J):(Z.set(J,V=X(J)),V)}};var u1={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 I8=(X,Z)=>(J)=>X.format(Z,J),g1=(X)=>Object.keys(u1).reduce((Z,J)=>(Z[J]=I8(X,u1[J]),Z),{format:X});var F0="\x1B[0m",R8=["","1","2","1;2","4","1;4","2;4","1;2;4"],q1={format:(X,Z)=>q1.start(X)+Z+q1.end,start:M0((X)=>{let Z=[],J=X&15;return J&&Z.push(29+(X>>4&1)*60+J),J=X>>5&15,J&&Z.push(39+(X>>9&1)*60+J),J=X>>10,J&&Z.push(R8[J]),"\x1B["+Z.join(";")+"m"}),end:F0,prefix:F0,suffix:"\n"};var w0={format:(X,Z)=>String(Z),prefix:"",suffix:"\n",start:()=>"",end:""};var C1=g1(q1),P0=g1(w0);var w=Array.isArray;var E8=(X)=>X.toUpperCase(),N0=(X)=>X.toLowerCase(),O0=(X)=>X.length?X[0].toUpperCase()+X.substring(1):X,D0=(X,Z="-")=>N0(X.replace(/([a-z0-9\u00e0-\u00fd])([A-Z\u00c0-\u00dd])/g,(J,V,W)=>V+Z+W));var G0=(X,Z="-")=>N0(X).replace(new RegExp(`\\${Z}+(\\w)`,"g"),(J,V)=>E8(V));var j0=Object.getPrototypeOf,k=(X)=>{let Z;return X!=null&&typeof X==="object"&&((Z=j0(X))===null||j0(Z)===null)};var A8=/\x1b\[[0-9;]+m/g,v8=(X)=>X.replace(A8,"");var H1=(X)=>v8(X).length;var k0=(X=!1,Z)=>(J)=>X||typeof J!=="string"&&typeof J!=="number"?JSON.stringify(J,null,Z):String(J);function*y(X,Z=/\r?\n/g,J=!1){let V=0;const W=X.length,U=~~J;let B;if(typeof Z==="string")B=new RegExp(Z,"g");else if(!Z.flags.includes("g"))B=new RegExp(Z,Z.flags+"g");else B=Z;for(;V<W;){const Y=B.exec(X);if(!Y){yield X.substring(V);return}const Q=Y[0].length;yield X.substring(V,Y.index+U*Q),V=Y.index+Q}}class x1{n=0;w=[];constructor(X,Z){X!=null&&this.add(X,Z)}add(X,Z=X.length){return this.w.push(X),this.n+=Z+~~(this.n>0),this}toString(){return this.w.join(" ")}}var b8={length:(X)=>X.length,split:(X,Z)=>Z},I0={length:H1,split:(X,Z)=>{const J=/\x1b\[[0-9;]+m/g;let V=Z,W;while(W=J.exec(X)){if(W.index>=Z)break;const U=W[0].length;V+=U,Z+=U}return V}},T0=(X,Z,J,V)=>{const W=X[X.length-1];W&&V-W.n>J?W.add(Z,J):X.push(new x1(Z,J))},L8=(X,{width:Z,min:J,hard:V,splitter:W},U=0,B=[])=>{let Y=W.length(X),Q=Z-U;if(Q<J&&Q<Y)Q=Z;while(V&&Y>Q){const z=W.split(X,Q),K=X.substring(0,z);T0(B,K,Q,Z),X=X.substring(z),Q=Z,Y=W.length(X)}return T0(B,X,Y,Z),B},_8=(X,Z,J=[])=>{if(!X.length)return J.push(new x1),J;const V={width:80,min:4,hard:!1,splitter:b8,...Z};for(let W of y(X,Z.delimWord||/\s/g)){const U=J[J.length-1];L8(W,V,U&&U.n>0?U.n+1:0,J)}return J},R0=(X,Z)=>{let J=[];for(let V of y(X,Z.delimLine))J=J.concat(_8(V,Z));return J};var Z1=(X,Z={})=>{Z={lineWidth:80,paramWidth:32,showDefaults:!0,prefix:"",suffix:"",groups:["flags","main"],...Z};const J=k(Z.color)?{...L1,...Z.color}:Z.color?L1:{},V=d(" ",Z.paramWidth),W=(Y)=>Y.map((Q)=>S8(Q,X[Q],Z,J,V)),U=Object.keys(X).sort(),B=Z.groups?Z.groups.map((Y)=>[Y,U.filter((Q)=>X[Q].group===Y)]).filter((Y)=>!!Y[1].length):[["options",U]];return[...n1(Z.prefix,Z.lineWidth),...B.map(([Y,Q])=>[...Z.showGroupNames?[`${O0(Y)}:
|
|
4
|
+
`]:[],...W(Q),""].join("\n")),...n1(Z.suffix,Z.lineWidth)].join("\n")},S8=(X,Z,J,V,W)=>{const U=y8(Z,V),B=h8(Z,V,U),Y=J1(`--${D0(X)}`,V.param),Q=`${B}${Y}${U}`,z=Z.optional===!1&&Z.default===void 0,K=[];z&&K.push("required"),Z.multi&&K.push("multiple");const q=f8(K,V,z)+(Z.desc||"")+m8(Z,J,V);return $1(J.paramWidth)(Q,H1(Q))+n1(q,J.lineWidth-J.paramWidth).map(($,j)=>j>0?W+$:$).join("\n")},y8=(X,Z)=>X.hint?J1(" "+X.hint,Z.hint):"",h8=(X,Z,J)=>X.alias?`${J1("-"+X.alias,Z.param)}${J}, `:"",f8=(X,Z,J)=>X.length?J1(`[${X.join(", ")}] `,J?Z.required:Z.multi):"",m8=(X,Z,J)=>Z.showDefaults&&X.default!=null&&X.default!==!1?J1(` (default: ${k0(!0)(X.defaultHint!=null?X.defaultHint:X.default)})`,J.default):"",J1=(X,Z)=>Z!=null?`\x1B[${Z}m${X}\x1B[0m`:X,n1=(X,Z)=>X?R0(X,{width:Z,splitter:I0,hard:!0}):[];var u8=R(()=>"parse error"),E0=(X,Z,J)=>{J={start:2,showUsage:!0,help:["--help","-h"],...J};try{return g8(X,Z,J)}catch(V){if(J.showUsage)console.log(V.message+"\n\n"+Z1(X,J.usageOpts));throw new u8(V.message)}},g8=(X,Z,J)=>{const V=x8(X),W={};let U,B,Y=J.start;for(;Y<Z.length;){const Q=Z[Y];if(!U){if(J.help.includes(Q)){console.log(Z1(X,J.usageOpts));return}const z=n8(X,V,W,Q);if(U=z.id,B=z.spec,Y=Y+~~(z.state<2),z.state)break}else{if(d8(B,W,U,Q))break;U=null,Y++}}return U&&C(`missing value for: --${U}`),{result:l8(X,W),index:Y,rest:Z.slice(Y),done:Y>=Z.length}},x8=(X)=>Object.entries(X).reduce((Z,[J,V])=>V.alias?(Z[V.alias]=J,Z):Z,{}),n8=(X,Z,J,V)=>{if(V[0]==="-"){let W;if(V[1]==="-"){if(V==="--")return{state:1};W=G0(V.substring(2))}else W=Z[V.substring(1)],!W&&C(`unknown option: ${V}`);const U=X[W];if(!U&&C(W),U.flag){if(J[W]=!0,W=void 0,U.fn&&!U.fn("true"))return{state:1,spec:U}}return{state:0,id:W,spec:U}}return{state:2}},d8=(X,Z,J,V)=>{if(/^-[a-z]/i.test(V)&&C(`missing value for: --${J}`),X.multi)w(Z[J])?Z[J].push(V):Z[J]=[V];else Z[J]=V;return X.fn&&!X.fn(V)},l8=(X,Z)=>{let J;for(let V in X)if(J=X[V],Z[V]===void 0){if(J.default!==void 0)Z[V]=J.default;else if(J.optional===!1)C(`missing arg: --${V}`)}else if(J.coerce)p8(J,Z,V);return Z},p8=(X,Z,J)=>{try{if(X.multi&&X.delim)Z[J]=Z[J].reduce((V,W)=>(V.push(...W.split(X.delim)),V),[]);Z[J]=X.coerce(Z[J])}catch(V){throw new Error(`arg --${J}: ${V.message}`)}};var v0=async(X)=>{const Z=X.argv||process.argv,J=!process.env.NO_COLOR,V={prefix:"",color:J,...X.usage};try{let W,U,B=X.start??2;if(X.single){if(W=Object.keys(X.commands)[0],!W)C("no command provided");U=X.commands[W]}else{if(W=Z[B],U=X.commands[W],V.prefix+=o8(X.commands),!U)A0(X,V);B++}let Y;try{Y=E0({...X.opts,...U.opts},Z,{showUsage:!0,usageOpts:V,start:B})}catch(z){}if(!Y)process.exit(1);if(U.inputs!==void 0&&U.inputs!==Y.rest.length)process.stderr.write(`expected ${U.inputs||0} input(s)
|
|
5
|
+
`),A0(X,V);const Q=await X.ctx({logger:new m1(process.stderr,X.name,"INFO"),format:J?C1:P0,opts:Y.result,inputs:Y.rest},U);if(await U.fn(Q),X.post)await X.post(Q,U)}catch(W){process.stderr.write(W.message+"\n\n"),process.exit(1)}},A0=(X,Z)=>{process.stderr.write(Z1(X.opts,Z)),process.exit(1)},o8=(X)=>["\nAvailable commands:\n",...Object.keys(X).map((Z)=>`${$1(16)(Z)}: ${X[Z].desc}`),"\n"].join("\n");import{existsSync as i8,mkdirSync as a8,statSync as t8} from"fs";import{sep as c8} from"path";var b0=(X)=>{const Z=X.substring(0,X.lastIndexOf(c8));return Z.length>0&&!i8(Z)?(a8(Z,{recursive:!0}),!0):!1},L0=(X)=>t8(X).isDirectory();var T=(X)=>typeof X==="function";var M=(X)=>typeof X==="string";import{readdirSync as r8,statSync as P5} from"fs";import{sep as s8} from"path";function*S0(X,Z="",J,V=Infinity,W=0){if(W>=V)return;const U=XX(Z);for(let B of r8(X).sort()){const Y=X+s8+B;try{if(L0(Y))yield*S0(Y,Z,J,V,W+1);else if(U(Y))yield Y}catch(Q){J&&J.warn(`ignoring file: ${B} (${Q.message})`)}}}var _0=(X,Z="",J=Infinity,V)=>S0(X,Z,V,J,0);var e8=(X)=>M(X)?new RegExp(`${X.replace(/\./g,"\\.")}\$`):X,XX=(X)=>T(X)?X:(X=e8(X),(Z)=>X.test(Z));import{readFileSync as JX} from"fs";import{writeFileSync as ZX} from"fs";var y0=(X,Z,J,V,W=!1)=>{if(V&&V.info(`${W?"[dryrun] ":""}writing file: ${X}`),W)return;b0(X),ZX(X,Z,!J&&M(Z)?"utf-8":J)};var E=(X,Z,J="utf-8")=>{return Z&&Z.debug("reading file:",X),JX(X,J)},d1=(X,Z,J,V=!1)=>y0(X,w(Z)?Z.join("\n"):Z,"utf-8",J,V);var v=(X,Z)=>JSON.parse(E(X,Z));var M1=Object.freeze({level:H.NONE,enabled:()=>!1,fine(){},debug(){},info(){},warn(){},severe(){}});import{join as fX} from"path";var VX=R(()=>"Assertion failed"),h=(typeof process!=="undefined"&&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)?(X,Z)=>{if(typeof X==="function"&&!X()||!X)throw new VX(typeof Z==="function"?Z():Z)}:()=>{};var F1=(X)=>X!=null&&typeof X!=="function"&&X.length!==void 0;var h0=(X)=>{return(X==null||!X[Symbol.iterator])&&C(`value is not iterable: ${X}`),X};var f0=(X)=>F1(X)?X:[...h0(X)];var V1=(X)=>X[X.length-1];var WX=R(()=>"illegal arity"),o=(X)=>{throw new WX(X)};var UX=R(()=>"illegal state"),i=(X)=>{throw new UX(X)};var l1=function(...X){let[Z,J,V,W,U,B,Y,Q,z,K]=X;switch(X.length){case 0:o(0);case 1:return Z;case 2:return(...$)=>Z(J(...$));case 3:return(...$)=>Z(J(V(...$)));case 4:return(...$)=>Z(J(V(W(...$))));case 5:return(...$)=>Z(J(V(W(U(...$)))));case 6:return(...$)=>Z(J(V(W(U(B(...$))))));case 7:return(...$)=>Z(J(V(W(U(B(Y(...$)))))));case 8:return(...$)=>Z(J(V(W(U(B(Y(Q(...$))))))));case 9:return(...$)=>Z(J(V(W(U(B(Y(Q(z(...$)))))))));case 10:default:const q=(...$)=>Z(J(V(W(U(B(Y(Q(z(K(...$))))))))));return X.length===10?q:l1(q,...X.slice(10))}};var m0=(X,Z)=>new Promise((J)=>setTimeout(()=>J(X),Z));var u0=(X)=>X;var g0=["-moz-","-ms-","-o-","-webkit-"],a={rules:"",ruleSep:",",valSep:"",decls:"",declStart:"{",declEnd:"}",indent:"",comments:!1},w1={rules:"\n",ruleSep:", ",valSep:" ",decls:"\n",declStart:" {\n",declEnd:"}\n",indent:" ",comments:!0};var D=(X)=>X!=null&&typeof X[Symbol.iterator]==="function";var P1=(X,Z)=>X!=null&&typeof X[Z]==="function";var f=(X)=>P1(X,"xform")?X.xform():X;var b=function(...X){return X=X.map(f),l1.apply(null,X)};var N1=(X)=>X!=null&&typeof X!=="string"&&typeof X[Symbol.iterator]==="function";var t=(X,Z)=>[X[0],X[1],Z];var L=Symbol(),p1=()=>{};class o1{value;constructor(X){this.value=X}deref(){return this.value}}var G=(X)=>X instanceof o1;var _=(X)=>X instanceof o1?X.deref():X;var O1=function(...X){const Z=X[0],J=Z[0],V=Z[1],W=Z[2];X=YX(X);const U=X[0]==null?J():X[0],B=X[1];return _(V(P1(B,"$reduce")?B.$reduce(W,U):F1(B)?BX(W,U,B):QX(W,U,B)))};var YX=(X)=>X.length===2?[void 0,X[1]]:X.length===3?[X[1],X[2]]:o(X.length),BX=(X,Z,J)=>{for(let V=0,W=J.length;V<W;V++)if(Z=X(Z,J[V]),G(Z)){Z=Z.deref();break}return Z},QX=(X,Z,J)=>{for(let V of J)if(Z=X(Z,V),G(Z)){Z=Z.deref();break}return Z},c=(X,Z)=>[X,(J)=>J,Z];var D1=function(X){return X?[...X]:c(()=>[],(Z,J)=>(Z.push(J),Z))};function*G1(X,Z){const J=f(X)(D1()),V=J[1],W=J[2];for(let U of Z){const B=W([],U);if(G(B)){yield*_(V(B.deref()));return}if(B.length)yield*B}yield*_(V([]))}function*m(X,Z){const J=f(X)([p1,p1,(V,W)=>W])[2];for(let V of Z){let W=J(L,V);if(G(W)){if(W=_(W.deref()),W!==L)yield W;return}if(W!==L)yield W}}var j1=(X,Z,J=m)=>{const V=Z.length-1;return D(Z[V])?Z.length>1?J(X.apply(null,Z.slice(0,V)),Z[V]):J(X(),Z[0]):void 0};var i1=function(X,Z){return D(Z)?G1(i1(X),M(Z)?[Z]:Z):(J)=>{const V=J[2],W=(U,B)=>{const Y=X(B);if(Y){for(let Q of Y)if(U=W(U,Q),G(U))break;return U}return V(U,B)};return t(J,W)}};var x0=function(X){return i1((Z)=>N1(Z)?Z:void 0,X)};var P=function(X,Z){return D(Z)?m(P(X),Z):(J)=>{const V=J[2];return t(J,(W,U)=>V(W,X(U)))}};function*k1(...X){const Z=X.length-1;if(Z<0)return;const J=new Array(Z+1).fill(0),V=X.map(f0),W=V.reduce((U,B)=>U*B.length,1);for(let U=0;U<W;U++){const B=[];for(let Y=Z;Y>=0;Y--){const Q=V[Y];let z=J[Y];if(z===Q.length)J[Y]=z=0,Y>0&&J[Y-1]++;B[Y]=Q[z]}J[Z]++,yield B}}function*n0(X,Z=Infinity){while(Z-- >0)yield X}var a1=function(X,Z){X=X||"";let J=!0;return Z?[...Z].join(X):c(()=>"",(V,W)=>(V=J?V+W:V+X+W,J=!1,V))};var T1=function(...X){return KX(T1,O1,X)};var KX=(X,Z,J)=>{let V,W;switch(J.length){case 4:W=J[3],V=J[2];break;case 3:W=J[2];break;case 2:return P((U)=>X(J[0],J[1],U));default:o(J.length)}return Z(f(J[0])(J[1]),V,W)};var zX=new Set,$X=":[",d0=b(x0(),P((X)=>$X.indexOf(X.charAt(0))>=0?X:" "+X)),qX=(X,Z)=>b(X,P((J)=>M(J)&&J.indexOf(" .")==0?J+Z:J)),r=(X,Z,J,V)=>{const W=J.length,U=[];let B,Y;const Q=(z,K)=>{let q=null;if(w(K))r(X,t1(Z,U),K,V);else if(D(K)&&!M(K))r(X,t1(Z,U),[...K],V);else if((Y=T(K))||(q=V.fns[K]))if(!Z.length){if(q)return q.apply(null,J.slice(z+1))(X,V),!0;K(X,V)}else if(Y)Q(z,K());else C(`quoted fn ('${K}') only allowed at head position`);else if(k(K))B=Object.assign(B||{},K);else if(K!=null)U.push(K)};for(let z=0;z<W;z++)if(Q(z,J[z]))return X;return B&&X.push(CX(Z,U,B,V)),X},t1=(X,Z)=>X.length?[...k1(X,Z)]:Z,CX=(X,Z,J,V)=>{const W=V.format,U=I1(V),B=V.scope?qX(d0,V.scope):d0;return[U,T1(P((Y)=>T1(B,a1(),w(Y)?Y:[Y]).trim()),a1(W.ruleSep),t1(X,Z)),W.declStart,c1(J,V),U,W.declEnd].join("")},c1=(X,Z)=>{const J=Z.format,V=Z.autoprefix||zX,W=I1(Z,Z.depth+1),U=[];for(let B in X)if(X.hasOwnProperty(B)){let Y=X[B];if(T(Y))Y=Y(X);if(w(Y))Y=Y.map((Q)=>w(Q)?Q.join(" "):Q).join(J.ruleSep);if(V.has(B))for(let Q of Z.vendors)U.push(`${W}${Q}${B}:${J.valSep}${Y};`);U.push(`${W}${B}:${J.valSep}${Y};`)}return U.join(J.decls)+J.decls},I1=(X,Z=X.depth)=>Z>1?[...n0(X.format.indent,Z)].join(""):Z>0?X.format.indent:"";var p0=(X,Z,J)=>(V,W)=>{const U=I1(W);return V.push(`${U}${X} ${HX(Z)}${W.format.declStart}`),W.depth++,r(V,[],J,W),W.depth--,V.push(U+W.format.declEnd),V},HX=(X)=>{if(M(X))return X;const Z=[];for(let J in X)if(X.hasOwnProperty(J)){let V=X[J];if(V===!0)V=l0.has(J)?J:`(${J})`;else if(V===!1)V="not "+(l0.has(J)?J:`(${J})`);else if(V==="only")V+=" "+J;else V=`(${J}:${V})`;Z.push(V)}return Z.join(" and ")},l0=new Set(["all","print","screen"]);var W1=(X,Z)=>{return Z={format:a,vendors:g0,fns:{},depth:0,...Z},w(Z.autoprefix)&&(Z.autoprefix=new Set(Z.autoprefix)),k(X)?c1(X,Z):T(X)?X([],Z).join(Z.format.rules):r([],[],w(X)?X:N1(X)?[...X]:C("invalid rules"),Z).join(Z.format.rules)};var R1=(X,Z)=>p0("@media",X,Z);var E1=4,o0=(X)=>E1=X,r1=(X)=>X===(X|0)?String(X):X.toFixed(E1).replace(/^0./,".").replace(/0+$/,"");var s1=(X)=>`${r1(X)}rem`,i0=(X)=>`${r1(X)}%`,a0=(X)=>`${r1(X)}px`;var N=((X)=>{return X[X.IDLE=0]="IDLE",X[X.ACTIVE=1]="ACTIVE",X[X.DONE=2]="DONE",X[X.UNSUBSCRIBED=3]="UNSUBSCRIBED",X[X.ERROR=4]="ERROR",X})(N||{}),I=((X)=>{return X[X.NEVER=0]="NEVER",X[X.FIRST=1]="FIRST",X[X.LAST=2]="LAST",X})(I||{});var MX=0,FX=()=>MX++,u=(X,Z)=>!Z||!Z.id?{...Z,id:X+"-"+FX()}:Z;var O=M1;class S{constructor(X,Z){this.wrapped=X,Z=u("sub",{closeIn:I.LAST,closeOut:I.LAST,cache:!0,...Z}),this.parent=Z.parent,this.id=Z.id,this.closeIn=Z.closeIn,this.closeOut=Z.closeOut,this.cacheLast=Z.cache,Z.xform&&(this.xform=Z.xform(D1()))}id;closeIn;closeOut;parent;__owner;xform;cacheLast;last=L;state=N.IDLE;subs=[];deref(){return this.last!==L?this.last:void 0}getState(){return this.state}setState(X){this.state=X}subscribe(X,Z={}){this.ensureState();let J;if(X instanceof S&&!Z.xform)X.ensureState(),h(!X.parent,`sub '${X.id}' already has a parent`),X.parent=this,J=X;else J=new S(X,{...Z,parent:this});return this.subs.push(J),this.setState(N.ACTIVE),J.setState(N.ACTIVE),this.last!=L&&J.next(this.last),J}transform(...X){let Z,J;if(k(V1(X)))J=X.pop(),Z={error:J.error};return this.subscribe(Z,u("xform",X.length>0?{...J,xform:b(...X)}:J))}map(X,Z){return this.transform(P(X),Z||{})}unsubscribe(X){return X?this.unsubscribeChild(X):this.unsubscribeSelf()}unsubscribeSelf(){return O.debug(this.id,"unsub self"),this.parent&&this.parent.unsubscribe(this),this.state<N.UNSUBSCRIBED&&(this.state=N.UNSUBSCRIBED),this.release(),!0}unsubscribeChild(X){O.debug(this.id,"unsub child",X.id);const Z=this.subs.indexOf(X);if(Z>=0){if(this.subs.splice(Z,1),this.closeOut===I.FIRST||!this.subs.length&&this.closeOut!==I.NEVER)this.unsubscribe();return!0}return!1}next(X){if(this.state>=N.DONE)return;this.xform?this.dispatchXform(X):this.dispatch(X)}done(){if(O.debug(this.id,"entering done()"),this.state>=N.DONE)return;if(this.xform){if(!this.dispatchXformDone())return}if(this.state=N.DONE,this.dispatchTo("done"))this.state<N.UNSUBSCRIBED&&this.unsubscribe();O.debug(this.id,"exiting done()")}error(X){const Z=this.wrapped,J=Z&&Z.error;return J&&O.debug(this.id,"attempting wrapped error handler"),J&&Z.error(X)||this.unhandledError(X)}unhandledError(X){return(O!==M1?O:console).warn(this.id,"unhandled error:",X),this.unsubscribe(),this.state=N.ERROR,!1}dispatchTo(X,Z){let J=this.wrapped;if(J)try{J[X]&&J[X](Z)}catch(W){if(!this.error(W))return!1}const V=X==="next"?this.subs:[...this.subs];for(let W=V.length;W-- >0;){J=V[W];try{J[X]&&J[X](Z)}catch(U){if(X==="error"||!J.error||!J.error(U))return this.unhandledError(U)}}return!0}dispatch(X){O.debug(this.id,"dispatch",X),this.cacheLast&&(this.last=X),this.dispatchTo("next",X)}dispatchXform(X){let Z;try{Z=this.xform[2]([],X)}catch(J){this.error(J);return}if(this.dispatchXformVals(Z))G(Z)&&this.done()}dispatchXformDone(){let X;try{X=this.xform[1]([])}catch(Z){return this.error(Z)}return this.dispatchXformVals(X)}dispatchXformVals(X){const Z=_(X);for(let J=0,V=Z.length;J<V&&this.state<N.DONE;J++)this.dispatch(Z[J]);return this.state<N.ERROR}ensureState(){if(this.state>=N.DONE)i(`operation not allowed in state ${this.state}`)}release(){this.subs.length=0,delete this.parent,delete this.xform,delete this.last}}var t0=(X,Z)=>{const J=new c0(Z);return J.next(X),J};class c0 extends S{src;_cancel;_inited;constructor(X,Z){const[J,V]=T(X)?[X,Z||{}]:[void 0,X||{}];super(V.error?{error:V.error}:void 0,u("stream",V));this.src=J,this._inited=!1}subscribe(X,Z={}){const J=super.subscribe(X,Z);if(!this._inited){if(this.src)try{this._cancel=this.src(this)||(()=>{return})}catch(V){let W=this.wrapped;if(!W||!W.error||!W.error(V))this.unhandledError(V)}this._inited=!0}return J}unsubscribe(X){const Z=super.unsubscribe(X);if(Z&&(!X||(!this.subs||!this.subs.length)&&this.closeOut!==I.NEVER))this.cancel();return Z}done(){this.cancel(),super.done(),delete this.src,delete this._cancel}error(X){if(super.error(X))return!0;return this.cancel(),!1}cancel(){if(this._cancel){O.debug(this.id,"cancel");const X=this._cancel;delete this._cancel,X()}}}var r0=(X,Z)=>X===I.FIRST||X===I.LAST&&!Z;var e1=function(X){return X?O1(e1(),X):c(()=>({}),(Z,[J,V])=>(Z[J]=V,Z))};var X0=function(X,Z){return D(Z)?m(X0(X),Z):P(T(X)?(J)=>[X(J),J]:(J)=>[X,J])};var Z0=function(...X){const Z=j1(Z0,X);if(Z)return Z;const J=X[0],V=X[1]!==!1;return P((W)=>{const U=V?{}:W;for(let B in W)U[B]=J(W[B]);return U})};var J0=function(...X){const Z=j1(J0,X,G1);if(Z)return Z;const{key:J,mergeOnly:V,reset:W,all:U,backPressure:B}={key:u0,mergeOnly:!1,reset:!0,all:!0,backPressure:0,...X[1]},Y=w(X[0])?new Set(X[0]):X[0],Q=new Set,z=new Map;let K={};const q=([$,j,g])=>{let x=!0;if(V||B<1)return[$,(F)=>{if(W&&U&&Q.size>0||!W&&x)F=g(F,K),K={},Q.clear(),x=!1;return j(F)},(F,X1)=>{const A=J(X1);if(Y.has(A)){if(K[A]=X1,Q.add(A),V||s0(Y,Q))if(F=g(F,K),x=!1,W)K={},Q.clear();else K={...K}}return F}];else return[$,(F)=>{if(U&&Q.size>0)F=g(F,e0(z,Q)),z.clear(),Q.clear();return j(F)},(F,X1)=>{const A=J(X1);if(Y.has(A)){let B1=z.get(A);!B1&&z.set(A,B1=[]),B1.length>=B&&i(`max back pressure (${B}) exceeded for input: ${String(A)}`),B1.push(X1),Q.add(A);while(s0(Y,Q))if(F=g(F,e0(z,Q)),x=!1,G(F))break}return F}]};return q.keys=()=>Y,q.clear=()=>{z.clear(),Y.clear(),Q.clear(),K={}},q.add=($)=>{Y.add($)},q.delete=($,j=!0)=>{if(z.delete($),Y.delete($),j)Q.delete($),delete K[$]},q},s0=(X,Z)=>{if(Z.size<X.size)return!1;for(let J of X)if(!Z.has(J))return!1;return!0},e0=(X,Z)=>{const J={};for(let V of Z){const W=X.get(V);J[V]=W.shift(),!W.length&&Z.delete(V)}return J};var X8=(X,Z)=>{let J=!0;for(let V of Z)J=X.removeID(V)&&J;return J};var Z8=(X)=>new J8(X);class J8 extends S{sources;idSources;realSourceIDs;invRealSourceIDs;psync;clean;constructor(X){const Z=J0(new Set,{key:(V)=>V[0],mergeOnly:X.mergeOnly===!0,reset:X.reset===!0,all:X.all!==!1,backPressure:X.backPressure||0}),J=Z0((V)=>V[1]);super(void 0,u("streamsync",{...X,xform:X.xform?b(Z,J,X.xform):b(Z,J)}));this.sources=new Map,this.realSourceIDs=new Map,this.invRealSourceIDs=new Map,this.idSources=new Map,this.psync=Z,this.clean=!!X.clean,X.src&&this.addAll(X.src)}add(X,Z){Z||(Z=X.id),this.ensureState(),this.psync.add(Z),this.realSourceIDs.set(Z,X.id),this.invRealSourceIDs.set(X.id,Z),this.idSources.set(X.id,X),this.sources.set(X,X.subscribe({next:(J)=>J[1]instanceof S?this.add(J[1]):this.next(J),done:()=>this.markDone(X),__owner:this},{xform:X0(Z),id:`in-${Z}`}))}addAll(X){for(let Z in X)this.psync.add(Z);for(let Z in X)this.add(X[Z],Z)}remove(X){const Z=this.sources.get(X);if(Z){const J=this.invRealSourceIDs.get(X.id);return O.info(`removing src: ${X.id} (${J})`),this.psync.delete(J,this.clean),this.realSourceIDs.delete(J),this.invRealSourceIDs.delete(X.id),this.idSources.delete(X.id),this.sources.delete(X),Z.unsubscribe(),!0}return!1}removeID(X){const Z=this.getSourceForID(X);return Z?this.remove(Z):!1}removeAll(X){for(let J of X)this.psync.delete(this.invRealSourceIDs.get(J.id));let Z=!0;for(let J of X)Z=this.remove(J)&&Z;return Z}removeAllIDs(X){return X8(this,X)}getSourceForID(X){return this.idSources.get(this.realSourceIDs.get(X))}getSources(){const X={};for(let[Z,J]of this.idSources)X[this.invRealSourceIDs.get(Z)]=J;return X}unsubscribe(X){if(!X){O.debug(this.id,"unsub sources");for(let Z of this.sources.values())Z.unsubscribe();this.sources.clear(),this.psync.clear(),this.realSourceIDs.clear(),this.invRealSourceIDs.clear(),this.idSources.clear()}return super.unsubscribe(X)}markDone(X){this.remove(X),r0(this.closeIn,this.sources.size)&&this.done()}}var V0=n((X,Z=" ")=>{const J=d(String(Z),X);return(V,W)=>{if(V==null)return J;return V=V.toString(),W=W!==void 0?W:V.length,W<X?J.substring(W)+V:V}}),D2=V0(2,"0"),V8=V0(3,"0"),G2=V0(4,"0");var W0=function(X,Z){return D(Z)?m(W0(X),Z):(J)=>{const V=J[2];return t(J,(W,U)=>X(U)?V(W,U):W)}};import{watch as PX} from"fs";import{resolve as Y1} from"path";var W8={specs:p({alias:"s",optional:!1,desc:"Path to generated JSON defs"})},A1={include:z1({alias:"I",desc:"Include CSS files (prepend)"})},s={pretty:l({alias:"p",desc:"Pretty print output"})},v1={noHeader:l({desc:"Don't emit generated header comment"})},U8={watch:l({alias:"w",desc:"Watch input files for changes"})};import{resolve as wX} from"path";var e=(X,Z,J)=>{Z=M(Z)?Z:Z.join("\n"),X?d1(wX(X),Z,J):console.log(Z)},b1=({info:{name:X,version:Z}})=>`/*! ${X} v${Z} - generated by thi.ng/meta-css @ ${(new Date()).toISOString()} */`;var B8={desc:"Transpile & bundle meta stylesheets to CSS",opts:{...W8,...A1,...s,...v1,...U8,force:z1({alias:"f",desc:"CSS classes to force include (wildcards are supported, @-prefix will read from file)",delim:","})},fn:async(X)=>{const Z=v(Y1(X.opts.specs),X.logger),J=GX(Z,X.opts.force||[],X.logger);if(X.opts.watch)await NX(X,Z,J);else Q8(X,Z,J,X.inputs.map((V)=>E(Y1(V),X.logger)))}},NX=async(X,Z,J)=>{let V=!0;const W=()=>{X.logger.info("closing watchers..."),U.forEach((B)=>B.watcher.close()),V=!1},U=X.inputs.map((B,Y)=>{B=Y1(B);const Q=t0(E(B,X.logger),{id:`in${V8(Y)}`});return{input:Q,watcher:PX(B,{},(z)=>{if(z==="change")try{Q.next(E(B,X.logger))}catch(K){X.logger.warn(K.message),W()}else X.logger.warn("input removed:",B),W()})}});Z8({src:e1(P(({input:B})=>[B.id,B],U))}).subscribe({next(B){try{Q8(X,Z,J,Object.keys(B).sort().map((Y)=>B[Y]))}catch(Y){X.logger.warn(Y.message)}}}),process.on("SIGINT",W);while(V)await m0(null,250)},Q8=({logger:X,opts:{include:Z,noHeader:J,out:V,pretty:W}},U,B,Y)=>{const Q={logger:X,specs:U,format:W?w1:a,mediaQueryIDs:new Set(Object.keys(U.media)),mediaQueryRules:{...B.mediaQueryRules},plainRules:{...B.plainRules}},z=Z?Z.map((K)=>E(Y1(K),X).trim()):[];if(!J)z.push(b1(U));Y.forEach((K)=>jX(K,Q)),DX(z,Q),OX(z,Q),e(V,z,X)},OX=(X,{logger:Z,specs:J,format:V,mediaQueryRules:W})=>{for(let U in W){const B=z8(W[U],J);Z.debug("mediaquery rules",U,B),X.push(W1(R1(IX(J.media,U),B),{format:V}))}},DX=(X,{logger:Z,specs:J,format:V,plainRules:W})=>{const U=z8(W,J);Z.debug("plain rules",U),X.push(W1(U,{format:V}))},GX=(X,Z,J)=>{const V=new Set(Object.keys(X.media)),W=new Set(Object.keys(X.defs)),U={},B={};if(Z.length&&Z[0][0]==="@")Z=[...y(E(Y1(Z[0].substring(1)),J))];for(let Y of Z){if(!Y||Y.startsWith("//"))continue;const{token:Q,query:z}=$8(Y,V);let K;if(Q.includes("*")){const q=new RegExp(`^${Q.replace("*",".*")}\$`);K=[...W0(($)=>q.test($),W)]}else if(W.has(Q))K=[Q];else{J.warn(`unknown include rule ID: ${Y}, skipping...`);continue}for(let q of K)J.debug("including class:",q),z?q8(U,z,`.${q}`,q):C8(B,`.${q}`,q)}return{mediaQueryRules:U,plainRules:B}},jX=(X,{specs:Z,mediaQueryIDs:J,mediaQueryRules:V,plainRules:W})=>{const U=U1(),B=U1(U),Y={root:U,curr:B,scopes:[B]};for(let Q of y(X)){if(!Q||/^\s*\/\//.test(Q))continue;for(let z of y(Q,/\s+/g)){if(!z)continue;let K=Y.curr;switch(K.state){case"sel":case"nest":if(z==="{"){if(K.state==="sel")K.sel=K.sel.map((q)=>q.replace(",","")),K.path=kX(Y.scopes);K.state="class"}else if(z==="}")Y8(Y);else{const q=V1(K.sel);if(!q||q.endsWith(","))K.sel.push(z);else K.sel[K.sel.length-1]+=" "+z}break;case"class":if(z==="{")K.state="nest",Y.scopes.push(Y.curr=U1(K));else if(z==="}")Y8(Y);else{let{token:q,query:$}=$8(z,J);if(!Z.defs[q])C(`unknown rule ID: ${q}`);if($)q8(V,$,K.path,q);else C8(W,K.path,q)}break;default:i(K.state)}}}},U0=":",K8="///",U1=(X)=>({state:"sel",sel:X?[]:["<root>"],path:"",parent:X}),Y8=(X)=>{const Z=!X.curr.sel.length;if(h(!!X.curr.parent,"stack underflow"),X.scopes.pop(),X.scopes.length>0){if(X.curr=V1(X.scopes),!Z&&X.curr.state==="nest")X.scopes.push(X.curr=U1(X.curr))}else X.scopes.push(X.curr=U1(X.root))},kX=(X)=>X.map((Z)=>Z.sel.join(",")).join(K8),z8=(X,Z)=>Object.entries(X).map(([J,V])=>TX(J,V,Z)),TX=(X,Z,J)=>{const V=[];let W=V;const U=X.split(K8);for(let B=0;B<U.length;B++){const Y=U[B].split(",");if(B==U.length-1)Y.push(Object.assign({},...P((Q)=>J.defs[Q],Z)));W.push(Y),W=Y}return V[0]},$8=(X,Z)=>{if(/^::?/.test(X))return{token:X};const J=X.lastIndexOf(U0);if(J<0)return{token:X};const V=X.substring(0,J);if(!V.split(U0).every((U)=>Z.has(U)))C(`invalid media query in token: ${X}`);return{token:X.substring(J+1),query:V}},IX=(X,Z)=>Z.split(U0).reduce((J,V)=>Object.assign(J,X[V]),{}),q8=(X,Z,J,V)=>{if(!X[Z])X[Z]={};(X[Z][J]||(X[Z][J]=new Set)).add(V)},C8=(X,Z,J)=>(X[Z]||(X[Z]=new Set)).add(J);import{resolve as H8} from"path";var F8={desc:"Export entire generated framework as CSS",opts:{...A1,...s,...v1,media:p({alias:"m",desc:"Media query IDs (use 'ALL' for all)"})},inputs:1,fn:async(X)=>{const{logger:Z,opts:{include:J,media:V,noHeader:W,pretty:U,out:B},inputs:Y}=X,Q=v(H8(Y[0]),Z),z=J?J.map((K)=>E(H8(K),Z).trim()):[];if(!W)z.push(b1(Q));z.push(RX(Q,V,U,Z)),e(B,z,Z)}},RX=(X,Z,J,V)=>{const W=M8("",X);if(Z){const U=Z==="ALL"?Object.keys(X.media):Z.split(",");for(let B of U)if(X.media[B])W.push(R1(X.media[B],M8("-"+B,X)));else V.warn(`invalid media query ID: ${B}, skipping...`)}return W1(W,{format:J?w1:a})},M8=(X,Z)=>Object.entries(Z.defs).map(([J,V])=>[`.${J}${X}`,V]);import{statSync as EX} from"fs";import{resolve as AX} from"path";var w8={px:a0,rem:s1,"%":i0,norm:(X)=>parseFloat((X*0.01).toFixed(E1))},P8={"":[""],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"]},vX={all:["a","h","v","t","r","b","l"],trbl:["t","r","b","l"],TRBL:["top","right","bottom","left"],atrbl:["a","t","r","b","l"],h:["l","r"],v:["t","b"],xy:["x","y"],axy:["a","x","y"]},N8={desc:"Generate framework rules from specs",opts:{...s,prec:C0({default:3,desc:"Number of fractional digits"})},inputs:1,fn:async(X)=>{const{logger:Z,opts:{prec:J,out:V,pretty:W},inputs:U}=X,B=AX(U[0]);if(!EX(B).isDirectory())C(`${B} is not a directory`);const Y={info:{name:"TODO",version:"0.0.0"},media:{},defs:{}};for(let Q of _0(B,".json")){const z=v(Q,Z);Object.assign(Y.info,z.info),Object.assign(Y.media,z.media),bX(z,Y.defs,J)}e(V,JSON.stringify(Y,null,W?4:0),Z)}},bX=(X,Z={},J=3)=>{o0(J);for(let V of X.specs){const W=hX(V.var);if(V.def)for(let U of W)_X(Z,X,V,U);else{const U=M(V.prop)?[V.prop]:V.prop;for(let B of W){const Y=[...k1(U,P8[B])].map((Q)=>Q.join(""));LX(Z,X,{...V,prefix:V.prefix+B,prop:Y},B)}}}return Z},LX=(X,Z,J,V)=>{const W=J.prefix.replace("*",V),U=yX(J.prop,V),B=G8(Z,J);j8(Z,J.items).forEach((Q,z)=>{const K=O8(W,J.index,Q,z);h(!X[K],`duplicate rule ID: ${K}`);const q=D8(Q,B);X[K]=U.reduce(($,j)=>($[j]=q,$),{})})},_X=(X,Z,J,V)=>{const W=J.prefix.replace("*",V),U=G8(Z,J),B=j8(Z,J.items),Y=P8[V];B.forEach((Q,z)=>{const K=O8(W,J.index,Q,z);h(!X[K],`duplicate rule ID: ${K}`);const q=D8(Q,U),$=Object.entries(J.def).reduce((j,[g,x])=>(j[g.replace("*",Y)]=x.replace("*",q),j),{});X[K]=$})},O8=(X,Z,J,V)=>X+SX(Z,J,V),SX=(X,Z,J)=>{if(X===void 0)return"";switch(X){case"i":return J;case"i1":return J+1;case"v":return Z;default:C(`invalid index type: ${X}`)}},D8=(X,Z)=>Z?Z(X):X,G8=(X,{unit:Z,items:J})=>{if(Z===void 0)return s1;if(Z===null)return k(J)?(V)=>J[V]:(V)=>V;if(w8[Z])return w8[Z];return X.tables?.[Z]?(V)=>X.tables[Z][V]:C(`invalid unit: ${Z}`)},j8=(X,Z)=>{let J=Z;if(M(J))J=X.tables?.[J]||C(`invalid index: ${J}`);if(k(J))return Object.keys(J);return w(J)?J:C(Z)},yX=(X,Z)=>(M(X)?[X]:X).map((J)=>J.replace("*",Z)),hX=(X)=>{if(!X)return[""];if(M(X))return vX[X]||C(`invalid variation: ${X}`);return X};var Y0=v(fX(import.meta.dir,"package.json"));v0({name:"metacss",opts:{out:p({alias:"o",desc:"Output file (or stdout)"}),verbose:l({alias:"v",desc:"Display extra process information"})},commands:{convert:B8,export:F8,generate:N8},ctx:async(X)=>{if(X.opts.verbose)X.logger.level=H.DEBUG;return{...X,format:C1}},usage:{prefix:`
|
|
6
|
+
\u2588 \u2588 \u2588 \u2502
|
|
7
|
+
\u2588\u2588 \u2588 \u2502
|
|
8
|
+
\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2502 ${Y0.name} ${Y0.version}
|
|
9
|
+
\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2502 ${Y0.description}
|
|
10
|
+
\u2588 \u2502
|
|
11
|
+
\u2588 \u2588 \u2502
|
|
12
|
+
|
|
13
|
+
Usage: metacss <cmd> [opts] input [...]
|
|
14
|
+
metacss <cmd> --help
|
|
15
|
+
`,showGroupNames:!0,paramWidth:24}});
|
package/package.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thi.ng/meta-css",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Data-driven CSS component & framework codegen, transpiler, bundler",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"module": "./index.js",
|
|
7
|
+
"typings": "./index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"metacss": "bin/metacss"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/thi-ng/umbrella.git"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/thi-ng/umbrella/tree/develop/packages/meta-css#readme",
|
|
17
|
+
"funding": [
|
|
18
|
+
{
|
|
19
|
+
"type": "github",
|
|
20
|
+
"url": "https://github.com/sponsors/postspectacular"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "patreon",
|
|
24
|
+
"url": "https://patreon.com/thing_umbrella"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"author": "Karsten Schmidt (https://thi.ng)",
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "yarn build:esbuild",
|
|
31
|
+
"build:decl": "tsc --declaration --emitDeclarationOnly",
|
|
32
|
+
"build:esbuild": "bun build --outfile=index.js --target bun --minify --bundle src/index.ts",
|
|
33
|
+
"clean": "rimraf --glob '*.js' '*.d.ts' '*.map' doc",
|
|
34
|
+
"doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
|
|
35
|
+
"doc:ae": "mkdir -p .ae/doc .ae/temp && api-extractor run --local --verbose",
|
|
36
|
+
"doc:readme": "bun ../../tools/src/module-stats.ts && bun ../../tools/src/readme.ts",
|
|
37
|
+
"pub": "yarn npm publish --access public",
|
|
38
|
+
"test": "bun test"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@thi.ng/api": "^8.9.13",
|
|
42
|
+
"@thi.ng/args": "^2.3.0",
|
|
43
|
+
"@thi.ng/arrays": "^2.7.9",
|
|
44
|
+
"@thi.ng/checks": "^3.4.13",
|
|
45
|
+
"@thi.ng/compose": "^2.1.52",
|
|
46
|
+
"@thi.ng/errors": "^2.4.7",
|
|
47
|
+
"@thi.ng/file-io": "^1.1.0",
|
|
48
|
+
"@thi.ng/hiccup-css": "^2.3.0",
|
|
49
|
+
"@thi.ng/logger": "^2.1.0",
|
|
50
|
+
"@thi.ng/rstream": "^8.2.15",
|
|
51
|
+
"@thi.ng/strings": "^3.7.4",
|
|
52
|
+
"@thi.ng/text-format": "^2.0.0",
|
|
53
|
+
"@thi.ng/transducers": "^8.8.16"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@microsoft/api-extractor": "^7.38.3",
|
|
57
|
+
"esbuild": "^0.19.8",
|
|
58
|
+
"rimraf": "^5.0.5",
|
|
59
|
+
"tools": "^0.0.1",
|
|
60
|
+
"typedoc": "^0.25.4",
|
|
61
|
+
"typescript": "^5.3.2"
|
|
62
|
+
},
|
|
63
|
+
"keywords": [
|
|
64
|
+
"browser",
|
|
65
|
+
"bundler",
|
|
66
|
+
"cli",
|
|
67
|
+
"codegen",
|
|
68
|
+
"component",
|
|
69
|
+
"css",
|
|
70
|
+
"export",
|
|
71
|
+
"fileformat",
|
|
72
|
+
"generator",
|
|
73
|
+
"json",
|
|
74
|
+
"template",
|
|
75
|
+
"typescript",
|
|
76
|
+
"ui"
|
|
77
|
+
],
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public"
|
|
80
|
+
},
|
|
81
|
+
"browser": {
|
|
82
|
+
"process": false,
|
|
83
|
+
"setTimeout": false
|
|
84
|
+
},
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=18"
|
|
87
|
+
},
|
|
88
|
+
"files": [
|
|
89
|
+
"./*.js",
|
|
90
|
+
"./*.d.ts",
|
|
91
|
+
"bin",
|
|
92
|
+
"specs"
|
|
93
|
+
],
|
|
94
|
+
"exports": {
|
|
95
|
+
".": {
|
|
96
|
+
"default": "./index.js"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"thi.ng": {
|
|
100
|
+
"related": [
|
|
101
|
+
"hiccup-css"
|
|
102
|
+
],
|
|
103
|
+
"status": "alpha",
|
|
104
|
+
"year": 2023
|
|
105
|
+
},
|
|
106
|
+
"gitHead": "25a42a81fac8603a1e440a7aa8bc343276211ff4\n"
|
|
107
|
+
}
|
package/specs/_info.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"info": {
|
|
3
|
+
"name": "MetaCSS base",
|
|
4
|
+
"version": "0.0.1"
|
|
5
|
+
},
|
|
6
|
+
"media": {
|
|
7
|
+
"ns": { "min-width": "30rem" },
|
|
8
|
+
"m": { "min-width": "30rem", "max-width": "60rem" },
|
|
9
|
+
"l": {
|
|
10
|
+
"min-width": "60rem"
|
|
11
|
+
},
|
|
12
|
+
"dark": {
|
|
13
|
+
"prefers-color-scheme": "dark"
|
|
14
|
+
},
|
|
15
|
+
"light": {
|
|
16
|
+
"prefers-color-scheme": "light"
|
|
17
|
+
},
|
|
18
|
+
"anim": {
|
|
19
|
+
"prefers-reduced-motion": false
|
|
20
|
+
},
|
|
21
|
+
"noanim": {
|
|
22
|
+
"prefers-reduced-motion": true
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"specs": []
|
|
26
|
+
}
|
package/specs/anim.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"borders-r": [0, 0.125, 0.25, 0.5, 1],
|
|
4
|
+
"borders-w": [0, 0.125, 0.25, 0.5, 1, 2]
|
|
5
|
+
},
|
|
6
|
+
"specs": [
|
|
7
|
+
{
|
|
8
|
+
"comment": "border radius",
|
|
9
|
+
"prefix": "br",
|
|
10
|
+
"index": "i",
|
|
11
|
+
"prop": "border-radius",
|
|
12
|
+
"items": "borders-r"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"prefix": "br*",
|
|
16
|
+
"index": "i",
|
|
17
|
+
"def": {
|
|
18
|
+
"border-top*-radius": "*",
|
|
19
|
+
"border-bottom*-radius": "*"
|
|
20
|
+
},
|
|
21
|
+
"items": "borders-r",
|
|
22
|
+
"var": "h"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"prefix": "br*",
|
|
26
|
+
"index": "i",
|
|
27
|
+
"def": {
|
|
28
|
+
"border*-left-radius": "*",
|
|
29
|
+
"border*-right-radius": "*"
|
|
30
|
+
},
|
|
31
|
+
"items": "borders-r",
|
|
32
|
+
"var": "v"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"comment": "border widths",
|
|
36
|
+
"prefix": "bw*",
|
|
37
|
+
"index": "i",
|
|
38
|
+
"def": {
|
|
39
|
+
"border*-style": "solid",
|
|
40
|
+
"border*-width": "*"
|
|
41
|
+
},
|
|
42
|
+
"items": "borders-w",
|
|
43
|
+
"var": "atrbl"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"var-palette": {
|
|
4
|
+
"vcol1": "var(--color1)",
|
|
5
|
+
"vcol2": "var(--color2)",
|
|
6
|
+
"vcol3": "var(--color3)",
|
|
7
|
+
"vcol4": "var(--color4)",
|
|
8
|
+
"vcol5": "var(--color5)",
|
|
9
|
+
"vcol6": "var(--color6)",
|
|
10
|
+
"vcol7": "var(--color7)",
|
|
11
|
+
"vcol8": "var(--color8)",
|
|
12
|
+
"vcol9": "var(--color9)",
|
|
13
|
+
"vcol10": "var(--color10)",
|
|
14
|
+
"vcol11": "var(--color11)",
|
|
15
|
+
"vcol12": "var(--color12)",
|
|
16
|
+
"vcol13": "var(--color13)",
|
|
17
|
+
"vcol14": "var(--color14)",
|
|
18
|
+
"vcol15": "var(--color15)",
|
|
19
|
+
"vcol16": "var(--color16)"
|
|
20
|
+
},
|
|
21
|
+
"__grays_comment": "Tachyons CSS colors",
|
|
22
|
+
"grays": {
|
|
23
|
+
"black": "#000",
|
|
24
|
+
"near-black": "#111",
|
|
25
|
+
"dark-gray": "#333",
|
|
26
|
+
"mid-gray": "#555",
|
|
27
|
+
"gray": "#777",
|
|
28
|
+
"silver": "#999",
|
|
29
|
+
"light-silver": "#aaa",
|
|
30
|
+
"moon-gray": "#ccc",
|
|
31
|
+
"light-gray": "#eee",
|
|
32
|
+
"near-white": "#f4f4f4",
|
|
33
|
+
"white": "#fff",
|
|
34
|
+
"transparent": "transparent"
|
|
35
|
+
},
|
|
36
|
+
"__palette_comment": "Tachyons CSS colors",
|
|
37
|
+
"palette": {
|
|
38
|
+
"dark-red": "#e7040f",
|
|
39
|
+
"red": "#ff4136",
|
|
40
|
+
"light-red": "#ff725c",
|
|
41
|
+
"orange": "#ff6300",
|
|
42
|
+
"gold": "#ffb700",
|
|
43
|
+
"yellow": "#ffd700",
|
|
44
|
+
"light-yellow": "#fbf1a9",
|
|
45
|
+
"purple": "#5e2ca5",
|
|
46
|
+
"light-purple": "#a463f2",
|
|
47
|
+
"dark-pink": "#d5008f",
|
|
48
|
+
"hot-pink": "#ff41b4",
|
|
49
|
+
"pink": "#ff80cc",
|
|
50
|
+
"light-pink": "#ffa3d7",
|
|
51
|
+
"dark-green": "#137752",
|
|
52
|
+
"green": "#19a974",
|
|
53
|
+
"light-green": "#9eebcf",
|
|
54
|
+
"navy": "#001b44",
|
|
55
|
+
"dark-blue": "#00449e",
|
|
56
|
+
"blue": "#357edd",
|
|
57
|
+
"light-blue": "#96ccff",
|
|
58
|
+
"lightest-blue": "#cdecff",
|
|
59
|
+
"washed-blue": "#f6fffe",
|
|
60
|
+
"washed-green": "#e8fdf5",
|
|
61
|
+
"washed-yellow": "#fffceb",
|
|
62
|
+
"washed-red": "#ffdfdf"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"specs": [
|
|
66
|
+
{
|
|
67
|
+
"comment": "border colors",
|
|
68
|
+
"prefix": "b--",
|
|
69
|
+
"index": "v",
|
|
70
|
+
"prop": "border-color",
|
|
71
|
+
"items": "var-palette",
|
|
72
|
+
"unit": "var-palette"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"prefix": "b--",
|
|
76
|
+
"index": "v",
|
|
77
|
+
"prop": "border-color",
|
|
78
|
+
"items": "palette",
|
|
79
|
+
"unit": "palette"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"prefix": "b--",
|
|
83
|
+
"index": "v",
|
|
84
|
+
"prop": "border-color",
|
|
85
|
+
"items": "grays",
|
|
86
|
+
"unit": "grays"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"comment": "text colors",
|
|
90
|
+
"prefix": "",
|
|
91
|
+
"index": "v",
|
|
92
|
+
"prop": "color",
|
|
93
|
+
"items": "var-palette",
|
|
94
|
+
"unit": "var-palette"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"prefix": "",
|
|
98
|
+
"index": "v",
|
|
99
|
+
"prop": "color",
|
|
100
|
+
"items": "palette",
|
|
101
|
+
"unit": "palette"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"prefix": "",
|
|
105
|
+
"index": "v",
|
|
106
|
+
"prop": "color",
|
|
107
|
+
"items": "grays",
|
|
108
|
+
"unit": "grays"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"comment": "background colors",
|
|
112
|
+
"prefix": "bg-",
|
|
113
|
+
"index": "v",
|
|
114
|
+
"prop": "background-color",
|
|
115
|
+
"items": "var-palette",
|
|
116
|
+
"unit": "var-palette"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"prefix": "bg-",
|
|
120
|
+
"index": "v",
|
|
121
|
+
"prop": "background-color",
|
|
122
|
+
"items": "palette",
|
|
123
|
+
"unit": "palette"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"prefix": "bg-",
|
|
127
|
+
"index": "v",
|
|
128
|
+
"prop": "background-color",
|
|
129
|
+
"items": "grays",
|
|
130
|
+
"unit": "grays"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"comment": "opacities",
|
|
134
|
+
"prefix": "o",
|
|
135
|
+
"index": "v",
|
|
136
|
+
"prop": "opacity",
|
|
137
|
+
"items": [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
|
|
138
|
+
"unit": "norm"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specs": [
|
|
3
|
+
{
|
|
4
|
+
"prefix": "cursor-",
|
|
5
|
+
"index": "v",
|
|
6
|
+
"prop": "cursor",
|
|
7
|
+
"items": {
|
|
8
|
+
"auto": "auto",
|
|
9
|
+
"default": "default",
|
|
10
|
+
"none": "none",
|
|
11
|
+
"context": "context-menu",
|
|
12
|
+
"help": "help",
|
|
13
|
+
"pointer": "pointer",
|
|
14
|
+
"progress": "progress",
|
|
15
|
+
"wait": "wait",
|
|
16
|
+
"cell": "cell",
|
|
17
|
+
"cross": "crosshair",
|
|
18
|
+
"text": "text",
|
|
19
|
+
"vtext": "vertical-text",
|
|
20
|
+
"alias": "alias",
|
|
21
|
+
"copy": "copy",
|
|
22
|
+
"move": "move",
|
|
23
|
+
"no-drop": "no-drop",
|
|
24
|
+
"forbidden": "not-allowed",
|
|
25
|
+
"grab": "grab",
|
|
26
|
+
"grabbing": "grabbing",
|
|
27
|
+
"e": "e-resize",
|
|
28
|
+
"n": "n-resize",
|
|
29
|
+
"ne": "ne-resize",
|
|
30
|
+
"nw": "nw-resize",
|
|
31
|
+
"s": "s-resize",
|
|
32
|
+
"se": "se-resize",
|
|
33
|
+
"sw": "sw-resize",
|
|
34
|
+
"w": "w-resize",
|
|
35
|
+
"ew": "ew-resize",
|
|
36
|
+
"ns": "ns-resize",
|
|
37
|
+
"news": "nesw-resize",
|
|
38
|
+
"nwse": "nwse-resize",
|
|
39
|
+
"col": "col-resize",
|
|
40
|
+
"row": "row-resize",
|
|
41
|
+
"scroll": "all-scroll",
|
|
42
|
+
"in": "zoom-in",
|
|
43
|
+
"out": "zoom-out"
|
|
44
|
+
},
|
|
45
|
+
"unit": null
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"sizes-abs": [1, 2, 4, 8, 16],
|
|
4
|
+
"sizes-rel": [
|
|
5
|
+
10, 20, 25, 30, 33, 34, 40, 50, 60, 66, 70, 75, 80, 90, 100
|
|
6
|
+
]
|
|
7
|
+
},
|
|
8
|
+
"specs": [
|
|
9
|
+
{
|
|
10
|
+
"comment": "abs widths",
|
|
11
|
+
"prefix": "w",
|
|
12
|
+
"index": "i1",
|
|
13
|
+
"prop": "width",
|
|
14
|
+
"items": "sizes-abs"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"comment": "relative widths",
|
|
18
|
+
"prefix": "w",
|
|
19
|
+
"index": "v",
|
|
20
|
+
"prop": "width",
|
|
21
|
+
"items": "sizes-rel",
|
|
22
|
+
"unit": "%"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"comment": "max width (abs)",
|
|
26
|
+
"prefix": "mw",
|
|
27
|
+
"index": "i1",
|
|
28
|
+
"prop": "max-width",
|
|
29
|
+
"items": "sizes-abs"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"comment": "max width (rel)",
|
|
33
|
+
"prefix": "mw",
|
|
34
|
+
"index": "v",
|
|
35
|
+
"prop": "max-width",
|
|
36
|
+
"items": "sizes-rel",
|
|
37
|
+
"unit": "%"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"comment": "abs heights",
|
|
41
|
+
"prefix": "h",
|
|
42
|
+
"index": "i1",
|
|
43
|
+
"prop": "height",
|
|
44
|
+
"items": "sizes-abs"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"comment": "relative heights",
|
|
48
|
+
"prefix": "h",
|
|
49
|
+
"index": "v",
|
|
50
|
+
"prop": "height",
|
|
51
|
+
"items": "sizes-rel",
|
|
52
|
+
"unit": "%"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specs": [
|
|
3
|
+
{
|
|
4
|
+
"comment": "display modes",
|
|
5
|
+
"prefix": "d",
|
|
6
|
+
"index": "v",
|
|
7
|
+
"prop": "display",
|
|
8
|
+
"items": {
|
|
9
|
+
"b": "block",
|
|
10
|
+
"f": "flex",
|
|
11
|
+
"g": "grid",
|
|
12
|
+
"i": "inline",
|
|
13
|
+
"ib": "inline-block",
|
|
14
|
+
"if": "inline-flex",
|
|
15
|
+
"ig": "inline-grid",
|
|
16
|
+
"n": "none",
|
|
17
|
+
"t": "table",
|
|
18
|
+
"tc": "table-cell",
|
|
19
|
+
"tr": "table-row"
|
|
20
|
+
},
|
|
21
|
+
"unit": null
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
package/specs/grid.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"cols-rows": {
|
|
4
|
+
"1": "1fr",
|
|
5
|
+
"2": "1fr 1fr",
|
|
6
|
+
"3": "1fr 1fr 1fr",
|
|
7
|
+
"4": "repeat(4,1fr)",
|
|
8
|
+
"5": "repeat(5,1fr)",
|
|
9
|
+
"6": "repeat(6,1fr)",
|
|
10
|
+
"7": "repeat(7,1fr)",
|
|
11
|
+
"8": "repeat(8,1fr)",
|
|
12
|
+
"9": "repeat(9,1fr)",
|
|
13
|
+
"10": "repeat(10,1fr)"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"specs": [
|
|
17
|
+
{
|
|
18
|
+
"comment": "grid column layout",
|
|
19
|
+
"prefix": "gc",
|
|
20
|
+
"index": "v",
|
|
21
|
+
"prop": "grid-template-columns",
|
|
22
|
+
"items": "cols-rows",
|
|
23
|
+
"unit": "cols-rows"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"comment": "grid row layout",
|
|
27
|
+
"prefix": "gr",
|
|
28
|
+
"index": "v",
|
|
29
|
+
"prop": "grid-template-rows",
|
|
30
|
+
"items": "cols-rows",
|
|
31
|
+
"unit": "cols-rows"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"comment": "grid gaps",
|
|
35
|
+
"prefix": "gap",
|
|
36
|
+
"index": "i",
|
|
37
|
+
"prop": "gap",
|
|
38
|
+
"items": [0, 0.125, 0.25, 0.5, 1, 2]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
package/specs/lists.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"margins": [0, 0.25, 0.5, 1, 2]
|
|
4
|
+
},
|
|
5
|
+
"specs": [
|
|
6
|
+
{
|
|
7
|
+
"comment": "paddings",
|
|
8
|
+
"prefix": "p",
|
|
9
|
+
"index": "i",
|
|
10
|
+
"prop": "padding",
|
|
11
|
+
"items": "margins",
|
|
12
|
+
"var": "all"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"comment": "margins",
|
|
16
|
+
"prefix": "m",
|
|
17
|
+
"index": "i",
|
|
18
|
+
"prop": "margin",
|
|
19
|
+
"items": "margins",
|
|
20
|
+
"var": "all"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tables": {
|
|
3
|
+
"overflow": ["hidden", "scroll", "auto", "visible"]
|
|
4
|
+
},
|
|
5
|
+
"specs": [
|
|
6
|
+
{
|
|
7
|
+
"prefix": "overflow",
|
|
8
|
+
"index": "v",
|
|
9
|
+
"def": { "overflow": "*" },
|
|
10
|
+
"items": "overflow",
|
|
11
|
+
"unit": null
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"prefix": "overflow-x-",
|
|
15
|
+
"index": "v",
|
|
16
|
+
"def": { "overflow-x": "*" },
|
|
17
|
+
"items": "overflow",
|
|
18
|
+
"unit": null
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"prefix": "overflow-y-",
|
|
22
|
+
"index": "v",
|
|
23
|
+
"def": { "overflow-y": "*" },
|
|
24
|
+
"items": "overflow",
|
|
25
|
+
"unit": null
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|