@rayhanadev/purdue-menus 0.1.1 → 0.1.2
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/README.md +2 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -520,5 +520,5 @@ ${N}`,F}},U=A.spanOptions&&"captureStackTrace"in A.spanOptions?A.spanOptions:{ca
|
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
522
|
}
|
|
523
|
-
`,cJA=d6.fn("Api.fetchItemSearch")(function*(A){return(yield*$P(aJA,{name:A})).itemSearch}),_n=d6.fn("Api.fetchSearchResults")(function*(A){let q=new Date;return(yield*cJA(A)).map((F)=>({item:F,upcoming:(F.appearances??[]).filter((Z)=>new Date(Z.date)>=q).slice(0,5)})).filter((F)=>F.upcoming.length>0)});function pJA(A){let q=new Set;return A.filter((g)=>{let F=`${g.date}|${g.locationName}|${g.mealName}|${g.itemId}`;if(q.has(F))return!1;return q.add(F),!0}).sort((g,F)=>g.date.localeCompare(F.date)).slice(0,10)}var $n=d6.fn("Api.fetchUpcomingFavorites")(function*(A){if(A.size===0)return[];let q=new Date,g=new Date(q);g.setDate(g.getDate()+14);let F=Array.from(A.entries()).map(([U,Y])=>mz(U).pipe(d6.retry(YP.recurs(2)),d6.map((J)=>(J.appearances??[]).filter((X)=>{let N=new Date(X.date);return N>=q&&N<=g}).map((X)=>({date:X.date,locationName:X.locationName,mealName:X.mealName,itemName:Y,itemId:U}))),d6.orElseSucceed(()=>[]))),Z=yield*d6.all(F,{concurrency:"unbounded"});return pJA(Z.flat())});var dJA=["Dining Courts","Quick Bites","On-the-GO!"];function uJA(A){if(A.open)return`Serving ${A.mealName} until ${A.timeLabel}`;if(A.mealName)return`Opens for ${A.mealName} at ${A.timeLabel}`;return"Closed"}function Xn(A){let q=An(A.upcomingMeals??[]);return{court:A,open:q.open,statusText:uJA(q)}}function Hn(A){return[...A].sort((q,g)=>q.open===g.open?0:q.open?-1:1)}function Mn(A,q){let g=new Map(A.map((U)=>[U.name,U])),F=new Map;for(let U of A)for(let Y of U.diningCourts)F.set(Y.name,Y);let Z=[];if(q.size>0){let U=[];for(let Y of q){let J=F.get(Y);if(J)U.push(Xn(J))}if(U.length>0)Z.push({name:"\u2605 Favorites",entries:Hn(U)})}for(let U of dJA){let Y=g.get(U);if(!Y)continue;Z.push({name:U,entries:Hn(Y.diningCourts.map(Xn))})}return Z}function az(A){return A.formalName??A.name}function Ln(A,q){if(!q)return A;let g=q.toLowerCase();return A.map((F)=>({...F,entries:F.entries.filter((Z)=>az(Z.court).toLowerCase().includes(g))})).filter((F)=>F.entries.length>0)}function mJ(A,q){q({data:null,error:null,loading:!0}),d6.runPromise(A.pipe(d6.match({onSuccess:(g)=>({data:g,error:null,loading:!1}),onFailure:(g)=>({data:null,error:g instanceof Error?g.message:String(g),loading:!1})}))).then(q)}var XP=pg(cE(),1);function UH(A){let[q,g]=XP.useState(0),F=XP.useRef("");function Z(U){if(U.name>="0"&&U.name<="9")return F.current+=U.name,!0;let Y=Math.max(1,parseInt(F.current,10)||1);switch(F.current="",U.name){case"down":case"j":return g((J)=>Math.min(A-1,J+Y)),!0;case"up":case"k":return g((J)=>Math.max(0,J-Y)),!0;case"g":if(U.shift)g(Math.max(0,A-1));else g(0);return!0;default:return!1}}return{selectedIndex:q,setSelectedIndex:g,handleKey:Z}}var Wn=pg(cE(),1);function HP(A){let[q,g]=i5(A),F=pE(KH),[Z,U]=Wn.useState(!1);function Y(){U(!0),F(!0)}function J(){U(!1),F(!1)}function X(){g(null)}function N(){U(!1),g(null),F(!1)}return{query:q,inputActive:Z,open:Y,close:J,clear:X,cancel:N,setQuery:g}}function MP({query:A,placeholder:q,onInput:g,onSubmit:F}){return kA.jsxDEV("box",{height:1,paddingX:1,flexDirection:"row",children:[kA.jsxDEV("text",{fg:"#CEB888",children:"Filter: "},void 0,!1,void 0,this),kA.jsxDEV("input",{flexGrow:1,focused:!0,value:A??"",placeholder:q,onInput:(Z)=>g(Z||null),onSubmit:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function BK({color:A="#888888",children:q}){return kA.jsxDEV("box",{flexGrow:1,justifyContent:"center",alignItems:"center",children:kA.jsxDEV("text",{fg:A,children:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Nn(){let A=LF(B$),q=LF(lj),g=pE(Un),F=pE(jn),Z=pE(Zn),[U,Y]=eG.useState({data:null,error:null,loading:!0});eG.useEffect(()=>{mJ(On(),Y)},[]);let{data:J,error:X,loading:N}=U,[T,I]=eG.useState([]),P=HP(En),R=eG.useMemo(()=>J?Mn(J,A):[],[J,A]),B=eG.useMemo(()=>Ln(R,P.query),[R,P.query]),w=eG.useMemo(()=>B.flatMap((f)=>f.entries),[B]),m=UH(w.length);if(eG.useEffect(()=>{if(q.size===0){I([]);return}d6.runPromise($n(q)).then(I).catch(()=>I([]))},[q]),AJ((f)=>{if(P.inputActive){if(f.name==="escape")P.cancel();return}if(m.handleKey(f))return;if(f.name==="s"){F();return}if(f.name==="/"){P.open();return}if(f.name==="escape"){if(P.query!==null){P.open();return}return}if(f.name==="f"){let o=w[m.selectedIndex];if(o)Z(o.court.name);return}if(f.name==="return"){let o=w[m.selectedIndex];if(o)g(o.court)}}),X)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",X]},void 0,!0,void 0,this);if(N)return kA.jsxDEV(BK,{children:"Loading dining locations..."},void 0,!1,void 0,this);let n=0;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[P.query!==null&&!P.inputActive?kA.jsxDEV("box",{paddingX:1,height:1,children:kA.jsxDEV("text",{fg:"#888888",children:[kA.jsxDEV("span",{fg:"#CEB888",children:"Filter:"},void 0,!1,void 0,this)," ",P.query," (",w.length," match",w.length!==1?"es":"",")"]},void 0,!0,void 0,this)},void 0,!1,void 0,this):null,kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,children:[B.map((f,o)=>kA.jsxDEV("box",{flexDirection:"column",marginTop:o===0?1:0,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:["\u2500\u2500 ",f.name," \u2500\u2500"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),f.entries.map((KA)=>{let $A=n++===m.selectedIndex;return kA.jsxDEV(fJA,{entry:KA,isSelected:$A,isFav:A.has(KA.court.name)},`${f.name}-${KA.court.id}`,!1,void 0,this)}),o<B.length-1?kA.jsxDEV("box",{height:1},void 0,!1,void 0,this):null]},f.name,!0,void 0,this)),!P.query&&q.size>0?kA.jsxDEV(lJA,{entries:T},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this),P.inputActive?kA.jsxDEV(MP,{query:P.query,placeholder:"filter locations...",onInput:(f)=>{P.setQuery(f),m.setSelectedIndex(0)},onSubmit:P.close},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function fJA({entry:A,isSelected:q,isFav:g}){let F=az(A.court),Z=q?" > ":" ",U=`${g?" [*]":""}${A.open?"":" [x]"}`,Y;if(q)Y="#CEB888";else if(A.open)Y="#555555";else Y="#AAAAAA";let J=q?"#555555":"#444444",X=`${Z}${F}${U}`;return kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("text",{fg:Y,children:q?kA.jsxDEV("strong",{children:X},void 0,!1,void 0,this):X},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:J,children:[" ",A.statusText]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function lJA({entries:A}){return kA.jsxDEV("box",{flexDirection:"column",marginTop:1,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:"\u2500\u2500 Upcoming Favorites \u2500\u2500"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),A.length===0?kA.jsxDEV("box",{paddingLeft:1,children:kA.jsxDEV("text",{fg:"#888888",children:"No upcoming items."},void 0,!1,void 0,this)},void 0,!1,void 0,this):A.map((q,g)=>{let F=vJ(new Date(q.date));return kA.jsxDEV("box",{paddingLeft:1,children:kA.jsxDEV("text",{fg:"#888888",children:[F," ",kA.jsxDEV("span",{fg:"#AAAAAA",children:q.itemName},void 0,!1,void 0,this)," ",kA.jsxDEV("span",{fg:"#666666",children:["\xB7 ",q.locationName," \xB7 ",q.mealName]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},g,!1,void 0,this)})]},void 0,!0,void 0,this)}var qO=pg(cE(),1);function Vn(A){let q=Date.now(),g=A.findIndex((U)=>U.startTime&&U.endTime&&q>=new Date(U.startTime).getTime()&&q<new Date(U.endTime).getTime());if(g>=0)return g;let F=A.findIndex((U)=>U.startTime&&q<new Date(U.startTime).getTime());if(F>=0)return F;let Z=A.findLastIndex((U)=>U.status!=="UNAVAILABLE");if(Z>=0)return Z;return 0}function Tn(A){return A.flatMap((q)=>q.items)}function Pn(A,q){if(!q)return A;let g=q.toLowerCase();return A.map((F)=>({...F,items:F.items.filter((Z)=>EN(Z).toLowerCase().includes(g))})).filter((F)=>F.items.length>0)}function EN(A){return A.displayName||A.item.name}function In({court:A}){let q=LF(bJ),g=LF(lj),F=pE(JP),Z=pE(ZH),U=pE(OP),Y=tl(q),[J,X]=qO.useState({data:null,error:null,loading:!0});qO.useEffect(()=>{mJ(Jn(A.name,Y),X)},[A.name,Y]);let{data:N,error:T,loading:I}=J,[P,R]=qO.useState(0),B=HP(Dz),w=N?.dailyMenu?.meals??[],m=w[P],n=m?.stations??[],f=qO.useMemo(()=>Pn(n,B.query),[n,B.query]),o=qO.useMemo(()=>Tn(f),[f]),KA=UH(o.length);if(qO.useEffect(()=>{if(w.length>0)R(Vn(w)),KA.setSelectedIndex(0)},[N]),AJ((e)=>{if(B.inputActive){if(e.name==="escape")B.cancel();return}if(KA.handleKey(e))return;if(e.name==="/"){B.open();return}if(e.name==="escape"){if(B.query!==null){B.open();return}Z();return}if(e.name==="h"||e.name==="left"){R((AA)=>Math.max(0,AA-1)),KA.setSelectedIndex(0),B.clear();return}if(e.name==="l"||e.name==="right"){R((AA)=>Math.min(w.length-1,AA+1)),KA.setSelectedIndex(0),B.clear();return}if(e.name==="f"){let AA=o[KA.selectedIndex];if(AA)U({itemId:AA.item.itemId,displayName:EN(AA)});return}if(e.name==="return"){let AA=o[KA.selectedIndex];if(AA)F({itemId:AA.item.itemId,itemName:EN(AA)})}}),T)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",T]},void 0,!0,void 0,this);if(I)return kA.jsxDEV(BK,{children:["Loading menu for ",A.formalName??A.name,"..."]},void 0,!0,void 0,this);if(!N?.dailyMenu||w.length===0)return kA.jsxDEV(BK,{children:"No menu available for this date."},void 0,!1,void 0,this);let GA=0,$A=B.query!==null&&!B.inputActive;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV(iJA,{meals:w,selectedIndex:P},void 0,!1,void 0,this),m?.notes?kA.jsxDEV("box",{paddingX:1,children:kA.jsxDEV("text",{fg:"#FFD700",children:m.notes},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,$A?kA.jsxDEV("box",{paddingX:1,height:1,marginTop:1,children:kA.jsxDEV("text",{fg:"#888888",children:[kA.jsxDEV("span",{fg:"#CEB888",children:"Filter:"},void 0,!1,void 0,this)," ",B.query," (",o.length," match",o.length!==1?"es":"",")"]},void 0,!0,void 0,this)},void 0,!1,void 0,this):null,kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,paddingTop:$A?0:1,children:f.map((e)=>kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:["\u2500\u2500 ",e.name??"Station"," \u2500\u2500"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e.items.map((AA)=>{let RA=GA++===KA.selectedIndex,VA=EN(AA),vA=g.has(AA.item.itemId),oA=`${RA?" > ":" "}${VA}${vA?" [*]":""}`;return kA.jsxDEV("text",{fg:RA?"#CEB888":"#AAAAAA",children:RA?kA.jsxDEV("strong",{children:oA},void 0,!1,void 0,this):oA},AA.id,!1,void 0,this)})]},e.id,!0,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.inputActive?kA.jsxDEV(MP,{query:B.query,placeholder:"filter items...",onInput:(e)=>{B.setQuery(e),KA.setSelectedIndex(0)},onSubmit:B.close},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function iJA({meals:A,selectedIndex:q}){return kA.jsxDEV("box",{flexDirection:"row",gap:1,paddingX:1,height:1,children:A.map((g,F)=>{let Z=F===q,U=g.startTime&&g.endTime?` ${gN(g.startTime)}-${gN(g.endTime)}`:"",Y="";if(g.status==="CLOSED")Y=" [Closed]";else if(g.status==="UNAVAILABLE")Y=" [N/A]";let J=` ${g.name}${Y}${U} `;return kA.jsxDEV("text",{fg:Z?"#CEB888":"#555555",children:Z?kA.jsxDEV("strong",{children:J},void 0,!1,void 0,this):J},g.id,!1,void 0,this)})},void 0,!1,void 0,this)}var LP=pg(cE(),1);var oJA=new Set(["Calories","Total Fat","Saturated Fat","Trans Fat","Cholesterol","Sodium","Total Carbohydrate","Dietary Fiber","Total Sugars","Protein"]),rJA=new Set(["Saturated Fat","Trans Fat","Dietary Fiber","Total Sugars"]);function Rn(A){return oJA.has(A??"")}function xn(A){return rJA.has(A??"")}function Sn(A,q=5){let g=new Date;return A.filter((F)=>new Date(F.date)>=g).slice(0,q)}function zn({itemId:A,itemName:q}){let[g,F]=LP.useState({data:null,error:null,loading:!0});LP.useEffect(()=>{mJ(mz(A),F)},[A]);let{data:Z,error:U,loading:Y}=g;if(U)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error loading item: ",U]},void 0,!0,void 0,this);if(Y)return kA.jsxDEV(BK,{children:["Loading ",q,"..."]},void 0,!0,void 0,this);if(!Z)return kA.jsxDEV(BK,{children:"Item not found."},void 0,!1,void 0,this);let J=Z.nutritionFacts??[],X=Z.traits??[],N=Sn(Z.appearances??[]);return kA.jsxDEV("scrollbox",{flexGrow:1,focused:!0,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,paddingY:1,gap:1,children:[kA.jsxDEV("text",{fg:"#CEB888",children:kA.jsxDEV("strong",{children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this),X.length>0?kA.jsxDEV("box",{flexDirection:"row",gap:1,flexWrap:"wrap",children:X.map((T)=>kA.jsxDEV("text",{fg:"#888888",children:["[",T.name,"]"]},T.id,!0,void 0,this))},void 0,!1,void 0,this):null,J.length>0?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Nutrition Facts",titleAlignment:"center",children:J.map((T,I)=>kA.jsxDEV(sJA,{fact:T,indent:xn(T.name)},I,!1,void 0,this))},void 0,!1,void 0,this):kA.jsxDEV("text",{fg:"#888888",children:"No nutrition information available."},void 0,!1,void 0,this),Z.ingredients?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Ingredients",titleAlignment:"center",paddingX:1,children:kA.jsxDEV("text",{fg:"#CCCCCC",children:Z.ingredients},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,N.length>0?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Upcoming",titleAlignment:"center",children:N.map((T,I)=>{let P=vJ(new Date(T.date));return kA.jsxDEV("box",{flexDirection:"row",paddingX:1,gap:1,children:[kA.jsxDEV("text",{fg:"#888888",width:16,children:P},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:"#AAAAAA",children:T.locationName},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:"#666666",children:[T.mealName," / ",T.stationName]},void 0,!0,void 0,this)]},I,!0,void 0,this)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function sJA({fact:A,indent:q}){let F=`${q?" ":""}${A.name??"Unknown"}`,Z=A.label??(A.value!=null?String(A.value):""),U=A.dailyValueLabel??"";return kA.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingX:1,children:[kA.jsxDEV("text",{fg:"#AAAAAA",children:[Rn(A.name)?kA.jsxDEV("strong",{children:F},void 0,!1,void 0,this):F,Z?` ${Z}`:""]},void 0,!0,void 0,this),U?kA.jsxDEV("text",{fg:"#555555",children:U},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var aJ=pg(cE(),1);function Bn(){let[A,q]=i5(wz),g=LF(lj),F=pE(KH),Z=pE(JP),U=pE(ZH),Y=pE(OP),[J,X]=aJ.useState(!0),[N,T]=aJ.useState(A),[I,P]=aJ.useState({data:null,error:null,loading:!1});aJ.useEffect(()=>{return F(J),()=>F(!1)},[J]),aJ.useEffect(()=>{if(!A.trim()){T("");return}let KA=setTimeout(()=>T(A.trim()),300);return()=>clearTimeout(KA)},[A]),aJ.useEffect(()=>{if(!N){P({data:null,error:null,loading:!1});return}mJ(_n(N),P)},[N]);let{data:R,error:B,loading:w}=I,m=R?.length??0,n=UH(m);AJ((KA)=>{if(J){if(KA.name==="escape")U();return}if(n.handleKey(KA))return;if(KA.name==="escape"){X(!0);return}if(KA.name==="/"||KA.name==="s"){X(!0);return}if(KA.name==="f"&&R){let GA=R[n.selectedIndex];if(GA)Y({itemId:GA.item.itemId,displayName:GA.item.name});return}if(KA.name==="return"&&R){let GA=R[n.selectedIndex];if(GA)Z({itemId:GA.item.itemId,itemName:GA.item.name})}});let f=N.length>0;function o(){if(f&&B)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",B]},void 0,!0,void 0,this);if(f&&w)return kA.jsxDEV(BK,{children:"Searching..."},void 0,!1,void 0,this);if(f&&m===0&&R)return kA.jsxDEV(BK,{children:['No upcoming results for "',N,'".']},void 0,!0,void 0,this);if(!f&&!J)return kA.jsxDEV(BK,{children:"Press s or / to search"},void 0,!1,void 0,this);if(!R)return null;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV("box",{paddingX:1,height:1,children:kA.jsxDEV("text",{fg:"#555555",children:[m," item",m!==1?"s":""," with upcoming appearances"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,children:R.map((KA,GA)=>{let $A=!J&&GA===n.selectedIndex,e=g.has(KA.item.itemId),AA=`${$A?" > ":" "}${KA.item.name}${e?" [*]":""}`;return kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("text",{fg:$A?"#CEB888":"#555555",children:$A?kA.jsxDEV("strong",{children:AA},void 0,!1,void 0,this):AA},void 0,!1,void 0,this),KA.upcoming.map((OA,RA)=>{let VA=vJ(new Date(OA.date));return kA.jsxDEV("text",{fg:$A?"#AAAAAA":"#888888",children:[" ",VA," ",OA.locationName," \xB7 ",OA.mealName]},RA,!0,void 0,this)})]},KA.item.itemId,!0,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV("box",{flexGrow:1,children:o()},void 0,!1,void 0,this),J?kA.jsxDEV("box",{height:1,paddingX:1,flexDirection:"row",children:[kA.jsxDEV("text",{fg:"#CEB888",children:"Search: "},void 0,!1,void 0,this),kA.jsxDEV("input",{flexGrow:1,focused:!0,value:A,placeholder:"food items...",onInput:q,onSubmit:()=>{if(A.trim())X(!1)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}import{mkdir as tJA}from"fs/promises";import{join as jH}from"path";import{homedir as eJA}from"os";function Cn(){let A=eJA();if(process.platform==="darwin")return jH(A,"Library","Preferences","purdue-menu-tui");if(process.platform==="win32")return jH(process.env.APPDATA??jH(A,"AppData","Roaming"),"purdue-menu-tui","Config");return jH(process.env.XDG_CONFIG_HOME??jH(A,".config"),"purdue-menu-tui")}function Dn(){return jH(Cn(),"favorites.json")}function A_A(A){let q=JSON.parse(A);return{courts:Array.isArray(q.courts)?q.courts:[],items:q.items&&typeof q.items==="object"?q.items:{}}}var wn=d6.tryPromise(()=>Bun.file(Dn()).text()).pipe(d6.map(A_A),d6.orElseSucceed(()=>({courts:[],items:{}})),d6.withSpan("Favorites.load")),hn=d6.fn("Favorites.save")(function*(A){yield*d6.tryPromise(()=>tJA(Cn(),{recursive:!0})).pipe(d6.andThen(d6.tryPromise(()=>Bun.write(Dn(),JSON.stringify(A,null,2)+`
|
|
523
|
+
`,cJA=d6.fn("Api.fetchItemSearch")(function*(A){return(yield*$P(aJA,{name:A})).itemSearch}),_n=d6.fn("Api.fetchSearchResults")(function*(A){let q=new Date;return(yield*cJA(A)).map((F)=>({item:F,upcoming:(F.appearances??[]).filter((Z)=>new Date(Z.date)>=q).slice(0,5)})).filter((F)=>F.upcoming.length>0)});function pJA(A){let q=new Set;return A.filter((g)=>{let F=`${g.date}|${g.locationName}|${g.mealName}|${g.itemId}`;if(q.has(F))return!1;return q.add(F),!0}).sort((g,F)=>g.date.localeCompare(F.date)).slice(0,10)}var $n=d6.fn("Api.fetchUpcomingFavorites")(function*(A){if(A.size===0)return[];let q=new Date,g=new Date(q);g.setDate(g.getDate()+14);let F=Array.from(A.entries()).map(([U,Y])=>mz(U).pipe(d6.retry(YP.recurs(2)),d6.map((J)=>(J.appearances??[]).filter((X)=>{let N=new Date(X.date);return N>=q&&N<=g}).map((X)=>({date:X.date,locationName:X.locationName,mealName:X.mealName,itemName:Y,itemId:U}))),d6.orElseSucceed(()=>[]))),Z=yield*d6.all(F,{concurrency:"unbounded"});return pJA(Z.flat())});var dJA=["Dining Courts","Quick Bites","On-the-GO!"];function uJA(A){if(A.open)return`Serving ${A.mealName} until ${A.timeLabel}`;if(A.mealName)return`Opens for ${A.mealName} at ${A.timeLabel}`;return"Closed"}function Xn(A){let q=An(A.upcomingMeals??[]);return{court:A,open:q.open,statusText:uJA(q)}}function Hn(A){return[...A].sort((q,g)=>q.open===g.open?0:q.open?-1:1)}function Mn(A,q){let g=new Map(A.map((U)=>[U.name,U])),F=new Map;for(let U of A)for(let Y of U.diningCourts)F.set(Y.name,Y);let Z=[];if(q.size>0){let U=[];for(let Y of q){let J=F.get(Y);if(J)U.push(Xn(J))}if(U.length>0)Z.push({name:"\u2605 Favorites",entries:Hn(U)})}for(let U of dJA){let Y=g.get(U);if(!Y)continue;Z.push({name:U,entries:Hn(Y.diningCourts.map(Xn))})}return Z}function az(A){return A.formalName??A.name}function Ln(A,q){if(!q)return A;let g=q.toLowerCase();return A.map((F)=>({...F,entries:F.entries.filter((Z)=>az(Z.court).toLowerCase().includes(g))})).filter((F)=>F.entries.length>0)}function mJ(A,q){q({data:null,error:null,loading:!0}),d6.runPromise(A.pipe(d6.match({onSuccess:(g)=>({data:g,error:null,loading:!1}),onFailure:(g)=>({data:null,error:g instanceof Error?g.message:String(g),loading:!1})}))).then(q)}var XP=pg(cE(),1);function UH(A){let[q,g]=XP.useState(0),F=XP.useRef("");function Z(U){if(U.name>="0"&&U.name<="9")return F.current+=U.name,!0;let Y=Math.max(1,parseInt(F.current,10)||1);switch(F.current="",U.name){case"down":case"j":return g((J)=>Math.min(A-1,J+Y)),!0;case"up":case"k":return g((J)=>Math.max(0,J-Y)),!0;case"g":if(U.shift)g(Math.max(0,A-1));else g(0);return!0;default:return!1}}return{selectedIndex:q,setSelectedIndex:g,handleKey:Z}}var Wn=pg(cE(),1);function HP(A){let[q,g]=i5(A),F=pE(KH),[Z,U]=Wn.useState(!1);function Y(){U(!0),F(!0)}function J(){U(!1),F(!1)}function X(){g(null)}function N(){U(!1),g(null),F(!1)}return{query:q,inputActive:Z,open:Y,close:J,clear:X,cancel:N,setQuery:g}}function MP({query:A,placeholder:q,onInput:g,onSubmit:F}){return kA.jsxDEV("box",{height:1,paddingX:1,flexDirection:"row",children:[kA.jsxDEV("text",{fg:"#CEB888",children:"Filter: "},void 0,!1,void 0,this),kA.jsxDEV("input",{flexGrow:1,focused:!0,value:A??"",placeholder:q,onInput:(Z)=>g(Z||null),onSubmit:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function BK({color:A="#888888",children:q}){return kA.jsxDEV("box",{flexGrow:1,justifyContent:"center",alignItems:"center",children:kA.jsxDEV("text",{fg:A,children:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Nn(){let A=LF(B$),q=LF(lj),g=pE(Un),F=pE(jn),Z=pE(Zn),[U,Y]=eG.useState({data:null,error:null,loading:!0});eG.useEffect(()=>{mJ(On(),Y)},[]);let{data:J,error:X,loading:N}=U,[T,I]=eG.useState([]),P=HP(En),R=eG.useMemo(()=>J?Mn(J,A):[],[J,A]),B=eG.useMemo(()=>Ln(R,P.query),[R,P.query]),w=eG.useMemo(()=>B.flatMap((f)=>f.entries),[B]),m=UH(w.length);if(eG.useEffect(()=>{if(q.size===0){I([]);return}d6.runPromise($n(q)).then(I).catch(()=>I([]))},[q]),AJ((f)=>{if(P.inputActive){if(f.name==="escape")P.cancel();return}if(m.handleKey(f))return;if(f.name==="s"){F();return}if(f.name==="/"){P.open();return}if(f.name==="escape"){if(P.query!==null){P.open();return}return}if(f.name==="f"){let o=w[m.selectedIndex];if(o)Z(o.court.name);return}if(f.name==="return"){let o=w[m.selectedIndex];if(o)g(o.court)}}),X)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",X]},void 0,!0,void 0,this);if(N)return kA.jsxDEV(BK,{children:"Loading dining locations..."},void 0,!1,void 0,this);let n=0;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[P.query!==null&&!P.inputActive?kA.jsxDEV("box",{paddingX:1,height:1,children:kA.jsxDEV("text",{fg:"#888888",children:[kA.jsxDEV("span",{fg:"#CEB888",children:"Filter:"},void 0,!1,void 0,this)," ",P.query," (",w.length," match",w.length!==1?"es":"",")"]},void 0,!0,void 0,this)},void 0,!1,void 0,this):null,kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,children:[B.map((f,o)=>kA.jsxDEV("box",{flexDirection:"column",marginTop:o===0?1:0,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:["\u2500\u2500 ",f.name," \u2500\u2500"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),f.entries.map((KA)=>{let $A=n++===m.selectedIndex;return kA.jsxDEV(fJA,{entry:KA,isSelected:$A,isFav:A.has(KA.court.name)},`${f.name}-${KA.court.id}`,!1,void 0,this)}),o<B.length-1?kA.jsxDEV("box",{height:1},void 0,!1,void 0,this):null]},f.name,!0,void 0,this)),!P.query&&q.size>0?kA.jsxDEV(lJA,{entries:T},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this),P.inputActive?kA.jsxDEV(MP,{query:P.query,placeholder:"filter locations...",onInput:(f)=>{P.setQuery(f),m.setSelectedIndex(0)},onSubmit:P.close},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function fJA({entry:A,isSelected:q,isFav:g}){let F=az(A.court),Z=q?" > ":" ",U=`${g?" [*]":""}${A.open?"":" [x]"}`,Y;if(q)Y="#CEB888";else if(A.open)Y="#AAAAAA";else Y="#555555";let J=q?"#555555":"#444444",X=`${Z}${F}${U}`;return kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("text",{fg:Y,children:q?kA.jsxDEV("strong",{children:X},void 0,!1,void 0,this):X},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:J,children:[" ",A.statusText]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function lJA({entries:A}){return kA.jsxDEV("box",{flexDirection:"column",marginTop:1,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:"\u2500\u2500 Upcoming Favorites \u2500\u2500"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),A.length===0?kA.jsxDEV("box",{paddingLeft:1,children:kA.jsxDEV("text",{fg:"#888888",children:"No upcoming items."},void 0,!1,void 0,this)},void 0,!1,void 0,this):A.map((q,g)=>{let F=vJ(new Date(q.date));return kA.jsxDEV("box",{paddingLeft:1,children:kA.jsxDEV("text",{fg:"#888888",children:[F," ",kA.jsxDEV("span",{fg:"#AAAAAA",children:q.itemName},void 0,!1,void 0,this)," ",kA.jsxDEV("span",{fg:"#666666",children:["\xB7 ",q.locationName," \xB7 ",q.mealName]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},g,!1,void 0,this)})]},void 0,!0,void 0,this)}var qO=pg(cE(),1);function Vn(A){let q=Date.now(),g=A.findIndex((U)=>U.startTime&&U.endTime&&q>=new Date(U.startTime).getTime()&&q<new Date(U.endTime).getTime());if(g>=0)return g;let F=A.findIndex((U)=>U.startTime&&q<new Date(U.startTime).getTime());if(F>=0)return F;let Z=A.findLastIndex((U)=>U.status!=="UNAVAILABLE");if(Z>=0)return Z;return 0}function Tn(A){return A.flatMap((q)=>q.items)}function Pn(A,q){if(!q)return A;let g=q.toLowerCase();return A.map((F)=>({...F,items:F.items.filter((Z)=>EN(Z).toLowerCase().includes(g))})).filter((F)=>F.items.length>0)}function EN(A){return A.displayName||A.item.name}function In({court:A}){let q=LF(bJ),g=LF(lj),F=pE(JP),Z=pE(ZH),U=pE(OP),Y=tl(q),[J,X]=qO.useState({data:null,error:null,loading:!0});qO.useEffect(()=>{mJ(Jn(A.name,Y),X)},[A.name,Y]);let{data:N,error:T,loading:I}=J,[P,R]=qO.useState(0),B=HP(Dz),w=N?.dailyMenu?.meals??[],m=w[P],n=m?.stations??[],f=qO.useMemo(()=>Pn(n,B.query),[n,B.query]),o=qO.useMemo(()=>Tn(f),[f]),KA=UH(o.length);if(qO.useEffect(()=>{if(w.length>0)R(Vn(w)),KA.setSelectedIndex(0)},[N]),AJ((e)=>{if(B.inputActive){if(e.name==="escape")B.cancel();return}if(KA.handleKey(e))return;if(e.name==="/"){B.open();return}if(e.name==="escape"){if(B.query!==null){B.open();return}Z();return}if(e.name==="h"||e.name==="left"){R((AA)=>Math.max(0,AA-1)),KA.setSelectedIndex(0),B.clear();return}if(e.name==="l"||e.name==="right"){R((AA)=>Math.min(w.length-1,AA+1)),KA.setSelectedIndex(0),B.clear();return}if(e.name==="f"){let AA=o[KA.selectedIndex];if(AA)U({itemId:AA.item.itemId,displayName:EN(AA)});return}if(e.name==="return"){let AA=o[KA.selectedIndex];if(AA)F({itemId:AA.item.itemId,itemName:EN(AA)})}}),T)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",T]},void 0,!0,void 0,this);if(I)return kA.jsxDEV(BK,{children:["Loading menu for ",A.formalName??A.name,"..."]},void 0,!0,void 0,this);if(!N?.dailyMenu||w.length===0)return kA.jsxDEV(BK,{children:"No menu available for this date."},void 0,!1,void 0,this);let GA=0,$A=B.query!==null&&!B.inputActive;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV(iJA,{meals:w,selectedIndex:P},void 0,!1,void 0,this),m?.notes?kA.jsxDEV("box",{paddingX:1,children:kA.jsxDEV("text",{fg:"#FFD700",children:m.notes},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,$A?kA.jsxDEV("box",{paddingX:1,height:1,marginTop:1,children:kA.jsxDEV("text",{fg:"#888888",children:[kA.jsxDEV("span",{fg:"#CEB888",children:"Filter:"},void 0,!1,void 0,this)," ",B.query," (",o.length," match",o.length!==1?"es":"",")"]},void 0,!0,void 0,this)},void 0,!1,void 0,this):null,kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,paddingTop:$A?0:1,children:f.map((e)=>kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("box",{children:kA.jsxDEV("text",{fg:"#555555",children:kA.jsxDEV("strong",{children:["\u2500\u2500 ",e.name??"Station"," \u2500\u2500"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e.items.map((AA)=>{let RA=GA++===KA.selectedIndex,VA=EN(AA),vA=g.has(AA.item.itemId),oA=`${RA?" > ":" "}${VA}${vA?" [*]":""}`;return kA.jsxDEV("text",{fg:RA?"#CEB888":"#AAAAAA",children:RA?kA.jsxDEV("strong",{children:oA},void 0,!1,void 0,this):oA},AA.id,!1,void 0,this)})]},e.id,!0,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.inputActive?kA.jsxDEV(MP,{query:B.query,placeholder:"filter items...",onInput:(e)=>{B.setQuery(e),KA.setSelectedIndex(0)},onSubmit:B.close},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function iJA({meals:A,selectedIndex:q}){return kA.jsxDEV("box",{flexDirection:"row",gap:1,paddingX:1,height:1,children:A.map((g,F)=>{let Z=F===q,U=g.startTime&&g.endTime?` ${gN(g.startTime)}-${gN(g.endTime)}`:"",Y="";if(g.status==="CLOSED")Y=" [Closed]";else if(g.status==="UNAVAILABLE")Y=" [N/A]";let J=` ${g.name}${Y}${U} `;return kA.jsxDEV("text",{fg:Z?"#CEB888":"#555555",children:Z?kA.jsxDEV("strong",{children:J},void 0,!1,void 0,this):J},g.id,!1,void 0,this)})},void 0,!1,void 0,this)}var LP=pg(cE(),1);var oJA=new Set(["Calories","Total Fat","Saturated Fat","Trans Fat","Cholesterol","Sodium","Total Carbohydrate","Dietary Fiber","Total Sugars","Protein"]),rJA=new Set(["Saturated Fat","Trans Fat","Dietary Fiber","Total Sugars"]);function Rn(A){return oJA.has(A??"")}function xn(A){return rJA.has(A??"")}function Sn(A,q=5){let g=new Date;return A.filter((F)=>new Date(F.date)>=g).slice(0,q)}function zn({itemId:A,itemName:q}){let[g,F]=LP.useState({data:null,error:null,loading:!0});LP.useEffect(()=>{mJ(mz(A),F)},[A]);let{data:Z,error:U,loading:Y}=g;if(U)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error loading item: ",U]},void 0,!0,void 0,this);if(Y)return kA.jsxDEV(BK,{children:["Loading ",q,"..."]},void 0,!0,void 0,this);if(!Z)return kA.jsxDEV(BK,{children:"Item not found."},void 0,!1,void 0,this);let J=Z.nutritionFacts??[],X=Z.traits??[],N=Sn(Z.appearances??[]);return kA.jsxDEV("scrollbox",{flexGrow:1,focused:!0,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,paddingY:1,gap:1,children:[kA.jsxDEV("text",{fg:"#CEB888",children:kA.jsxDEV("strong",{children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this),X.length>0?kA.jsxDEV("box",{flexDirection:"row",gap:1,flexWrap:"wrap",children:X.map((T)=>kA.jsxDEV("text",{fg:"#888888",children:["[",T.name,"]"]},T.id,!0,void 0,this))},void 0,!1,void 0,this):null,J.length>0?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Nutrition Facts",titleAlignment:"center",children:J.map((T,I)=>kA.jsxDEV(sJA,{fact:T,indent:xn(T.name)},I,!1,void 0,this))},void 0,!1,void 0,this):kA.jsxDEV("text",{fg:"#888888",children:"No nutrition information available."},void 0,!1,void 0,this),Z.ingredients?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Ingredients",titleAlignment:"center",paddingX:1,children:kA.jsxDEV("text",{fg:"#CCCCCC",children:Z.ingredients},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,N.length>0?kA.jsxDEV("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:"#555555",title:"Upcoming",titleAlignment:"center",children:N.map((T,I)=>{let P=vJ(new Date(T.date));return kA.jsxDEV("box",{flexDirection:"row",paddingX:1,gap:1,children:[kA.jsxDEV("text",{fg:"#888888",width:16,children:P},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:"#AAAAAA",children:T.locationName},void 0,!1,void 0,this),kA.jsxDEV("text",{fg:"#666666",children:[T.mealName," / ",T.stationName]},void 0,!0,void 0,this)]},I,!0,void 0,this)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function sJA({fact:A,indent:q}){let F=`${q?" ":""}${A.name??"Unknown"}`,Z=A.label??(A.value!=null?String(A.value):""),U=A.dailyValueLabel??"";return kA.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingX:1,children:[kA.jsxDEV("text",{fg:"#AAAAAA",children:[Rn(A.name)?kA.jsxDEV("strong",{children:F},void 0,!1,void 0,this):F,Z?` ${Z}`:""]},void 0,!0,void 0,this),U?kA.jsxDEV("text",{fg:"#555555",children:U},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var aJ=pg(cE(),1);function Bn(){let[A,q]=i5(wz),g=LF(lj),F=pE(KH),Z=pE(JP),U=pE(ZH),Y=pE(OP),[J,X]=aJ.useState(!0),[N,T]=aJ.useState(A),[I,P]=aJ.useState({data:null,error:null,loading:!1});aJ.useEffect(()=>{return F(J),()=>F(!1)},[J]),aJ.useEffect(()=>{if(!A.trim()){T("");return}let KA=setTimeout(()=>T(A.trim()),300);return()=>clearTimeout(KA)},[A]),aJ.useEffect(()=>{if(!N){P({data:null,error:null,loading:!1});return}mJ(_n(N),P)},[N]);let{data:R,error:B,loading:w}=I,m=R?.length??0,n=UH(m);AJ((KA)=>{if(J){if(KA.name==="escape")U();return}if(n.handleKey(KA))return;if(KA.name==="escape"){X(!0);return}if(KA.name==="/"||KA.name==="s"){X(!0);return}if(KA.name==="f"&&R){let GA=R[n.selectedIndex];if(GA)Y({itemId:GA.item.itemId,displayName:GA.item.name});return}if(KA.name==="return"&&R){let GA=R[n.selectedIndex];if(GA)Z({itemId:GA.item.itemId,itemName:GA.item.name})}});let f=N.length>0;function o(){if(f&&B)return kA.jsxDEV(BK,{color:"#FF6B6B",children:["Error: ",B]},void 0,!0,void 0,this);if(f&&w)return kA.jsxDEV(BK,{children:"Searching..."},void 0,!1,void 0,this);if(f&&m===0&&R)return kA.jsxDEV(BK,{children:['No upcoming results for "',N,'".']},void 0,!0,void 0,this);if(!f&&!J)return kA.jsxDEV(BK,{children:"Press s or / to search"},void 0,!1,void 0,this);if(!R)return null;return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV("box",{paddingX:1,height:1,children:kA.jsxDEV("text",{fg:"#555555",children:[m," item",m!==1?"s":""," with upcoming appearances"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),kA.jsxDEV("scrollbox",{flexGrow:1,children:kA.jsxDEV("box",{flexDirection:"column",paddingX:1,children:R.map((KA,GA)=>{let $A=!J&&GA===n.selectedIndex,e=g.has(KA.item.itemId),AA=`${$A?" > ":" "}${KA.item.name}${e?" [*]":""}`;return kA.jsxDEV("box",{flexDirection:"column",marginBottom:1,children:[kA.jsxDEV("text",{fg:$A?"#CEB888":"#555555",children:$A?kA.jsxDEV("strong",{children:AA},void 0,!1,void 0,this):AA},void 0,!1,void 0,this),KA.upcoming.map((OA,RA)=>{let VA=vJ(new Date(OA.date));return kA.jsxDEV("text",{fg:$A?"#AAAAAA":"#888888",children:[" ",VA," ",OA.locationName," \xB7 ",OA.mealName]},RA,!0,void 0,this)})]},KA.item.itemId,!0,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return kA.jsxDEV("box",{flexDirection:"column",flexGrow:1,children:[kA.jsxDEV("box",{flexGrow:1,children:o()},void 0,!1,void 0,this),J?kA.jsxDEV("box",{height:1,paddingX:1,flexDirection:"row",children:[kA.jsxDEV("text",{fg:"#CEB888",children:"Search: "},void 0,!1,void 0,this),kA.jsxDEV("input",{flexGrow:1,focused:!0,value:A,placeholder:"food items...",onInput:q,onSubmit:()=>{if(A.trim())X(!1)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}import{mkdir as tJA}from"fs/promises";import{join as jH}from"path";import{homedir as eJA}from"os";function Cn(){let A=eJA();if(process.platform==="darwin")return jH(A,"Library","Preferences","purdue-menu-tui");if(process.platform==="win32")return jH(process.env.APPDATA??jH(A,"AppData","Roaming"),"purdue-menu-tui","Config");return jH(process.env.XDG_CONFIG_HOME??jH(A,".config"),"purdue-menu-tui")}function Dn(){return jH(Cn(),"favorites.json")}function A_A(A){let q=JSON.parse(A);return{courts:Array.isArray(q.courts)?q.courts:[],items:q.items&&typeof q.items==="object"?q.items:{}}}var wn=d6.tryPromise(()=>Bun.file(Dn()).text()).pipe(d6.map(A_A),d6.orElseSucceed(()=>({courts:[],items:{}})),d6.withSpan("Favorites.load")),hn=d6.fn("Favorites.save")(function*(A){yield*d6.tryPromise(()=>tJA(Cn(),{recursive:!0})).pipe(d6.andThen(d6.tryPromise(()=>Bun.write(Dn(),JSON.stringify(A,null,2)+`
|
|
524
524
|
`))),d6.asVoid,d6.orElse(()=>d6.void))});function kn(){let A=wD(),q=LF(jU),g=LF(KH),F=LF(B$),Z=LF(lj),U=pE(B$),Y=pE(lj),J=pE(ZH),X=pE(Gn),N=pE(bJ),T=FN.useRef(!1);FN.useEffect(()=>{d6.runPromise(wn).then((P)=>{U(new Set(P.courts)),Y(new Map(Object.entries(P.items))),T.current=!0})},[]),FN.useEffect(()=>{if(!T.current)return;d6.runPromise(hn({courts:Array.from(F),items:Object.fromEntries(Z)}))},[F,Z]);function I(){switch(q.kind){case"locations":return kA.jsxDEV(Nn,{},void 0,!1,void 0,this);case"menu":return kA.jsxDEV(In,{court:q.court},void 0,!1,void 0,this);case"search":return kA.jsxDEV(Bn,{},void 0,!1,void 0,this);case"item":case"searchItem":return kA.jsxDEV(zn,{itemId:q.itemId,itemName:q.itemName},void 0,!1,void 0,this)}}return AJ((P)=>{if(g)return;if(P.name==="q"&&q.kind==="locations"){A.destroy();return}if(P.name==="escape"&&(q.kind==="item"||q.kind==="searchItem")){J();return}if(P.name===","||P.name==="<"||P.name==="left"&&P.shift)X(-1);if(P.name==="."||P.name===">"||P.name==="right"&&P.shift)X(1);if(P.name==="t"&&q.kind!=="locations")N(new Date)}),kA.jsxDEV("box",{flexDirection:"column",width:"100%",height:"100%",children:[kA.jsxDEV(Qn,{},void 0,!1,void 0,this),kA.jsxDEV("box",{flexGrow:1,children:I()},void 0,!1,void 0,this),!g&&kA.jsxDEV(Yn,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var q_A=await MI({exitOnCtrlC:!0});tI(q_A).render(kA.jsxDEV(kn,{},void 0,!1,void 0,this));
|