@epic-web/workshop-app 4.25.1 → 4.25.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-app",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -44,8 +44,8 @@
44
44
  "@epic-web/invariant": "^1.0.0",
45
45
  "@epic-web/remember": "^1.0.2",
46
46
  "@epic-web/restore-scroll": "^1.1.1",
47
- "@epic-web/workshop-presence": "4.25.1",
48
- "@epic-web/workshop-utils": "4.25.1",
47
+ "@epic-web/workshop-presence": "4.25.3",
48
+ "@epic-web/workshop-utils": "4.25.3",
49
49
  "@mdx-js/mdx": "^3.0.1",
50
50
  "@mux/mux-player-react": "^2.6.0",
51
51
  "@nasa-gcn/remix-seo": "^2.0.1",
@@ -1,2 +0,0 @@
1
- import{r as F,j as t,l as re,n as ne,d as Le}from"./index-1cKOJFpX.js";import{d as me,h as Ye,u as ve,m as He,P as J,f as z,e as pe,g as ze,S as Ge}from"./tooltip-fa2eC7LQ.js";import{f as Ke,u as xe}from"./index-CrCyg109.js";import{u as ge,I as te,c as Be}from"./misc-BvHlNnqL.js";import{D as Ve}from"./diff-Dlhnb9s0.js";import{G as Ze}from"./error-boundary-w-YmME9H.js";import{L as We}from"./loading-CYX0lUnA.js";import{a as Je}from"./index-lG6dAghh.js";import{D as qe,u as Qe}from"./discord-ClGJ4reK.js";import{u as le,A as Xe,L as $e,b as et}from"./components-CME-nGId.js";import{J as tt}from"./index-B-hHvmeV.js";import{S as rt}from"./set-playground-CCm119Nm.js";import{P as nt,a as st}from"./tests-DCK6NqSg.js";import{P as oe}from"./preview-cQAZ1sWw.js";import"./index-Cr2THg3v.js";import"./accordion-BTylpyuo.js";import"./mdx-DGrucPXJ.js";import"./epic-video-BDMU5eQx.js";import"./request-info-CEhUGODY.js";import"./user-D6tTg1yS.js";import"./workshop-config-CL4F08kr.js";import"./progress-bar-C7Wl3UWv.js";import"./pe-CUZaIcdt.js";import"./use-event-source-A_0lEOPX.js";import"./button-D3GGLffs.js";var ie="rovingFocusGroup.onEntryFocus",at={bubbles:!1,cancelable:!0},se="RovingFocusGroup",[ce,be,it]=Ke(se),[ot,we]=me(se,[it]),[ct,ut]=ot(se),ye=F.forwardRef((e,l)=>t.jsx(ce.Provider,{scope:e.__scopeRovingFocusGroup,children:t.jsx(ce.Slot,{scope:e.__scopeRovingFocusGroup,children:t.jsx(lt,{...e,ref:l})})}));ye.displayName=se;var lt=F.forwardRef((e,l)=>{const{__scopeRovingFocusGroup:c,orientation:s,loop:D=!1,dir:C,currentTabStopId:m,defaultCurrentTabStopId:S,onCurrentTabStopIdChange:h,onEntryFocus:f,preventScrollOnEntryFocus:b=!1,...x}=e,v=F.useRef(null),T=Ye(l,v),d=xe(C),[n=null,o]=ve({prop:m,defaultProp:S,onChange:h}),[y,w]=F.useState(!1),M=He(f),R=be(c),N=F.useRef(!1),[P,k]=F.useState(0);return F.useEffect(()=>{const I=v.current;if(I)return I.addEventListener(ie,M),()=>I.removeEventListener(ie,M)},[M]),t.jsx(ct,{scope:c,orientation:s,dir:d,loop:D,currentTabStopId:n,onItemFocus:F.useCallback(I=>o(I),[o]),onItemShiftTab:F.useCallback(()=>w(!0),[]),onFocusableItemAdd:F.useCallback(()=>k(I=>I+1),[]),onFocusableItemRemove:F.useCallback(()=>k(I=>I-1),[]),children:t.jsx(J.div,{tabIndex:y||P===0?-1:0,"data-orientation":s,...x,ref:T,style:{outline:"none",...e.style},onMouseDown:z(e.onMouseDown,()=>{N.current=!0}),onFocus:z(e.onFocus,I=>{const L=!N.current;if(I.target===I.currentTarget&&L&&!y){const O=new CustomEvent(ie,at);if(I.currentTarget.dispatchEvent(O),!O.defaultPrevented){const j=R().filter(r=>r.focusable),V=j.find(r=>r.active),X=j.find(r=>r.id===n),a=[V,X,...j].filter(Boolean).map(r=>r.ref.current);Te(a,b)}}N.current=!1}),onBlur:z(e.onBlur,()=>w(!1))})})}),je="RovingFocusGroupItem",De=F.forwardRef((e,l)=>{const{__scopeRovingFocusGroup:c,focusable:s=!0,active:D=!1,tabStopId:C,...m}=e,S=pe(),h=C||S,f=ut(je,c),b=f.currentTabStopId===h,x=be(c),{onFocusableItemAdd:v,onFocusableItemRemove:T}=f;return F.useEffect(()=>{if(s)return v(),()=>T()},[s,v,T]),t.jsx(ce.ItemSlot,{scope:c,id:h,focusable:s,active:D,children:t.jsx(J.span,{tabIndex:b?0:-1,"data-orientation":f.orientation,...m,ref:l,onMouseDown:z(e.onMouseDown,d=>{s?f.onItemFocus(h):d.preventDefault()}),onFocus:z(e.onFocus,()=>f.onItemFocus(h)),onKeyDown:z(e.onKeyDown,d=>{if(d.key==="Tab"&&d.shiftKey){f.onItemShiftTab();return}if(d.target!==d.currentTarget)return;const n=ht(d,f.orientation,f.dir);if(n!==void 0){if(d.metaKey||d.ctrlKey||d.altKey||d.shiftKey)return;d.preventDefault();let y=x().filter(w=>w.focusable).map(w=>w.ref.current);if(n==="last")y.reverse();else if(n==="prev"||n==="next"){n==="prev"&&y.reverse();const w=y.indexOf(d.currentTarget);y=f.loop?mt(y,w+1):y.slice(w+1)}setTimeout(()=>Te(y))}})})})});De.displayName=je;var ft={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function dt(e,l){return l!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ht(e,l,c){const s=dt(e.key,c);if(!(l==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(l==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return ft[s]}function Te(e,l=!1){const c=document.activeElement;for(const s of e)if(s===c||(s.focus({preventScroll:l}),document.activeElement!==c))return}function mt(e,l){return e.map((c,s)=>e[(l+s)%e.length])}var vt=ye,pt=De,fe="Tabs",[xt,ir]=me(fe,[we]),Se=we(),[gt,de]=xt(fe),Ne=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,onValueChange:D,defaultValue:C,orientation:m="horizontal",dir:S,activationMode:h="automatic",...f}=e,b=xe(S),[x,v]=ve({prop:s,onChange:D,defaultProp:C});return t.jsx(gt,{scope:c,baseId:pe(),value:x,onValueChange:v,orientation:m,dir:b,activationMode:h,children:t.jsx(J.div,{dir:b,"data-orientation":m,...f,ref:l})})});Ne.displayName=fe;var Me="TabsList",Ce=F.forwardRef((e,l)=>{const{__scopeTabs:c,loop:s=!0,...D}=e,C=de(Me,c),m=Se(c);return t.jsx(vt,{asChild:!0,...m,orientation:C.orientation,dir:C.dir,loop:s,children:t.jsx(J.div,{role:"tablist","aria-orientation":C.orientation,...D,ref:l})})});Ce.displayName=Me;var Ie="TabsTrigger",Oe=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,disabled:D=!1,...C}=e,m=de(Ie,c),S=Se(c),h=_e(m.baseId,s),f=Fe(m.baseId,s),b=s===m.value;return t.jsx(pt,{asChild:!0,...S,focusable:!D,active:b,children:t.jsx(J.button,{type:"button",role:"tab","aria-selected":b,"aria-controls":f,"data-state":b?"active":"inactive","data-disabled":D?"":void 0,disabled:D,id:h,...C,ref:l,onMouseDown:z(e.onMouseDown,x=>{!D&&x.button===0&&x.ctrlKey===!1?m.onValueChange(s):x.preventDefault()}),onKeyDown:z(e.onKeyDown,x=>{[" ","Enter"].includes(x.key)&&m.onValueChange(s)}),onFocus:z(e.onFocus,()=>{const x=m.activationMode!=="manual";!b&&!D&&x&&m.onValueChange(s)})})})});Oe.displayName=Ie;var Ee="TabsContent",Pe=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,forceMount:D,children:C,...m}=e,S=de(Ee,c),h=_e(S.baseId,s),f=Fe(S.baseId,s),b=s===S.value,x=F.useRef(b);return F.useEffect(()=>{const v=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(v)},[]),t.jsx(ze,{present:D||b,children:({present:v})=>t.jsx(J.div,{"data-state":b?"active":"inactive","data-orientation":S.orientation,role:"tabpanel","aria-labelledby":h,hidden:!v,id:f,tabIndex:0,...m,ref:l,style:{...e.style,animationDuration:x.current?"0s":void 0},children:v&&C})})});Pe.displayName=Ee;function _e(e,l){return`${e}-trigger-${l}`}function Fe(e,l){return`${e}-content-${l}`}var $t=Ne,bt=Ce,wt=Oe,W=Pe,Re={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c=1e3,s=6e4,D=36e5,C="millisecond",m="second",S="minute",h="hour",f="day",b="week",x="month",v="quarter",T="year",d="date",n="Invalid Date",o=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,w={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(p){var a=["th","st","nd","rd"],r=p%100;return"["+p+(a[(r-20)%10]||a[r]||a[0])+"]"}},M=function(p,a,r){var u=String(p);return!u||u.length>=a?p:""+Array(a+1-u.length).join(r)+p},R={s:M,z:function(p){var a=-p.utcOffset(),r=Math.abs(a),u=Math.floor(r/60),i=r%60;return(a<=0?"+":"-")+M(u,2,"0")+":"+M(i,2,"0")},m:function p(a,r){if(a.date()<r.date())return-p(r,a);var u=12*(r.year()-a.year())+(r.month()-a.month()),i=a.clone().add(u,x),g=r-i<0,$=a.clone().add(u+(g?-1:1),x);return+(-(u+(r-i)/(g?i-$:$-i))||0)},a:function(p){return p<0?Math.ceil(p)||0:Math.floor(p)},p:function(p){return{M:x,y:T,w:b,d:f,D:d,h,m:S,s:m,ms:C,Q:v}[p]||String(p||"").toLowerCase().replace(/s$/,"")},u:function(p){return p===void 0}},N="en",P={};P[N]=w;var k="$isDayjsObject",I=function(p){return p instanceof V||!(!p||!p[k])},L=function p(a,r,u){var i;if(!a)return N;if(typeof a=="string"){var g=a.toLowerCase();P[g]&&(i=g),r&&(P[g]=r,i=g);var $=a.split("-");if(!i&&$.length>1)return p($[0])}else{var E=a.name;P[E]=a,i=E}return!u&&i&&(N=i),i||!u&&N},O=function(p,a){if(I(p))return p.clone();var r=typeof a=="object"?a:{};return r.date=p,r.args=arguments,new V(r)},j=R;j.l=L,j.i=I,j.w=function(p,a){return O(p,{locale:a.$L,utc:a.$u,x:a.$x,$offset:a.$offset})};var V=function(){function p(r){this.$L=L(r.locale,null,!0),this.parse(r),this.$x=this.$x||r.x||{},this[k]=!0}var a=p.prototype;return a.parse=function(r){this.$d=function(u){var i=u.date,g=u.utc;if(i===null)return new Date(NaN);if(j.u(i))return new Date;if(i instanceof Date)return new Date(i);if(typeof i=="string"&&!/Z$/i.test(i)){var $=i.match(o);if($){var E=$[2]-1||0,_=($[7]||"0").substring(0,3);return g?new Date(Date.UTC($[1],E,$[3]||1,$[4]||0,$[5]||0,$[6]||0,_)):new Date($[1],E,$[3]||1,$[4]||0,$[5]||0,$[6]||0,_)}}return new Date(i)}(r),this.init()},a.init=function(){var r=this.$d;this.$y=r.getFullYear(),this.$M=r.getMonth(),this.$D=r.getDate(),this.$W=r.getDay(),this.$H=r.getHours(),this.$m=r.getMinutes(),this.$s=r.getSeconds(),this.$ms=r.getMilliseconds()},a.$utils=function(){return j},a.isValid=function(){return this.$d.toString()!==n},a.isSame=function(r,u){var i=O(r);return this.startOf(u)<=i&&i<=this.endOf(u)},a.isAfter=function(r,u){return O(r)<this.startOf(u)},a.isBefore=function(r,u){return this.endOf(u)<O(r)},a.$g=function(r,u,i){return j.u(r)?this[u]:this.set(i,r)},a.unix=function(){return Math.floor(this.valueOf()/1e3)},a.valueOf=function(){return this.$d.getTime()},a.startOf=function(r,u){var i=this,g=!!j.u(u)||u,$=j.p(r),E=function(B,Y){var G=j.w(i.$u?Date.UTC(i.$y,Y,B):new Date(i.$y,Y,B),i);return g?G:G.endOf(f)},_=function(B,Y){return j.w(i.toDate()[B].apply(i.toDate("s"),(g?[0,0,0,0]:[23,59,59,999]).slice(Y)),i)},A=this.$W,U=this.$M,H=this.$D,Z="set"+(this.$u?"UTC":"");switch($){case T:return g?E(1,0):E(31,11);case x:return g?E(1,U):E(0,U+1);case b:var K=this.$locale().weekStart||0,q=(A<K?A+7:A)-K;return E(g?H-q:H+(6-q),U);case f:case d:return _(Z+"Hours",0);case h:return _(Z+"Minutes",1);case S:return _(Z+"Seconds",2);case m:return _(Z+"Milliseconds",3);default:return this.clone()}},a.endOf=function(r){return this.startOf(r,!1)},a.$set=function(r,u){var i,g=j.p(r),$="set"+(this.$u?"UTC":""),E=(i={},i[f]=$+"Date",i[d]=$+"Date",i[x]=$+"Month",i[T]=$+"FullYear",i[h]=$+"Hours",i[S]=$+"Minutes",i[m]=$+"Seconds",i[C]=$+"Milliseconds",i)[g],_=g===f?this.$D+(u-this.$W):u;if(g===x||g===T){var A=this.clone().set(d,1);A.$d[E](_),A.init(),this.$d=A.set(d,Math.min(this.$D,A.daysInMonth())).$d}else E&&this.$d[E](_);return this.init(),this},a.set=function(r,u){return this.clone().$set(r,u)},a.get=function(r){return this[j.p(r)]()},a.add=function(r,u){var i,g=this;r=Number(r);var $=j.p(u),E=function(U){var H=O(g);return j.w(H.date(H.date()+Math.round(U*r)),g)};if($===x)return this.set(x,this.$M+r);if($===T)return this.set(T,this.$y+r);if($===f)return E(1);if($===b)return E(7);var _=(i={},i[S]=s,i[h]=D,i[m]=c,i)[$]||1,A=this.$d.getTime()+r*_;return j.w(A,this)},a.subtract=function(r,u){return this.add(-1*r,u)},a.format=function(r){var u=this,i=this.$locale();if(!this.isValid())return i.invalidDate||n;var g=r||"YYYY-MM-DDTHH:mm:ssZ",$=j.z(this),E=this.$H,_=this.$m,A=this.$M,U=i.weekdays,H=i.months,Z=i.meridiem,K=function(Y,G,Q,ee){return Y&&(Y[G]||Y(u,g))||Q[G].slice(0,ee)},q=function(Y){return j.s(E%12||12,Y,"0")},B=Z||function(Y,G,Q){var ee=Y<12?"AM":"PM";return Q?ee.toLowerCase():ee};return g.replace(y,function(Y,G){return G||function(Q){switch(Q){case"YY":return String(u.$y).slice(-2);case"YYYY":return j.s(u.$y,4,"0");case"M":return A+1;case"MM":return j.s(A+1,2,"0");case"MMM":return K(i.monthsShort,A,H,3);case"MMMM":return K(H,A);case"D":return u.$D;case"DD":return j.s(u.$D,2,"0");case"d":return String(u.$W);case"dd":return K(i.weekdaysMin,u.$W,U,2);case"ddd":return K(i.weekdaysShort,u.$W,U,3);case"dddd":return U[u.$W];case"H":return String(E);case"HH":return j.s(E,2,"0");case"h":return q(1);case"hh":return q(2);case"a":return B(E,_,!0);case"A":return B(E,_,!1);case"m":return String(_);case"mm":return j.s(_,2,"0");case"s":return String(u.$s);case"ss":return j.s(u.$s,2,"0");case"SSS":return j.s(u.$ms,3,"0");case"Z":return $}return null}(Y)||$.replace(":","")})},a.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},a.diff=function(r,u,i){var g,$=this,E=j.p(u),_=O(r),A=(_.utcOffset()-this.utcOffset())*s,U=this-_,H=function(){return j.m($,_)};switch(E){case T:g=H()/12;break;case x:g=H();break;case v:g=H()/3;break;case b:g=(U-A)/6048e5;break;case f:g=(U-A)/864e5;break;case h:g=U/D;break;case S:g=U/s;break;case m:g=U/c;break;default:g=U}return i?g:j.a(g)},a.daysInMonth=function(){return this.endOf(x).$D},a.$locale=function(){return P[this.$L]},a.locale=function(r,u){if(!r)return this.$L;var i=this.clone(),g=L(r,u,!0);return g&&(i.$L=g),i},a.clone=function(){return j.w(this.$d,this)},a.toDate=function(){return new Date(this.valueOf())},a.toJSON=function(){return this.isValid()?this.toISOString():null},a.toISOString=function(){return this.$d.toISOString()},a.toString=function(){return this.$d.toUTCString()},p}(),X=V.prototype;return O.prototype=X,[["$ms",C],["$s",m],["$m",S],["$H",h],["$W",f],["$M",x],["$y",T],["$D",d]].forEach(function(p){X[p[1]]=function(a){return this.$g(a,p[0],p[1])}}),O.extend=function(p,a){return p.$i||(p(a,V,O),p.$i=!0),O},O.locale=L,O.isDayjs=I,O.unix=function(p){return O(1e3*p)},O.en=P[N],O.Ls=P,O.p={},O})})(Re);var yt=Re.exports;const ae=re(yt);var ke={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){return function(c,s,D){c=c||{};var C=s.prototype,m={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function S(f,b,x,v){return C.fromToBase(f,b,x,v)}D.en.relativeTime=m,C.fromToBase=function(f,b,x,v,T){for(var d,n,o,y=x.$locale().relativeTime||m,w=c.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],M=w.length,R=0;R<M;R+=1){var N=w[R];N.d&&(d=v?D(f).diff(x,N.d,!0):x.diff(f,N.d,!0));var P=(c.rounding||Math.round)(Math.abs(d));if(o=d>0,P<=N.r||!N.r){P<=1&&R>0&&(N=w[R-1]);var k=y[N.l];T&&(P=T(""+P)),n=typeof k=="string"?k.replace("%d",P):k(P,b,N.l,o);break}}if(b)return n;var I=o?y.future:y.past;return typeof I=="function"?I(n):I.replace("%s",n)},C.to=function(f,b){return S(f,b,this,!0)},C.from=function(f,b){return S(f,b,this)};var h=function(f){return f.$u?D.utc():D()};C.toNow=function(f){return this.to(h(this),f)},C.fromNow=function(f){return this.from(h(this),f)}}})})(ke);var jt=ke.exports;const Dt=re(jt);var Ae={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c={year:0,month:1,day:2,hour:3,minute:4,second:5},s={};return function(D,C,m){var S,h=function(v,T,d){d===void 0&&(d={});var n=new Date(v),o=function(y,w){w===void 0&&(w={});var M=w.timeZoneName||"short",R=y+"|"+M,N=s[R];return N||(N=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:y,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:M}),s[R]=N),N}(T,d);return o.formatToParts(n)},f=function(v,T){for(var d=h(v,T),n=[],o=0;o<d.length;o+=1){var y=d[o],w=y.type,M=y.value,R=c[w];R>=0&&(n[R]=parseInt(M,10))}var N=n[3],P=N===24?0:N,k=n[0]+"-"+n[1]+"-"+n[2]+" "+P+":"+n[4]+":"+n[5]+":000",I=+v;return(m.utc(k).valueOf()-(I-=I%1e3))/6e4},b=C.prototype;b.tz=function(v,T){v===void 0&&(v=S);var d=this.utcOffset(),n=this.toDate(),o=n.toLocaleString("en-US",{timeZone:v}),y=Math.round((n-new Date(o))/1e3/60),w=m(o,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(n.getTimezoneOffset()/15)-y,!0);if(T){var M=w.utcOffset();w=w.add(d-M,"minute")}return w.$x.$timezone=v,w},b.offsetName=function(v){var T=this.$x.$timezone||m.tz.guess(),d=h(this.valueOf(),T,{timeZoneName:v}).find(function(n){return n.type.toLowerCase()==="timezonename"});return d&&d.value};var x=b.startOf;b.startOf=function(v,T){if(!this.$x||!this.$x.$timezone)return x.call(this,v,T);var d=m(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return x.call(d,v,T).tz(this.$x.$timezone,!0)},m.tz=function(v,T,d){var n=d&&T,o=d||T||S,y=f(+m(),o);if(typeof v!="string")return m(v).tz(o);var w=function(P,k,I){var L=P-60*k*1e3,O=f(L,I);if(k===O)return[L,k];var j=f(L-=60*(O-k)*1e3,I);return O===j?[L,O]:[P-60*Math.min(O,j)*1e3,Math.max(O,j)]}(m.utc(v,n).valueOf(),y,o),M=w[0],R=w[1],N=m(M).utcOffset(R);return N.$x.$timezone=o,N},m.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},m.tz.setDefault=function(v){S=v}}})})(Ae);var Tt=Ae.exports;const St=re(Tt);var Ue={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c="minute",s=/[+-]\d\d(?::?\d\d)?/g,D=/([+-]|\d\d)/g;return function(C,m,S){var h=m.prototype;S.utc=function(n){var o={date:n,utc:!0,args:arguments};return new m(o)},h.utc=function(n){var o=S(this.toDate(),{locale:this.$L,utc:!0});return n?o.add(this.utcOffset(),c):o},h.local=function(){return S(this.toDate(),{locale:this.$L,utc:!1})};var f=h.parse;h.parse=function(n){n.utc&&(this.$u=!0),this.$utils().u(n.$offset)||(this.$offset=n.$offset),f.call(this,n)};var b=h.init;h.init=function(){if(this.$u){var n=this.$d;this.$y=n.getUTCFullYear(),this.$M=n.getUTCMonth(),this.$D=n.getUTCDate(),this.$W=n.getUTCDay(),this.$H=n.getUTCHours(),this.$m=n.getUTCMinutes(),this.$s=n.getUTCSeconds(),this.$ms=n.getUTCMilliseconds()}else b.call(this)};var x=h.utcOffset;h.utcOffset=function(n,o){var y=this.$utils().u;if(y(n))return this.$u?0:y(this.$offset)?x.call(this):this.$offset;if(typeof n=="string"&&(n=function(N){N===void 0&&(N="");var P=N.match(s);if(!P)return null;var k=(""+P[0]).match(D)||["-",0,0],I=k[0],L=60*+k[1]+ +k[2];return L===0?0:I==="+"?L:-L}(n),n===null))return this;var w=Math.abs(n)<=16?60*n:n,M=this;if(o)return M.$offset=w,M.$u=n===0,M;if(n!==0){var R=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(M=this.local().add(w+R,c)).$offset=w,M.$x.$localOffset=R}else M=this.utc();return M};var v=h.format;h.format=function(n){var o=n||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return v.call(this,o)},h.valueOf=function(){var n=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*n},h.isUTC=function(){return!!this.$u},h.toISOString=function(){return this.toDate().toISOString()},h.toString=function(){return this.toDate().toUTCString()};var T=h.toDate;h.toDate=function(n){return n==="s"&&this.$offset?S(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():T.call(this)};var d=h.diff;h.diff=function(n,o,y){if(n&&this.$u===n.$u)return d.call(this,n,o,y);var w=this.local(),M=S(n).local();return d.call(w,M,o,y)}}})})(Ue);var Nt=Ue.exports;const Mt=re(Nt);ae.extend(Mt);ae.extend(St);ae.extend(Dt);function Ct(){const e=le();return t.jsxs("div",{className:"flex h-full w-full flex-col gap-4 pt-4",children:[t.jsx("div",{className:"text-center",children:t.jsx(qe,{discordAuthUrl:e.discordAuthUrl})}),t.jsx("div",{className:"flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar",children:t.jsx(It,{})})]})}function It(){const e=le(),l=Qe({discordAuthUrl:e.discordAuthUrl}),c=ge();return t.jsxs("div",{className:"flex h-full flex-col items-center justify-between",children:[t.jsx(F.Suspense,{fallback:t.jsx("div",{className:"flex h-full w-full flex-col items-center justify-center",children:t.jsx(We,{children:"Loading Discord Posts"})}),children:t.jsx(Xe,{resolve:e.discordPostsPromise,errorElement:t.jsx("div",{className:"text-red-500",children:"There was a problem loading the discord posts"}),children:s=>t.jsx("ul",{className:"flex w-full flex-col gap-4 p-3 xl:p-12",children:s.map(D=>t.jsx("li",{className:"rounded-xl border bg-background transition-all duration-200 focus-within:-translate-y-1 focus-within:shadow-lg hover:-translate-y-1 hover:shadow-lg",children:t.jsx(Ot,{thread:D})},D.id))})})}),t.jsx("div",{children:t.jsxs($e,{to:c&&!l.includes("oauth")?l.replace(/^https/,"discord"):l,target:l.includes("oauth")?void 0:"_blank",rel:"noreferrer noopener",onClick:c?s=>{s.preventDefault(),window.open(s.currentTarget.href,"_blank","noreferrer noopener")}:void 0,className:"flex items-center gap-2 p-2 text-xl hover:underline",children:["Create Post ",t.jsx(te,{name:"ExternalLink"})]})})]})}function Ot({thread:e}){const l=e.reactions.filter(s=>s.count),c=Je();return t.jsx("div",{children:t.jsxs("div",{className:"flex flex-col gap-2 p-4",children:[t.jsxs("div",{className:"flex gap-4",children:[t.jsxs("div",{className:"flex flex-col gap-1",children:[e.tags.length?t.jsx("div",{className:"flex gap-2",children:e.tags.map(s=>t.jsxs("div",{className:"flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm",children:[t.jsx("span",{className:"h-3 w-3 leading-3",children:t.jsx(he,{name:s.emojiName,url:s.emojiUrl})}),t.jsx("span",{children:s.name})]},s.name))}):null,t.jsx("strong",{className:"text-xl font-bold",children:e.name}),t.jsxs("div",{className:"flex items-start gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[e.authorAvatarUrl?t.jsx("img",{src:e.authorAvatarUrl,alt:"",className:"h-6 w-6 rounded-full"}):null,t.jsxs("span",{children:[t.jsx("span",{className:"font-bold",style:e.authorHexAccentColor?{color:e.authorHexAccentColor}:{},children:e.authorDisplayName}),":"," "]})]}),t.jsx("span",{className:"flex-1 overflow-ellipsis text-muted-foreground",children:e.messagePreview})]})]}),e.previewImageUrl?t.jsx("img",{src:e.previewImageUrl,alt:"",className:"h-28 w-28 rounded-lg object-cover"}):null]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{children:l.length?t.jsx("ul",{className:"flex items-center gap-2",children:l.map((s,D)=>t.jsxs("li",{className:"flex items-center gap-1 rounded-md border border-blue-600 bg-blue-500/20 px-[5px] py-[0.5px] text-sm",children:[t.jsx("span",{className:"h-3 w-3 leading-3",children:t.jsx(he,{name:s.emojiName,url:s.emojiUrl})}),t.jsx("span",{children:s.count})]},D))}):null}),t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsxs("span",{className:"inline-flex items-center gap-1",children:[t.jsx(te,{name:"Chat"})," ",e.messageCount]}),` · ${ae(e.lastUpdated).tz(c.timeZone).fromNow()}`]})]}),t.jsxs("span",{className:"flex items-center gap-4",children:[t.jsx("a",{href:e.link.replace(/^https/,"discord"),children:t.jsx(te,{name:"Discord"})}),t.jsx("a",{href:e.link,target:"_blank",rel:"noreferrer noopener",children:t.jsx(te,{name:"ExternalLink"})})]})]})]})})}function he({name:e,url:l}){return l?t.jsx("img",{src:l,alt:e,className:"h-full w-full"}):e||null}function Et({appInfo:e,inBrowserBrowserRef:l,problemAppName:c,allApps:s,isUpToDate:D}){return t.jsx(nt,{playgroundAppName:e==null?void 0:e.appName,problemAppName:c,allApps:s,isUpToDate:D,children:(e==null?void 0:e.dev.type)==="none"?t.jsxs("div",{children:[t.jsx("div",{className:"text-foreground-secondary flex h-full items-center justify-center text-2xl",children:"Non-UI playground"}),t.jsx("div",{children:t.jsxs("div",{className:"text-foreground-secondary flex flex-wrap gap-1 text-center",children:["Navigate to"," ",t.jsx(Ge,{content:e.fullPath,children:t.jsx("span",{className:"underline",onClick:()=>{navigator.clipboard.writeText(e.fullPath),tt.success("Copied playground path to clipboard")},children:"the playground directory"})})," ","in your editor and terminal to work on this exercise!"]})})]}):e?t.jsx(oe,{id:e.appName,appInfo:e,inBrowserBrowserRef:l}):t.jsxs("div",{className:"flex flex-col justify-center gap-2",children:[t.jsx("p",{children:"Please set the playground first"}),c?t.jsx(rt,{appName:c}):null]})})}const ue=["playground","problem","solution","tests","diff","chat"],Pt=e=>!!(e&&ue.includes(e));function _t(e,l,c){const s=new URLSearchParams(e);return c===null?s.delete(l):s.set(l,c),s}function or(){var b,x,v,T,d,n;const e=le(),[l]=et(),c=l.get("preview"),s=F.useRef(null),D=ge(),C=Le();function m(o){var y,w,M;if(o==="tests")return ENV.EPICSHOP_DEPLOYED||!e.playground||e.playground.test.type==="none";if(o==="problem"||o==="solution"){if(((y=e[o])==null?void 0:y.dev.type)==="none")return!0;if(ENV.EPICSHOP_DEPLOYED)return((w=e[o])==null?void 0:w.dev.type)!=="browser"&&!((M=e[o])!=null&&M.stackBlitzUrl)}return!!(o==="playground"&&ENV.EPICSHOP_DEPLOYED)}const S=Pt(c)?c:ue.find(o=>!m(o)),h=`/diff?${new URLSearchParams({app1:((b=e.problem)==null?void 0:b.name)??"",app2:((x=e.solution)==null?void 0:x.name)??""})}`;function f(o){o.altKey&&!o.ctrlKey&&!o.shiftKey&&!o.metaKey&&(o.preventDefault(),C(h))}return t.jsxs($t,{className:"relative flex flex-col overflow-y-auto sm:col-span-1 sm:row-span-1",value:S,children:[t.jsx(bt,{className:"h-14 min-h-14 overflow-x-hidden border-b scrollbar-thin scrollbar-thumb-scrollbar",children:ue.map(o=>{const y=m(o);return t.jsx(wt,{value:o,hidden:y,asChild:!0,children:t.jsx($e,{id:`${o}-tab`,className:Be("clip-path-button relative h-full px-6 py-4 font-mono text-sm uppercase outline-none radix-state-active:z-10 radix-state-active:bg-foreground radix-state-active:text-background radix-state-active:hover:bg-foreground/80 radix-state-active:hover:text-background/80 radix-state-inactive:hover:bg-foreground/20 radix-state-inactive:hover:text-foreground/80 focus:bg-foreground/80 focus:text-background/80",y?"hidden":"inline-block"),preventScrollReset:!0,prefetch:"intent",onClick:f,to:o==="diff"&&D?h:`?${_t(l,"preview",o==="playground"?null:o)}`,children:o})},o)})}),t.jsxs("div",{className:"relative z-10 flex min-h-96 flex-grow flex-col overflow-y-auto",children:[t.jsx(W,{value:"playground",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(Et,{appInfo:e.playground,problemAppName:(v=e.problem)==null?void 0:v.name,inBrowserBrowserRef:s,allApps:e.allApps,isUpToDate:((T=e.playground)==null?void 0:T.isUpToDate)??!1})}),t.jsx(W,{value:"problem",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(oe,{appInfo:e.problem,inBrowserBrowserRef:s})}),t.jsx(W,{value:"solution",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(oe,{appInfo:e.solution,inBrowserBrowserRef:s})}),t.jsx(W,{value:"tests",className:"flex w-full flex-grow items-start justify-center self-start overflow-hidden radix-state-inactive:hidden",children:t.jsx(st,{appInfo:e.playground,problemAppName:(d=e.problem)==null?void 0:d.name,allApps:e.allApps,isUpToDate:((n=e.playground)==null?void 0:n.isUpToDate)??!1})}),t.jsx(W,{value:"diff",className:"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden",children:t.jsx(Ve,{diff:e.diff,allApps:e.allApps})}),t.jsx(W,{value:"chat",className:"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden",children:t.jsx(Ct,{})})]})]})}function cr(){return t.jsx(Ze,{statusHandlers:{404:()=>t.jsx("p",{children:"Sorry, we couldn't find an app here."})}})}export{cr as ErrorBoundary,or as default};
2
- //# sourceMappingURL=index-BMMmOqxO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BMMmOqxO.js","sources":["../../../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../../../node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../../../node_modules/dayjs/dayjs.min.js","../../../../../node_modules/dayjs/plugin/relativeTime.js","../../../../../node_modules/dayjs/plugin/timezone.js","../../../../../node_modules/dayjs/plugin/utc.js","../../../app/utils/dayjs.ts","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/discord.tsx","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/playground.tsx","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/roving-focus/src/RovingFocusGroup.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/tabs/src/Tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString(\"en-US\",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,\"minute\")}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","import dayjs from 'dayjs'\nimport relativeTimePlugin from 'dayjs/plugin/relativeTime.js'\nimport timeZonePlugin from 'dayjs/plugin/timezone.js'\nimport utcPlugin from 'dayjs/plugin/utc.js'\n\ndayjs.extend(utcPlugin)\ndayjs.extend(timeZonePlugin)\ndayjs.extend(relativeTimePlugin)\n\nexport { dayjs }\n","import { Await, Link, useLoaderData } from '@remix-run/react'\nimport * as React from 'react'\nimport { type z } from 'zod'\nimport { Icon } from '#app/components/icons.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { useHints } from '#app/utils/client-hints.tsx'\nimport { dayjs } from '#app/utils/dayjs.ts'\nimport { useAltDown } from '#app/utils/misc.tsx'\nimport { DiscordCTA, useDiscordCTALink } from '../../../discord.tsx'\nimport { type loader } from '../index.tsx'\nimport { type ThreadItemSchema } from './discord.server.ts'\n\nexport function DiscordChat() {\n\tconst data = useLoaderData<typeof loader>()\n\treturn (\n\t\t<div className=\"flex h-full w-full flex-col gap-4 pt-4\">\n\t\t\t<div className=\"text-center\">\n\t\t\t\t<DiscordCTA discordAuthUrl={data.discordAuthUrl} />\n\t\t\t</div>\n\t\t\t<div className=\"flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t<DiscordPosts />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction DiscordPosts() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst ctaLink = useDiscordCTALink({ discordAuthUrl: data.discordAuthUrl })\n\tconst altDown = useAltDown()\n\treturn (\n\t\t<div className=\"flex h-full flex-col items-center justify-between\">\n\t\t\t<React.Suspense\n\t\t\t\tfallback={\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col items-center justify-center\">\n\t\t\t\t\t\t<Loading>Loading Discord Posts</Loading>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<Await\n\t\t\t\t\tresolve={data.discordPostsPromise}\n\t\t\t\t\terrorElement={\n\t\t\t\t\t\t<div className=\"text-red-500\">\n\t\t\t\t\t\t\tThere was a problem loading the discord posts\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{(posts) => (\n\t\t\t\t\t\t<ul className=\"flex w-full flex-col gap-4 p-3 xl:p-12\">\n\t\t\t\t\t\t\t{posts.map((post) => (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tkey={post.id}\n\t\t\t\t\t\t\t\t\tclassName=\"rounded-xl border bg-background transition-all duration-200 focus-within:-translate-y-1 focus-within:shadow-lg hover:-translate-y-1 hover:shadow-lg\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DiscordPost thread={post} />\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t)}\n\t\t\t\t</Await>\n\t\t\t</React.Suspense>\n\t\t\t<div>\n\t\t\t\t<Link\n\t\t\t\t\tto={\n\t\t\t\t\t\taltDown && !ctaLink.includes('oauth')\n\t\t\t\t\t\t\t? ctaLink.replace(/^https/, 'discord')\n\t\t\t\t\t\t\t: ctaLink\n\t\t\t\t\t}\n\t\t\t\t\ttarget={ctaLink.includes('oauth') ? undefined : '_blank'}\n\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\tonClick={\n\t\t\t\t\t\taltDown\n\t\t\t\t\t\t\t? (e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t\t\t\te.currentTarget.href,\n\t\t\t\t\t\t\t\t\t\t'_blank',\n\t\t\t\t\t\t\t\t\t\t'noreferrer noopener',\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tclassName=\"flex items-center gap-2 p-2 text-xl hover:underline\"\n\t\t\t\t>\n\t\t\t\t\tCreate Post <Icon name=\"ExternalLink\" />\n\t\t\t\t</Link>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction DiscordPost({ thread }: { thread: z.infer<typeof ThreadItemSchema> }) {\n\tconst reactionsWithCounts = thread.reactions.filter((r) => r.count)\n\tconst hints = useHints()\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"flex flex-col gap-2 p-4\">\n\t\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t\t<div className=\"flex flex-col gap-1\">\n\t\t\t\t\t\t{thread.tags.length ? (\n\t\t\t\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t\t\t\t{thread.tags.map((t) => (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={t.name}\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span className=\"h-3 w-3 leading-3\">\n\t\t\t\t\t\t\t\t\t\t\t<Emoji name={t.emojiName} url={t.emojiUrl} />\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<span>{t.name}</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<strong className=\"text-xl font-bold\">{thread.name}</strong>\n\t\t\t\t\t\t<div className=\"flex items-start gap-1\">\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t{thread.authorAvatarUrl ? (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\tsrc={thread.authorAvatarUrl}\n\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-6 w-6 rounded-full\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName=\"font-bold\"\n\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\tthread.authorHexAccentColor\n\t\t\t\t\t\t\t\t\t\t\t\t? { color: thread.authorHexAccentColor }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{thread.authorDisplayName}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t:{' '}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span className=\"flex-1 overflow-ellipsis text-muted-foreground\">\n\t\t\t\t\t\t\t\t{thread.messagePreview}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{thread.previewImageUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={thread.previewImageUrl}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tclassName=\"h-28 w-28 rounded-lg object-cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex justify-between\">\n\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{reactionsWithCounts.length ? (\n\t\t\t\t\t\t\t\t<ul className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t{reactionsWithCounts.map((r, i) => (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-1 rounded-md border border-blue-600 bg-blue-500/20 px-[5px] py-[0.5px] text-sm\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"h-3 w-3 leading-3\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Emoji name={r.emojiName} url={r.emojiUrl} />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span>{r.count}</span>\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<Icon name=\"Chat\" /> {thread.messageCount}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{` · ${dayjs(thread.lastUpdated).tz(hints.timeZone).fromNow()}`}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span className=\"flex items-center gap-4\">\n\t\t\t\t\t\t<a href={thread.link.replace(/^https/, 'discord')}>\n\t\t\t\t\t\t\t<Icon name=\"Discord\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a href={thread.link} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t<Icon name=\"ExternalLink\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction Emoji({ name, url }: { name?: string; url?: string }) {\n\treturn url ? (\n\t\t<img src={url} alt={name} className=\"h-full w-full\" />\n\t) : name ? (\n\t\tname\n\t) : null\n}\n","import { toast as showToast } from 'sonner'\nimport { type InBrowserBrowserRef } from '#app/components/in-browser-browser'\nimport { SimpleTooltip } from '#app/components/ui/tooltip'\nimport { SetAppToPlayground } from '#app/routes/set-playground'\nimport { PlaygroundWindow } from './playground-window'\nimport { Preview } from './preview'\n\nexport function Playground({\n\tappInfo: playgroundAppInfo,\n\tinBrowserBrowserRef,\n\tproblemAppName,\n\tallApps,\n\tisUpToDate,\n}: {\n\tappInfo: Parameters<typeof Preview>['0']['appInfo'] | null\n\tinBrowserBrowserRef: React.RefObject<InBrowserBrowserRef | null>\n\tproblemAppName?: string\n\tallApps: Array<{ name: string; displayName: string }>\n\tisUpToDate: boolean\n}) {\n\treturn (\n\t\t<PlaygroundWindow\n\t\t\tplaygroundAppName={playgroundAppInfo?.appName}\n\t\t\tproblemAppName={problemAppName}\n\t\t\tallApps={allApps}\n\t\t\tisUpToDate={isUpToDate}\n\t\t>\n\t\t\t{playgroundAppInfo?.dev.type === 'none' ? (\n\t\t\t\t<div>\n\t\t\t\t\t<div className=\"text-foreground-secondary flex h-full items-center justify-center text-2xl\">\n\t\t\t\t\t\tNon-UI playground\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div className=\"text-foreground-secondary flex flex-wrap gap-1 text-center\">\n\t\t\t\t\t\t\tNavigate to{' '}\n\t\t\t\t\t\t\t<SimpleTooltip content={playgroundAppInfo.fullPath}>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tvoid navigator.clipboard.writeText(\n\t\t\t\t\t\t\t\t\t\t\tplaygroundAppInfo.fullPath,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tshowToast.success('Copied playground path to clipboard')\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tthe playground directory\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</SimpleTooltip>{' '}\n\t\t\t\t\t\t\tin your editor and terminal to work on this exercise!\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : playgroundAppInfo ? (\n\t\t\t\t<Preview\n\t\t\t\t\tid={playgroundAppInfo.appName}\n\t\t\t\t\tappInfo={playgroundAppInfo}\n\t\t\t\t\tinBrowserBrowserRef={inBrowserBrowserRef}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex flex-col justify-center gap-2\">\n\t\t\t\t\t<p>Please set the playground first</p>\n\t\t\t\t\t{problemAppName ? (\n\t\t\t\t\t\t<SetAppToPlayground appName={problemAppName} />\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</PlaygroundWindow>\n\t)\n}\n","import {\n\tgetAppByName,\n\tgetAppDisplayName,\n\tgetApps,\n\tgetExerciseApp,\n\tisExerciseStepApp,\n\tisPlaygroundApp,\n\trequireExerciseApp,\n\ttype App,\n\ttype ExerciseStepApp,\n} from '@epic-web/workshop-utils/apps.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport * as Tabs from '@radix-ui/react-tabs'\nimport {\n\tdefer,\n\tredirect,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport {\n\tLink,\n\tuseLoaderData,\n\tuseNavigate,\n\tuseSearchParams,\n} from '@remix-run/react'\nimport { clsx } from 'clsx'\nimport * as React from 'react'\nimport { useRef } from 'react'\nimport { Diff } from '#app/components/diff.tsx'\nimport { GeneralErrorBoundary } from '#app/components/error-boundary.tsx'\nimport { type InBrowserBrowserRef } from '#app/components/in-browser-browser.tsx'\nimport { getDiscordAuthURL } from '#app/routes/discord.callback.ts'\nimport { getDiffCode } from '#app/utils/diff.server.ts'\nimport { useAltDown } from '#app/utils/misc.tsx'\nimport { fetchDiscordPosts } from './__shared/discord.server.ts'\nimport { DiscordChat } from './__shared/discord.tsx'\nimport { Playground } from './__shared/playground.tsx'\nimport { Preview } from './__shared/preview.tsx'\nimport { Tests } from './__shared/tests.tsx'\nimport { getAppRunningState } from './__shared/utils.tsx'\n\nexport async function loader({ request, params }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('exerciseStepTypeLoader')\n\tconst searchParams = new URL(request.url).searchParams\n\tconst cacheOptions = { request, timings }\n\tconst exerciseStepApp = await requireExerciseApp(params, cacheOptions)\n\tconst reqUrl = new URL(request.url)\n\n\tconst pathnameParam = reqUrl.searchParams.get('pathname')\n\tif (pathnameParam === '' || pathnameParam === '/') {\n\t\treqUrl.searchParams.delete('pathname')\n\t\tthrow redirect(reqUrl.toString())\n\t}\n\n\tconst problemApp = await getExerciseApp(\n\t\t{ ...params, type: 'problem' },\n\t\tcacheOptions,\n\t)\n\tconst solutionApp = await getExerciseApp(\n\t\t{ ...params, type: 'solution' },\n\t\tcacheOptions,\n\t)\n\n\tif (!problemApp && !solutionApp) {\n\t\tthrow new Response('Not found', { status: 404 })\n\t}\n\n\tconst allAppsFull = await getApps(cacheOptions)\n\tconst playgroundApp = allAppsFull.find(isPlaygroundApp)\n\n\tconst app1Name = reqUrl.searchParams.get('app1')\n\tconst app2Name = reqUrl.searchParams.get('app2')\n\tconst app1 = app1Name\n\t\t? await getAppByName(app1Name)\n\t\t: playgroundApp || problemApp\n\tconst app2 = app2Name ? await getAppByName(app2Name) : solutionApp\n\n\tfunction getStepId(a: ExerciseStepApp) {\n\t\treturn (\n\t\t\ta.exerciseNumber * 1000 +\n\t\t\ta.stepNumber * 10 +\n\t\t\t(a.type === 'problem' ? 0 : 1)\n\t\t)\n\t}\n\n\tfunction getStepNameAndId(a: App) {\n\t\tif (isExerciseStepApp(a)) {\n\t\t\tconst exerciseNumberStr = String(a.exerciseNumber).padStart(2, '0')\n\t\t\tconst stepNumberStr = String(a.stepNumber).padStart(2, '0')\n\n\t\t\treturn {\n\t\t\t\tstepName: `${exerciseNumberStr}/${stepNumberStr}.${a.type}`,\n\t\t\t\tstepId: getStepId(a),\n\t\t\t}\n\t\t}\n\t\treturn { stepName: '', stepId: -1 }\n\t}\n\n\tconst allApps = allAppsFull\n\t\t.filter((a, i, ar) => ar.findIndex((b) => a.name === b.name) === i)\n\t\t.map((a) => ({\n\t\t\tdisplayName: getAppDisplayName(a, allAppsFull),\n\t\t\tname: a.name,\n\t\t\ttitle: a.title,\n\t\t\ttype: a.type,\n\t\t\t...getStepNameAndId(a),\n\t\t}))\n\n\tallApps.sort((a, b) => {\n\t\t// order them by their stepId\n\t\tif (a.stepId > 0 && b.stepId > 0) return a.stepId - b.stepId\n\n\t\t// non-step apps should come after step apps\n\t\tif (a.stepId > 0) return -1\n\t\tif (b.stepId > 0) return 1\n\n\t\treturn 0\n\t})\n\n\tasync function getDiffProp() {\n\t\tif (!app1 || !app2) {\n\t\t\treturn {\n\t\t\t\tapp1: app1?.name,\n\t\t\t\tapp2: app2?.name,\n\t\t\t\tdiffCode: null,\n\t\t\t}\n\t\t}\n\t\tconst diffCode = await getDiffCode(app1, app2, {\n\t\t\t...cacheOptions,\n\t\t\tforceFresh: searchParams.get('forceFresh') === 'diff',\n\t\t}).catch((e) => {\n\t\t\tconsole.error(e)\n\t\t\treturn null\n\t\t})\n\t\treturn {\n\t\t\tapp1: app1.name,\n\t\t\tapp2: app2.name,\n\t\t\tdiffCode,\n\t\t}\n\t}\n\n\treturn defer(\n\t\t{\n\t\t\ttype: params.type as 'problem' | 'solution',\n\t\t\texerciseStepApp,\n\t\t\tallApps,\n\t\t\tdiscordAuthUrl: getDiscordAuthURL(),\n\t\t\t// defer this promise so that we don't block the response from being sent\n\t\t\tdiscordPostsPromise: fetchDiscordPosts({ request }),\n\t\t\tplayground: playgroundApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'playground',\n\t\t\t\t\t\tfullPath: playgroundApp.fullPath,\n\t\t\t\t\t\tdev: playgroundApp.dev,\n\t\t\t\t\t\ttest: playgroundApp.test,\n\t\t\t\t\t\ttitle: playgroundApp.title,\n\t\t\t\t\t\tname: playgroundApp.name,\n\t\t\t\t\t\tappName: playgroundApp.appName,\n\t\t\t\t\t\tisUpToDate: playgroundApp.isUpToDate,\n\t\t\t\t\t\tstackBlitzUrl: playgroundApp.stackBlitzUrl,\n\t\t\t\t\t\t...(await getAppRunningState(playgroundApp)),\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tproblem: problemApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'problem',\n\t\t\t\t\t\tfullPath: problemApp.fullPath,\n\t\t\t\t\t\tdev: problemApp.dev,\n\t\t\t\t\t\ttest: problemApp.test,\n\t\t\t\t\t\ttitle: problemApp.title,\n\t\t\t\t\t\tname: problemApp.name,\n\t\t\t\t\t\tstackBlitzUrl: problemApp.stackBlitzUrl,\n\t\t\t\t\t\t...(await getAppRunningState(problemApp)),\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tsolution: solutionApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'solution',\n\t\t\t\t\t\tfullPath: solutionApp.fullPath,\n\t\t\t\t\t\tdev: solutionApp.dev,\n\t\t\t\t\t\ttest: solutionApp.test,\n\t\t\t\t\t\ttitle: solutionApp.title,\n\t\t\t\t\t\tname: solutionApp.name,\n\t\t\t\t\t\tstackBlitzUrl: solutionApp.stackBlitzUrl,\n\t\t\t\t\t\t...(await getAppRunningState(solutionApp)),\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tdiff: getDiffProp(),\n\t\t} as const,\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst tabs = [\n\t'playground',\n\t'problem',\n\t'solution',\n\t'tests',\n\t'diff',\n\t'chat',\n] as const\nconst isValidPreview = (s: string | null): s is (typeof tabs)[number] =>\n\tBoolean(s && tabs.includes(s as (typeof tabs)[number]))\n\nfunction withParam(\n\tsearchParams: URLSearchParams,\n\tkey: string,\n\tvalue: string | null,\n) {\n\tconst newSearchParams = new URLSearchParams(searchParams)\n\tif (value === null) {\n\t\tnewSearchParams.delete(key)\n\t} else {\n\t\tnewSearchParams.set(key, value)\n\t}\n\treturn newSearchParams\n}\n\nexport default function ExercisePartRoute() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst [searchParams] = useSearchParams()\n\n\tconst preview = searchParams.get('preview')\n\tconst inBrowserBrowserRef = useRef<InBrowserBrowserRef>(null)\n\n\tconst altDown = useAltDown()\n\tconst navigate = useNavigate()\n\n\tfunction shouldHideTab(tab: (typeof tabs)[number]) {\n\t\tif (tab === 'tests') {\n\t\t\treturn (\n\t\t\t\tENV.EPICSHOP_DEPLOYED ||\n\t\t\t\t!data.playground ||\n\t\t\t\tdata.playground.test.type === 'none'\n\t\t\t)\n\t\t}\n\t\tif (tab === 'problem' || tab === 'solution') {\n\t\t\tif (data[tab]?.dev.type === 'none') return true\n\t\t\tif (ENV.EPICSHOP_DEPLOYED) {\n\t\t\t\treturn data[tab]?.dev.type !== 'browser' && !data[tab]?.stackBlitzUrl\n\t\t\t}\n\t\t}\n\t\tif (tab === 'playground' && ENV.EPICSHOP_DEPLOYED) return true\n\t\treturn false\n\t}\n\n\tconst activeTab = isValidPreview(preview)\n\t\t? preview\n\t\t: tabs.find((t) => !shouldHideTab(t))\n\n\t// when alt is held down, the diff tab should open to the full-page diff view\n\t// between the problem and solution (this is more for the instructor than the student)\n\tconst altDiffUrl = `/diff?${new URLSearchParams({\n\t\tapp1: data.problem?.name ?? '',\n\t\tapp2: data.solution?.name ?? '',\n\t})}`\n\n\tfunction handleDiffTabClick(event: React.MouseEvent<HTMLAnchorElement>) {\n\t\tif (event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n\t\t\tevent.preventDefault()\n\t\t\tnavigate(altDiffUrl)\n\t\t}\n\t}\n\n\treturn (\n\t\t<Tabs.Root\n\t\t\tclassName=\"relative flex flex-col overflow-y-auto sm:col-span-1 sm:row-span-1\"\n\t\t\tvalue={activeTab}\n\t\t\t// intentionally no onValueChange here because the Link will trigger the\n\t\t\t// change.\n\t\t>\n\t\t\t<Tabs.List className=\"h-14 min-h-14 overflow-x-hidden border-b scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t{tabs.map((tab) => {\n\t\t\t\t\tconst hidden = shouldHideTab(tab)\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tabs.Trigger key={tab} value={tab} hidden={hidden} asChild>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tid={`${tab}-tab`}\n\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t'clip-path-button relative h-full px-6 py-4 font-mono text-sm uppercase outline-none radix-state-active:z-10 radix-state-active:bg-foreground radix-state-active:text-background radix-state-active:hover:bg-foreground/80 radix-state-active:hover:text-background/80 radix-state-inactive:hover:bg-foreground/20 radix-state-inactive:hover:text-foreground/80 focus:bg-foreground/80 focus:text-background/80',\n\t\t\t\t\t\t\t\t\thidden ? 'hidden' : 'inline-block',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tpreventScrollReset\n\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\tonClick={handleDiffTabClick}\n\t\t\t\t\t\t\t\tto={\n\t\t\t\t\t\t\t\t\ttab === 'diff' && altDown\n\t\t\t\t\t\t\t\t\t\t? altDiffUrl\n\t\t\t\t\t\t\t\t\t\t: `?${withParam(\n\t\t\t\t\t\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\t\t\t\t\t\t'preview',\n\t\t\t\t\t\t\t\t\t\t\t\ttab === 'playground' ? null : tab,\n\t\t\t\t\t\t\t\t\t\t\t)}`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{tab}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Tabs.Trigger>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</Tabs.List>\n\t\t\t<div className=\"relative z-10 flex min-h-96 flex-grow flex-col overflow-y-auto\">\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"playground\"\n\t\t\t\t\tclassName=\"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<Playground\n\t\t\t\t\t\tappInfo={data.playground}\n\t\t\t\t\t\tproblemAppName={data.problem?.name}\n\t\t\t\t\t\tinBrowserBrowserRef={inBrowserBrowserRef}\n\t\t\t\t\t\tallApps={data.allApps}\n\t\t\t\t\t\tisUpToDate={data.playground?.isUpToDate ?? false}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.Content>\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"problem\"\n\t\t\t\t\tclassName=\"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<Preview\n\t\t\t\t\t\tappInfo={data.problem}\n\t\t\t\t\t\tinBrowserBrowserRef={inBrowserBrowserRef}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.Content>\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"solution\"\n\t\t\t\t\tclassName=\"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<Preview\n\t\t\t\t\t\tappInfo={data.solution}\n\t\t\t\t\t\tinBrowserBrowserRef={inBrowserBrowserRef}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.Content>\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"tests\"\n\t\t\t\t\tclassName=\"flex w-full flex-grow items-start justify-center self-start overflow-hidden radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<Tests\n\t\t\t\t\t\tappInfo={data.playground}\n\t\t\t\t\t\tproblemAppName={data.problem?.name}\n\t\t\t\t\t\tallApps={data.allApps}\n\t\t\t\t\t\tisUpToDate={data.playground?.isUpToDate ?? false}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.Content>\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"diff\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<Diff diff={data.diff} allApps={data.allApps} />\n\t\t\t\t</Tabs.Content>\n\t\t\t\t<Tabs.Content\n\t\t\t\t\tvalue=\"chat\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden\"\n\t\t\t\t>\n\t\t\t\t\t<DiscordChat />\n\t\t\t\t</Tabs.Content>\n\t\t\t</div>\n\t\t</Tabs.Root>\n\t)\n}\n\nexport function ErrorBoundary() {\n\treturn (\n\t\t<GeneralErrorBoundary\n\t\t\tstatusHandlers={{\n\t\t\t\t404: () => <p>Sorry, we couldn't find an app here.</p>,\n\t\t\t}}\n\t\t/>\n\t)\n}\n"],"names":["ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React.forwardRef","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","React.useRef","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","React.useState","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","React.useEffect","node","React.useCallback","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","TABS_NAME","createTabsContext","createTabsScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","__scopeTabs","valueProp","onValueChange","defaultValue","activationMode","tabsProps","value","setValue","TAB_LIST_NAME","TabsList","listProps","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","t","e","module","this","n","r","i","s","u","a","o","c","f","h","l","$","M","m","v","g","D","p","S","w","b","y","d","k","dayjs","utcPlugin","timeZonePlugin","relativeTimePlugin","DiscordChat","data","useLoaderData","jsxs","DiscordCTA","DiscordPosts","ctaLink","useDiscordCTALink","altDown","useAltDown","React.Suspense","Loading","Await","posts","post","DiscordPost","Link","Icon","thread","reactionsWithCounts","hints","useHints","Emoji","name","url","Playground","playgroundAppInfo","inBrowserBrowserRef","problemAppName","allApps","isUpToDate","PlaygroundWindow","SimpleTooltip","showToast","Preview","SetAppToPlayground","tabs","isValidPreview","Boolean","includes","withParam","searchParams","newSearchParams","URLSearchParams","delete","set","ExercisePartRoute","useSearchParams","preview","get","useRef","navigate","useNavigate","shouldHideTab","tab","ENV","EPICSHOP_DEPLOYED","playground","test","type","dev","stackBlitzUrl","activeTab","find","altDiffUrl","app1","problem","app2","solution","handleDiffTabClick","altKey","ctrlKey","shiftKey","metaKey","preventDefault","className","map","hidden","asChild","clsx","preventScrollReset","prefetch","onClick","to","appInfo","Tests","Diff","diff","ErrorBoundary","GeneralErrorBoundary","statusHandlers"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}