@epic-web/workshop-app 4.2.8 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/build/client/assets/{_-CsdFvUbA.js → _-ByTWgb53.js} +2 -2
  2. package/build/client/assets/{_-CsdFvUbA.js.map → _-ByTWgb53.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-9RwIhGRW.js +2 -0
  4. package/build/client/assets/{_exerciseNumber-DWZNkWZM.js.map → _exerciseNumber-9RwIhGRW.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-P76hDsE6.js → _exerciseNumber_._stepNumber-D1wwEMQx.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-P76hDsE6.js.map → _exerciseNumber_._stepNumber-D1wwEMQx.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-BhpKVn4e.js +2 -0
  8. package/build/client/assets/{_exerciseNumber_.finished-CpC-flTW.js.map → _exerciseNumber_.finished-BhpKVn4e.js.map} +1 -1
  9. package/build/client/assets/{_layout-DEZ-aTmx.js → _layout-BaPtC79F.js} +2 -2
  10. package/build/client/assets/{_layout-DEZ-aTmx.js.map → _layout-BaPtC79F.js.map} +1 -1
  11. package/build/client/assets/_layout-Bj9PyQQD.js +2 -0
  12. package/build/client/assets/{_layout-D1A2zp9y.js.map → _layout-Bj9PyQQD.js.map} +1 -1
  13. package/build/client/assets/_layout-DPfeFZ1b.js +2 -0
  14. package/build/client/assets/{_layout-BSoUgboG.js.map → _layout-DPfeFZ1b.js.map} +1 -1
  15. package/build/client/assets/_layout-PTTX5RMb.js +2 -0
  16. package/build/client/assets/_layout-PTTX5RMb.js.map +1 -0
  17. package/build/client/assets/account-C6GYxzo4.js +2 -0
  18. package/build/client/assets/{account-BeKnQB9r.js.map → account-C6GYxzo4.js.map} +1 -1
  19. package/build/client/assets/{button-Da1iG51o.js → button-DnQOyJAN.js} +2 -2
  20. package/build/client/assets/{button-Da1iG51o.js.map → button-DnQOyJAN.js.map} +1 -1
  21. package/build/client/assets/{client-hints-B2pbEa_9.js → client-hints-BsCjbOX0.js} +3 -3
  22. package/build/client/assets/client-hints-BsCjbOX0.js.map +1 -0
  23. package/build/client/assets/{components-BM_XUa9h.js → components-Dj3sm47B.js} +15 -15
  24. package/build/client/assets/{components-BM_XUa9h.js.map → components-Dj3sm47B.js.map} +1 -1
  25. package/build/client/assets/{diff-BQhWtDyS.js → diff-BQB9RSaR.js} +2 -2
  26. package/build/client/assets/{diff-BQhWtDyS.js.map → diff-BQB9RSaR.js.map} +1 -1
  27. package/build/client/assets/diff-SN_GIbcP.js +2 -0
  28. package/build/client/assets/{diff-BDeBUdSw.js.map → diff-SN_GIbcP.js.map} +1 -1
  29. package/build/client/assets/discord-CK7yz4w6.js +2 -0
  30. package/build/client/assets/discord-CK7yz4w6.js.map +1 -0
  31. package/build/client/assets/{discord-BMNnObT9.js → discord-CsluX01E.js} +2 -2
  32. package/build/client/assets/{discord-BMNnObT9.js.map → discord-CsluX01E.js.map} +1 -1
  33. package/build/client/assets/{entry.client-XC5tKTFs.js → entry.client-DBBrAxtJ.js} +2 -2
  34. package/build/client/assets/{entry.client-XC5tKTFs.js.map → entry.client-DBBrAxtJ.js.map} +1 -1
  35. package/build/client/assets/{epic-video-CxRPT-8l.js → epic-video-21h2ikhz.js} +2 -2
  36. package/build/client/assets/{epic-video-CxRPT-8l.js.map → epic-video-21h2ikhz.js.map} +1 -1
  37. package/build/client/assets/{error-boundary-tJSWbP6w.js → error-boundary-Bg54_knF.js} +2 -2
  38. package/build/client/assets/{error-boundary-tJSWbP6w.js.map → error-boundary-Bg54_knF.js.map} +1 -1
  39. package/build/client/assets/finished-BcwIbl76.js +2 -0
  40. package/build/client/assets/{finished-CMGRmsnb.js.map → finished-BcwIbl76.js.map} +1 -1
  41. package/build/client/assets/{index-B8G3eD8F.js → index-BL4aE6WC.js} +2 -2
  42. package/build/client/assets/{index-B8G3eD8F.js.map → index-BL4aE6WC.js.map} +1 -1
  43. package/build/client/assets/{index-BymJEf3X.js → index-BfoHqrT5.js} +2 -2
  44. package/build/client/assets/{index-BymJEf3X.js.map → index-BfoHqrT5.js.map} +1 -1
  45. package/build/client/assets/index-CsvysmWA.js +2 -0
  46. package/build/client/assets/{index-CQZ5FyEE.js.map → index-CsvysmWA.js.map} +1 -1
  47. package/build/client/assets/index-D1WEsmVZ.js +36 -0
  48. package/build/client/assets/{index-BDqSZ0-h.js.map → index-D1WEsmVZ.js.map} +1 -1
  49. package/build/client/assets/index-HBgMKyVf.js +2 -0
  50. package/build/client/assets/{index-Dc59VwXx.js.map → index-HBgMKyVf.js.map} +1 -1
  51. package/build/client/assets/{loading-DsjO-T0W.js → loading-Ba880UMD.js} +2 -2
  52. package/build/client/assets/{loading-DsjO-T0W.js.map → loading-Ba880UMD.js.map} +1 -1
  53. package/build/client/assets/login-BQY-a6kw.js +2 -0
  54. package/build/client/assets/{login-CcuvIoiW.js.map → login-BQY-a6kw.js.map} +1 -1
  55. package/build/client/assets/manifest-0d62be17.js +1 -0
  56. package/build/client/assets/mdx-wWk4dtHt.js +2 -0
  57. package/build/client/assets/{mdx-CZ_BPVoS.js.map → mdx-wWk4dtHt.js.map} +1 -1
  58. package/build/client/assets/misc-CXGQ7VS9.js +2 -0
  59. package/build/client/assets/{misc-C1rq7sPa.js.map → misc-CXGQ7VS9.js.map} +1 -1
  60. package/build/client/assets/{nav-chevrons-C-dN3WfT.js → nav-chevrons-D8c9lJW6.js} +2 -2
  61. package/build/client/assets/{nav-chevrons-C-dN3WfT.js.map → nav-chevrons-D8c9lJW6.js.map} +1 -1
  62. package/build/client/assets/onboarding-gD8f59tE.js +2 -0
  63. package/build/client/assets/{onboarding-CfXLKsN3.js.map → onboarding-gD8f59tE.js.map} +1 -1
  64. package/build/client/assets/presence-B2xpI37C.js +28 -0
  65. package/build/client/assets/presence-B2xpI37C.js.map +1 -0
  66. package/build/client/assets/{progress-mfa_5CZx.js → progress-CBZt2pmu.js} +2 -2
  67. package/build/client/assets/{progress-mfa_5CZx.js.map → progress-CBZt2pmu.js.map} +1 -1
  68. package/build/client/assets/{progress-bar-BmszwN_j.js → progress-bar-DX6yYES2.js} +2 -2
  69. package/build/client/assets/{progress-bar-BmszwN_j.js.map → progress-bar-DX6yYES2.js.map} +1 -1
  70. package/build/client/assets/request-info-BHMoxBaT.js +2 -0
  71. package/build/client/assets/request-info-BHMoxBaT.js.map +1 -0
  72. package/build/client/assets/{root-1Cc21xa6.js → root-BcFXTrBQ.js} +2 -2
  73. package/build/client/assets/{root-1Cc21xa6.js.map → root-BcFXTrBQ.js.map} +1 -1
  74. package/build/client/assets/{support--jou3sWH.js → support-QTdmLyE7.js} +2 -2
  75. package/build/client/assets/{support--jou3sWH.js.map → support-QTdmLyE7.js.map} +1 -1
  76. package/build/client/assets/{tooltip-BlVFw-is.js → tooltip-CVFWPOu0.js} +2 -2
  77. package/build/client/assets/{tooltip-BlVFw-is.js.map → tooltip-CVFWPOu0.js.map} +1 -1
  78. package/build/client/assets/{use-event-source-DPLyo0Bh.js → use-event-source-DXlRuRq2.js} +2 -2
  79. package/build/client/assets/{use-event-source-DPLyo0Bh.js.map → use-event-source-DXlRuRq2.js.map} +1 -1
  80. package/build/client/assets/{user-p2QVtDZI.js → user-DiGtbaa7.js} +2 -2
  81. package/build/client/assets/{user-p2QVtDZI.js.map → user-DiGtbaa7.js.map} +1 -1
  82. package/build/client/img/tiffany.png +0 -0
  83. package/build/server/index.js +10 -4
  84. package/build/server/index.js.map +1 -1
  85. package/package.json +3 -3
  86. package/build/client/assets/_exerciseNumber-DWZNkWZM.js +0 -2
  87. package/build/client/assets/_exerciseNumber_.finished-CpC-flTW.js +0 -2
  88. package/build/client/assets/_layout-BSoUgboG.js +0 -2
  89. package/build/client/assets/_layout-C8fK4Z98.js +0 -2
  90. package/build/client/assets/_layout-C8fK4Z98.js.map +0 -1
  91. package/build/client/assets/_layout-D1A2zp9y.js +0 -2
  92. package/build/client/assets/account-BeKnQB9r.js +0 -2
  93. package/build/client/assets/client-hints-B2pbEa_9.js.map +0 -1
  94. package/build/client/assets/diff-BDeBUdSw.js +0 -2
  95. package/build/client/assets/discord-DdAReDkL.js +0 -2
  96. package/build/client/assets/discord-DdAReDkL.js.map +0 -1
  97. package/build/client/assets/finished-CMGRmsnb.js +0 -2
  98. package/build/client/assets/index-B8k-Gd1G.js +0 -2
  99. package/build/client/assets/index-B8k-Gd1G.js.map +0 -1
  100. package/build/client/assets/index-BDqSZ0-h.js +0 -36
  101. package/build/client/assets/index-CQZ5FyEE.js +0 -2
  102. package/build/client/assets/index-Dc59VwXx.js +0 -2
  103. package/build/client/assets/login-CcuvIoiW.js +0 -2
  104. package/build/client/assets/manifest-1656ae4d.js +0 -1
  105. package/build/client/assets/mdx-CZ_BPVoS.js +0 -2
  106. package/build/client/assets/misc-C1rq7sPa.js +0 -2
  107. package/build/client/assets/onboarding-CfXLKsN3.js +0 -2
  108. package/build/client/assets/presence-BF7lWuVd.js +0 -28
  109. package/build/client/assets/presence-BF7lWuVd.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-app",
3
- "version": "4.2.8",
3
+ "version": "4.3.0",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -42,8 +42,8 @@
42
42
  "@epic-web/invariant": "^1.0.0",
43
43
  "@epic-web/remember": "^1.0.2",
44
44
  "@epic-web/restore-scroll": "^1.0.1",
45
- "@epic-web/workshop-presence": "4.2.8",
46
- "@epic-web/workshop-utils": "4.2.8",
45
+ "@epic-web/workshop-presence": "4.3.0",
46
+ "@epic-web/workshop-utils": "4.3.0",
47
47
  "@mdx-js/mdx": "^3.0.1",
48
48
  "@mux/mux-player-react": "^2.3.3",
49
49
  "@paralleldrive/cuid2": "^2.2.2",
@@ -1,2 +0,0 @@
1
- import{j as r,a as n,i as c}from"./index-BDqSZ0-h.js";import{E as a}from"./index-BymJEf3X.js";import{E as d}from"./epic-video-CxRPT-8l.js";import{M as m,E as p}from"./mdx-CZ_BPVoS.js";import{P as x}from"./progress-mfa_5CZx.js";import{g as u}from"./misc-C1rq7sPa.js";import{u as f,L as h}from"./components-BM_XUa9h.js";import"./loading-DsjO-T0W.js";import"./client-hints-B2pbEa_9.js";import"./index-Dc59VwXx.js";import"./index-B8k-Gd1G.js";import"./tooltip-BlVFw-is.js";import"./clsx-B-dksMZM.js";import"./progress-bar-BmszwN_j.js";const C=({data:e,matches:o})=>{var i;if(!e)return[{title:"📝 | Error"}];const s=e.exercise.exerciseNumber.toString().padStart(2,"0"),t=(i=o.find(l=>l.id==="root"))==null?void 0:i.data;return[{title:`📝 | ${s}. ${e.exercise.title} | ${t==null?void 0:t.workshopTitle}`}]},b={h1:()=>null};function M(){var t;const e=f(),s=`${String(((t=e.firstStep)==null?void 0:t.stepNumber)??"01").padStart(2,"0")}/${e.firstType}`;return r.jsxs("main",{className:"relative flex h-full w-full max-w-5xl flex-col justify-between border-r md:w-3/4 xl:w-2/3",children:[r.jsxs("article",{id:e.articleId,className:"shadow-on-scrollbox flex w-full flex-1 flex-col gap-12 overflow-y-scroll px-3 py-4 pt-6 scrollbar-thin scrollbar-thumb-scrollbar md:px-10 md:py-12 md:pt-16",children:[r.jsx("div",{children:r.jsx("h1",{className:"text-[clamp(3rem,6vw,8.5rem)] font-extrabold leading-none",children:e.exercise.title})}),r.jsx("div",{children:e.exercise.instructionsCode?r.jsx(d,{epicVideoInfosPromise:e.epicVideoInfosPromise,children:r.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:r.jsx(m,{code:e.exercise.instructionsCode,components:b})})}):"No instructions yet..."})]},e.articleId),r.jsx(a,{elementQuery:`#${e.articleId}`},`scroll-${e.articleId}`),r.jsx(x,{type:"instructions",exerciseNumber:e.exerciseNumber,className:"h-14 border-t px-6"}),r.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[r.jsx("div",{}),r.jsx(p,{file:e.exerciseReadme.file,relativePath:e.exerciseReadme.relativePath}),r.jsx(h,{to:s,prefetch:"intent",className:"flex h-full items-center justify-center bg-foreground px-7 text-background",children:"Start Learning"})]})]})}function T(){const e=n();return typeof document<"u"&&console.error(e),c(e)?e.status===404?r.jsx("p",{children:"Sorry, we couldn't find that step."}):r.jsxs("p",{children:[e.status," ",e.data]}):r.jsx("p",{children:u(e)})}export{T as ErrorBoundary,M as default,C as meta};
2
- //# sourceMappingURL=_exerciseNumber-DWZNkWZM.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,r as a}from"./index-BDqSZ0-h.js";import{E as n}from"./index-BymJEf3X.js";import{E as c}from"./epic-video-CxRPT-8l.js";import{L as d}from"./loading-DsjO-T0W.js";import{N as x}from"./nav-chevrons-C-dN3WfT.js";import{M as m,E as p}from"./mdx-CZ_BPVoS.js";import{P as f}from"./progress-mfa_5CZx.js";import{c as h}from"./misc-C1rq7sPa.js";import{u,L as j}from"./components-BM_XUa9h.js";import"./index-Dc59VwXx.js";import"./index-B8k-Gd1G.js";import"./tooltip-BlVFw-is.js";import"./client-hints-B2pbEa_9.js";import"./clsx-B-dksMZM.js";import"./progress-bar-BmszwN_j.js";const M=({data:r,matches:s})=>{var o;if(!r)return[{title:"🦉 | Error"}];const t=r.exercise.exerciseNumber.toString().padStart(2,"0"),i=(o=s.find(l=>l.id==="root"))==null?void 0:o.data;return[{title:`🦉 | ${t}. ${r.exercise.title} | ${i==null?void 0:i.workshopTitle}`}]},b={h1:()=>null};function R(){const r=u(),s=r.exercise.exerciseNumber.toString().padStart(2,"0");return e.jsx("div",{className:"flex flex-grow flex-col",children:e.jsxs("main",{className:"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1",children:[e.jsxs("div",{className:"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r",children:[e.jsx("h1",{className:"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none",children:e.jsx("div",{className:"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2",children:e.jsxs("div",{className:"flex items-center justify-start gap-x-2",children:[e.jsx(j,{to:`/${s}`,className:"hover:underline",children:`${s}. ${r.exercise.title}`}),e.jsx("span",{children:"/"}),e.jsx("span",{children:"Elaboration"})]})})}),e.jsx("article",{className:"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-10 pt-8 scrollbar-thin scrollbar-thumb-scrollbar",id:r.articleId,children:r.exercise.finishedCode?e.jsx(c,{epicVideoInfosPromise:r.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(m,{code:r.exercise.finishedCode,components:b})})}):"No finished instructions yet..."}),e.jsx(n,{elementQuery:`#${r.articleId}`}),e.jsx(f,{type:"finished",exerciseNumber:r.exercise.exerciseNumber,className:"h-14 border-t px-6"}),e.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[e.jsx("div",{}),r.exerciseFinished?e.jsx(p,{file:r.exerciseFinished.file,relativePath:r.exerciseFinished.relativePath}):null,e.jsx(x,{prev:r.prevStepLink,next:r.nextStepLink})]})]}),e.jsx(g,{exerciseFormEmbedUrl:r.exerciseFormEmbedUrl,exerciseTitle:r.exercise.title})]})})}function g({exerciseFormEmbedUrl:r,exerciseTitle:s}){const[t,i]=a.useState(!1);return e.jsxs("div",{className:"relative flex-shrink-0",children:[t?null:e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:e.jsx(d,{children:e.jsxs("span",{children:["Loading ",s," Elaboration form"]})})}),e.jsx("iframe",{onLoad:()=>i(!0),title:"Elaboration",src:r,className:h("absolute inset-0 flex h-full w-full transition-opacity duration-300",t?"opacity-100":"opacity-0")})]})}export{R as default,M as meta};
2
- //# sourceMappingURL=_exerciseNumber_.finished-CpC-flTW.js.map
@@ -1,2 +0,0 @@
1
- import{r as c,n as he,k as xe,j as e,d as mt}from"./index-BDqSZ0-h.js";import{E as ht}from"./index-BymJEf3X.js";import{$ as Ne,_ as B,d as Se,e as Pe,f as xt,g as te,h as z,i as Ee,j as Ce,S as K,T as bt,a as fe,b as pe,c as me,k as Ye,l as gt,m as vt,n as $t,o as jt,p as wt}from"./tooltip-BlVFw-is.js";import{$ as yt,a as Be,b as Nt,c as St,d as Pt,e as Et,f as Ct,g as Tt,h as Dt,i as Ot,j as Rt,k as kt,l as _t,m as Mt,n as It,o as Ft,p as Lt,A as At,q as Ut,r as Ht,s as Yt,t as Bt,u as Vt,D as zt}from"./diff-BQhWtDyS.js";import{c as ee}from"./clsx-B-dksMZM.js";import{D as Gt,u as Kt}from"./discord-BMNnObT9.js";import{u as Te,I as O,a as De,c as ve,b as Oe}from"./misc-C1rq7sPa.js";import{L as Ve}from"./loading-DsjO-T0W.js";import{u as Wt,a as Re}from"./client-hints-B2pbEa_9.js";import{u as W,A as ze,L as ae,a as Z,d as ke,F as Zt}from"./components-BM_XUa9h.js";import{A as qt}from"./index-B8G3eD8F.js";import{s as _e}from"./progress-bar-BmszwN_j.js";import{z as m}from"./index-B8k-Gd1G.js";import{B as Ge}from"./button-Da1iG51o.js";import{E as Qt}from"./epic-video-CxRPT-8l.js";import{M as Jt,L as le,E as Xt}from"./mdx-CZ_BPVoS.js";import{u as en}from"./use-event-source-DPLyo0Bh.js";import{G as tn}from"./error-boundary-tJSWbP6w.js";import{N as nn}from"./nav-chevrons-C-dN3WfT.js";import{P as rn}from"./progress-mfa_5CZx.js";import"./user-p2QVtDZI.js";import"./index-Dc59VwXx.js";const ge="rovingFocusGroup.onEntryFocus",sn={bubbles:!1,cancelable:!0},Me="RovingFocusGroup",[$e,Ke,an]=yt(Me),[on,We]=Ne(Me,[an]),[cn,ln]=on(Me),un=c.forwardRef((t,s)=>c.createElement($e.Provider,{scope:t.__scopeRovingFocusGroup},c.createElement($e.Slot,{scope:t.__scopeRovingFocusGroup},c.createElement(dn,B({},t,{ref:s}))))),dn=c.forwardRef((t,s)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:o,currentTabStopId:i,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:l,onEntryFocus:x,...d}=t,h=c.useRef(null),b=Se(s,h),y=Be(o),[S=null,f]=Pe({prop:i,defaultProp:u,onChange:l}),[P,C]=c.useState(!1),v=xt(x),D=Ke(n),L=c.useRef(!1),[R,I]=c.useState(0);return c.useEffect(()=>{const k=h.current;if(k)return k.addEventListener(ge,v),()=>k.removeEventListener(ge,v)},[v]),c.createElement(cn,{scope:n,orientation:r,dir:y,loop:a,currentTabStopId:S,onItemFocus:c.useCallback(k=>f(k),[f]),onItemShiftTab:c.useCallback(()=>C(!0),[]),onFocusableItemAdd:c.useCallback(()=>I(k=>k+1),[]),onFocusableItemRemove:c.useCallback(()=>I(k=>k-1),[])},c.createElement(te.div,B({tabIndex:P||R===0?-1:0,"data-orientation":r},d,{ref:b,style:{outline:"none",...t.style},onMouseDown:z(t.onMouseDown,()=>{L.current=!0}),onFocus:z(t.onFocus,k=>{const U=!L.current;if(k.target===k.currentTarget&&U&&!P){const Y=new CustomEvent(ge,sn);if(k.currentTarget.dispatchEvent(Y),!Y.defaultPrevented){const M=D().filter(p=>p.focusable),T=M.find(p=>p.active),q=M.find(p=>p.id===S),w=[T,q,...M].filter(Boolean).map(p=>p.ref.current);Ze(w)}}L.current=!1}),onBlur:z(t.onBlur,()=>C(!1))})))}),fn="RovingFocusGroupItem",pn=c.forwardRef((t,s)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:o,...i}=t,u=Ee(),l=o||u,x=ln(fn,n),d=x.currentTabStopId===l,h=Ke(n),{onFocusableItemAdd:b,onFocusableItemRemove:y}=x;return c.useEffect(()=>{if(r)return b(),()=>y()},[r,b,y]),c.createElement($e.ItemSlot,{scope:n,id:l,focusable:r,active:a},c.createElement(te.span,B({tabIndex:d?0:-1,"data-orientation":x.orientation},i,{ref:s,onMouseDown:z(t.onMouseDown,S=>{r?x.onItemFocus(l):S.preventDefault()}),onFocus:z(t.onFocus,()=>x.onItemFocus(l)),onKeyDown:z(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){x.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const f=xn(S,x.orientation,x.dir);if(f!==void 0){S.preventDefault();let C=h().filter(v=>v.focusable).map(v=>v.ref.current);if(f==="last")C.reverse();else if(f==="prev"||f==="next"){f==="prev"&&C.reverse();const v=C.indexOf(S.currentTarget);C=x.loop?bn(C,v+1):C.slice(v+1)}setTimeout(()=>Ze(C))}})})))}),mn={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function hn(t,s){return s!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function xn(t,s,n){const r=hn(t.key,n);if(!(s==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(s==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return mn[r]}function Ze(t){const s=document.activeElement;for(const n of t)if(n===s||(n.focus(),document.activeElement!==s))return}function bn(t,s){return t.map((n,r)=>t[(s+r)%t.length])}const gn=un,vn=pn,qe="Tabs",[$n,ls]=Ne(qe,[We]),Qe=We(),[jn,Ie]=$n(qe),wn=c.forwardRef((t,s)=>{const{__scopeTabs:n,value:r,onValueChange:a,defaultValue:o,orientation:i="horizontal",dir:u,activationMode:l="automatic",...x}=t,d=Be(u),[h,b]=Pe({prop:r,onChange:a,defaultProp:o});return c.createElement(jn,{scope:n,baseId:Ee(),value:h,onValueChange:b,orientation:i,dir:d,activationMode:l},c.createElement(te.div,B({dir:d,"data-orientation":i},x,{ref:s})))}),yn="TabsList",Nn=c.forwardRef((t,s)=>{const{__scopeTabs:n,loop:r=!0,...a}=t,o=Ie(yn,n),i=Qe(n);return c.createElement(gn,B({asChild:!0},i,{orientation:o.orientation,dir:o.dir,loop:r}),c.createElement(te.div,B({role:"tablist","aria-orientation":o.orientation},a,{ref:s})))}),Sn="TabsTrigger",Pn=c.forwardRef((t,s)=>{const{__scopeTabs:n,value:r,disabled:a=!1,...o}=t,i=Ie(Sn,n),u=Qe(n),l=Je(i.baseId,r),x=Xe(i.baseId,r),d=r===i.value;return c.createElement(vn,B({asChild:!0},u,{focusable:!a,active:d}),c.createElement(te.button,B({type:"button",role:"tab","aria-selected":d,"aria-controls":x,"data-state":d?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:l},o,{ref:s,onMouseDown:z(t.onMouseDown,h=>{!a&&h.button===0&&h.ctrlKey===!1?i.onValueChange(r):h.preventDefault()}),onKeyDown:z(t.onKeyDown,h=>{[" ","Enter"].includes(h.key)&&i.onValueChange(r)}),onFocus:z(t.onFocus,()=>{const h=i.activationMode!=="manual";!d&&!a&&h&&i.onValueChange(r)})})))}),En="TabsContent",Cn=c.forwardRef((t,s)=>{const{__scopeTabs:n,value:r,forceMount:a,children:o,...i}=t,u=Ie(En,n),l=Je(u.baseId,r),x=Xe(u.baseId,r),d=r===u.value,h=c.useRef(d);return c.useEffect(()=>{const b=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(b)},[]),c.createElement(Ce,{present:a||d},({present:b})=>c.createElement(te.div,B({"data-state":d?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":l,hidden:!b,id:x,tabIndex:0},i,{ref:s,style:{...t.style,animationDuration:h.current?"0s":void 0}}),b&&o))});function Je(t,s){return`${t}-trigger-${s}`}function Xe(t,s){return`${t}-content-${s}`}const Tn=wn,Dn=Nn,On=Pn,se=Cn;var et={exports:{}};(function(t,s){(function(n,r){t.exports=r()})(xe,function(){var n=1e3,r=6e4,a=36e5,o="millisecond",i="second",u="minute",l="hour",x="day",d="week",h="month",b="quarter",y="year",S="date",f="Invalid Date",P=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,C=/\[([^\]]+)]|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,v={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(w){var p=["th","st","nd","rd"],g=w%100;return"["+w+(p[(g-20)%10]||p[g]||p[0])+"]"}},D=function(w,p,g){var N=String(w);return!N||N.length>=p?w:""+Array(p+1-N.length).join(g)+w},L={s:D,z:function(w){var p=-w.utcOffset(),g=Math.abs(p),N=Math.floor(g/60),$=g%60;return(p<=0?"+":"-")+D(N,2,"0")+":"+D($,2,"0")},m:function w(p,g){if(p.date()<g.date())return-w(g,p);var N=12*(g.year()-p.year())+(g.month()-p.month()),$=p.clone().add(N,h),E=g-$<0,j=p.clone().add(N+(E?-1:1),h);return+(-(N+(g-$)/(E?$-j:j-$))||0)},a:function(w){return w<0?Math.ceil(w)||0:Math.floor(w)},p:function(w){return{M:h,y,w:d,d:x,D:S,h:l,m:u,s:i,ms:o,Q:b}[w]||String(w||"").toLowerCase().replace(/s$/,"")},u:function(w){return w===void 0}},R="en",I={};I[R]=v;var k="$isDayjsObject",U=function(w){return w instanceof q||!(!w||!w[k])},Y=function w(p,g,N){var $;if(!p)return R;if(typeof p=="string"){var E=p.toLowerCase();I[E]&&($=E),g&&(I[E]=g,$=E);var j=p.split("-");if(!$&&j.length>1)return w(j[0])}else{var _=p.name;I[_]=p,$=_}return!N&&$&&(R=$),$||!N&&R},M=function(w,p){if(U(w))return w.clone();var g=typeof p=="object"?p:{};return g.date=w,g.args=arguments,new q(g)},T=L;T.l=Y,T.i=U,T.w=function(w,p){return M(w,{locale:p.$L,utc:p.$u,x:p.$x,$offset:p.$offset})};var q=function(){function w(g){this.$L=Y(g.locale,null,!0),this.parse(g),this.$x=this.$x||g.x||{},this[k]=!0}var p=w.prototype;return p.parse=function(g){this.$d=function(N){var $=N.date,E=N.utc;if($===null)return new Date(NaN);if(T.u($))return new Date;if($ instanceof Date)return new Date($);if(typeof $=="string"&&!/Z$/i.test($)){var j=$.match(P);if(j){var _=j[2]-1||0,A=(j[7]||"0").substring(0,3);return E?new Date(Date.UTC(j[1],_,j[3]||1,j[4]||0,j[5]||0,j[6]||0,A)):new Date(j[1],_,j[3]||1,j[4]||0,j[5]||0,j[6]||0,A)}}return new Date($)}(g),this.init()},p.init=function(){var g=this.$d;this.$y=g.getFullYear(),this.$M=g.getMonth(),this.$D=g.getDate(),this.$W=g.getDay(),this.$H=g.getHours(),this.$m=g.getMinutes(),this.$s=g.getSeconds(),this.$ms=g.getMilliseconds()},p.$utils=function(){return T},p.isValid=function(){return this.$d.toString()!==f},p.isSame=function(g,N){var $=M(g);return this.startOf(N)<=$&&$<=this.endOf(N)},p.isAfter=function(g,N){return M(g)<this.startOf(N)},p.isBefore=function(g,N){return this.endOf(N)<M(g)},p.$g=function(g,N,$){return T.u(g)?this[N]:this.set($,g)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(g,N){var $=this,E=!!T.u(N)||N,j=T.p(g),_=function(X,V){var Q=T.w($.$u?Date.UTC($.$y,V,X):new Date($.$y,V,X),$);return E?Q:Q.endOf(x)},A=function(X,V){return T.w($.toDate()[X].apply($.toDate("s"),(E?[0,0,0,0]:[23,59,59,999]).slice(V)),$)},F=this.$W,H=this.$M,G=this.$D,re="set"+(this.$u?"UTC":"");switch(j){case y:return E?_(1,0):_(31,11);case h:return E?_(1,H):_(0,H+1);case d:var J=this.$locale().weekStart||0,ie=(F<J?F+7:F)-J;return _(E?G-ie:G+(6-ie),H);case x:case S:return A(re+"Hours",0);case l:return A(re+"Minutes",1);case u:return A(re+"Seconds",2);case i:return A(re+"Milliseconds",3);default:return this.clone()}},p.endOf=function(g){return this.startOf(g,!1)},p.$set=function(g,N){var $,E=T.p(g),j="set"+(this.$u?"UTC":""),_=($={},$[x]=j+"Date",$[S]=j+"Date",$[h]=j+"Month",$[y]=j+"FullYear",$[l]=j+"Hours",$[u]=j+"Minutes",$[i]=j+"Seconds",$[o]=j+"Milliseconds",$)[E],A=E===x?this.$D+(N-this.$W):N;if(E===h||E===y){var F=this.clone().set(S,1);F.$d[_](A),F.init(),this.$d=F.set(S,Math.min(this.$D,F.daysInMonth())).$d}else _&&this.$d[_](A);return this.init(),this},p.set=function(g,N){return this.clone().$set(g,N)},p.get=function(g){return this[T.p(g)]()},p.add=function(g,N){var $,E=this;g=Number(g);var j=T.p(N),_=function(H){var G=M(E);return T.w(G.date(G.date()+Math.round(H*g)),E)};if(j===h)return this.set(h,this.$M+g);if(j===y)return this.set(y,this.$y+g);if(j===x)return _(1);if(j===d)return _(7);var A=($={},$[u]=r,$[l]=a,$[i]=n,$)[j]||1,F=this.$d.getTime()+g*A;return T.w(F,this)},p.subtract=function(g,N){return this.add(-1*g,N)},p.format=function(g){var N=this,$=this.$locale();if(!this.isValid())return $.invalidDate||f;var E=g||"YYYY-MM-DDTHH:mm:ssZ",j=T.z(this),_=this.$H,A=this.$m,F=this.$M,H=$.weekdays,G=$.months,re=$.meridiem,J=function(V,Q,ce,de){return V&&(V[Q]||V(N,E))||ce[Q].slice(0,de)},ie=function(V){return T.s(_%12||12,V,"0")},X=re||function(V,Q,ce){var de=V<12?"AM":"PM";return ce?de.toLowerCase():de};return E.replace(C,function(V,Q){return Q||function(ce){switch(ce){case"YY":return String(N.$y).slice(-2);case"YYYY":return T.s(N.$y,4,"0");case"M":return F+1;case"MM":return T.s(F+1,2,"0");case"MMM":return J($.monthsShort,F,G,3);case"MMMM":return J(G,F);case"D":return N.$D;case"DD":return T.s(N.$D,2,"0");case"d":return String(N.$W);case"dd":return J($.weekdaysMin,N.$W,H,2);case"ddd":return J($.weekdaysShort,N.$W,H,3);case"dddd":return H[N.$W];case"H":return String(_);case"HH":return T.s(_,2,"0");case"h":return ie(1);case"hh":return ie(2);case"a":return X(_,A,!0);case"A":return X(_,A,!1);case"m":return String(A);case"mm":return T.s(A,2,"0");case"s":return String(N.$s);case"ss":return T.s(N.$s,2,"0");case"SSS":return T.s(N.$ms,3,"0");case"Z":return j}return null}(V)||j.replace(":","")})},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(g,N,$){var E,j=this,_=T.p(N),A=M(g),F=(A.utcOffset()-this.utcOffset())*r,H=this-A,G=function(){return T.m(j,A)};switch(_){case y:E=G()/12;break;case h:E=G();break;case b:E=G()/3;break;case d:E=(H-F)/6048e5;break;case x:E=(H-F)/864e5;break;case l:E=H/a;break;case u:E=H/r;break;case i:E=H/n;break;default:E=H}return $?E:T.a(E)},p.daysInMonth=function(){return this.endOf(h).$D},p.$locale=function(){return I[this.$L]},p.locale=function(g,N){if(!g)return this.$L;var $=this.clone(),E=Y(g,N,!0);return E&&($.$L=E),$},p.clone=function(){return T.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},w}(),ne=q.prototype;return M.prototype=ne,[["$ms",o],["$s",i],["$m",u],["$H",l],["$W",x],["$M",h],["$y",y],["$D",S]].forEach(function(w){ne[w[1]]=function(p){return this.$g(p,w[0],w[1])}}),M.extend=function(w,p){return w.$i||(w(p,q,M),w.$i=!0),M},M.locale=Y,M.isDayjs=U,M.unix=function(w){return M(1e3*w)},M.en=I[R],M.Ls=I,M.p={},M})})(et);var Rn=et.exports;const be=he(Rn);var tt={exports:{}};(function(t,s){(function(n,r){t.exports=r()})(xe,function(){return function(n,r,a){n=n||{};var o=r.prototype,i={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 u(x,d,h,b){return o.fromToBase(x,d,h,b)}a.en.relativeTime=i,o.fromToBase=function(x,d,h,b,y){for(var S,f,P,C=h.$locale().relativeTime||i,v=n.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"}],D=v.length,L=0;L<D;L+=1){var R=v[L];R.d&&(S=b?a(x).diff(h,R.d,!0):h.diff(x,R.d,!0));var I=(n.rounding||Math.round)(Math.abs(S));if(P=S>0,I<=R.r||!R.r){I<=1&&L>0&&(R=v[L-1]);var k=C[R.l];y&&(I=y(""+I)),f=typeof k=="string"?k.replace("%d",I):k(I,d,R.l,P);break}}if(d)return f;var U=P?C.future:C.past;return typeof U=="function"?U(f):U.replace("%s",f)},o.to=function(x,d){return u(x,d,this,!0)},o.from=function(x,d){return u(x,d,this)};var l=function(x){return x.$u?a.utc():a()};o.toNow=function(x){return this.to(l(this),x)},o.fromNow=function(x){return this.from(l(this),x)}}})})(tt);var kn=tt.exports;const _n=he(kn);var nt={exports:{}};(function(t,s){(function(n,r){t.exports=r()})(xe,function(){var n={year:0,month:1,day:2,hour:3,minute:4,second:5},r={};return function(a,o,i){var u,l=function(b,y,S){S===void 0&&(S={});var f=new Date(b),P=function(C,v){v===void 0&&(v={});var D=v.timeZoneName||"short",L=C+"|"+D,R=r[L];return R||(R=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:C,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:D}),r[L]=R),R}(y,S);return P.formatToParts(f)},x=function(b,y){for(var S=l(b,y),f=[],P=0;P<S.length;P+=1){var C=S[P],v=C.type,D=C.value,L=n[v];L>=0&&(f[L]=parseInt(D,10))}var R=f[3],I=R===24?0:R,k=f[0]+"-"+f[1]+"-"+f[2]+" "+I+":"+f[4]+":"+f[5]+":000",U=+b;return(i.utc(k).valueOf()-(U-=U%1e3))/6e4},d=o.prototype;d.tz=function(b,y){b===void 0&&(b=u);var S=this.utcOffset(),f=this.toDate(),P=f.toLocaleString("en-US",{timeZone:b}),C=Math.round((f-new Date(P))/1e3/60),v=i(P,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(f.getTimezoneOffset()/15)-C,!0);if(y){var D=v.utcOffset();v=v.add(S-D,"minute")}return v.$x.$timezone=b,v},d.offsetName=function(b){var y=this.$x.$timezone||i.tz.guess(),S=l(this.valueOf(),y,{timeZoneName:b}).find(function(f){return f.type.toLowerCase()==="timezonename"});return S&&S.value};var h=d.startOf;d.startOf=function(b,y){if(!this.$x||!this.$x.$timezone)return h.call(this,b,y);var S=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return h.call(S,b,y).tz(this.$x.$timezone,!0)},i.tz=function(b,y,S){var f=S&&y,P=S||y||u,C=x(+i(),P);if(typeof b!="string")return i(b).tz(P);var v=function(I,k,U){var Y=I-60*k*1e3,M=x(Y,U);if(k===M)return[Y,k];var T=x(Y-=60*(M-k)*1e3,U);return M===T?[Y,M]:[I-60*Math.min(M,T)*1e3,Math.max(M,T)]}(i.utc(b,f).valueOf(),C,P),D=v[0],L=v[1],R=i(D).utcOffset(L);return R.$x.$timezone=P,R},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(b){u=b}}})})(nt);var Mn=nt.exports;const In=he(Mn);var rt={exports:{}};(function(t,s){(function(n,r){t.exports=r()})(xe,function(){var n="minute",r=/[+-]\d\d(?::?\d\d)?/g,a=/([+-]|\d\d)/g;return function(o,i,u){var l=i.prototype;u.utc=function(f){var P={date:f,utc:!0,args:arguments};return new i(P)},l.utc=function(f){var P=u(this.toDate(),{locale:this.$L,utc:!0});return f?P.add(this.utcOffset(),n):P},l.local=function(){return u(this.toDate(),{locale:this.$L,utc:!1})};var x=l.parse;l.parse=function(f){f.utc&&(this.$u=!0),this.$utils().u(f.$offset)||(this.$offset=f.$offset),x.call(this,f)};var d=l.init;l.init=function(){if(this.$u){var f=this.$d;this.$y=f.getUTCFullYear(),this.$M=f.getUTCMonth(),this.$D=f.getUTCDate(),this.$W=f.getUTCDay(),this.$H=f.getUTCHours(),this.$m=f.getUTCMinutes(),this.$s=f.getUTCSeconds(),this.$ms=f.getUTCMilliseconds()}else d.call(this)};var h=l.utcOffset;l.utcOffset=function(f,P){var C=this.$utils().u;if(C(f))return this.$u?0:C(this.$offset)?h.call(this):this.$offset;if(typeof f=="string"&&(f=function(R){R===void 0&&(R="");var I=R.match(r);if(!I)return null;var k=(""+I[0]).match(a)||["-",0,0],U=k[0],Y=60*+k[1]+ +k[2];return Y===0?0:U==="+"?Y:-Y}(f),f===null))return this;var v=Math.abs(f)<=16?60*f:f,D=this;if(P)return D.$offset=v,D.$u=f===0,D;if(f!==0){var L=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(D=this.local().add(v+L,n)).$offset=v,D.$x.$localOffset=L}else D=this.utc();return D};var b=l.format;l.format=function(f){var P=f||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return b.call(this,P)},l.valueOf=function(){var f=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*f},l.isUTC=function(){return!!this.$u},l.toISOString=function(){return this.toDate().toISOString()},l.toString=function(){return this.toDate().toUTCString()};var y=l.toDate;l.toDate=function(f){return f==="s"&&this.$offset?u(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():y.call(this)};var S=l.diff;l.diff=function(f,P,C){if(f&&this.$u===f.$u)return S.call(this,f,P,C);var v=this.local(),D=u(f).local();return S.call(v,D,P,C)}}})})(rt);var Fn=rt.exports;const Ln=he(Fn);be.extend(Ln);be.extend(In);be.extend(_n);function An(){const t=W();return e.jsxs("div",{className:"flex h-full w-full flex-col gap-4 pt-4",children:[e.jsx("div",{className:"text-center",children:e.jsx(Gt,{discordAuthUrl:t.discordAuthUrl})}),e.jsx("div",{className:"flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar",children:e.jsx(Un,{})})]})}function Un(){const t=W(),s=Kt({discordAuthUrl:t.discordAuthUrl}),n=Te();return e.jsxs("div",{className:"flex h-full flex-col items-center justify-between",children:[e.jsx(c.Suspense,{fallback:e.jsx("div",{className:"flex h-full w-full flex-col items-center justify-center",children:e.jsx(Ve,{children:"Loading Discord Posts"})}),children:e.jsx(ze,{resolve:t.discordPostsPromise,errorElement:e.jsx("div",{className:"text-red-500",children:"There was a problem loading the discord posts"}),children:r=>e.jsx("ul",{className:"flex w-full flex-col gap-4 p-3 xl:p-12",children:r.map(a=>e.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:e.jsx(Hn,{thread:a})},a.id))})})}),e.jsx("div",{children:e.jsxs(ae,{to:n&&!s.includes("oauth")?s.replace(/^https/,"discord"):s,target:s.includes("oauth")?void 0:"_blank",rel:"noreferrer noopener",onClick:n?r=>{r.preventDefault(),window.open(r.currentTarget.href,"_blank","noreferrer noopener")}:void 0,className:"flex items-center gap-2 p-2 text-xl hover:underline",children:["Create Post ",e.jsx(O,{name:"ExternalLink"})]})})]})}function Hn({thread:t}){const s=t.reactions.filter(r=>r.count),n=Wt();return e.jsx("div",{children:e.jsxs("div",{className:"flex flex-col gap-2 p-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[t.tags.length?e.jsx("div",{className:"flex gap-2",children:t.tags.map(r=>e.jsxs("div",{className:"flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm",children:[e.jsx("span",{className:"h-3 w-3 leading-3",children:e.jsx(Ue,{name:r.emojiName,url:r.emojiUrl})}),e.jsx("span",{children:r.name})]},r.name))}):null,e.jsx("strong",{className:"text-xl font-bold",children:t.name}),e.jsxs("div",{className:"flex items-start gap-1",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[t.authorAvatarUrl?e.jsx("img",{src:t.authorAvatarUrl,alt:"",className:"h-6 w-6 rounded-full"}):null,e.jsxs("span",{children:[e.jsx("span",{className:"font-bold",style:t.authorHexAccentColor?{color:t.authorHexAccentColor}:{},children:t.authorDisplayName}),":"," "]})]}),e.jsx("span",{className:"flex-1 overflow-ellipsis text-muted-foreground",children:t.messagePreview})]})]}),t.previewImageUrl?e.jsx("img",{src:t.previewImageUrl,alt:"",className:"h-28 w-28 rounded-lg object-cover"}):null]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{children:s.length?e.jsx("ul",{className:"flex items-center gap-2",children:s.map((r,a)=>e.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:[e.jsx("span",{className:"h-3 w-3 leading-3",children:e.jsx(Ue,{name:r.emojiName,url:r.emojiUrl})}),e.jsx("span",{children:r.count})]},a))}):null}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(O,{name:"Chat"})," ",t.messageCount]}),` · ${be(t.lastUpdated).tz(n.timeZone).fromNow()}`]})]}),e.jsxs("span",{className:"flex items-center gap-4",children:[e.jsx("a",{href:t.link.replace(/^https/,"discord"),children:e.jsx(O,{name:"Discord"})}),e.jsx("a",{href:t.link,target:"_blank",rel:"noreferrer noopener",children:e.jsx(O,{name:"ExternalLink"})})]})]})]})})}function Ue({name:t,url:s}){return s?e.jsx("img",{src:s,alt:t,className:"h-full w-full"}):t||null}function je({appName:t,reset:s=!1,tooltipText:n,...r}){var i;const a=Z(),o=e.jsx("button",{type:"submit",...r,className:ee(r.className,a.state!=="idle"?"cursor-progress":null,((i=a.data)==null?void 0:i.status)==="error"?"cursor-not-allowed":null)});return e.jsxs(a.Form,{action:"/set-playground",method:"POST",className:"inline-flex items-center justify-center",children:[e.jsx("input",{type:"hidden",name:"appName",value:t}),s?e.jsx("input",{type:"hidden",name:"reset",value:"true"}):null,_e,n?e.jsx(K,{content:n,children:o}):o]})}function Yn({playgroundAppName:t,allApps:s}){var r;const n=Z();return e.jsxs(Nt,{name:"appName",value:t,onValueChange:a=>{n.submit({appName:a},{method:"POST",action:"/set-playground"})},children:[e.jsxs(St,{"aria-label":"Select app for playground",className:ee("flex h-full w-full items-center justify-between text-left radix-placeholder:text-gray-500 focus-visible:outline-none",n.state!=="idle"?"cursor-progress":null,((r=n.data)==null?void 0:r.status)==="error"?"cursor-not-allowed":null),children:[e.jsx("span",{className:"w-80 flex-1 overflow-hidden text-ellipsis whitespace-nowrap scrollbar-thin scrollbar-thumb-scrollbar",children:e.jsx(Pt,{placeholder:"Select current app",className:"inline-block w-40 text-ellipsis"})}),e.jsx(Et,{children:e.jsx(O,{name:"TriangleDownSmall"})})]}),e.jsx(Ct,{children:e.jsxs(Tt,{position:"popper",align:"start",className:"z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",children:[e.jsx(Dt,{className:"flex h-5 cursor-default items-center justify-center ",children:e.jsx(O,{name:"ChevronUp"})}),e.jsx(Ot,{className:"p-3",children:e.jsxs(Rt,{children:[e.jsx(kt,{className:"px-5 pb-3 font-mono uppercase",children:"App"}),s.filter(a=>a.name!=="playground").map(a=>e.jsx(Bn,{value:a.name,children:a.displayName},a.name))]})}),e.jsx(_t,{className:"flex h-5 cursor-default items-center justify-center ",children:e.jsx(O,{name:"ChevronDown"})})]})})]})}function Bn({value:t,children:s}){return e.jsxs(Mt,{value:t,className:"relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100",children:[e.jsx(It,{children:s}),e.jsx(Ft,{className:"absolute left-0 inline-flex w-[25px] items-center justify-center",children:e.jsx(O,{name:"CheckSmall"})})]})}function Fe({appName:t}){return ENV.EPICSHOP_DEPLOYED?null:e.jsx(je,{appName:t,tooltipText:"Playground is not set to the right app. Click to set Playground.",children:e.jsxs("span",{className:"flex items-center justify-center gap-1 text-foreground-danger hover:underline",children:[e.jsx(O,{name:"Unlinked",className:"animate-ping"})," ",e.jsx("span",{className:"uppercase",children:"Set to Playground"})]})})}function st({playgroundAppName:t,problemAppName:s,isUpToDate:n,allApps:r,children:a}){const o=t===s,i=o&&n?e.jsx(O,{size:"xl",name:"Linked"}):e.jsx(O,{size:"xl",name:"Unlinked",className:"animate-pulse text-foreground-danger"});let u="Click to reset Playground.";return n||(u="Playground is out of date. Click to reset Playground."),o||(u="Playground is not set to the right app. Click to set Playground."),e.jsxs("div",{className:"flex h-full w-full flex-col justify-between",children:[e.jsxs("div",{className:"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3",children:[e.jsx("div",{className:"display-alt-up",children:s?e.jsx(je,{appName:s,tooltipText:u,children:i}):e.jsx(K,{content:"No problem app available for this step",children:e.jsx("div",{children:e.jsx(O,{name:"Question"})})})}),e.jsx("div",{className:"display-alt-down",children:t?e.jsx(je,{appName:t,reset:!0,tooltipText:"Reset Playground",children:e.jsx("div",{className:"flex h-7 w-7 items-center justify-center",children:e.jsx(O,{name:"Refresh"})})}):e.jsx("div",{className:"h-7 w-7"})}),e.jsx(Yn,{allApps:r,playgroundAppName:t})]}),e.jsx("div",{className:"flex h-full flex-1 flex-grow items-center justify-center",children:a})]})}function Vn({name:t}){var o;const s=Z(),n=(o=s.formData)==null?void 0:o.get("intent"),r=n==="stop"?"Stopping App":n==="restart"?"Restarting App":null,a=Te();return e.jsxs(s.Form,{method:"POST",action:"/start",children:[_e,e.jsx("input",{type:"hidden",name:"name",value:t}),e.jsx("button",{type:"submit",name:"intent",value:a?"restart":"stop",className:"h-full border-r px-3 py-4 font-mono text-xs uppercase leading-none",children:r||(a?"Restart App":"Stop App")})]})}function at({port:t}){const s=Z();return e.jsxs(s.Form,{method:"POST",action:"/start",children:[e.jsx("input",{type:"hidden",name:"port",value:t}),e.jsx(Ge,{varient:"mono",type:"submit",name:"intent",value:"stop-port",children:s.state==="idle"?"Stop Port":"Stopping Port"})]})}function zn({name:t}){var n;const s=Z();return((n=s.data)==null?void 0:n.status)==="app-not-started"?s.data.error==="port-unavailable"?e.jsxs("div",{children:["The port is unavailable. Would you like to stop whatever is running on that port and try again?",e.jsx(at,{port:s.data.port})]}):e.jsx("div",{children:"An unknown error has happened."}):e.jsxs(s.Form,{method:"POST",action:"/start",children:[e.jsx("input",{type:"hidden",name:"name",value:t}),s.state==="idle"?e.jsx(Ge,{type:"submit",name:"intent",value:"start",varient:"mono",children:"Start App"}):e.jsx("div",{children:e.jsx(Ve,{children:"Starting App"})})]})}const Gn=m.intersection(m.object({type:m.literal("epicshop:history-call")}),m.union([m.object({method:m.literal("pushState"),args:m.union([m.tuple([m.object({}).passthrough(),m.unknown()]),m.tuple([m.object({}).passthrough(),m.unknown(),m.string()])])}),m.object({method:m.literal("replaceState"),args:m.union([m.tuple([m.object({}).passthrough(),m.unknown()]),m.tuple([m.object({}).passthrough(),m.unknown(),m.string()])])}),m.object({method:m.literal("go"),args:m.tuple([m.number().optional()])}),m.object({method:m.literal("forward"),args:m.tuple([])}),m.object({method:m.literal("back"),args:m.tuple([])}),m.object({method:m.literal("popstate"),pathname:m.string(),delta:m.number()})])),Kn=m.object({type:m.literal("epicshop:loaded"),url:m.string()}),Wn=m.union([Gn,Kn]);function He(t,s,n){return Math.min(Math.max(t+s,0),n)}const Zn=c.forwardRef(qn);function qn({name:t,port:s,portIsAvailable:n,isRunning:r,baseUrl:a,id:o,initialRoute:i},u){const l=Re();return r?e.jsx(Qn,{baseUrl:a,id:o,name:t,ref:u,initialRoute:i}):n===!1?e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsxs("p",{className:"max-w-xs pb-5 text-center",role:"status",children:["The port for this app is unavailable. It could be that you're running it ",e.jsx("a",{href:De({domain:l.domain,port:s}),className:"underline",children:"elsewhere"}),"?"]}),e.jsx(at,{port:s})]}):e.jsx(zn,{name:t})}const Qn=c.forwardRef(Jn);function Jn({baseUrl:t,id:s,name:n,initialRoute:r},a){const[o,i]=ke(),u=o.get("pathname")??r,[l,x]=c.useState(0),d=s+l,h=c.useRef("new"),b=c.useRef(null),[y,S]=c.useState({history:[u],index:0}),[f,P]=c.useState(u),C=c.useRef(null),v=new URL(u,t),D=c.useRef(v);c.useEffect(()=>{D.current=v});const[L,R]=c.useState(v),I=c.useRef(s);I.current!==s&&(I.current=s,R(D.current)),c.useEffect(()=>{I.current=s}),c.useEffect(()=>{function w(p){var E;if(p.source!==((E=C.current)==null?void 0:E.contentWindow))return;const g=Wn.safeParse(p.data,{path:["messageEvent","data"]});if(!g.success)return;const{data:N}=g;if(N.type==="epicshop:loaded"){S(j=>{const _=A=>He(j.index,A,j.history.length-1);if(h.current==="back")return{...j,index:_(-1)};if(h.current==="forward")return{...j,index:_(1)};if(h.current==="new"){const A=j.history[j.index],F=new URL(N.url).pathname;if(A===F)return j;const H=[...j.history.slice(0,j.index+1),F];return{history:H,index:H.length-1}}else throw new Error("Unexpected lastDirectionRef value")});return}const{method:$}=N;S(j=>{const _=F=>He(j.index,F,j.history.length-1),A=j.history[j.index];switch($){case"popstate":return{...j,index:_(N.delta)};case"forward":return{...j,index:_(1)};case"back":return{...j,index:_(-1)};case"pushState":{const F=N.args[2]??A,H=[...j.history.slice(0,j.index+1),F].filter(Boolean);return{...j,history:H,index:H.length-1}}case"replaceState":{const F=N.args[2]??A;return{...j,history:[...j.history.slice(0,j.index),F,...j.history.slice(j.index+1)].filter(Boolean)}}case"go":{const[F=0]=N.args;return{...j,index:_(F)}}}})}return window.addEventListener("message",w),()=>{window.removeEventListener("message",w)}},[]);const k=c.useRef(i);c.useEffect(()=>{k.current=i},[i]);const U=y.history[y.index];c.useEffect(()=>{if(!U)return;P(U);const w=new URLSearchParams(window.location.search);U==="/"?w.delete("pathname"):w.set("pathname",U),`?${w.toString()}`!==window.location.search&&k.current(w,{replace:!0})},[U]);const Y=(...w)=>{var g,N;const p=w[0];typeof p=="number"?h.current=p>0?"forward":"back":h.current="new",b.current&&clearTimeout(b.current),b.current=setTimeout(()=>{h.current="new"},100),(N=(g=C.current)==null?void 0:g.contentWindow)==null||N.postMessage({type:"epicshop:navigate-call",params:w},"*")};function M(w=f){P(w);const p=y.history[y.index];Y(w,{replace:p===w})}c.useImperativeHandle(a,()=>({handleExtrnalNavigation:M}));const T=y.index===y.history.length-1,q=y.index<=0,ne=[];for(const[w,p]of o.entries())w!=="pathname"&&ne.push(e.jsx("input",{type:"hidden",name:w,value:p},w));return e.jsx(bt,{children:e.jsxs("div",{className:"flex h-full flex-grow flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pl-1.5",children:[e.jsxs("div",{className:"mr-2 flex items-center justify-center gap-2 px-1",children:[e.jsxs(fe,{children:[e.jsx(pe,{asChild:!0,children:e.jsx("button",{type:"button",className:"flex aspect-square h-full w-full items-center justify-center p-1 transition disabled:opacity-40",disabled:q,onClick:()=>Y(-1),children:e.jsx(O,{name:"ArrowLeft","aria-hidden":"true"})})}),e.jsx(me,{children:"Go back"})]}),e.jsxs(fe,{children:[e.jsx(pe,{asChild:!0,children:e.jsx("button",{type:"button",className:"flex aspect-square h-full w-full items-center justify-center p-1 transition disabled:opacity-40",disabled:T,onClick:()=>Y(1),children:e.jsx(O,{name:"ArrowRight","aria-hidden":"true"})})}),e.jsx(me,{children:"Go forward"})]}),e.jsxs(fe,{children:[e.jsx(pe,{asChild:!0,children:e.jsx("button",{type:"button",className:"flex aspect-square h-full w-full items-center justify-center p-1 transition disabled:opacity-40",onClick:()=>{R(v),x(l+1),S({history:[v.pathname],index:0})},children:e.jsx(O,{name:"Refresh","aria-hidden":"true"})})}),e.jsx(me,{children:"Refresh"})]})]}),e.jsxs(Zt,{method:"get",replace:!0,className:"flex flex-1 gap-2",onSubmit:()=>M(),children:[ne,e.jsxs("div",{className:"flex flex-1 items-center border-x bg-background p-3 leading-none text-foreground",children:[e.jsx("a",{href:v.toString(),target:"_blank",rel:"noreferrer",children:L.host}),e.jsx("input",{"aria-label":"pathname",className:"flex-1 bg-background focus-visible:outline-none",value:f,name:"pathname",onChange:w=>P(w.currentTarget.value)})]})]}),e.jsx(Vn,{name:n}),e.jsxs(fe,{children:[e.jsx(pe,{asChild:!0,children:e.jsx("a",{href:v.toString(),target:"_blank",rel:"noreferrer",className:ee("flex aspect-square items-center justify-center px-3.5"),children:e.jsx(O,{name:"ExternalLink"})})}),e.jsx(me,{children:"Open in new tab"})]})]}),e.jsx("div",{className:"flex h-full w-full flex-grow dark:bg-white",children:e.jsx("iframe",{title:n,ref:C,src:L.toString(),className:"h-full w-full flex-grow bg-white"},d)})]})})}function we({id:t,appInfo:s,inBrowserBrowserRef:n}){const r=Re();if(!s)return e.jsx("p",{children:"No app here. Sorry."});const{isRunning:a,dev:o,name:i,portIsAvailable:u,title:l}=s;if(o.type==="script"){const x=De({domain:r.domain,port:o.portNumber});return e.jsx(Zn,{ref:n,isRunning:a,id:t??i,name:i,portIsAvailable:u,port:o.portNumber,baseUrl:x,initialRoute:o.initialRoute})}else return o.type==="browser"?e.jsxs("div",{className:"relative h-full flex-grow overflow-y-auto scrollbar-thin scrollbar-thumb-scrollbar",children:[e.jsxs("a",{href:o.pathname,target:"_blank",rel:"noreferrer",className:ve("absolute bottom-5 right-5 flex items-center justify-center rounded-full bg-gray-100 p-2.5 transition hover:bg-gray-200 dark:bg-gray-800 hover:dark:bg-gray-600"),children:[e.jsx(O,{name:"ExternalLink","aria-hidden":"true"}),e.jsx("span",{className:"sr-only",children:"Open in New Window"})]}),e.jsx("iframe",{title:l,src:o.pathname,className:"h-full w-full flex-grow bg-white"})]}):e.jsxs("p",{children:["Preview for dev type of ",e.jsx("code",{children:o.type})," not supported."]})}function Xn({appInfo:t,inBrowserBrowserRef:s,problemAppName:n,allApps:r,isUpToDate:a}){return e.jsx(st,{playgroundAppName:t==null?void 0:t.appName,problemAppName:n,allApps:r,isUpToDate:a,children:(t==null?void 0:t.dev.type)==="none"?e.jsxs("div",{children:[e.jsx("div",{className:"text-foreground-secondary flex h-full items-center justify-center text-2xl",children:"Non-UI playground"}),e.jsx("div",{children:e.jsxs("div",{className:"text-foreground-secondary flex flex-wrap gap-1 text-center",children:["Navigate to"," ",e.jsx(K,{content:t.fullPath,children:e.jsx("span",{className:"underline",onClick:()=>{navigator.clipboard.writeText(t.fullPath),qt.success("Copied playground path to clipboard")},children:"the playground directory"})})," ","in your editor and terminal to work on this exercise!"]})})]}):t?e.jsx(we,{id:t.appName,appInfo:t,inBrowserBrowserRef:s}):e.jsxs("div",{className:"flex flex-col justify-center gap-2",children:[e.jsx("p",{children:"Please set the playground first"}),n?e.jsx(Fe,{appName:n}):null]})})}function er({handleClick:t,cacheLocation:s,embeddedKey:n,appFullPath:r}){const a=Z();return e.jsxs(a.Form,{action:"/update-mdx-cache",method:"POST",children:[_e,e.jsx("input",{type:"hidden",name:"cacheLocation",value:s}),e.jsx("input",{type:"hidden",name:"embeddedKey",value:n}),e.jsx("input",{type:"hidden",name:"appFullPath",value:r}),e.jsx("button",{type:"submit",onClick:t,className:ee("launch_button",a.state==="idle"?null:"cursor-progress"),children:"Cancel Warning"})]})}const ot=c.createContext(null);function tr(){const t=c.useContext(ot);if(!t)throw new Error("useStepContext must be used within a StepContext.Provider");return t}function nr({children:t,inBrowserBrowserRef:s}){return e.jsx(ot.Provider,{value:{inBrowserBrowserRef:s},children:t})}const rr={CodeFile:ir,CodeFileNotification:cr,DiffLink:Le,PrevDiffLink:or,NextDiffLink:ar,InlineFile:lr,LinkToApp:dr};function sr({inBrowserBrowserRef:t}){const s=W();return s.exerciseStepApp.instructionsCode?e.jsx(nr,{inBrowserBrowserRef:t,children:e.jsx(Qt,{epicVideoInfosPromise:s.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(Jt,{code:s.exerciseStepApp.instructionsCode,components:rr})})})}):null}function it(t,s,n){const r=new URLSearchParams(t);return n===null?r.delete(s):r.set(s,n),r}function ar({app:t=0,fullPage:s=!1,children:n}){return e.jsx(Le,{app1:t,app2:t+1,fullPage:s,children:n})}function or({app:t=-1,fullPage:s=!1,children:n}){return e.jsx(Le,{app1:t,app2:t+1,fullPage:s,children:n})}function Le({app1:t=0,app2:s=1,children:n,fullPage:r=!1,to:a}){const o=W();if(!a&&!t&&!s)return e.jsx("callout-danger",{className:"notification",children:e.jsx("div",{className:"title",children:"DiffLink Error: invalid input"})});function i(d){var h;if(typeof d=="number"){const b=o.exerciseIndex+d;return(h=o.allApps[b])==null?void 0:h.name}if(!d)return null;for(const{name:b,stepName:y}of o.allApps)if(d===b||d===y)return b;return null}if(a){const d=new URLSearchParams(a);t=d.get("app1"),s=d.get("app2")}const u=i(t),l=i(s);if(!u||!l)return e.jsxs("callout-danger",{className:"notification",children:[e.jsx("div",{className:"title",children:"DiffLink Error: invalid input"}),!u&&e.jsxs("div",{children:['app1: "',t,'" is not a valid app name']}),!l&&e.jsxs("div",{children:['app2: "',s,'" is not a valid app name']})]});a||(a=`app1=${u}&app2=${l}`);const x=r?`/diff?${a}`:`?${decodeURIComponent(it(new URLSearchParams,"preview",`diff&${a}`).toString())}`;return n||(n=e.jsxs("span",{children:["Go to Diff ",r?"":"Preview"," from: ",e.jsx("code",{children:u})," to:"," ",e.jsx("code",{children:l})]})),e.jsx(ae,{to:x,children:n})}function ir({file:t}){return e.jsxs("div",{className:"border-4 border-[#ff4545] bg-[#ff454519] p-4 text-lg",children:["Something went wrong compiling ",e.jsx("b",{children:"CodeFile"})," for file: ",e.jsx("u",{children:t})," to markdown"]})}function cr({file:t,type:s="problem",children:n,variant:r,cacheLocation:a,embeddedKey:o,...i}){const[u,l]=c.useState("visible"),d=W()[s],h=()=>{u==="visible"&&(l("collapse"),setTimeout(()=>{l("none")},400))},b=ee("rounded px-4 py-1 font-mono text-sm font-semibold outline-none transition duration-300 ease-in-out",{"bg-amber-300/70 hover:bg-amber-300/40 active:bg-amber-300/50":r==="warning","bg-red-300/70 hover:bg-red-300/40 active:bg-red-300/50":r==="error"});return e.jsxs("div",{className:ee("notification important h-15 relative",{"duration-400 !my-0 !h-0 !py-0 !opacity-0 transition-all ease-out":u!=="visible",hidden:u==="none"}),children:[e.jsxs("div",{className:"absolute right-3 top-3 z-50 flex gap-4",children:[d?e.jsx("div",{className:b,title:`Edit ${t}`,children:e.jsx(le,{appFile:t,appName:d.name,...i,children:"Edit this File"})}):null,d&&r==="warning"?e.jsx("div",{className:b,title:`Remove the warning from here and from ${t} cache file`,children:e.jsx(er,{handleClick:h,cacheLocation:a,embeddedKey:o,appFullPath:d.fullPath})}):null]}),n]})}function lr({file:t,type:s="playground",children:n=e.jsx("code",{children:t}),...r}){const a=W(),o=a[s]||a[a.type],i=e.jsxs("div",{className:"launch-editor-button-wrapper flex underline underline-offset-4",children:[n," ",e.jsx("svg",{height:24,width:24,children:e.jsx("use",{href:"/icons.svg#keyboard"})})]});return ENV.EPICSHOP_DEPLOYED&&o?e.jsx("div",{className:"inline-block grow",children:e.jsx(le,{appFile:t,appName:o.name,...r,children:i})}):o?e.jsx("div",{className:"inline-block grow",children:e.jsx(le,{appFile:t,appName:o.name,...r,children:i})}):s==="playground"?e.jsx(K,{content:"You must 'Set to Playground' before opening a file",children:e.jsx("div",{className:"inline-block grow cursor-not-allowed",children:i})}):e.jsx(e.Fragment,{children:"children"})}function ur(t){return t==="problem"?"problem":t==="solution"?"solution":"playground"}function dr({to:t,children:s=e.jsx("code",{children:t.toString()}),...n}){var b;const[r]=ke(),a=`?${it(r,"pathname",t.toString()).toString()}`,o=W(),i=ur(r.get("preview")),u=Re(),l=o[i],x=(l==null?void 0:l.dev.type)==="script"?De({domain:u.domain,port:l.dev.portNumber}):((b=o.playground)==null?void 0:b.dev.type)==="browser"?o.playground.dev.pathname:null,{inBrowserBrowserRef:d}=tr(),h=x?x.slice(0,-1)+t.toString():null;return e.jsxs("div",{className:"inline-flex items-center justify-between gap-1",children:[e.jsx(ae,{to:a,...n,className:ve(n.className,{"cursor-not-allowed":ENV.EPICSHOP_DEPLOYED}),title:ENV.EPICSHOP_DEPLOYED?"Cannot link to app in deployed version":void 0,onClick:y=>{var S,f;ENV.EPICSHOP_DEPLOYED&&y.preventDefault(),(S=n.onClick)==null||S.call(n,y),(f=d.current)==null||f.handleExtrnalNavigation(t.toString())},children:s}),h?e.jsx(K,{content:"Open in new tab",children:e.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:ve("flex aspect-square items-center justify-center",{"cursor-not-allowed":ENV.EPICSHOP_DEPLOYED}),title:ENV.EPICSHOP_DEPLOYED?"Cannot link to app in deployed version":"Open in new tab",onClick:y=>{ENV.EPICSHOP_DEPLOYED&&y.preventDefault()},children:e.jsx(O,{name:"ExternalLink"})})}):null]})}const fr=m.intersection(m.object({type:m.literal("epicshop:test-status-update"),timestamp:m.number()}),m.union([m.object({status:m.literal("pending")}),m.object({status:m.literal("pass")}),m.object({status:m.literal("fail"),error:m.string()})])),pr=m.object({type:m.literal("epicshop:test-step-update"),status:m.literal("pass"),title:m.string(),timestamp:m.number()}),mr=m.union([pr,fr]);function hr({pathname:t,testFile:s}){const n=c.useRef(null),[r,a]=c.useState(null),[o,i]=c.useState([]);c.useEffect(()=>{function d(h){var S;if(h.source!==((S=n.current)==null?void 0:S.contentWindow)||"request"in h.data)return;const b=mr.safeParse(h.data,{path:["messageEvent","data"]});if(!b.success){console.error("Invalid message from test iframe",h.data,b.error);return}const{data:y}=b;y.type==="epicshop:test-status-update"&&(y.status==="pending"&&i([]),a(y)),y.type==="epicshop:test-step-update"&&i(f=>[...f,y])}return window.addEventListener("message",d),()=>{window.removeEventListener("message",d)}},[]);const u={pending:e.jsx(Oe,{"aria-label":"Pending"}),pass:e.jsx(O,{name:"CheckSmall","aria-label":"Passed",className:"text-emerald-700"}),fail:e.jsx(O,{name:"Remove","aria-label":"Failed",className:"text-foreground-danger"}),unknown:e.jsx(O,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})}[(r==null?void 0:r.status)??"unknown"],l=o.sort((d,h)=>d.timestamp-h.timestamp),x={pass:e.jsx(O,{name:"CheckSmall","aria-label":"Passed"}),fail:e.jsx(O,{name:"Remove","aria-label":"Failed"}),unknown:e.jsx(O,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})};return e.jsx(e.Fragment,{children:e.jsx(Lt,{className:"w-full",type:"multiple",children:e.jsx(At,{icon:u,title:s,forceMount:!0,children:e.jsxs("div",{className:"not-prose",children:[e.jsxs("div",{className:"p-5 pt-3",children:[e.jsx("ul",{className:"",children:l.map(d=>e.jsx("li",{children:e.jsxs("div",{className:"flex items-baseline gap-2 text-emerald-700",children:[e.jsx("span",{children:x[d.status]}),e.jsx("pre",{className:"whitespace-pre-wrap",children:d.title})]})},d.timestamp+d.title))}),(r==null?void 0:r.status)==="fail"?e.jsxs("div",{className:"flex items-baseline gap-2 text-foreground-danger",children:[e.jsx("span",{children:x.fail}),e.jsx("pre",{className:"max-h-48 overflow-y-auto text-foreground-danger scrollbar-thin scrollbar-thumb-scrollbar",children:r.error})]}):null,e.jsx("iframe",{ref:n,title:s,src:t+s,className:"mt-5 min-h-[420px] w-full border bg-white"})]}),e.jsxs("div",{className:"flex border-y",children:[e.jsx("button",{onClick:()=>{var d,h;return(h=(d=n.current)==null?void 0:d.contentWindow)==null?void 0:h.location.reload()},className:"border-r p-3",children:e.jsx(O,{name:"Refresh","aria-label":"Rerun Tests"})}),e.jsx("a",{href:t+s,target:"_blank",rel:"noreferrer",className:"border-r p-3",children:e.jsx(O,{name:"ExternalLink","aria-label":"Open in New Window"})})]})]})})})})}const xr=m.union([m.object({type:m.literal("init"),exitCode:m.number().nullable().optional(),isRunning:m.boolean(),output:m.array(m.object({type:m.union([m.literal("stdout"),m.literal("stderr")]),html:m.string(),timestamp:m.number()}))}),m.object({type:m.union([m.literal("stdout"),m.literal("stderr")]),data:m.string(),timestamp:m.number()}),m.object({type:m.literal("exit"),isRunning:m.literal(!1),code:m.number().nullable()})]),br=m.array(xr);function gr(t,s){return s(t)}function vr({name:t}){const[s,n]=c.useReducer(gr,{version:0,isRunning:!1,exitCode:void 0,lines:[]}),{version:r,isRunning:a,exitCode:o,lines:i}=s,u=en(`/test?${new URLSearchParams({name:t})}&v=${r}`);return c.useEffect(()=>{if(!u)return;const l=JSON.parse(u),x=br.safeParse(l);if(!x.success){console.error(x.error.flatten());return}for(const d of x.data)switch(d.type){case"exit":{const{isRunning:h,code:b}=d;n(y=>({...y,isRunning:h,exitCode:b}));break}case"init":{const{output:h,exitCode:b,isRunning:y}=d;n(S=>({...S,lines:h,exitCode:b,isRunning:y}));break}case"stderr":case"stdout":{const{type:h,data:b,timestamp:y}=d;n(S=>({...S,lines:[...S.lines,{type:h,html:b,timestamp:y}].sort((f,P)=>f.timestamp-P.timestamp),isRunning:!0}));break}}},[u]),e.jsxs("div",{className:"relative flex h-full w-full flex-col",children:[e.jsxs("div",{className:"flex h-12 w-full flex-shrink-0 items-center justify-between border-b",children:[e.jsxs("div",{className:"flex h-full items-center",children:[!a&&e.jsx($r,{name:t,onRun:()=>{n(l=>({...l,exitCode:void 0,lines:[],version:l.version+1}))}}),a?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:e.jsx(Oe,{role:"status","aria-label":"Running Tests"})}),e.jsx(wr,{name:t})]}):null]}),!a&&o!==void 0&&e.jsx("p",{className:"pr-3.5 leading-none",children:o===0?"Tests passed":`Test failed (exit code ${String(o)})`}),!a&&o!==void 0&&e.jsx(jr,{name:t,onClear:()=>{n(l=>({...l,exitCode:void 0,lines:[]}))}})]}),e.jsxs("div",{className:"flex h-full flex-col gap-5 p-5",children:[e.jsx("p",{className:"font-mono text-sm font-medium uppercase",children:"Test Output"}),e.jsx("pre",{className:"shadow-on-scrollbox flex-1 overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar",children:i.map(l=>e.jsx("code",{"data-type":l.type,dangerouslySetInnerHTML:{__html:l.html}},l.timestamp))})]})]})}function $r({name:t,onRun:s}){const n=Z(),r=c.useRef(s);return c.useEffect(()=>{r.current=s},[s]),c.useEffect(()=>{var a,o;(a=n.data)!=null&&a.success&&((o=r.current)==null||o.call(r))},[n.data]),e.jsxs(n.Form,{method:"POST",action:"/test",className:"h-full",children:[e.jsx("input",{type:"hidden",name:"name",value:t}),e.jsx(K,{content:n.state==="idle"?"Run Tests":"Running Tests...",children:e.jsx("button",{type:"submit",name:"intent",value:"run",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:n.state==="idle"?e.jsx(O,{name:"TriangleSmall"}):e.jsx(Oe,{role:"status"})})})]})}function jr({name:t,onClear:s}){const n=Z(),r=c.useRef(s);return c.useEffect(()=>{r.current=s},[s]),c.useEffect(()=>{var a,o;(a=n.data)!=null&&a.success&&((o=r.current)==null||o.call(r))},[n.data]),e.jsxs(n.Form,{method:"POST",action:"/test",className:"h-full",children:[e.jsx("input",{type:"hidden",name:"name",value:t}),e.jsx(K,{content:n.state==="idle"?"Clear Tests":"Clearing Tests...",children:e.jsx("button",{type:"submit",name:"intent",value:"clear",className:"flex h-full flex-grow items-center justify-center border-l px-3.5",children:n.state==="idle"?e.jsx(O,{name:"Clear"}):e.jsx(O,{name:"Clear",className:"animate-pulse",role:"status"})})})]})}function wr({name:t,onStop:s}){const n=Z(),r=c.useRef(s);return c.useEffect(()=>{r.current=s},[s]),c.useEffect(()=>{var a,o;(a=n.data)!=null&&a.success&&((o=r.current)==null||o.call(r))},[n.data]),e.jsxs(n.Form,{method:"POST",action:"/test",className:"h-full",children:[e.jsx("input",{type:"hidden",name:"name",value:t}),e.jsx(K,{content:n.state==="idle"?"Stop Tests":"Stopping Tests...",children:e.jsx("button",{type:"submit",name:"intent",value:"stop",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:n.state==="idle"?e.jsx(O,{name:"Stop"}):e.jsx(O,{name:"Stop",className:"animate-pulse",role:"status"})})})]})}function yr({appInfo:t,problemAppName:s,allApps:n,isUpToDate:r}){const[a,o]=c.useState(0);let i=e.jsx("p",{children:"No tests here. Sorry."});if((t==null?void 0:t.test.type)==="script"&&(i=e.jsx(vr,{name:t.name})),(t==null?void 0:t.test.type)==="browser"){const{pathname:u}=t.test;i=e.jsxs("div",{className:"flex h-full w-full flex-grow flex-col",children:[t.test.testFiles.map(l=>e.jsx("div",{children:e.jsx(hr,{pathname:u,testFile:l})},l)),e.jsx("div",{className:"px-3 py-[21px]",children:e.jsxs("button",{onClick:()=>o(l=>l+1),className:"flex items-center gap-2 font-mono text-sm uppercase leading-none",children:[e.jsx(O,{name:"Refresh","aria-hidden":!0})," Rerun All Tests"]})})]},a)}return e.jsx(st,{playgroundAppName:t==null?void 0:t.appName,problemAppName:s,allApps:n,isUpToDate:r,children:i})}const ct="Popover",[lt,us]=Ne(ct,[Ye]),Ae=Ye(),[Nr,oe]=lt(ct),Sr=t=>{const{__scopePopover:s,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:i=!1}=t,u=Ae(s),l=c.useRef(null),[x,d]=c.useState(!1),[h=!1,b]=Pe({prop:r,defaultProp:a,onChange:o});return c.createElement(gt,u,c.createElement(Nr,{scope:s,contentId:Ee(),triggerRef:l,open:h,onOpenChange:b,onOpenToggle:c.useCallback(()=>b(y=>!y),[b]),hasCustomAnchor:x,onCustomAnchorAdd:c.useCallback(()=>d(!0),[]),onCustomAnchorRemove:c.useCallback(()=>d(!1),[]),modal:i},n))},Pr="PopoverTrigger",Er=c.forwardRef((t,s)=>{const{__scopePopover:n,...r}=t,a=oe(Pr,n),o=Ae(n),i=Se(s,a.triggerRef),u=c.createElement(te.button,B({type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":ft(a.open)},r,{ref:i,onClick:z(t.onClick,a.onOpenToggle)}));return a.hasCustomAnchor?u:c.createElement(vt,B({asChild:!0},o),u)}),ut="PopoverPortal",[Cr,Tr]=lt(ut,{forceMount:void 0}),Dr=t=>{const{__scopePopover:s,forceMount:n,children:r,container:a}=t,o=oe(ut,s);return c.createElement(Cr,{scope:s,forceMount:n},c.createElement(Ce,{present:n||o.open},c.createElement(Ut,{asChild:!0,container:a},r)))},ue="PopoverContent",Or=c.forwardRef((t,s)=>{const n=Tr(ue,t.__scopePopover),{forceMount:r=n.forceMount,...a}=t,o=oe(ue,t.__scopePopover);return c.createElement(Ce,{present:r||o.open},o.modal?c.createElement(Rr,B({},a,{ref:s})):c.createElement(kr,B({},a,{ref:s})))}),Rr=c.forwardRef((t,s)=>{const n=oe(ue,t.__scopePopover),r=c.useRef(null),a=Se(s,r),o=c.useRef(!1);return c.useEffect(()=>{const i=r.current;if(i)return Ht(i)},[]),c.createElement(Yt,{as:$t,allowPinchZoom:!0},c.createElement(dt,B({},t,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:z(t.onCloseAutoFocus,i=>{var u;i.preventDefault(),o.current||(u=n.triggerRef.current)===null||u===void 0||u.focus()}),onPointerDownOutside:z(t.onPointerDownOutside,i=>{const u=i.detail.originalEvent,l=u.button===0&&u.ctrlKey===!0,x=u.button===2||l;o.current=x},{checkForDefaultPrevented:!1}),onFocusOutside:z(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})))}),kr=c.forwardRef((t,s)=>{const n=oe(ue,t.__scopePopover),r=c.useRef(!1),a=c.useRef(!1);return c.createElement(dt,B({},t,{ref:s,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var i;if((i=t.onCloseAutoFocus)===null||i===void 0||i.call(t,o),!o.defaultPrevented){var u;r.current||(u=n.triggerRef.current)===null||u===void 0||u.focus(),o.preventDefault()}r.current=!1,a.current=!1},onInteractOutside:o=>{var i,u;(i=t.onInteractOutside)===null||i===void 0||i.call(t,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=o.target;((u=n.triggerRef.current)===null||u===void 0?void 0:u.contains(l))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&a.current&&o.preventDefault()}}))}),dt=c.forwardRef((t,s)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:i,onEscapeKeyDown:u,onPointerDownOutside:l,onFocusOutside:x,onInteractOutside:d,...h}=t,b=oe(ue,n),y=Ae(n);return Bt(),c.createElement(Vt,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o},c.createElement(jt,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:d,onEscapeKeyDown:u,onPointerDownOutside:l,onFocusOutside:x,onDismiss:()=>b.onOpenChange(!1)},c.createElement(wt,B({"data-state":ft(b.open),role:"dialog",id:b.contentId},y,h,{ref:s,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function ft(t){return t?"open":"closed"}const _r=Sr,Mr=Er,Ir=Dr,Fr=Or;function Lr(){var i,u;const t=W(),[s,n]=c.useState(!1),r=c.useRef(null);function a(){n(!1)}const o=(i=t.playground)==null?void 0:i.appName;return e.jsx(e.Fragment,{children:e.jsxs(_r,{open:s,onOpenChange:n,children:[e.jsx(Mr,{asChild:!0,children:e.jsxs("button",{className:"flex h-full items-center gap-1 border-r px-6 py-3 font-mono text-sm uppercase","aria-label":"Relevant Files",children:[e.jsx(O,{name:"Files"}),"Files"]})}),e.jsx(Ir,{children:e.jsx(Fr,{ref:r,className:"slideRightContent lg:slideUpContent invert-theme z-10 select-none rounded bg-background px-9 py-8 text-foreground",align:"start",sideOffset:5,children:e.jsxs("div",{className:"launch-editor-wrapper",children:[e.jsx("strong",{className:"inline-block px-2 pb-4 font-semibold uppercase",children:"Relevant Files"}),t.problem&&((u=t.playground)==null?void 0:u.appName)!==t.problem.name?e.jsx("div",{className:"mb-2 rounded p-1 font-mono font-medium",children:e.jsx(Fe,{appName:t.problem.name})}):null,e.jsx("div",{id:"files",children:e.jsx(c.Suspense,{fallback:e.jsx(K,{content:"Loading diff",children:e.jsx("div",{className:"flex justify-center",children:e.jsx(O,{name:"Refresh",className:"h-8 w-8 animate-spin"})})}),children:e.jsx(ze,{resolve:t.diff,errorElement:e.jsx("div",{className:"text-foreground-danger",children:"Something went wrong."}),children:({diffFiles:l})=>{if(!l)return e.jsx("p",{className:"text-foreground-danger",children:"Unable to determine diff"});if(typeof l=="string")return e.jsx("p",{className:"text-foreground-danger",children:l});if(!l.length)return e.jsx("p",{children:"No files changed"});const x=o||ENV.EPICSHOP_GITHUB_ROOT?{}:{title:"You must 'Set to Playground' before opening a file",className:"not-allowed"};return e.jsxs("ul",{...x,children:[l.length>1&&!ENV.EPICSHOP_DEPLOYED?e.jsx("div",{className:"mb-2 border-b border-b-gray-50 border-opacity-50 pb-2 font-sans",children:e.jsx(le,{appFile:l.map(d=>`${d.path},${d.line},1`),appName:"playground",onUpdate:a,children:e.jsx("p",{children:"Open All Files"})})}):null,l.map(d=>{var h;return e.jsx("li",{"data-state":d.status,children:e.jsx(le,{appFile:`${d.path},${d.line},1`,appName:ENV.EPICSHOP_DEPLOYED?((h=t.problem)==null?void 0:h.name)??"playground":"playground",onUpdate:a,children:e.jsx("code",{children:d.path})})},d.path)})]})}})})})]})})})]})})}function pt(t,s){var i;const n=(t==null?void 0:t.exerciseStepApp.exerciseNumber.toString().padStart(2,"0"))??"00",r=(t==null?void 0:t.exerciseStepApp.stepNumber.toString().padStart(2,"0"))??"00",a={problem:"💪",solution:"🏁"}[(t==null?void 0:t.type)??"problem"],o=((i=t==null?void 0:t[t.type])==null?void 0:i.title)??"N/A";return{emoji:a,stepNumber:r,title:o,exerciseNumber:n,exerciseTitle:(t==null?void 0:t.exerciseTitle)??"Unknown exercise",workshopTitle:s,type:(t==null?void 0:t.type)??"problem"}}const ds=({data:t,matches:s})=>{var l;const n=(l=s.find(x=>x.id==="root"))==null?void 0:l.data,{emoji:r,stepNumber:a,title:o,exerciseNumber:i,exerciseTitle:u}=pt(t);return[{title:`${r} | ${a}. ${o} | ${i}. ${u} | ${(n==null?void 0:n.workshopTitle)??"Epic Workshop"}`}]},ye=["playground","problem","solution","tests","diff","chat"],Ar=t=>!!(t&&ye.includes(t));function Ur(t,s,n){const r=new URLSearchParams(t);return n===null?r.delete(s):r.set(s,n),r}function fs(){var h,b,y,S,f,P,C;const t=W(),[s]=ke(),n=s.get("preview"),r=c.useRef(null),a=pt(t),o=Te(),i=mt();function u(v){var D,L;if(v==="tests")return ENV.EPICSHOP_DEPLOYED||!t.playground||t.playground.test.type==="none";if(v==="problem"||v==="solution"){if(((D=t[v])==null?void 0:D.dev.type)==="none")return!0;if(ENV.EPICSHOP_DEPLOYED)return((L=t[v])==null?void 0:L.dev.type)!=="browser"}return!!(v==="playground"&&ENV.EPICSHOP_DEPLOYED)}const l=Ar(n)?n:ye.find(v=>!u(v)),x=`/diff?${new URLSearchParams({app1:((h=t.problem)==null?void 0:h.name)??"",app2:((b=t.solution)==null?void 0:b.name)??""})}`;function d(v){v.altKey&&!v.ctrlKey&&!v.shiftKey&&!v.metaKey&&(v.preventDefault(),i(x))}return e.jsx("div",{className:"flex flex-grow flex-col",children:e.jsxs("main",{className:"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1",children:[e.jsxs("div",{className:"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r",children:[e.jsx("h1",{className:"h-14 border-b pl-10 pr-5 text-sm font-medium leading-tight",children:e.jsxs("div",{className:"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2",children:[e.jsxs("div",{className:"flex items-center justify-start gap-x-2 uppercase",children:[e.jsxs(ae,{to:`/${a.exerciseNumber}`,className:"hover:underline",children:[a.exerciseNumber,". ",a.exerciseTitle]}),"/",e.jsxs(ae,{to:".",className:"hover:underline",children:[a.stepNumber,". ",a.title," (",a.emoji," ",a.type,")"]})]}),t.problem&&((y=t.playground)==null?void 0:y.appName)!==t.problem.name?e.jsx(Fe,{appName:t.problem.name}):null]})}),e.jsx("article",{id:t.articleId,className:"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-10 pt-8 scrollbar-thin scrollbar-thumb-scrollbar",children:t.exerciseStepApp.instructionsCode?e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(sr,{inBrowserBrowserRef:r})}):e.jsx("p",{children:"No instructions yet..."})},t.articleId),e.jsx(ht,{elementQuery:`#${t.articleId}`},`scroll-${t.articleId}`),t.type==="solution"?e.jsx(rn,{type:"step",exerciseNumber:t.exerciseStepApp.exerciseNumber,stepNumber:t.exerciseStepApp.stepNumber,className:"h-14 border-t px-6"}):null,e.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[e.jsx("div",{children:e.jsx("div",{className:"h-full",children:e.jsx(Lr,{})})}),e.jsx(Xt,{appName:t.exerciseStepApp.name,relativePath:t.exerciseStepApp.relativePath}),e.jsx(nn,{prev:t.prevStepLink?{to:t.prevStepLink.to,"aria-label":"Previous Step"}:null,next:t.nextStepLink?{to:t.nextStepLink.to,"aria-label":"Next Step"}:null})]})]}),e.jsxs(Tn,{className:"relative col-span-1 row-span-1 flex flex-col overflow-y-auto",value:l,children:[e.jsx(Dn,{className:"h-14 min-h-14 overflow-x-hidden border-b scrollbar-thin scrollbar-thumb-scrollbar",children:ye.map(v=>{const D=u(v);return e.jsx(On,{value:v,hidden:D,asChild:!0,children:e.jsx(ae,{id:`${v}-tab`,className:ee("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",D?"hidden":"inline-block"),preventScrollReset:!0,prefetch:"intent",onClick:d,to:v==="diff"&&o?x:`?${Ur(s,"preview",v==="playground"?null:v)}`,children:v})},v)})}),e.jsxs("div",{className:"relative z-10 flex flex-grow flex-col overflow-y-auto",children:[e.jsx(se,{value:"playground",className:"flex flex-grow items-center justify-center radix-state-inactive:hidden",children:e.jsx(Xn,{appInfo:t.playground,problemAppName:(S=t.problem)==null?void 0:S.name,inBrowserBrowserRef:r,allApps:t.allApps,isUpToDate:((f=t.playground)==null?void 0:f.isUpToDate)??!1})}),e.jsx(se,{value:"problem",className:"flex flex-grow items-center justify-center radix-state-inactive:hidden",children:e.jsx(we,{appInfo:t.problem,inBrowserBrowserRef:r})}),e.jsx(se,{value:"solution",className:"flex flex-grow items-center justify-center radix-state-inactive:hidden",children:e.jsx(we,{appInfo:t.solution,inBrowserBrowserRef:r})}),e.jsx(se,{value:"tests",className:"flex flex-grow items-start justify-center overflow-hidden radix-state-inactive:hidden",children:e.jsx(yr,{appInfo:t.playground,problemAppName:(P=t.problem)==null?void 0:P.name,allApps:t.allApps,isUpToDate:((C=t.playground)==null?void 0:C.isUpToDate)??!1})}),e.jsx(se,{value:"diff",className:"flex h-full flex-grow items-start justify-center radix-state-inactive:hidden",children:e.jsx(zt,{diff:t.diff,allApps:t.allApps})}),e.jsx(se,{value:"chat",className:"flex h-full flex-grow items-start justify-center radix-state-inactive:hidden",children:e.jsx(An,{})})]})]})]})})}function ps(){return e.jsx(tn,{statusHandlers:{404:()=>e.jsx("p",{children:"Sorry, we couldn't find an app here."})}})}export{ps as ErrorBoundary,fs as default,ds as meta};
2
- //# sourceMappingURL=_layout-BSoUgboG.js.map
@@ -1,2 +0,0 @@
1
- import{r as j,j as e,O as K,b as Q}from"./index-BDqSZ0-h.js";import{c as x}from"./clsx-B-dksMZM.js";import{b as q,s as Y,c as X,d as Z,e as M,m as h,u as ee,f as te}from"./progress-mfa_5CZx.js";import{T as se}from"./index-Dc59VwXx.js";import{c as f,I as b}from"./misc-C1rq7sPa.js";import{S as I,T as ne,a as D,b as $,c as V}from"./tooltip-BlVFw-is.js";import{b as S}from"./user-p2QVtDZI.js";import{a as O}from"./presence-BF7lWuVd.js";import{L as u,u as ae,N as W}from"./components-BM_XUa9h.js";import"./index-B8k-Gd1G.js";import"./client-hints-B2pbEa_9.js";function re(t){t.values.forEach(s=>s.stop())}function P(t,s){[...s].reverse().forEach(o=>{const l=t.getVariant(o);l&&Y(t,l),t.variantChildren&&t.variantChildren.forEach(r=>{P(r,s)})})}function oe(t,s){if(Array.isArray(s))return P(t,s);if(typeof s=="string")return P(t,[s]);Y(t,s)}function le(){const t=new Set,s={subscribe(n){return t.add(n),()=>void t.delete(n)},start(n,o){const l=[];return t.forEach(r=>{l.push(q(r,n,{transitionOverride:o}))}),Promise.all(l)},set(n){return t.forEach(o=>{oe(o,n)})},stop(){t.forEach(n=>{re(n)})},mount(){return()=>{s.stop()}}};return s}function _(){const t=X(le);return Z(t.mount,[]),t}const H=["opacity-70","opacity-80","opacity-90","opacity-100"],U=["shadow-[0_0_2px_0_rgba(0,0,0,0.3)]","shadow-[0_0_4px_0_rgba(0,0,0,0.3)]","shadow-[0_0_7px_0_rgba(0,0,0,0.3)]","shadow-[0_0_10px_0_rgba(0,0,0,0.3)]"];function A(t){const s=Math.round(t*H.length-1),n=Math.round(t*U.length-1);return f("shadow-purple-700 hover:opacity-100 focus:opacity-100 dark:shadow-purple-200",H[s]??"opacity-60",U[n]??"shadow-none",t===1?"animate-pulse hover:animate-none focus:animate-none":null)}function ie({isMenuOpened:t}){const s=S(),{users:n}=O(),o=t?17:0,l=n.length-o;if(!n.length)return null;const r=t&&n.length===1?e.jsx(u,{target:"_blank",rel:"noopener noreferrer",to:"https://www.youtube.com/watch?v=w6Q3mHyzn78",children:e.jsx("img",{alt:"Tiffany Tunes",className:f("h-8 w-8 rounded-full border object-cover",A(1)),src:"https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/277090714-b26e5961-4ee5-4c20-abdb-b04c1c480f2b.png"})}):null,m=`${l}${t?" more ":" "}Epic Web Dev${l===1?"":"s"} working now`;return e.jsx("div",{className:"flex flex-wrap items-center gap-2",children:e.jsxs(ne,{children:[n.slice(0,o).map(({user:a,score:c})=>{const p=A(c),d=ce(a.location);return e.jsxs(D,{children:[e.jsx($,{asChild:!0,children:a.avatarUrl?e.jsx("img",{tabIndex:0,alt:a.name||"Epic Web Dev",className:f("h-8 w-8 rounded-full border object-cover",p),src:a.avatarUrl}):e.jsx("div",{tabIndex:0,"aria-label":a.name||"Epic Web Dev",className:f("flex h-8 w-8 items-center justify-center rounded-full border",p),children:e.jsx(b,{name:"User"})})}),e.jsx(V,{children:e.jsxs("span",{className:"flex flex-col items-center justify-center gap-1",children:[e.jsxs("span",{children:[a.name||"An EPIC Web Dev"," ",d?` is working ${c===1&&(s==null?void 0:s.id)!==a.id?"with you":""} on`:null]}),d!=null&&d.line1?e.jsx("span",{children:d.line1}):null,d!=null&&d.line2?e.jsx("span",{children:d.line2}):null]})})]},a.id)}),r,l>0?e.jsxs(D,{children:[e.jsx($,{asChild:!0,children:e.jsx("div",{tabIndex:0,"aria-label":m,className:f("flex items-center justify-center rounded-full border bg-accent text-xs text-accent-foreground",t?"h-8 w-8":"h-6 w-6"),children:e.jsx("span",{className:f("pointer-events-none overflow-hidden text-ellipsis whitespace-nowrap text-center",t?"w-8":"w-6"),children:t?`+${l}`:l})})}),e.jsx(V,{children:m})]}):null]})})}function Ce(){const t=S(),[s,n]=j.useState(!1);return e.jsxs("div",{className:"flex flex-col",children:[t?null:e.jsx(de,{}),e.jsxs("div",{className:f("flex flex-grow",{"h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))]":!t,"h-[calc(100vh-112px-env(safe-area-inset-top)-env(safe-area-inset-bottom))] sm:h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))]":ENV.EPICSHOP_DEPLOYED,"h-[calc(100vh-env(safe-area-inset-top)-env(safe-area-inset-bottom))]":t}),children:[e.jsx(fe,{isMenuOpened:s,onMenuOpenChange:n}),e.jsx("div",{className:f("h-full w-full max-w-[calc(100%-56px)]",s?"hidden md:block":""),children:e.jsx(K,{})})]})]})}function ce(t){if(!t)return null;const{exercise:s}=t,n=[s?[s.exerciseNumber,s.stepNumber].filter(Boolean).map(o=>o.toString().padStart(2,"0")).join("/"):null,s==null?void 0:s.type].filter(Boolean).join(" - ");return{line1:t.workshopTitle,line2:n}}function de(){return e.jsxs("div",{className:f("z-10 flex items-center justify-between border-b bg-gradient-to-tr from-blue-500 to-indigo-500 pl-4 text-white",ENV.EPICSHOP_DEPLOYED?"h-[112px] md:h-[64px]":"h-16"),children:[e.jsxs("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[e.jsx(b,{name:"EpicWeb",size:"lg"}),e.jsxs("div",{className:"flex flex-1 flex-wrap items-center",children:[e.jsxs("p",{className:"mr-2",children:["Welcome to the"," ",e.jsx(u,{to:"https://www.epicweb.dev",className:"underline",target:"_blank",children:"EpicWeb.dev"})," ","Workshop app!"]}),ENV.EPICSHOP_DEPLOYED?e.jsxs("small",{className:"text-sm",children:["This is the deployed version."," ",ENV.EPICSHOP_GITHUB_ROOT?e.jsx(u,{className:"underline",target:"_blank",rel:"noopener noreferrer",to:ENV.EPICSHOP_GITHUB_ROOT,children:"Run locally"}):null," ","for full experience."]}):null]})]}),e.jsxs("div",{className:"flex h-full flex-col items-center md:flex-row",children:[e.jsxs(u,{to:"https://www.epicweb.dev",target:"_blank",className:"flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold",children:[e.jsx("span",{className:"drop-shadow-sm",children:"Join Epic Web"}),e.jsx("span",{children:"↗︎"})]}),e.jsxs(u,{to:ENV.EPICSHOP_DEPLOYED?"https://www.epicweb.dev/login":"/login",className:"flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30",children:[e.jsx(b,{name:"User",size:"lg"}),e.jsx("span",{className:"drop-shadow-sm",children:"Login"})]})]})]})}const z={hidden:{opacity:0,x:-20},visible:{opacity:1,x:0}};function ue({exerciseNumber:t,children:s}){const n=ee(t);return e.jsx(h.li,{variants:z,className:f("py-[6px] first:pt-3 last:pb-3",n?`${n} before:border-t`:null),children:e.jsx("span",{className:"ml-2",children:s})})}function C({children:t,...s}){const n=te(s);return e.jsx(h.li,{variants:z,className:f("py-[6px] first:pt-3 last:pb-3",n?`${n} before:border-t`:null),children:e.jsx("span",{className:"ml-2",children:t})})}const k=400;function fe({isMenuOpened:t,onMenuOpenChange:s}){const n=ae(),o=S(),l=M(),r=Q(),{users:m}=O(),a=n.exercises.find(i=>i.exerciseNumber===Number(r.exerciseNumber)),c=r.type==="solution"?a==null?void 0:a.solutions.find(i=>i.stepNumber===Number(r.stepNumber)):r.type==="problem"?a==null?void 0:a.problems.find(i=>i.stepNumber===Number(r.stepNumber)):null,p=_(),d={close:{width:56},open:{width:k}},g={visible:{opacity:1,transition:{duration:.05,when:"beforeChildren",staggerChildren:.03}},hidden:{opacity:0}},L=Number(r.exerciseNumber).toString().padStart(2,"0");return e.jsx("nav",{className:"flex border-r",children:e.jsx(h.div,{initial:t?"open":"close",variants:d,animate:p,children:e.jsxs("div",{className:"flex h-full flex-col items-center justify-between",children:[e.jsx(he,{title:n.workshopTitle,menuControls:p,isMenuOpened:t,setMenuOpened:s}),t&&e.jsxs(h.div,{style:{width:k},className:"flex flex-grow flex-col justify-between overflow-y-auto p-6 scrollbar-thin scrollbar-thumb-scrollbar",initial:{opacity:0},animate:{opacity:1},children:[e.jsx(h.ul,{variants:g,initial:"hidden",animate:"visible",className:"flex flex-col",children:n.exercises.map(({exerciseNumber:i,title:B,steps:R})=>{const N=Number(r.exerciseNumber)===i,F=!N&&n.playground.exerciseNumber===i,v=i.toString().padStart(2,"0");return e.jsxs(ue,{exerciseNumber:i,children:[e.jsxs(u,{prefetch:"intent",to:`/${v}`,className:x("relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',{"bg-foreground text-background":N}),children:[B,F?" 🛝":null]}),N?e.jsxs(h.ul,{variants:g,initial:"hidden",animate:"visible",className:"ml-4 mt-4 flex flex-col",children:[e.jsx(C,{type:"instructions",exerciseNumber:i,children:e.jsx(u,{to:`/${v}`,prefetch:"intent",className:x('relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',{"bg-foreground text-background":!r.stepNumber}),children:"Intro"})},i),R.filter(Boolean).map(({name:y,stepNumber:w,title:T})=>{const G=Number(r.stepNumber)===w,E=w.toString().padStart(2,"0"),J=y===n.playground.appName;return e.jsx(C,{type:"step",stepNumber:w,exerciseNumber:i,children:e.jsx(u,{to:`/${v}/${E}`,prefetch:"intent",className:x('relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',{"bg-foreground text-background":G}),children:J?`${E}. ${T} 🛝`:`${E}. ${T}`})},w)}),e.jsx(C,{type:"finished",exerciseNumber:i,children:e.jsx(W,{to:`/${v}/finished`,prefetch:"intent",className:({isActive:y})=>x('relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',{"bg-foreground text-background":y}),children:"📝 Elaboration"})})]}):null]},i)})}),e.jsx("div",{className:"mt-6",children:e.jsx(W,{to:"/finished",className:({isActive:i})=>x("relative whitespace-nowrap text-lg font-bold outline-none hover:underline focus:underline",{'bg-black text-white after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""]':i}),children:"📝 Workshop Feedback"})})]}),!t&&e.jsx("div",{className:"flex flex-grow flex-col justify-center",children:e.jsxs("div",{className:"orientation-sideways w-full font-mono text-sm font-medium uppercase leading-none",children:[a!=null&&a.title?e.jsx(u,{to:`/${L}`,children:a.title}):null,a!=null&&a.title&&(c!=null&&c.title)?" — ":null,c!=null&&c.title?e.jsx(u,{to:`/${L}/${c.stepNumber.toString().padStart(2,"0")}`,children:c.title}):null]})}),e.jsx("div",{className:f("flex w-full items-center justify-start border-t p-4 transition-[height]",t&&m.length>4?"h-28":"h-14"),style:t?{width:k}:{},children:e.jsx(ie,{isMenuOpened:t})}),ENV.EPICSHOP_DEPLOYED?null:o?e.jsx(I,{content:t?null:"Your account",children:e.jsxs(u,{className:"flex h-14 w-full items-center justify-start space-x-3 border-t px-4 py-4 text-center no-underline hover:underline",to:"/account",children:[o.avatarUrl?e.jsx("img",{alt:o.name??o.email,src:o.avatarUrl,className:"h-full rounded-full"}):e.jsx(b,{name:"User",className:"flex-shrink-0",size:"lg"}),t?e.jsx(h.div,{className:"flex items-center whitespace-nowrap",initial:{opacity:0},animate:{opacity:1},children:"Your Account"}):e.jsx("span",{className:"sr-only",children:"Your account"})]})}):null,ENV.EPICSHOP_DEPLOYED?null:o&&l?e.jsx(I,{content:t?null:"Continue to next lesson",children:e.jsxs(u,{to:l,prefetch:"intent",className:x("flex h-14 w-full items-center space-x-3 border-t px-4 py-4 pl-[18px] no-underline hover:underline"),state:{from:"continue next lesson button"},children:[e.jsx(b,{name:"FastForward",className:"flex-shrink-0",size:"md"}),t?e.jsx(h.div,{className:"flex items-center whitespace-nowrap",initial:{opacity:0},animate:{opacity:1},children:"Continue to next lesson"}):e.jsx("span",{className:"sr-only",children:"Continue to next lesson"})]})}):null,e.jsx("div",{className:"mb-4 w-full self-start border-t pl-3 pt-[15px]",children:e.jsx(se,{})})]})})})}function he({title:t,isMenuOpened:s,setMenuOpened:n,menuControls:o}){const l={open:{d:"M3.06061 2.99999L21.0606 21"},closed:{d:"M0 9.5L24 9.5"}},r={open:{d:"M3.00006 21.0607L21 3.06064"},moving:{d:"M0 14.5L24 14.5"},closed:{d:"M0 14.5L15 14.5"}},m=_(),a=_();async function c(){o.start(s?"close":"open"),n(!s),s?(m.start(l.closed),await a.start(r.moving),a.start(r.closed)):(await a.start(r.moving),m.start(l.open),a.start(r.open))}const p=j.useRef(c);return j.useEffect(()=>{p.current=c}),j.useEffect(()=>{if(!s)return;function d(g){g.key==="Escape"&&p.current()}return document.addEventListener("keyup",d),()=>document.removeEventListener("keyup",d)},[s]),e.jsxs("div",{className:"relative inline-flex h-14 w-full items-center justify-between overflow-hidden border-b",children:[e.jsx("button",{className:"flex h-14 w-14 items-center justify-center","aria-label":"Open Navigation menu",onClick:c,children:e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",children:[e.jsx(h.path,{...l.closed,animate:m,transition:{duration:.2},stroke:"currentColor",strokeWidth:1.5}),e.jsx(h.path,{...r.closed,animate:a,transition:{duration:.2},stroke:"currentColor",strokeWidth:1.5})]})}),s&&e.jsx(h.p,{transition:{delay:.2},initial:{opacity:0,y:5},animate:{opacity:1,y:0},className:"absolute right-5 whitespace-nowrap font-mono text-sm uppercase",children:e.jsx(u,{to:"/",children:t})})]})}export{Ce as default};
2
- //# sourceMappingURL=_layout-C8fK4Z98.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_layout-C8fK4Z98.js","sources":["../../../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","../../../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs","../../../app/routes/_app+/_layout.tsx"],"sourcesContent":["import { invariant } from '../../utils/errors.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n let hasMounted = false;\n /**\n * A collection of linked component animation controls.\n */\n const subscribers = new Set();\n const controls = {\n subscribe(visualElement) {\n subscribers.add(visualElement);\n return () => void subscribers.delete(visualElement);\n },\n start(definition, transitionOverride) {\n invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n const animations = [];\n subscribers.forEach((visualElement) => {\n animations.push(animateVisualElement(visualElement, definition, {\n transitionOverride,\n }));\n });\n return Promise.all(animations);\n },\n set(definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach((visualElement) => {\n setValues(visualElement, definition);\n });\n },\n stop() {\n subscribers.forEach((visualElement) => {\n stopAnimation(visualElement);\n });\n },\n mount() {\n hasMounted = true;\n return () => {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls, setValues };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return <motion.div animate={controls} />\n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n const controls = useConstant(animationControls);\n useIsomorphicLayoutEffect(controls.mount, []);\n return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n","import {\n\textractNumbersAndTypeFromAppNameOrPath,\n\tgetExercises,\n\tgetPlaygroundAppName,\n\tgetWorkshopTitle,\n} from '@epic-web/workshop-utils/apps.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\ttype LoaderFunctionArgs,\n\ttype HeadersFunction,\n\tjson,\n} from '@remix-run/node'\nimport {\n\tLink,\n\tNavLink,\n\tOutlet,\n\tuseLoaderData,\n\tuseParams,\n} from '@remix-run/react'\nimport { clsx } from 'clsx'\nimport {\n\ttype AnimationControls,\n\tmotion,\n\tuseAnimationControls,\n} from 'framer-motion'\nimport * as React from 'react'\nimport {\n\tuseNextExerciseRoute,\n\tuseExerciseProgressClassName,\n\ttype ProgressItemSearch,\n\tuseProgressItemClassName,\n} from '../progress.tsx'\nimport { ThemeSwitch } from '../theme/index.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport {\n\tSimpleTooltip,\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from '#app/components/ui/tooltip.tsx'\nimport { useOptionalUser } from '#app/components/user.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { type User, usePresence } from '#app/utils/presence.tsx'\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('stepLoader')\n\tconst [exercises, workshopTitle, playgroundAppName] = await Promise.all([\n\t\tgetExercises({ request, timings }),\n\t\tgetWorkshopTitle(),\n\t\tgetPlaygroundAppName(),\n\t])\n\n\tconst playground = {\n\t\tappName: playgroundAppName,\n\t\texerciseNumber: Number(\n\t\t\textractNumbersAndTypeFromAppNameOrPath(playgroundAppName ?? '')\n\t\t\t\t?.exerciseNumber,\n\t\t),\n\t}\n\n\tconst result = json(\n\t\t{\n\t\t\tworkshopTitle,\n\t\t\texercises: exercises.map(e => ({\n\t\t\t\texerciseNumber: e.exerciseNumber,\n\t\t\t\ttitle: e.title,\n\t\t\t\tsolutions: e.solutions.map(({ stepNumber, title, name }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle,\n\t\t\t\t\tname,\n\t\t\t\t})),\n\t\t\t\tproblems: e.problems.map(({ stepNumber, title, name }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle,\n\t\t\t\t\tname,\n\t\t\t\t})),\n\t\t\t\tsteps: e.steps.map(({ stepNumber, problem, solution }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle: problem?.title ?? solution?.title ?? 'Unknown',\n\t\t\t\t\tname: problem?.name ?? solution?.name ?? 'Unknown',\n\t\t\t\t})),\n\t\t\t})),\n\t\t\tplayground,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\tVary: 'Cookie',\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n\treturn result\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\tVary: 'Cookie',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst opacities = ['opacity-70', 'opacity-80', 'opacity-90', 'opacity-100']\nconst shadows = [\n\t'shadow-[0_0_2px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_4px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_7px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_10px_0_rgba(0,0,0,0.3)]',\n]\nfunction getScoreClassNames(score: number) {\n\tconst opacityNumber = Math.round(score * opacities.length - 1)\n\tconst shadowNumber = Math.round(score * shadows.length - 1)\n\treturn cn(\n\t\t'shadow-purple-700 hover:opacity-100 focus:opacity-100 dark:shadow-purple-200',\n\t\topacities[opacityNumber] ?? 'opacity-60',\n\t\tshadows[shadowNumber] ?? 'shadow-none',\n\t\tscore === 1 ? 'animate-pulse hover:animate-none focus:animate-none' : null,\n\t)\n}\n\nfunction FacePile({ isMenuOpened }: { isMenuOpened: boolean }) {\n\tconst loggedInUser = useOptionalUser()\n\tconst { users } = usePresence()\n\tconst limit = isMenuOpened ? 17 : 0\n\tconst numberOverLimit = users.length - limit\n\tif (!users.length) return null\n\tconst tiffany =\n\t\tisMenuOpened && users.length === 1 ? (\n\t\t\t<Link\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tto=\"https://www.youtube.com/watch?v=w6Q3mHyzn78\"\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\talt=\"Tiffany Tunes\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-8 w-8 rounded-full border object-cover',\n\t\t\t\t\t\tgetScoreClassNames(1),\n\t\t\t\t\t)}\n\t\t\t\t\tsrc=\"https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/277090714-b26e5961-4ee5-4c20-abdb-b04c1c480f2b.png\"\n\t\t\t\t/>\n\t\t\t</Link>\n\t\t) : null\n\tconst overLimitLabel = `${numberOverLimit}${\n\t\tisMenuOpened ? ' more ' : ' '\n\t}Epic Web Dev${numberOverLimit === 1 ? '' : 's'} working now`\n\treturn (\n\t\t<div className=\"flex flex-wrap items-center gap-2\">\n\t\t\t<TooltipProvider>\n\t\t\t\t{users.slice(0, limit).map(({ user, score }) => {\n\t\t\t\t\tconst scoreClassNames = getScoreClassNames(score)\n\t\t\t\t\tconst locationLabel = getLocationLabel(user.location)\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tooltip key={user.id}>\n\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t{user.avatarUrl ? (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\talt={user.name || 'Epic Web Dev'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-8 w-8 rounded-full border object-cover',\n\t\t\t\t\t\t\t\t\t\t\tscoreClassNames,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\tsrc={user.avatarUrl}\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\t<div\n\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\taria-label={user.name || 'Epic Web Dev'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex h-8 w-8 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\t\t\tscoreClassNames,\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<Icon name=\"User\" />\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</TooltipTrigger>\n\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t<span className=\"flex flex-col items-center justify-center gap-1\">\n\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t{user.name || 'An EPIC Web Dev'}{' '}\n\t\t\t\t\t\t\t\t\t\t{locationLabel\n\t\t\t\t\t\t\t\t\t\t\t? ` is working ${\n\t\t\t\t\t\t\t\t\t\t\t\t\tscore === 1 && loggedInUser?.id !== user.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'with you'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t\t\t\t} on`\n\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{locationLabel?.line1 ? (\n\t\t\t\t\t\t\t\t\t\t<span>{locationLabel.line1}</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{locationLabel?.line2 ? (\n\t\t\t\t\t\t\t\t\t\t<span>{locationLabel.line2}</span>\n\t\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</TooltipContent>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\t{tiffany}\n\t\t\t\t{numberOverLimit > 0 ? (\n\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\taria-label={overLimitLabel}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'flex items-center justify-center rounded-full border bg-accent text-xs text-accent-foreground',\n\t\t\t\t\t\t\t\t\tisMenuOpened ? 'h-8 w-8' : 'h-6 w-6',\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<span\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'pointer-events-none overflow-hidden text-ellipsis whitespace-nowrap text-center',\n\t\t\t\t\t\t\t\t\t\tisMenuOpened ? 'w-8' : 'w-6',\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\t{isMenuOpened ? `+${numberOverLimit}` : numberOverLimit}\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</TooltipTrigger>\n\t\t\t\t\t\t<TooltipContent>{overLimitLabel}</TooltipContent>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) : null}\n\t\t\t</TooltipProvider>\n\t\t</div>\n\t)\n}\n\nexport default function App() {\n\tconst user = useOptionalUser()\n\n\tconst [isMenuOpened, setMenuOpened] = React.useState(false)\n\n\treturn (\n\t\t<div className=\"flex flex-col\">\n\t\t\t{user ? null : <EpicWebBanner />}\n\t\t\t<div\n\t\t\t\tclassName={cn('flex flex-grow', {\n\t\t\t\t\t'h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))]':\n\t\t\t\t\t\t!user,\n\t\t\t\t\t'h-[calc(100vh-112px-env(safe-area-inset-top)-env(safe-area-inset-bottom))] sm:h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))]':\n\t\t\t\t\t\tENV.EPICSHOP_DEPLOYED,\n\t\t\t\t\t'h-[calc(100vh-env(safe-area-inset-top)-env(safe-area-inset-bottom))]':\n\t\t\t\t\t\tuser,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Navigation\n\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\tonMenuOpenChange={setMenuOpened}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-full w-full max-w-[calc(100%-56px)]',\n\t\t\t\t\t\tisMenuOpened ? 'hidden md:block' : '',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Outlet />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction getLocationLabel(location: User['location']) {\n\tif (!location) return null\n\n\tconst { exercise } = location\n\n\tconst exercisePortion = [\n\t\texercise\n\t\t\t? [exercise.exerciseNumber, exercise.stepNumber]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map(s => s.toString().padStart(2, '0'))\n\t\t\t\t\t.join('/')\n\t\t\t: null,\n\t\texercise?.type,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' - ')\n\treturn { line1: location.workshopTitle, line2: exercisePortion }\n}\n\nfunction EpicWebBanner() {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'z-10 flex items-center justify-between border-b bg-gradient-to-tr from-blue-500 to-indigo-500 pl-4 text-white',\n\t\t\t\tENV.EPICSHOP_DEPLOYED ? 'h-[112px] md:h-[64px]' : 'h-16',\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex flex-1 flex-wrap items-center gap-4\">\n\t\t\t\t<Icon name=\"EpicWeb\" size=\"lg\" />\n\t\t\t\t<div className=\"flex flex-1 flex-wrap items-center\">\n\t\t\t\t\t<p className=\"mr-2\">\n\t\t\t\t\t\tWelcome to the{' '}\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"https://www.epicweb.dev\"\n\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tEpicWeb.dev\n\t\t\t\t\t\t</Link>{' '}\n\t\t\t\t\t\tWorkshop app!\n\t\t\t\t\t</p>\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? (\n\t\t\t\t\t\t<small className=\"text-sm\">\n\t\t\t\t\t\t\tThis is the deployed version.{' '}\n\t\t\t\t\t\t\t{ENV.EPICSHOP_GITHUB_ROOT ? (\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\tto={ENV.EPICSHOP_GITHUB_ROOT}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tRun locally\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t) : null}{' '}\n\t\t\t\t\t\t\tfor full experience.\n\t\t\t\t\t\t</small>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex h-full flex-col items-center md:flex-row\">\n\t\t\t\t<Link\n\t\t\t\t\tto=\"https://www.epicweb.dev\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold\"\n\t\t\t\t>\n\t\t\t\t\t<span className=\"drop-shadow-sm\">Join Epic Web</span>\n\t\t\t\t\t<span>↗︎</span>\n\t\t\t\t</Link>\n\t\t\t\t<Link\n\t\t\t\t\tto={\n\t\t\t\t\t\tENV.EPICSHOP_DEPLOYED ? 'https://www.epicweb.dev/login' : '/login'\n\t\t\t\t\t}\n\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30\"\n\t\t\t\t>\n\t\t\t\t\t<Icon name=\"User\" size=\"lg\" />\n\t\t\t\t\t<span className=\"drop-shadow-sm\">Login</span>\n\t\t\t\t</Link>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst itemVariants = {\n\thidden: { opacity: 0, x: -20 },\n\tvisible: { opacity: 1, x: 0 },\n}\nfunction NavigationExerciseListItem({\n\texerciseNumber,\n\tchildren,\n}: {\n\texerciseNumber: number\n\tchildren: React.ReactNode\n}) {\n\tconst progressClassName = useExerciseProgressClassName(exerciseNumber)\n\treturn (\n\t\t<motion.li\n\t\t\tvariants={itemVariants}\n\t\t\tclassName={cn(\n\t\t\t\t// add gap of 3 to children, but using padding so the progress extends through the whole height\n\t\t\t\t'py-[6px] first:pt-3 last:pb-3',\n\t\t\t\tprogressClassName ? `${progressClassName} before:border-t` : null,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"ml-2\">{children}</span>\n\t\t</motion.li>\n\t)\n}\n\nfunction NavigationExerciseStepListItem({\n\tchildren,\n\t...progressItemSearch\n}: {\n\tchildren: React.ReactNode\n} & ProgressItemSearch) {\n\tconst progressClassName = useProgressItemClassName(progressItemSearch)\n\treturn (\n\t\t<motion.li\n\t\t\tvariants={itemVariants}\n\t\t\tclassName={cn(\n\t\t\t\t// add gap of 3 to children, but using padding so the progress extends through the whole height\n\t\t\t\t'py-[6px] first:pt-3 last:pb-3',\n\t\t\t\tprogressClassName ? `${progressClassName} before:border-t` : null,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"ml-2\">{children}</span>\n\t\t</motion.li>\n\t)\n}\n\nconst OPENED_MENU_WIDTH = 400\n\nfunction Navigation({\n\tisMenuOpened,\n\tonMenuOpenChange: setMenuOpened,\n}: {\n\tisMenuOpened: boolean\n\tonMenuOpenChange: (change: boolean) => void\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tconst user = useOptionalUser()\n\tconst nextExerciseRoute = useNextExerciseRoute()\n\tconst params = useParams()\n\tconst { users } = usePresence()\n\n\tconst exercise = data.exercises.find(\n\t\te => e.exerciseNumber === Number(params.exerciseNumber),\n\t)\n\tconst app =\n\t\tparams.type === 'solution'\n\t\t\t? exercise?.solutions.find(\n\t\t\t\t\ts => s.stepNumber === Number(params.stepNumber),\n\t\t\t\t)\n\t\t\t: params.type === 'problem'\n\t\t\t\t? exercise?.problems.find(\n\t\t\t\t\t\tp => p.stepNumber === Number(params.stepNumber),\n\t\t\t\t\t)\n\t\t\t\t: null\n\n\t// container\n\tconst menuControls = useAnimationControls()\n\tconst menuVariants = {\n\t\tclose: { width: 56 },\n\t\topen: { width: OPENED_MENU_WIDTH },\n\t}\n\n\t// items\n\tconst listVariants = {\n\t\tvisible: {\n\t\t\topacity: 1,\n\t\t\ttransition: {\n\t\t\t\tduration: 0.05,\n\t\t\t\twhen: 'beforeChildren',\n\t\t\t\tstaggerChildren: 0.03,\n\t\t\t},\n\t\t},\n\t\thidden: {\n\t\t\topacity: 0,\n\t\t},\n\t}\n\tconst exNum = Number(params.exerciseNumber).toString().padStart(2, '0')\n\n\treturn (\n\t\t<nav className=\"flex border-r\">\n\t\t\t<motion.div\n\t\t\t\tinitial={isMenuOpened ? 'open' : 'close'}\n\t\t\t\tvariants={menuVariants}\n\t\t\t\tanimate={menuControls}\n\t\t\t>\n\t\t\t\t<div className=\"flex h-full flex-col items-center justify-between\">\n\t\t\t\t\t<NavToggle\n\t\t\t\t\t\ttitle={data.workshopTitle}\n\t\t\t\t\t\tmenuControls={menuControls}\n\t\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\t\tsetMenuOpened={setMenuOpened}\n\t\t\t\t\t/>\n\t\t\t\t\t{isMenuOpened && (\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tstyle={{ width: OPENED_MENU_WIDTH }}\n\t\t\t\t\t\t\tclassName=\"flex flex-grow flex-col justify-between overflow-y-auto p-6 scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\tclassName=\"flex flex-col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{data.exercises.map(({ exerciseNumber, title, steps }) => {\n\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\tNumber(params.exerciseNumber) === exerciseNumber\n\t\t\t\t\t\t\t\t\tconst showPlayground =\n\t\t\t\t\t\t\t\t\t\t!isActive &&\n\t\t\t\t\t\t\t\t\t\tdata.playground.exerciseNumber === exerciseNumber\n\t\t\t\t\t\t\t\t\tconst exerciseNum = exerciseNumber.toString().padStart(2, '0')\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<NavigationExerciseListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\tto={`/${exerciseNum}`}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ 'bg-foreground text-background': isActive },\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t\t\t{showPlayground ? ' 🛝' : null}\n\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t{isActive ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-4 mt-4 flex flex-col\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"instructions\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={`/${exerciseNum}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!params.stepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tIntro\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{steps\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(({ name, stepNumber, title }) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNumber(params.stepNumber) === stepNumber\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst step = stepNumber\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.padStart(2, '0')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isPlayground =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname === data.playground.appName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"step\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={`/${exerciseNum}/${step}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isPlayground\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${step}. ${title} 🛝`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${step}. ${title}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"finished\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={`/${exerciseNum}/finished`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background': isActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t📝 Elaboration\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t</motion.ul>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</NavigationExerciseListItem>\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</motion.ul>\n\t\t\t\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\tto=\"/finished\"\n\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap text-lg font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'bg-black text-white after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"]':\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\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>\n\t\t\t\t\t\t\t\t\t📝 Workshop Feedback\n\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!isMenuOpened && (\n\t\t\t\t\t\t<div className=\"flex flex-grow flex-col justify-center\">\n\t\t\t\t\t\t\t<div className=\"orientation-sideways w-full font-mono text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t\t\t{exercise?.title ? (\n\t\t\t\t\t\t\t\t\t<Link to={`/${exNum}`}>{exercise.title}</Link>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t{exercise?.title && app?.title ? ' — ' : null}\n\t\t\t\t\t\t\t\t{app?.title ? (\n\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\tto={`/${exNum}/${app.stepNumber\n\t\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t\t.padStart(2, '0')}`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{app.title}\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex w-full items-center justify-start border-t p-4 transition-[height]',\n\t\t\t\t\t\t\tisMenuOpened && users.length > 4 ? 'h-28' : 'h-14',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tstyle={isMenuOpened ? { width: OPENED_MENU_WIDTH } : {}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FacePile isMenuOpened={isMenuOpened} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user ? (\n\t\t\t\t\t\t<SimpleTooltip content={isMenuOpened ? null : 'Your account'}>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tclassName=\"flex h-14 w-full items-center justify-start space-x-3 border-t px-4 py-4 text-center no-underline hover:underline\"\n\t\t\t\t\t\t\t\tto=\"/account\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{user.avatarUrl ? (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\talt={user.name ?? user.email}\n\t\t\t\t\t\t\t\t\t\tsrc={user.avatarUrl}\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-full rounded-full\"\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\t<Icon name=\"User\" className=\"flex-shrink-0\" size=\"lg\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tYour Account\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Your account</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user && nextExerciseRoute ? (\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tcontent={isMenuOpened ? null : 'Continue to next lesson'}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={nextExerciseRoute}\n\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t'flex h-14 w-full items-center space-x-3 border-t px-4 py-4 pl-[18px] no-underline hover:underline',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tstate={{ from: 'continue next lesson button' }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"FastForward\" className=\"flex-shrink-0\" size=\"md\" />\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tContinue to next lesson\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Continue to next lesson</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<div className=\"mb-4 w-full self-start border-t pl-3 pt-[15px]\">\n\t\t\t\t\t\t<ThemeSwitch />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</motion.div>\n\t\t</nav>\n\t)\n}\n\nfunction NavToggle({\n\ttitle,\n\tisMenuOpened,\n\tsetMenuOpened,\n\tmenuControls,\n}: {\n\ttitle: string\n\tisMenuOpened: boolean\n\tsetMenuOpened: (value: boolean) => void\n\tmenuControls: AnimationControls\n}) {\n\tconst path01Variants = {\n\t\topen: { d: 'M3.06061 2.99999L21.0606 21' },\n\t\tclosed: { d: 'M0 9.5L24 9.5' },\n\t}\n\tconst path02Variants = {\n\t\topen: { d: 'M3.00006 21.0607L21 3.06064' },\n\t\tmoving: { d: 'M0 14.5L24 14.5' },\n\t\tclosed: { d: 'M0 14.5L15 14.5' },\n\t}\n\tconst path01Controls = useAnimationControls()\n\tconst path02Controls = useAnimationControls()\n\n\tasync function toggleMenu() {\n\t\tvoid menuControls.start(isMenuOpened ? 'close' : 'open')\n\t\tsetMenuOpened(!isMenuOpened)\n\t\tif (isMenuOpened) {\n\t\t\tvoid path01Controls.start(path01Variants.closed)\n\t\t\tawait path02Controls.start(path02Variants.moving)\n\t\t\tvoid path02Controls.start(path02Variants.closed)\n\t\t} else {\n\t\t\tawait path02Controls.start(path02Variants.moving)\n\t\t\tvoid path01Controls.start(path01Variants.open)\n\t\t\tvoid path02Controls.start(path02Variants.open)\n\t\t}\n\t}\n\n\tconst latestToggleMenu = React.useRef(toggleMenu)\n\tReact.useEffect(() => {\n\t\tlatestToggleMenu.current = toggleMenu\n\t})\n\n\tReact.useEffect(() => {\n\t\tif (!isMenuOpened) return\n\n\t\tfunction handleKeyUp(event: KeyboardEvent) {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tvoid latestToggleMenu.current()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keyup', handleKeyUp)\n\t\treturn () => document.removeEventListener('keyup', handleKeyUp)\n\t}, [isMenuOpened])\n\n\treturn (\n\t\t<div className=\"relative inline-flex h-14 w-full items-center justify-between overflow-hidden border-b\">\n\t\t\t<button\n\t\t\t\tclassName=\"flex h-14 w-14 items-center justify-center\"\n\t\t\t\taria-label=\"Open Navigation menu\"\n\t\t\t\tonClick={toggleMenu}\n\t\t\t>\n\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\t{...path01Variants.closed}\n\t\t\t\t\t\tanimate={path01Controls}\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth={1.5}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\t{...path02Variants.closed}\n\t\t\t\t\t\tanimate={path02Controls}\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth={1.5}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t\t{isMenuOpened && (\n\t\t\t\t<motion.p\n\t\t\t\t\ttransition={{ delay: 0.2 }}\n\t\t\t\t\tinitial={{ opacity: 0, y: 5 }}\n\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\tclassName=\"absolute right-5 whitespace-nowrap font-mono text-sm uppercase\"\n\t\t\t\t>\n\t\t\t\t\t<Link to=\"/\">{title}</Link>\n\t\t\t\t</motion.p>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n"],"names":["stopAnimation","visualElement","value","setVariants","variantLabels","key","variant","setTarget","child","setValues","definition","animationControls","subscribers","controls","transitionOverride","animations","animateVisualElement","useAnimationControls","useConstant","useIsomorphicLayoutEffect","opacities","shadows","getScoreClassNames","score","opacityNumber","shadowNumber","cn","FacePile","isMenuOpened","loggedInUser","useOptionalUser","users","usePresence","limit","numberOverLimit","tiffany","jsx","Link","overLimitLabel","jsxs","TooltipProvider","user","scoreClassNames","locationLabel","getLocationLabel","Tooltip","TooltipTrigger","Icon","TooltipContent","headers","setMenuOpened","React.useState","EpicWebBanner","Navigation","Outlet","location","exercise","exercisePortion","s","itemVariants","NavigationExerciseListItem","exerciseNumber","children","progressClassName","motion","progressItemSearch","useProgressItemClassName","OPENED_MENU_WIDTH","data","useLoaderData","nextExerciseRoute","useNextExerciseRoute","params","useParams","e","app","p","menuControls","menuVariants","listVariants","exNum","NavToggle","title","steps","isActive","showPlayground","exerciseNum","clsx","NavigationExerciseStepListItem","name","stepNumber","title2","isPlayground","step","isActive2","NavLink","SimpleTooltip","ThemeSwitch","path01Variants","path02Variants","path01Controls","path02Controls","toggleMenu","latestToggleMenu","React.useRef","React.useEffect","handleKeyUp","event"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +0,0 @@
1
- import{j as e,O as s}from"./index-BDqSZ0-h.js";function r(){return e.jsx("div",{className:"flex h-full flex-grow",children:e.jsx(s,{})})}export{r as default};
2
- //# sourceMappingURL=_layout-D1A2zp9y.js.map
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-BDqSZ0-h.js";import{B as i}from"./button-Da1iG51o.js";import{I as c}from"./misc-C1rq7sPa.js";import{u as d,a as m}from"./user-p2QVtDZI.js";import{u}from"./presence-BF7lWuVd.js";import{u as x,a as h,L as o,F as a}from"./components-BM_XUa9h.js";import"./clsx-B-dksMZM.js";import"./index-B8k-Gd1G.js";function O(){const r=x(),l=h(),s=d(),t=m(),n=u();return e.jsxs("main",{className:"container flex h-full w-full max-w-3xl flex-grow flex-col items-center justify-center gap-4",children:[e.jsx("img",{className:"h-36 w-36 rounded-full",alt:(t==null?void 0:t.displayName)??s.name??s.email,src:s.avatarUrl}),e.jsx("h1",{className:"mb-1 text-2xl",children:"Your Account"}),e.jsx("p",{className:"text-center text-gray-700 dark:text-gray-300",children:s.name?`Hi ${(t==null?void 0:t.displayName)??s.name}, your device is logged in with ${s.email}.`:`Your device is logged in with ${s.email}.`}),t?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-center text-gray-700 dark:text-gray-300",children:["And you are connected to discord as ",t.displayName," (",t.id,")."]}),e.jsx(l.Form,{method:"post",className:"mt-2",children:e.jsx(i,{varient:"mono",name:"intent",value:"disconnect-discord",children:"Disconnect Discord"})})]}):e.jsxs(o,{to:r.discordAuthUrl,className:"inline-flex items-center gap-2 underline",children:[e.jsx(c,{name:"Discord",size:"lg"}),"Connect Discord"]}),e.jsxs(a,{method:"POST",children:[e.jsx("input",{name:"optOut",type:"hidden",value:n!=null&&n.optOut?"false":"true"}),e.jsxs(i,{varient:"mono",name:"intent",value:"presence-opt-out",children:[n!=null&&n.optOut?"Opt in to":"Opt out of"," presence"]})]}),e.jsx("p",{children:e.jsxs("small",{children:["Note: it is your ",e.jsx("i",{className:"italic",children:"device"})," that's logged in, not your browser. So all browsers on this device will be logged in with the same account on this device."]})}),e.jsx(a,{method:"post",className:"mt-2",children:e.jsx(i,{varient:"primary",name:"intent",value:"logout",children:"Log out"})}),e.jsxs("p",{children:["Check"," ",e.jsx(o,{to:"/onboarding",className:"underline",children:"/onboarding"})," ","if you'd like to review onboarding again."]}),e.jsxs("p",{children:["Check"," ",e.jsx(o,{to:"/support",className:"underline",children:"/support"})," ","if you need support."]})]})}export{O as default};
2
- //# sourceMappingURL=account-BeKnQB9r.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-hints-B2pbEa_9.js","sources":["../../../../../node_modules/@epic-web/client-hints/dist/index.js","../../../../../node_modules/@epic-web/client-hints/dist/color-scheme.js","../../../../../node_modules/@epic-web/client-hints/dist/reduced-motion.js","../../../../../node_modules/@epic-web/client-hints/dist/time-zone.js","../../../app/utils/request-info.ts","../../../app/utils/client-hints.tsx"],"sourcesContent":["export function getHintUtils(hints) {\n function getCookieValue(cookieString, name) {\n const hint = hints[name];\n if (!hint) {\n throw new Error(`Unknown client hint: ${typeof name === 'string' ? name : 'Unknown'}`);\n }\n const value = cookieString\n .split(';')\n .map((c) => c.trim())\n .find((c) => c.startsWith(hint.cookieName + '='))\n ?.split('=')[1];\n return value ? decodeURIComponent(value) : null;\n }\n function getHints(request) {\n const cookieString = typeof document !== 'undefined'\n ? document.cookie\n : typeof request !== 'undefined'\n ? request.headers.get('Cookie') ?? ''\n : '';\n return Object.entries(hints).reduce((acc, [name, hint]) => {\n const hintName = name;\n if ('transform' in hint) {\n // @ts-expect-error - this is fine (PRs welcome though)\n acc[hintName] = hint.transform(getCookieValue(cookieString, hintName) ?? hint.fallback);\n }\n else {\n // @ts-expect-error - this is fine (PRs welcome though)\n acc[hintName] = getCookieValue(cookieString, hintName) ?? hint.fallback;\n }\n return acc;\n }, {});\n }\n /**\n * This returns a string of JavaScript that can be used to check if the client\n * hints have changed and will reload the page if they have.\n */\n function getClientHintCheckScript() {\n return `\n// This block of code allows us to check if the client hints have changed and\n// force a reload of the page with updated hints if they have so you don't get\n// a flash of incorrect content.\nfunction checkClientHints() {\n\tif (!navigator.cookieEnabled) return;\n\n\t// set a short-lived cookie to make sure we can set cookies\n\tdocument.cookie = \"canSetCookies=1; Max-Age=60; SameSite=Lax\";\n\tconst canSetCookies = document.cookie.includes(\"canSetCookies=1\");\n\tdocument.cookie = \"canSetCookies=; Max-Age=-1; path=/\";\n\tif (!canSetCookies) return;\n\n\tconst cookies = document.cookie.split(';').map(c => c.trim()).reduce((acc, cur) => {\n\t\tconst [key, value] = cur.split('=');\n\t\tacc[key] = value;\n\t\treturn acc;\n\t}, {});\n\n\tlet cookieChanged = false;\n\tconst hints = [\n\t${Object.values(hints)\n .map((hint) => {\n const cookieName = JSON.stringify(hint.cookieName);\n return `{ name: ${cookieName}, actual: String(${hint.getValueCode}), value: cookies[${cookieName}] != null ? cookies[${cookieName}] : encodeURIComponent(\"${hint.fallback}\") }`;\n })\n .join(',\\n')}\n\t];\n\tfor (const hint of hints) {\n\t\tdocument.cookie = encodeURIComponent(hint.name) + '=' + encodeURIComponent(hint.actual) + '; Max-Age=31536000; path=/';\n\t\tif (decodeURIComponent(hint.value) !== hint.actual) {\n\t\t\tcookieChanged = true;\n\t\t}\n\t}\n\tif (cookieChanged) window.location.reload();\n}\n\ncheckClientHints();\n`;\n }\n return { getHints, getClientHintCheckScript };\n}\n","export const clientHint = {\n cookieName: 'CH-prefers-color-scheme',\n getValueCode: `window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'`,\n fallback: 'light',\n transform(value) {\n return value === 'dark' ? 'dark' : 'light';\n },\n};\n/**\n * Subscribe to changes in the user's color scheme preference. Optionally pass\n * in a cookie name to use for the cookie that will be set if different from the\n * default.\n */\nexport function subscribeToSchemeChange(subscriber, cookieName = clientHint.cookieName) {\n const schemaMatch = window.matchMedia('(prefers-color-scheme: dark)');\n function handleThemeChange() {\n const value = schemaMatch.matches ? 'dark' : 'light';\n document.cookie = `${cookieName}=${value}; Max-Age=31536000; Path=/`;\n subscriber(value);\n }\n schemaMatch.addEventListener('change', handleThemeChange);\n return function cleanupSchemaChange() {\n schemaMatch.removeEventListener('change', handleThemeChange);\n };\n}\n","export const clientHint = {\n cookieName: 'CH-reduced-motion',\n getValueCode: `window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'reduce' : 'no-preference'`,\n fallback: 'no-preference',\n transform(value) {\n return value === 'reduce' ? 'reduce' : 'no-preference';\n },\n};\n/**\n * Subscribe to changes in the user's motion preference. Optionally pass\n * in a cookie name to use for the cookie that will be set if different from the\n * default.\n */\nexport function subscribeToMotionChange(subscriber, cookieName = clientHint.cookieName) {\n const motionMatch = window.matchMedia('(prefers-reduced-motion: reduce)');\n function handleMotionChange() {\n const value = motionMatch.matches ? 'reduce' : 'no-preference';\n document.cookie = `${cookieName}=${value}; Max-Age=31536000; Path=/`;\n subscriber(value);\n }\n motionMatch.addEventListener('change', handleMotionChange);\n return function cleanupMotionChange() {\n motionMatch.removeEventListener('change', handleMotionChange);\n };\n}\n","export const clientHint = {\n cookieName: 'CH-time-zone',\n getValueCode: 'Intl.DateTimeFormat().resolvedOptions().timeZone',\n fallback: 'UTC',\n};\n","import { type SerializeFrom } from '@remix-run/node'\nimport { useRouteLoaderData } from '@remix-run/react'\nimport { type loader as rootLoader } from '#app/root.tsx'\n\n/**\n * @returns the request info from the root loader\n */\nexport function useRequestInfo() {\n\tconst data = useRouteLoaderData('root') as SerializeFrom<typeof rootLoader>\n\treturn data.requestInfo\n}\n","/**\n * This file contains utilities for using client hints for user preference which\n * are needed by the server, but are only known by the browser.\n */\nimport { getHintUtils } from '@epic-web/client-hints'\nimport {\n\tclientHint as colorSchemeHint,\n\tsubscribeToSchemeChange,\n} from '@epic-web/client-hints/color-scheme'\nimport {\n\tclientHint as reducedMotionHint,\n\tsubscribeToMotionChange,\n} from '@epic-web/client-hints/reduced-motion'\nimport { clientHint as timeZoneHint } from '@epic-web/client-hints/time-zone'\nimport { useRevalidator } from '@remix-run/react'\nimport * as React from 'react'\nimport { useRequestInfo } from './request-info.ts'\n\nconst themeCookieName = 'EpicShop_CH-prefers-color-scheme'\nconst motionCookieName = 'EpicShop_CH-reduced-motion'\nconst hintsUtils = getHintUtils({\n\ttheme: {\n\t\t...colorSchemeHint,\n\t\tcookieName: themeCookieName,\n\t},\n\ttimeZone: {\n\t\t...timeZoneHint,\n\t\tcookieName: 'EpicShop_CH-time-zone',\n\t},\n\treducedMotion: {\n\t\t...reducedMotionHint,\n\t\tcookieName: motionCookieName,\n\t},\n\t// add other hints here\n})\n\nexport const { getHints } = hintsUtils\n\n/**\n * @returns an object with the client hints and their values\n */\nexport function useHints() {\n\tconst requestInfo = useRequestInfo()\n\treturn requestInfo.hints\n}\n\n/**\n * @returns inline script element that checks for client hints and sets cookies\n * if they are not set then reloads the page if any cookie was set to an\n * inaccurate value.\n */\nexport function ClientHintCheck() {\n\tconst { revalidate } = useRevalidator()\n\tReact.useEffect(\n\t\t() => subscribeToSchemeChange(() => revalidate(), themeCookieName),\n\t\t[revalidate],\n\t)\n\tReact.useEffect(\n\t\t() => subscribeToMotionChange(() => revalidate(), motionCookieName),\n\t\t[revalidate],\n\t)\n\n\treturn (\n\t\t<script\n\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t__html: hintsUtils.getClientHintCheckScript(),\n\t\t\t}}\n\t\t/>\n\t)\n}\n"],"names":["getHintUtils","hints","getCookieValue","cookieString","name","hint","value","_a","getHints","request","acc","hintName","getClientHintCheckScript","cookieName","clientHint","subscribeToSchemeChange","subscriber","schemaMatch","handleThemeChange","subscribeToMotionChange","motionMatch","handleMotionChange","useRequestInfo","useRouteLoaderData","themeCookieName","motionCookieName","hintsUtils","colorSchemeHint","timeZoneHint","reducedMotionHint","useHints","ClientHintCheck","revalidate","useRevalidator","React.useEffect","jsx"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,2 +0,0 @@
1
- import{c as e,j as r}from"./index-BDqSZ0-h.js";import{d as o,c as m}from"./misc-C1rq7sPa.js";import{D as n}from"./diff-BQhWtDyS.js";import{N as p}from"./nav-chevrons-C-dN3WfT.js";import{u as f,d as c}from"./components-BM_XUa9h.js";import"./clsx-B-dksMZM.js";import"./tooltip-BlVFw-is.js";import"./mdx-CZ_BPVoS.js";import"./epic-video-CxRPT-8l.js";import"./loading-DsjO-T0W.js";import"./client-hints-B2pbEa_9.js";import"./index-Dc59VwXx.js";import"./index-B8k-Gd1G.js";import"./progress-bar-BmszwN_j.js";function S(){const s=f(),[a]=c();new URLSearchParams(a).set("forceFresh","diff");const i=e(),t=o.useSpinDelay(i.state!=="idle",{delay:200,minDuration:200});return r.jsxs("div",{className:m("grid h-full grid-rows-[1fr,auto]",{"cursor-wait opacity-30":t}),children:[r.jsx("div",{className:"overflow-y-auto",children:r.jsx(n,{diff:s.diff,allApps:s.allApps})}),r.jsx("div",{className:"flex h-16 items-center justify-end border-t",children:r.jsx(p,{prev:s.prevLink,next:s.nextLink})})]})}export{S as default};
2
- //# sourceMappingURL=diff-BDeBUdSw.js.map
@@ -1,2 +0,0 @@
1
- import{a as e}from"./discord-BMNnObT9.js";import"./index-BDqSZ0-h.js";import"./misc-C1rq7sPa.js";import"./clsx-B-dksMZM.js";import"./components-BM_XUa9h.js";import"./user-p2QVtDZI.js";export{e as default};
2
- //# sourceMappingURL=discord-DdAReDkL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discord-DdAReDkL.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{j as e,r as l}from"./index-BDqSZ0-h.js";import{E as t}from"./index-BymJEf3X.js";import{M as a,E as n}from"./mdx-CZ_BPVoS.js";import{P as d}from"./progress-mfa_5CZx.js";import{E as c}from"./epic-video-CxRPT-8l.js";import{L as m}from"./loading-DsjO-T0W.js";import{N as p}from"./nav-chevrons-C-dN3WfT.js";import{c as f}from"./misc-C1rq7sPa.js";import{u as h,L as x}from"./components-BM_XUa9h.js";import"./clsx-B-dksMZM.js";import"./progress-bar-BmszwN_j.js";import"./tooltip-BlVFw-is.js";import"./client-hints-B2pbEa_9.js";import"./index-Dc59VwXx.js";import"./index-B8k-Gd1G.js";const V=({matches:s})=>{var o;const r=(o=s.find(i=>i.id==="root"))==null?void 0:o.data;return[{title:`🎉 ${r==null?void 0:r.workshopTitle}`}]},u={h1:()=>null};function M(){const s=h();return e.jsx("div",{className:"flex h-full flex-grow flex-col",children:e.jsxs("main",{className:"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1",children:[e.jsxs("div",{className:"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r",children:[e.jsx("h1",{className:"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none",children:e.jsx("div",{className:"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2",children:e.jsxs("div",{className:"flex items-center justify-start gap-x-2",children:[e.jsx(x,{to:"/",className:"hover:underline",children:s.workshopTitle}),e.jsx("span",{children:"/"}),e.jsx("span",{children:"Elaboration"})]})})}),e.jsx("article",{className:"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-10 pt-8 scrollbar-thin scrollbar-thumb-scrollbar",id:s.articleId,children:s.finishedCode?e.jsx(c,{epicVideoInfosPromise:s.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(a,{code:s.finishedCode,components:u})})}):"No finished instructions yet..."}),e.jsx(t,{elementQuery:`#${s.articleId}`}),e.jsx(d,{type:"workshop-finished",className:"h-14 border-t px-6"}),e.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[e.jsx("div",{}),s.workshopFinished.status==="success"?e.jsx(n,{file:s.workshopFinished.file,relativePath:s.workshopFinished.relativePath}):null,e.jsx(p,{prev:s.prevStepLink,next:{to:"/"}})]})]}),e.jsx(j,{workshopTitle:s.workshopTitle,workshopFormEmbedUrl:s.workshopFormEmbedUrl})]})})}function j({workshopTitle:s,workshopFormEmbedUrl:r}){const[o,i]=l.useState(!1);return e.jsxs("div",{className:"relative flex-shrink-0",children:[o?null:e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:e.jsx(m,{children:e.jsxs("span",{children:["Loading ",s," Elaboration form"]})})}),e.jsx("iframe",{onLoad:()=>i(!0),title:"Elaboration",src:r,className:f("absolute inset-0 flex h-full w-full transition-opacity duration-300",o?"opacity-100":"opacity-0")})]})}export{M as default,V as meta};
2
- //# sourceMappingURL=finished-CMGRmsnb.js.map
@@ -1,2 +0,0 @@
1
- var g;(function(r){r.assertEqual=n=>n;function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{const a={};for(const i of n)a[i]=i;return a},r.getValidEnumValues=n=>{const a=r.objectKeys(n).filter(o=>typeof n[n[o]]!="number"),i={};for(const o of a)i[o]=n[o];return r.objectValues(i)},r.objectValues=n=>r.objectKeys(n).map(function(a){return n[a]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{const a=[];for(const i in n)Object.prototype.hasOwnProperty.call(n,i)&&a.push(i);return a},r.find=(n,a)=>{for(const i of n)if(a(i))return i},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&isFinite(n)&&Math.floor(n)===n;function s(n,a=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(a)}r.joinValues=s,r.jsonStringifyReplacer=(n,a)=>typeof a=="bigint"?a.toString():a})(g||(g={}));var ye;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(ye||(ye={}));const u=g.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),R=r=>{switch(typeof r){case"undefined":return u.undefined;case"string":return u.string;case"number":return isNaN(r)?u.nan:u.number;case"boolean":return u.boolean;case"function":return u.function;case"bigint":return u.bigint;case"symbol":return u.symbol;case"object":return Array.isArray(r)?u.array:r===null?u.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?u.promise:typeof Map<"u"&&r instanceof Map?u.map:typeof Set<"u"&&r instanceof Set?u.set:typeof Date<"u"&&r instanceof Date?u.date:u.object;default:return u.unknown}},d=g.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Ee=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:");class Z extends Error{constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(a){return a.message},s={_errors:[]},n=a=>{for(const i of a.issues)if(i.code==="invalid_union")i.unionErrors.map(n);else if(i.code==="invalid_return_type")n(i.returnTypeError);else if(i.code==="invalid_arguments")n(i.argumentsError);else if(i.path.length===0)s._errors.push(t(i));else{let o=s,f=0;for(;f<i.path.length;){const c=i.path[f];f===i.path.length-1?(o[c]=o[c]||{_errors:[]},o[c]._errors.push(t(i))):o[c]=o[c]||{_errors:[]},o=o[c],f++}}};return n(this),s}toString(){return this.message}get message(){return JSON.stringify(this.issues,g.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},s=[];for(const n of this.issues)n.path.length>0?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]].push(e(n))):s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}Z.create=r=>new Z(r);const q=(r,e)=>{let t;switch(r.code){case d.invalid_type:r.received===u.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case d.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,g.jsonStringifyReplacer)}`;break;case d.unrecognized_keys:t=`Unrecognized key(s) in object: ${g.joinValues(r.keys,", ")}`;break;case d.invalid_union:t="Invalid input";break;case d.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${g.joinValues(r.options)}`;break;case d.invalid_enum_value:t=`Invalid enum value. Expected ${g.joinValues(r.options)}, received '${r.received}'`;break;case d.invalid_arguments:t="Invalid function arguments";break;case d.invalid_return_type:t="Invalid function return type";break;case d.invalid_date:t="Invalid date";break;case d.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:g.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case d.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case d.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case d.custom:t="Invalid input";break;case d.invalid_intersection_types:t="Intersection results could not be merged";break;case d.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case d.not_finite:t="Number must be finite";break;default:t=e.defaultError,g.assertNever(r)}return{message:t}};let be=q;function Ie(r){be=r}function ne(){return be}const ae=r=>{const{data:e,path:t,errorMaps:s,issueData:n}=r,a=[...t,...n.path||[]],i={...n,path:a};let o="";const f=s.filter(c=>!!c).slice().reverse();for(const c of f)o=c(i,{data:e,defaultError:o}).message;return{...n,path:a,message:n.message||o}},Re=[];function l(r,e){const t=ae({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,ne(),q].filter(s=>!!s)});r.common.issues.push(t)}class k{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const s=[];for(const n of t){if(n.status==="aborted")return m;n.status==="dirty"&&e.dirty(),s.push(n.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){const s=[];for(const n of t)s.push({key:await n.key,value:await n.value});return k.mergeObjectSync(e,s)}static mergeObjectSync(e,t){const s={};for(const n of t){const{key:a,value:i}=n;if(a.status==="aborted"||i.status==="aborted")return m;a.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(s[a.value]=i.value)}return{status:e.value,value:s}}}const m=Object.freeze({status:"aborted"}),we=r=>({status:"dirty",value:r}),b=r=>({status:"valid",value:r}),ve=r=>r.status==="aborted",_e=r=>r.status==="dirty",W=r=>r.status==="valid",ie=r=>typeof Promise<"u"&&r instanceof Promise;var h;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(h||(h={}));class C{constructor(e,t,s,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const xe=(r,e)=>{if(W(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new Z(r.common.issues);return this._error=t,this._error}}};function y(r){if(!r)return{};const{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(i,o)=>i.code!=="invalid_type"?{message:o.defaultError}:typeof o.data>"u"?{message:s??o.defaultError}:{message:t??o.defaultError},description:n}}class v{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return R(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:R(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new k,ctx:{common:e.parent.common,data:e.data,parsedType:R(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(ie(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){var s;const n={common:{issues:[],async:(s=t==null?void 0:t.async)!==null&&s!==void 0?s:!1,contextualErrorMap:t==null?void 0:t.errorMap},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:R(e)},a=this._parseSync({data:e,path:n.path,parent:n});return xe(n,a)}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:t==null?void 0:t.errorMap,async:!0},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:R(e)},n=this._parse({data:e,path:s.path,parent:s}),a=await(ie(n)?n:Promise.resolve(n));return xe(s,a)}refine(e,t){const s=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,a)=>{const i=e(n),o=()=>a.addIssue({code:d.custom,...s(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(f=>f?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,n)=>e(s)?!0:(n.addIssue(typeof t=="function"?t(s,n):t),!1))}_refinement(e){return new N({schema:this,typeName:p.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return E.create(this,this._def)}nullable(){return L.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return S.create(this,this._def)}promise(){return B.create(this,this._def)}or(e){return G.create([this,e],this._def)}and(e){return X.create(this,e,this._def)}transform(e){return new N({...y(this._def),schema:this,typeName:p.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new te({...y(this._def),innerType:this,defaultValue:t,typeName:p.ZodDefault})}brand(){return new Ze({typeName:p.ZodBranded,type:this,...y(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new ue({...y(this._def),innerType:this,catchValue:t,typeName:p.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return re.create(this,e)}readonly(){return fe.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const je=/^c[^\s-]{8,}$/i,Ae=/^[a-z][a-z0-9]*$/,Me=/^[0-9A-HJKMNP-TV-Z]{26}$/,Pe=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Ve=/^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,$e="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let me;const Le=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,De=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ze=r=>r.precision?r.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}Z$`):r.precision===0?r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Ue(r,e){return!!((e==="v4"||!e)&&Le.test(r)||(e==="v6"||!e)&&De.test(r))}class T extends v{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==u.string){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:u.string,received:a.parsedType}),m}const s=new k;let n;for(const a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(n=this._getOrReturnCtx(e,n),l(n,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="max")e.data.length>a.value&&(n=this._getOrReturnCtx(e,n),l(n,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="length"){const i=e.data.length>a.value,o=e.data.length<a.value;(i||o)&&(n=this._getOrReturnCtx(e,n),i?l(n,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}):o&&l(n,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}),s.dirty())}else if(a.kind==="email")Ve.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"email",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="emoji")me||(me=new RegExp($e,"u")),me.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"emoji",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="uuid")Pe.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"uuid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid")je.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"cuid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid2")Ae.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"cuid2",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="ulid")Me.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"ulid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="url")try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),l(n,{validation:"url",code:d.invalid_string,message:a.message}),s.dirty()}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"regex",code:d.invalid_string,message:a.message}),s.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(n=this._getOrReturnCtx(e,n),l(n,{code:d.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),s.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(n=this._getOrReturnCtx(e,n),l(n,{code:d.invalid_string,validation:{startsWith:a.value},message:a.message}),s.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(n=this._getOrReturnCtx(e,n),l(n,{code:d.invalid_string,validation:{endsWith:a.value},message:a.message}),s.dirty()):a.kind==="datetime"?ze(a).test(e.data)||(n=this._getOrReturnCtx(e,n),l(n,{code:d.invalid_string,validation:"datetime",message:a.message}),s.dirty()):a.kind==="ip"?Ue(e.data,a.version)||(n=this._getOrReturnCtx(e,n),l(n,{validation:"ip",code:d.invalid_string,message:a.message}),s.dirty()):g.assertNever(a);return{status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(n=>e.test(n),{validation:t,code:d.invalid_string,...h.errToObj(s)})}_addCheck(e){return new T({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...h.errToObj(e)})}url(e){return this._addCheck({kind:"url",...h.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...h.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...h.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...h.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...h.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...h.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...h.errToObj(e)})}datetime(e){var t;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(t=e==null?void 0:e.offset)!==null&&t!==void 0?t:!1,...h.errToObj(e==null?void 0:e.message)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...h.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t==null?void 0:t.position,...h.errToObj(t==null?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...h.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...h.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...h.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...h.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...h.errToObj(t)})}nonempty(e){return this.min(1,h.errToObj(e))}trim(){return new T({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new T({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new T({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}T.create=r=>{var e;return new T({checks:[],typeName:p.ZodString,coerce:(e=r==null?void 0:r.coerce)!==null&&e!==void 0?e:!1,...y(r)})};function Be(r,e){const t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,a=parseInt(r.toFixed(n).replace(".","")),i=parseInt(e.toFixed(n).replace(".",""));return a%i/Math.pow(10,n)}class j extends v{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==u.number){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:u.number,received:a.parsedType}),m}let s;const n=new k;for(const a of this._def.checks)a.kind==="int"?g.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),l(s,{code:d.invalid_type,expected:"integer",received:"float",message:a.message}),n.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),n.dirty()):a.kind==="multipleOf"?Be(e.data,a.value)!==0&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_finite,message:a.message}),n.dirty()):g.assertNever(a);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,h.toString(t))}gt(e,t){return this.setLimit("min",e,!1,h.toString(t))}lte(e,t){return this.setLimit("max",e,!0,h.toString(t))}lt(e,t){return this.setLimit("max",e,!1,h.toString(t))}setLimit(e,t,s,n){return new j({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:h.toString(n)}]})}_addCheck(e){return new j({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:h.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:h.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:h.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:h.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:h.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:h.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:h.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:h.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:h.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&g.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}j.create=r=>new j({checks:[],typeName:p.ZodNumber,coerce:(r==null?void 0:r.coerce)||!1,...y(r)});class A extends v{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==u.bigint){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:u.bigint,received:a.parsedType}),m}let s;const n=new k;for(const a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):g.assertNever(a);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,h.toString(t))}gt(e,t){return this.setLimit("min",e,!1,h.toString(t))}lte(e,t){return this.setLimit("max",e,!0,h.toString(t))}lt(e,t){return this.setLimit("max",e,!1,h.toString(t))}setLimit(e,t,s,n){return new A({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:h.toString(n)}]})}_addCheck(e){return new A({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:h.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:h.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:h.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:h.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:h.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}A.create=r=>{var e;return new A({checks:[],typeName:p.ZodBigInt,coerce:(e=r==null?void 0:r.coerce)!==null&&e!==void 0?e:!1,...y(r)})};class J extends v{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==u.boolean){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.boolean,received:s.parsedType}),m}return b(e.data)}}J.create=r=>new J({typeName:p.ZodBoolean,coerce:(r==null?void 0:r.coerce)||!1,...y(r)});class V extends v{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==u.date){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:u.date,received:a.parsedType}),m}if(isNaN(e.data.getTime())){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_date}),m}const s=new k;let n;for(const a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(n=this._getOrReturnCtx(e,n),l(n,{code:d.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),s.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(n=this._getOrReturnCtx(e,n),l(n,{code:d.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),s.dirty()):g.assertNever(a);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new V({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:h.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:h.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}V.create=r=>new V({checks:[],coerce:(r==null?void 0:r.coerce)||!1,typeName:p.ZodDate,...y(r)});class oe extends v{_parse(e){if(this._getType(e)!==u.symbol){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.symbol,received:s.parsedType}),m}return b(e.data)}}oe.create=r=>new oe({typeName:p.ZodSymbol,...y(r)});class Y extends v{_parse(e){if(this._getType(e)!==u.undefined){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.undefined,received:s.parsedType}),m}return b(e.data)}}Y.create=r=>new Y({typeName:p.ZodUndefined,...y(r)});class H extends v{_parse(e){if(this._getType(e)!==u.null){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.null,received:s.parsedType}),m}return b(e.data)}}H.create=r=>new H({typeName:p.ZodNull,...y(r)});class U extends v{constructor(){super(...arguments),this._any=!0}_parse(e){return b(e.data)}}U.create=r=>new U({typeName:p.ZodAny,...y(r)});class P extends v{constructor(){super(...arguments),this._unknown=!0}_parse(e){return b(e.data)}}P.create=r=>new P({typeName:p.ZodUnknown,...y(r)});class I extends v{_parse(e){const t=this._getOrReturnCtx(e);return l(t,{code:d.invalid_type,expected:u.never,received:t.parsedType}),m}}I.create=r=>new I({typeName:p.ZodNever,...y(r)});class de extends v{_parse(e){if(this._getType(e)!==u.undefined){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.void,received:s.parsedType}),m}return b(e.data)}}de.create=r=>new de({typeName:p.ZodVoid,...y(r)});class S extends v{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==u.array)return l(t,{code:d.invalid_type,expected:u.array,received:t.parsedType}),m;if(n.exactLength!==null){const i=t.data.length>n.exactLength.value,o=t.data.length<n.exactLength.value;(i||o)&&(l(t,{code:i?d.too_big:d.too_small,minimum:o?n.exactLength.value:void 0,maximum:i?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),s.dirty())}if(n.minLength!==null&&t.data.length<n.minLength.value&&(l(t,{code:d.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),s.dirty()),n.maxLength!==null&&t.data.length>n.maxLength.value&&(l(t,{code:d.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((i,o)=>n.type._parseAsync(new C(t,i,t.path,o)))).then(i=>k.mergeArray(s,i));const a=[...t.data].map((i,o)=>n.type._parseSync(new C(t,i,t.path,o)));return k.mergeArray(s,a)}get element(){return this._def.type}min(e,t){return new S({...this._def,minLength:{value:e,message:h.toString(t)}})}max(e,t){return new S({...this._def,maxLength:{value:e,message:h.toString(t)}})}length(e,t){return new S({...this._def,exactLength:{value:e,message:h.toString(t)}})}nonempty(e){return this.min(1,e)}}S.create=(r,e)=>new S({type:r,minLength:null,maxLength:null,exactLength:null,typeName:p.ZodArray,...y(e)});function D(r){if(r instanceof x){const e={};for(const t in r.shape){const s=r.shape[t];e[t]=E.create(D(s))}return new x({...r._def,shape:()=>e})}else return r instanceof S?new S({...r._def,type:D(r.element)}):r instanceof E?E.create(D(r.unwrap())):r instanceof L?L.create(D(r.unwrap())):r instanceof O?O.create(r.items.map(e=>D(e))):r}class x extends v{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=g.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==u.object){const c=this._getOrReturnCtx(e);return l(c,{code:d.invalid_type,expected:u.object,received:c.parsedType}),m}const{status:s,ctx:n}=this._processInputParams(e),{shape:a,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof I&&this._def.unknownKeys==="strip"))for(const c in n.data)i.includes(c)||o.push(c);const f=[];for(const c of i){const _=a[c],w=n.data[c];f.push({key:{status:"valid",value:c},value:_._parse(new C(n,w,n.path,c)),alwaysSet:c in n.data})}if(this._def.catchall instanceof I){const c=this._def.unknownKeys;if(c==="passthrough")for(const _ of o)f.push({key:{status:"valid",value:_},value:{status:"valid",value:n.data[_]}});else if(c==="strict")o.length>0&&(l(n,{code:d.unrecognized_keys,keys:o}),s.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const _ of o){const w=n.data[_];f.push({key:{status:"valid",value:_},value:c._parse(new C(n,w,n.path,_)),alwaysSet:_ in n.data})}}return n.common.async?Promise.resolve().then(async()=>{const c=[];for(const _ of f){const w=await _.key;c.push({key:w,value:await _.value,alwaysSet:_.alwaysSet})}return c}).then(c=>k.mergeObjectSync(s,c)):k.mergeObjectSync(s,f)}get shape(){return this._def.shape()}strict(e){return h.errToObj,new x({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{var n,a,i,o;const f=(i=(a=(n=this._def).errorMap)===null||a===void 0?void 0:a.call(n,t,s).message)!==null&&i!==void 0?i:s.defaultError;return t.code==="unrecognized_keys"?{message:(o=h.errToObj(e).message)!==null&&o!==void 0?o:f}:{message:f}}}:{}})}strip(){return new x({...this._def,unknownKeys:"strip"})}passthrough(){return new x({...this._def,unknownKeys:"passthrough"})}extend(e){return new x({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new x({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:p.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new x({...this._def,catchall:e})}pick(e){const t={};return g.objectKeys(e).forEach(s=>{e[s]&&this.shape[s]&&(t[s]=this.shape[s])}),new x({...this._def,shape:()=>t})}omit(e){const t={};return g.objectKeys(this.shape).forEach(s=>{e[s]||(t[s]=this.shape[s])}),new x({...this._def,shape:()=>t})}deepPartial(){return D(this)}partial(e){const t={};return g.objectKeys(this.shape).forEach(s=>{const n=this.shape[s];e&&!e[s]?t[s]=n:t[s]=n.optional()}),new x({...this._def,shape:()=>t})}required(e){const t={};return g.objectKeys(this.shape).forEach(s=>{if(e&&!e[s])t[s]=this.shape[s];else{let a=this.shape[s];for(;a instanceof E;)a=a._def.innerType;t[s]=a}}),new x({...this._def,shape:()=>t})}keyof(){return Te(g.objectKeys(this.shape))}}x.create=(r,e)=>new x({shape:()=>r,unknownKeys:"strip",catchall:I.create(),typeName:p.ZodObject,...y(e)});x.strictCreate=(r,e)=>new x({shape:()=>r,unknownKeys:"strict",catchall:I.create(),typeName:p.ZodObject,...y(e)});x.lazycreate=(r,e)=>new x({shape:r,unknownKeys:"strip",catchall:I.create(),typeName:p.ZodObject,...y(e)});class G extends v{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;function n(a){for(const o of a)if(o.result.status==="valid")return o.result;for(const o of a)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;const i=a.map(o=>new Z(o.ctx.common.issues));return l(t,{code:d.invalid_union,unionErrors:i}),m}if(t.common.async)return Promise.all(s.map(async a=>{const i={...t,common:{...t.common,issues:[]},parent:null};return{result:await a._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(n);{let a;const i=[];for(const f of s){const c={...t,common:{...t.common,issues:[]},parent:null},_=f._parseSync({data:t.data,path:t.path,parent:c});if(_.status==="valid")return _;_.status==="dirty"&&!a&&(a={result:_,ctx:c}),c.common.issues.length&&i.push(c.common.issues)}if(a)return t.common.issues.push(...a.ctx.common.issues),a.result;const o=i.map(f=>new Z(f));return l(t,{code:d.invalid_union,unionErrors:o}),m}}get options(){return this._def.options}}G.create=(r,e)=>new G({options:r,typeName:p.ZodUnion,...y(e)});const se=r=>r instanceof K?se(r.schema):r instanceof N?se(r.innerType()):r instanceof F?[r.value]:r instanceof M?r.options:r instanceof ee?Object.keys(r.enum):r instanceof te?se(r._def.innerType):r instanceof Y?[void 0]:r instanceof H?[null]:null;class he extends v{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.object)return l(t,{code:d.invalid_type,expected:u.object,received:t.parsedType}),m;const s=this.discriminator,n=t.data[s],a=this.optionsMap.get(n);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(l(t,{code:d.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),m)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){const n=new Map;for(const a of t){const i=se(a.shape[e]);if(!i)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const o of i){if(n.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);n.set(o,a)}}return new he({typeName:p.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...y(s)})}}function ge(r,e){const t=R(r),s=R(e);if(r===e)return{valid:!0,data:r};if(t===u.object&&s===u.object){const n=g.objectKeys(e),a=g.objectKeys(r).filter(o=>n.indexOf(o)!==-1),i={...r,...e};for(const o of a){const f=ge(r[o],e[o]);if(!f.valid)return{valid:!1};i[o]=f.data}return{valid:!0,data:i}}else if(t===u.array&&s===u.array){if(r.length!==e.length)return{valid:!1};const n=[];for(let a=0;a<r.length;a++){const i=r[a],o=e[a],f=ge(i,o);if(!f.valid)return{valid:!1};n.push(f.data)}return{valid:!0,data:n}}else return t===u.date&&s===u.date&&+r==+e?{valid:!0,data:r}:{valid:!1}}class X extends v{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),n=(a,i)=>{if(ve(a)||ve(i))return m;const o=ge(a.value,i.value);return o.valid?((_e(a)||_e(i))&&t.dirty(),{status:t.value,value:o.data}):(l(s,{code:d.invalid_intersection_types}),m)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([a,i])=>n(a,i)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}X.create=(r,e,t)=>new X({left:r,right:e,typeName:p.ZodIntersection,...y(t)});class O extends v{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.array)return l(s,{code:d.invalid_type,expected:u.array,received:s.parsedType}),m;if(s.data.length<this._def.items.length)return l(s,{code:d.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),m;!this._def.rest&&s.data.length>this._def.items.length&&(l(s,{code:d.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const a=[...s.data].map((i,o)=>{const f=this._def.items[o]||this._def.rest;return f?f._parse(new C(s,i,s.path,o)):null}).filter(i=>!!i);return s.common.async?Promise.all(a).then(i=>k.mergeArray(t,i)):k.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new O({...this._def,rest:e})}}O.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new O({items:r,typeName:p.ZodTuple,rest:null,...y(e)})};class Q extends v{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.object)return l(s,{code:d.invalid_type,expected:u.object,received:s.parsedType}),m;const n=[],a=this._def.keyType,i=this._def.valueType;for(const o in s.data)n.push({key:a._parse(new C(s,o,s.path,o)),value:i._parse(new C(s,s.data[o],s.path,o))});return s.common.async?k.mergeObjectAsync(t,n):k.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof v?new Q({keyType:e,valueType:t,typeName:p.ZodRecord,...y(s)}):new Q({keyType:T.create(),valueType:e,typeName:p.ZodRecord,...y(t)})}}class ce extends v{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.map)return l(s,{code:d.invalid_type,expected:u.map,received:s.parsedType}),m;const n=this._def.keyType,a=this._def.valueType,i=[...s.data.entries()].map(([o,f],c)=>({key:n._parse(new C(s,o,s.path,[c,"key"])),value:a._parse(new C(s,f,s.path,[c,"value"]))}));if(s.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const f of i){const c=await f.key,_=await f.value;if(c.status==="aborted"||_.status==="aborted")return m;(c.status==="dirty"||_.status==="dirty")&&t.dirty(),o.set(c.value,_.value)}return{status:t.value,value:o}})}else{const o=new Map;for(const f of i){const c=f.key,_=f.value;if(c.status==="aborted"||_.status==="aborted")return m;(c.status==="dirty"||_.status==="dirty")&&t.dirty(),o.set(c.value,_.value)}return{status:t.value,value:o}}}}ce.create=(r,e,t)=>new ce({valueType:e,keyType:r,typeName:p.ZodMap,...y(t)});class $ extends v{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.set)return l(s,{code:d.invalid_type,expected:u.set,received:s.parsedType}),m;const n=this._def;n.minSize!==null&&s.data.size<n.minSize.value&&(l(s,{code:d.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),n.maxSize!==null&&s.data.size>n.maxSize.value&&(l(s,{code:d.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());const a=this._def.valueType;function i(f){const c=new Set;for(const _ of f){if(_.status==="aborted")return m;_.status==="dirty"&&t.dirty(),c.add(_.value)}return{status:t.value,value:c}}const o=[...s.data.values()].map((f,c)=>a._parse(new C(s,f,s.path,c)));return s.common.async?Promise.all(o).then(f=>i(f)):i(o)}min(e,t){return new $({...this._def,minSize:{value:e,message:h.toString(t)}})}max(e,t){return new $({...this._def,maxSize:{value:e,message:h.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}$.create=(r,e)=>new $({valueType:r,minSize:null,maxSize:null,typeName:p.ZodSet,...y(e)});class z extends v{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.function)return l(t,{code:d.invalid_type,expected:u.function,received:t.parsedType}),m;function s(o,f){return ae({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,ne(),q].filter(c=>!!c),issueData:{code:d.invalid_arguments,argumentsError:f}})}function n(o,f){return ae({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,ne(),q].filter(c=>!!c),issueData:{code:d.invalid_return_type,returnTypeError:f}})}const a={errorMap:t.common.contextualErrorMap},i=t.data;if(this._def.returns instanceof B){const o=this;return b(async function(...f){const c=new Z([]),_=await o._def.args.parseAsync(f,a).catch(pe=>{throw c.addIssue(s(f,pe)),c}),w=await Reflect.apply(i,this,_);return await o._def.returns._def.type.parseAsync(w,a).catch(pe=>{throw c.addIssue(n(w,pe)),c})})}else{const o=this;return b(function(...f){const c=o._def.args.safeParse(f,a);if(!c.success)throw new Z([s(f,c.error)]);const _=Reflect.apply(i,this,c.data),w=o._def.returns.safeParse(_,a);if(!w.success)throw new Z([n(_,w.error)]);return w.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new z({...this._def,args:O.create(e).rest(P.create())})}returns(e){return new z({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new z({args:e||O.create([]).rest(P.create()),returns:t||P.create(),typeName:p.ZodFunction,...y(s)})}}class K extends v{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}K.create=(r,e)=>new K({getter:r,typeName:p.ZodLazy,...y(e)});class F extends v{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return l(t,{received:t.data,code:d.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:e.data}}get value(){return this._def.value}}F.create=(r,e)=>new F({value:r,typeName:p.ZodLiteral,...y(e)});function Te(r,e){return new M({values:r,typeName:p.ZodEnum,...y(e)})}class M extends v{_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),s=this._def.values;return l(t,{expected:g.joinValues(s),received:t.parsedType,code:d.invalid_type}),m}if(this._def.values.indexOf(e.data)===-1){const t=this._getOrReturnCtx(e),s=this._def.values;return l(t,{received:t.data,code:d.invalid_enum_value,options:s}),m}return b(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e){return M.create(e)}exclude(e){return M.create(this.options.filter(t=>!e.includes(t)))}}M.create=Te;class ee extends v{_parse(e){const t=g.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==u.string&&s.parsedType!==u.number){const n=g.objectValues(t);return l(s,{expected:g.joinValues(n),received:s.parsedType,code:d.invalid_type}),m}if(t.indexOf(e.data)===-1){const n=g.objectValues(t);return l(s,{received:s.data,code:d.invalid_enum_value,options:n}),m}return b(e.data)}get enum(){return this._def.values}}ee.create=(r,e)=>new ee({values:r,typeName:p.ZodNativeEnum,...y(e)});class B extends v{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.promise&&t.common.async===!1)return l(t,{code:d.invalid_type,expected:u.promise,received:t.parsedType}),m;const s=t.parsedType===u.promise?t.data:Promise.resolve(t.data);return b(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}}B.create=(r,e)=>new B({type:r,typeName:p.ZodPromise,...y(e)});class N extends v{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===p.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null,a={addIssue:i=>{l(s,i),i.fatal?t.abort():t.dirty()},get path(){return s.path}};if(a.addIssue=a.addIssue.bind(a),n.type==="preprocess"){const i=n.transform(s.data,a);return s.common.issues.length?{status:"dirty",value:s.data}:s.common.async?Promise.resolve(i).then(o=>this._def.schema._parseAsync({data:o,path:s.path,parent:s})):this._def.schema._parseSync({data:i,path:s.path,parent:s})}if(n.type==="refinement"){const i=o=>{const f=n.refinement(o,a);if(s.common.async)return Promise.resolve(f);if(f instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?m:(o.status==="dirty"&&t.dirty(),i(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?m:(o.status==="dirty"&&t.dirty(),i(o.value).then(()=>({status:t.value,value:o.value}))))}if(n.type==="transform")if(s.common.async===!1){const i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!W(i))return i;const o=n.transform(i.value,a);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>W(i)?Promise.resolve(n.transform(i.value,a)).then(o=>({status:t.value,value:o})):i);g.assertNever(n)}}N.create=(r,e,t)=>new N({schema:r,typeName:p.ZodEffects,effect:e,...y(t)});N.createWithPreprocess=(r,e,t)=>new N({schema:e,effect:{type:"preprocess",transform:r},typeName:p.ZodEffects,...y(t)});class E extends v{_parse(e){return this._getType(e)===u.undefined?b(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}E.create=(r,e)=>new E({innerType:r,typeName:p.ZodOptional,...y(e)});class L extends v{_parse(e){return this._getType(e)===u.null?b(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}L.create=(r,e)=>new L({innerType:r,typeName:p.ZodNullable,...y(e)});class te extends v{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===u.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}te.create=(r,e)=>new te({innerType:r,typeName:p.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...y(e)});class ue extends v{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return ie(n)?n.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Z(s.common.issues)},input:s.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Z(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}ue.create=(r,e)=>new ue({innerType:r,typeName:p.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...y(e)});class le extends v{_parse(e){if(this._getType(e)!==u.nan){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:u.nan,received:s.parsedType}),m}return{status:"valid",value:e.data}}}le.create=r=>new le({typeName:p.ZodNaN,...y(r)});const qe=Symbol("zod_brand");class Ze extends v{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}class re extends v{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const a=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?m:a.status==="dirty"?(t.dirty(),we(a.value)):this._def.out._parseAsync({data:a.value,path:s.path,parent:s})})();{const n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?m:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new re({in:e,out:t,typeName:p.ZodPipeline})}}class fe extends v{_parse(e){const t=this._def.innerType._parse(e);return W(t)&&(t.value=Object.freeze(t.value)),t}}fe.create=(r,e)=>new fe({innerType:r,typeName:p.ZodReadonly,...y(e)});const Se=(r,e={},t)=>r?U.create().superRefine((s,n)=>{var a,i;if(!r(s)){const o=typeof e=="function"?e(s):typeof e=="string"?{message:e}:e,f=(i=(a=o.fatal)!==null&&a!==void 0?a:t)!==null&&i!==void 0?i:!0,c=typeof o=="string"?{message:o}:o;n.addIssue({code:"custom",...c,fatal:f})}}):U.create(),We={object:x.lazycreate};var p;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly"})(p||(p={}));const Je=(r,e={message:`Input not instance of ${r.name}`})=>Se(t=>t instanceof r,e),Ne=T.create,Ce=j.create,Ye=le.create,He=A.create,Oe=J.create,Ge=V.create,Xe=oe.create,Qe=Y.create,Ke=H.create,Fe=U.create,et=P.create,tt=I.create,rt=de.create,st=S.create,nt=x.create,at=x.strictCreate,it=G.create,ot=he.create,dt=X.create,ct=O.create,ut=Q.create,lt=ce.create,ft=$.create,ht=z.create,pt=K.create,mt=F.create,yt=M.create,vt=ee.create,_t=B.create,ke=N.create,gt=E.create,xt=L.create,kt=N.createWithPreprocess,bt=re.create,wt=()=>Ne().optional(),Tt=()=>Ce().optional(),Zt=()=>Oe().optional(),St={string:r=>T.create({...r,coerce:!0}),number:r=>j.create({...r,coerce:!0}),boolean:r=>J.create({...r,coerce:!0}),bigint:r=>A.create({...r,coerce:!0}),date:r=>V.create({...r,coerce:!0})},Nt=m;var Ot=Object.freeze({__proto__:null,defaultErrorMap:q,setErrorMap:Ie,getErrorMap:ne,makeIssue:ae,EMPTY_PATH:Re,addIssueToContext:l,ParseStatus:k,INVALID:m,DIRTY:we,OK:b,isAborted:ve,isDirty:_e,isValid:W,isAsync:ie,get util(){return g},get objectUtil(){return ye},ZodParsedType:u,getParsedType:R,ZodType:v,ZodString:T,ZodNumber:j,ZodBigInt:A,ZodBoolean:J,ZodDate:V,ZodSymbol:oe,ZodUndefined:Y,ZodNull:H,ZodAny:U,ZodUnknown:P,ZodNever:I,ZodVoid:de,ZodArray:S,ZodObject:x,ZodUnion:G,ZodDiscriminatedUnion:he,ZodIntersection:X,ZodTuple:O,ZodRecord:Q,ZodMap:ce,ZodSet:$,ZodFunction:z,ZodLazy:K,ZodLiteral:F,ZodEnum:M,ZodNativeEnum:ee,ZodPromise:B,ZodEffects:N,ZodTransformer:N,ZodOptional:E,ZodNullable:L,ZodDefault:te,ZodCatch:ue,ZodNaN:le,BRAND:qe,ZodBranded:Ze,ZodPipeline:re,ZodReadonly:fe,custom:Se,Schema:v,ZodSchema:v,late:We,get ZodFirstPartyTypeKind(){return p},coerce:St,any:Fe,array:st,bigint:He,boolean:Oe,date:Ge,discriminatedUnion:ot,effect:ke,enum:yt,function:ht,instanceof:Je,intersection:dt,lazy:pt,literal:mt,map:lt,nan:Ye,nativeEnum:vt,never:tt,null:Ke,nullable:xt,number:Ce,object:nt,oboolean:Zt,onumber:Tt,optional:gt,ostring:wt,pipeline:bt,preprocess:kt,promise:_t,record:ut,set:ft,strictObject:at,string:Ne,symbol:Xe,transformer:ke,tuple:ct,undefined:Qe,union:it,unknown:et,void:rt,NEVER:Nt,ZodIssueCode:d,quotelessJson:Ee,ZodError:Z});export{T as Z,F as a,M as b,ee as c,Fe as d,j as e,J as f,V as g,A as h,S as i,x as j,N as k,E as l,te as m,ue as n,X as o,G as p,he as q,O as r,L as s,re as t,K as u,pt as v,U as w,Ot as z};
2
- //# sourceMappingURL=index-B8k-Gd1G.js.map