@epic-web/workshop-app 4.21.1 → 4.22.1

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 (81) hide show
  1. package/build/client/assets/_exerciseNumber-CpcJsfoV.js +2 -0
  2. package/build/client/assets/_exerciseNumber-CpcJsfoV.js.map +1 -0
  3. package/build/client/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js.map +1 -1
  4. package/build/client/assets/_exerciseNumber_.finished-Ddb3J5ls.js +2 -0
  5. package/build/client/assets/_exerciseNumber_.finished-Ddb3J5ls.js.map +1 -0
  6. package/build/client/assets/{_layout-AgYGL72C.js → _layout-BLsKV5zF.js} +2 -2
  7. package/build/client/assets/_layout-BLsKV5zF.js.map +1 -0
  8. package/build/client/assets/_layout-CGLKLU3y.js +2 -0
  9. package/build/client/assets/_layout-CGLKLU3y.js.map +1 -0
  10. package/build/client/assets/_layout-DVR5FOsb.js +2 -0
  11. package/build/client/assets/_layout-DVR5FOsb.js.map +1 -0
  12. package/build/client/assets/app-BhrXo-z3.js +2 -0
  13. package/build/client/assets/{app-BiWJY58g.js.map → app-BhrXo-z3.js.map} +1 -1
  14. package/build/client/assets/diff-BNr0PhFR.js +2 -0
  15. package/build/client/assets/{diff-Cw8ktQ1-.js.map → diff-BNr0PhFR.js.map} +1 -1
  16. package/build/client/assets/{diff-CpFxuKA2.js → diff-Cr4LLBag.js} +2 -2
  17. package/build/client/assets/{diff-CpFxuKA2.js.map → diff-Cr4LLBag.js.map} +1 -1
  18. package/build/client/assets/{epic-video-iluUs1-s.js → epic-video-CxZy3iqK.js} +2 -2
  19. package/build/client/assets/{epic-video-iluUs1-s.js.map → epic-video-CxZy3iqK.js.map} +1 -1
  20. package/build/client/assets/finished-CU8QBU41.js +2 -0
  21. package/build/client/assets/finished-CU8QBU41.js.map +1 -0
  22. package/build/client/assets/index-6GyYWV9G.js +2 -0
  23. package/build/client/assets/{index-BATSX33w.js.map → index-6GyYWV9G.js.map} +1 -1
  24. package/build/client/assets/index-BotyhhDm.js +2 -0
  25. package/build/client/assets/index-BotyhhDm.js.map +1 -0
  26. package/build/client/assets/index-CWVcudJR.js +2 -0
  27. package/build/client/assets/{index-Dm1ll1kT.js.map → index-CWVcudJR.js.map} +1 -1
  28. package/build/client/assets/manifest-42dc4b5a.js +1 -0
  29. package/build/client/assets/mdx-D7ttfz2V.js +2 -0
  30. package/build/client/assets/mdx-D7ttfz2V.js.map +1 -0
  31. package/build/client/assets/onboarding-Co4cldZ0.js +2 -0
  32. package/build/client/assets/onboarding-Co4cldZ0.js.map +1 -0
  33. package/build/client/assets/pe-CUZaIcdt.js +2 -0
  34. package/build/client/assets/pe-CUZaIcdt.js.map +1 -0
  35. package/build/client/assets/preview-CdiZ0d0L.js +2 -0
  36. package/build/client/assets/preview-CdiZ0d0L.js.map +1 -0
  37. package/build/client/assets/progress-Biq-ngNF.js +2 -0
  38. package/build/client/assets/{progress-BsY6hGPp.js.map → progress-Biq-ngNF.js.map} +1 -1
  39. package/build/client/assets/{root-Tcnfz99O.js → root-D_FY953d.js} +2 -2
  40. package/build/client/assets/root-D_FY953d.js.map +1 -0
  41. package/build/client/assets/seo-pBpFCWsy.js.map +1 -1
  42. package/build/client/assets/set-playground-BXHckvUG.js +2 -0
  43. package/build/client/assets/set-playground-BXHckvUG.js.map +1 -0
  44. package/build/client/assets/test-_8PxC8xF.js +2 -0
  45. package/build/client/assets/{test-D9HsTvpe.js.map → test-_8PxC8xF.js.map} +1 -1
  46. package/build/client/assets/{tests-CmNNBElK.js → tests-t3Udab79.js} +2 -2
  47. package/build/client/assets/{tests-CmNNBElK.js.map → tests-t3Udab79.js.map} +1 -1
  48. package/build/server/index.js +371 -311
  49. package/build/server/index.js.map +1 -1
  50. package/package.json +3 -3
  51. package/build/client/assets/_exerciseNumber-Cq0nozYz.js +0 -2
  52. package/build/client/assets/_exerciseNumber-Cq0nozYz.js.map +0 -1
  53. package/build/client/assets/_exerciseNumber_.finished-Q9qnPuZX.js +0 -2
  54. package/build/client/assets/_exerciseNumber_.finished-Q9qnPuZX.js.map +0 -1
  55. package/build/client/assets/_layout-AgYGL72C.js.map +0 -1
  56. package/build/client/assets/_layout-BocZ2xWF.js +0 -2
  57. package/build/client/assets/_layout-BocZ2xWF.js.map +0 -1
  58. package/build/client/assets/_layout-C8uU4Hwj.js +0 -2
  59. package/build/client/assets/_layout-C8uU4Hwj.js.map +0 -1
  60. package/build/client/assets/app-BiWJY58g.js +0 -2
  61. package/build/client/assets/diff-Cw8ktQ1-.js +0 -2
  62. package/build/client/assets/finished-Bm-bCUU2.js +0 -2
  63. package/build/client/assets/finished-Bm-bCUU2.js.map +0 -1
  64. package/build/client/assets/index-BATSX33w.js +0 -2
  65. package/build/client/assets/index-Dm1ll1kT.js +0 -2
  66. package/build/client/assets/index-Tfdnz1AB.js +0 -2
  67. package/build/client/assets/index-Tfdnz1AB.js.map +0 -1
  68. package/build/client/assets/manifest-4bde8719.js +0 -1
  69. package/build/client/assets/mdx-M0kcP-mP.js +0 -2
  70. package/build/client/assets/mdx-M0kcP-mP.js.map +0 -1
  71. package/build/client/assets/onboarding-Bib-wh6d.js +0 -2
  72. package/build/client/assets/onboarding-Bib-wh6d.js.map +0 -1
  73. package/build/client/assets/preview-CqrRe2BV.js +0 -2
  74. package/build/client/assets/preview-CqrRe2BV.js.map +0 -1
  75. package/build/client/assets/progress-BsY6hGPp.js +0 -2
  76. package/build/client/assets/root-Tcnfz99O.js.map +0 -1
  77. package/build/client/assets/set-playground-Cdy8VlVD.js +0 -2
  78. package/build/client/assets/set-playground-Cdy8VlVD.js.map +0 -1
  79. package/build/client/assets/test-D9HsTvpe.js +0 -2
  80. package/build/client/assets/use-hydrated-Citou692.js +0 -2
  81. package/build/client/assets/use-hydrated-Citou692.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{c as b,j as e}from"./index-1cKOJFpX.js";import{I as m}from"./misc-ENVX3CWf.js";import{S as f}from"./tooltip-BiHTe_7F.js";import{a as g}from"./progress-BsY6hGPp.js";import{u as N,L as i,F as c}from"./components-CME-nGId.js";import"./clsx-B-dksMZM.js";const L={getSitemapEntries:()=>null},T=({matches:n})=>{var r;const l=(r=n.find(o=>o.id==="root"))==null?void 0:r.data;return[{title:`👷 | ${l==null?void 0:l.workshopTitle}`}]};function S(n,l){return n.type==="unknown"&&l.type==="unknown"?0:n.type==="unknown"?-1:l.type==="unknown"?1:0}function w(n){switch(n.type){case"workshop-instructions":return"/";case"workshop-finished":return"/finished";case"instructions":return`/${n.exerciseNumber.toString().padStart(2,"0")}`;case"step":return`/${n.exerciseNumber.toString().padStart(2,"0")}/${n.stepNumber.toString().padStart(2,"0")}`;case"finished":return`/${n.exerciseNumber.toString().padStart(2,"0")}/finished`;default:return""}}function A(){var a,d;const n=N(),l=b(),r=g(),o=((a=l.formData)==null?void 0:a.get("intent"))==="inspect",u=((d=l.formData)==null?void 0:d.get("intent"))==="stop-inspect",j={completed:"bg-blue-500",incomplete:"bg-yellow-500"};return e.jsxs("main",{className:"container mx-auto mt-8",children:[e.jsx("h1",{className:"text-4xl font-bold",children:"Admin"}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("nav",{children:e.jsxs("ul",{className:"flex gap-3",children:[e.jsx("li",{children:e.jsx(i,{className:"underline",to:"/",children:"Home"})}),e.jsx("li",{children:e.jsx(i,{className:"underline",to:"/diff",children:"Diff Viewer"})})]})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold",children:"Progress"}),r?e.jsx("ul",{className:"flex max-h-72 flex-col gap-2 overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar",children:r.sort(S).map(s=>{const t=`https://www.epicweb.dev/workshops/${n.workshopSlug}/${s.epicSectionSlug}/${s.epicLessonSlug}`,p=s.epicCompletedAt?"completed":"incomplete",h=[`${s.epicSectionSlug}/${s.epicLessonSlug}`,s.epicCompletedAt?`(${s.epicCompletedAt})`:null].filter(Boolean).join(" ");return e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`h-3 w-3 rounded-full ${j[p]}`,title:p}),s.type==="unknown"?e.jsxs("span",{className:"flex items-center gap-1",children:[h,e.jsx("span",{className:"text-red-500",children:e.jsx(f,{content:"This video is in the workshop on EpicWeb.dev, but not in the local workshop.",children:e.jsx(m,{name:"Close"})})})]}):e.jsx(i,{to:w(s),children:h}),e.jsx(i,{to:t,children:e.jsx(m,{name:"ExternalLink"})})]},s.epicLessonSlug)})}):e.jsx("p",{children:"No progress data"})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold",children:"Commands"}),e.jsxs("ul",{className:"max-h-48 overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar",children:[e.jsx("li",{children:e.jsx(c,{method:"POST",children:e.jsx("button",{name:"intent",value:"clear-caches",children:"Clear local caches"})})}),e.jsx("li",{children:e.jsx(c,{method:"POST",children:e.jsx("button",{name:"intent",value:"clear-data",children:"Clear all local data (including auth data)"})})}),e.jsx("li",{children:n.inspectorRunning?e.jsx(c,{method:"POST",children:e.jsx("button",{name:"intent",value:"stop-inspect",children:o?"Stopping inspector...":"Stop inspector"})}):e.jsx(c,{method:"POST",children:e.jsx("button",{name:"intent",value:"inspect",children:u?"Starting inspector...":"Start inspector"})})})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold",children:"Apps"}),e.jsx("ul",{className:"max-h-48 list-none overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar",children:n.apps.map(s=>e.jsxs("li",{className:"flex items-center gap-2 py-1",children:[n.processes[s.name]?e.jsx(x,{status:"running"}):e.jsx(x,{status:"stopped"}),s.name]},s.name))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold",children:"Processes"}),e.jsx("ul",{className:"overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar",children:Object.entries(n.processes).map(([s,t])=>e.jsx("li",{children:e.jsxs("span",{children:[s," - Port: ",t.port," - PID ",t.pid," -"," ",t.color]})},s))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold",children:"Test Processes"}),e.jsx("ul",{className:"overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar",children:Object.entries(n.testProcesses).map(([s,t])=>e.jsx("li",{children:e.jsxs("span",{children:[s," - PID ",t.pid," - Exit code: ",t.exitCode]})},s))})]})]})]})}function x({status:n}){const l={running:{pinger:"bg-green-400",circle:"bg-green-500"},starting:{pinger:"bg-sky-400",circle:"bg-sky-500"},stopped:{circle:"bg-gray-500"},taken:{pinger:"bg-red-400",circle:"bg-red-500"}}[n];return e.jsxs("span",{className:"relative flex h-3 w-3",children:[l.pinger?e.jsx("span",{className:`absolute inline-flex h-full w-full animate-ping rounded-full ${l.pinger} opacity-75`}):null,e.jsx("span",{className:`relative inline-flex h-3 w-3 rounded-full ${l.circle}`})]})}export{A as default,L as handle,T as meta};
2
- //# sourceMappingURL=_layout-C8uU4Hwj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_layout-C8uU4Hwj.js","sources":["../../../app/routes/admin+/_layout.tsx"],"sourcesContent":["import {\n\tgetApps,\n\tgetEpicWorkshopSlug,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getProcesses } from '@epic-web/workshop-utils/process-manager.server'\nimport {\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tjson,\n\ttype ActionFunctionArgs,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Form, Link, useLoaderData, useNavigation } from '@remix-run/react'\nimport { Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport {\n\tuseEpicProgress,\n\ttype SerializedProgress,\n} from '#app/routes/progress.tsx'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport {\n\tclearCaches,\n\tclearData,\n\tstartInspector,\n\tstopInspector,\n} from './admin-utils.server.tsx'\n\ndeclare global {\n\tvar __inspector_open__: boolean | undefined\n}\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\treturn [{ title: `👷 | ${rootData?.workshopTitle}` }]\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\tconst timings = makeTimings('adminLoader')\n\tconst workshopSlug = (await getEpicWorkshopSlug()) ?? 'Unkown'\n\tconst apps = (await getApps({ request, timings })).filter(\n\t\t(a, i, ar) => ar.findIndex((b) => a.name === b.name) === i,\n\t)\n\tconst processes: Record<\n\t\tstring,\n\t\t{ port: number; pid?: number; color: string }\n\t> = {}\n\tconst testProcesses: Record<\n\t\tstring,\n\t\t{ pid?: number; exitCode?: number | null }\n\t> = {}\n\tfor (const [\n\t\tname,\n\t\t{ port, process, color },\n\t] of getProcesses().devProcesses.entries()) {\n\t\tprocesses[name] = { port, pid: process.pid, color }\n\t}\n\n\tfor (const [\n\t\tname,\n\t\t{ process, exitCode },\n\t] of getProcesses().testProcesses.entries()) {\n\t\ttestProcesses[name] = { pid: process?.pid, exitCode }\n\t}\n\treturn json(\n\t\t{\n\t\t\tapps,\n\t\t\tprocesses,\n\t\t\tworkshopSlug,\n\t\t\ttestProcesses,\n\t\t\tinspectorRunning: global.__inspector_open__,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport async function action({ request }: ActionFunctionArgs) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\tconst intent = formData.get('intent')\n\tswitch (intent) {\n\t\tcase 'clear-data': {\n\t\t\tawait clearData()\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tcase 'clear-caches': {\n\t\t\tawait clearCaches()\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tcase 'inspect': {\n\t\t\tawait startInspector()\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tcase 'stop-inspect': {\n\t\t\tawait stopInspector()\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tdefault: {\n\t\t\tthrow new Error(`Unknown intent: ${intent}`)\n\t\t}\n\t}\n}\n\nfunction sortProgress(a: SerializedProgress, b: SerializedProgress) {\n\treturn a.type === 'unknown' && b.type === 'unknown'\n\t\t? 0\n\t\t: a.type === 'unknown'\n\t\t\t? -1\n\t\t\t: b.type === 'unknown'\n\t\t\t\t? 1\n\t\t\t\t: 0\n}\n\nfunction linkProgress(progress: SerializedProgress) {\n\tswitch (progress.type) {\n\t\tcase 'workshop-instructions':\n\t\t\treturn '/'\n\t\tcase 'workshop-finished':\n\t\t\treturn '/finished'\n\t\tcase 'instructions':\n\t\t\treturn `/${progress.exerciseNumber.toString().padStart(2, '0')}`\n\t\tcase 'step':\n\t\t\treturn `/${progress.exerciseNumber\n\t\t\t\t.toString()\n\t\t\t\t.padStart(2, '0')}/${progress.stepNumber.toString().padStart(2, '0')}`\n\t\tcase 'finished':\n\t\t\treturn `/${progress.exerciseNumber.toString().padStart(2, '0')}/finished`\n\t\tdefault:\n\t\t\treturn ''\n\t}\n}\n\nexport default function AdminLayout() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst navigation = useNavigation()\n\tconst epicProgress = useEpicProgress()\n\n\tconst isStartingInspector = navigation.formData?.get('intent') === 'inspect'\n\tconst isStoppingInspector =\n\t\tnavigation.formData?.get('intent') === 'stop-inspect'\n\n\tconst progressStatus = {\n\t\tcompleted: 'bg-blue-500',\n\t\tincomplete: 'bg-yellow-500',\n\t}\n\n\treturn (\n\t\t<main className=\"container mx-auto mt-8\">\n\t\t\t<h1 className=\"text-4xl font-bold\">Admin</h1>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<nav>\n\t\t\t\t\t<ul className=\"flex gap-3\">\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<Link className=\"underline\" to=\"/\">\n\t\t\t\t\t\t\t\tHome\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<Link className=\"underline\" to=\"/diff\">\n\t\t\t\t\t\t\t\tDiff Viewer\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</nav>\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"text-lg font-bold\">Progress</h2>\n\t\t\t\t\t{epicProgress ? (\n\t\t\t\t\t\t<ul className=\"flex max-h-72 flex-col gap-2 overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t\t{epicProgress.sort(sortProgress).map((progress) => {\n\t\t\t\t\t\t\t\tconst epicUrl = `https://www.epicweb.dev/workshops/${data.workshopSlug}/${progress.epicSectionSlug}/${progress.epicLessonSlug}`\n\t\t\t\t\t\t\t\tconst status = progress.epicCompletedAt\n\t\t\t\t\t\t\t\t\t? 'completed'\n\t\t\t\t\t\t\t\t\t: 'incomplete'\n\t\t\t\t\t\t\t\tconst label = [\n\t\t\t\t\t\t\t\t\t`${progress.epicSectionSlug}/${progress.epicLessonSlug}`,\n\t\t\t\t\t\t\t\t\tprogress.epicCompletedAt\n\t\t\t\t\t\t\t\t\t\t? `(${progress.epicCompletedAt})`\n\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t.join(' ')\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={progress.epicLessonSlug}\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-2\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName={`h-3 w-3 rounded-full ${progressStatus[status]}`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={status}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{progress.type === 'unknown' ? (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-red-500\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SimpleTooltip content=\"This video is in the workshop on EpicWeb.dev, but not in the local workshop.\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Close\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Link to={linkProgress(progress)}>{label}</Link>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<Link to={epicUrl}>\n\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"ExternalLink\"></Icon>\n\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<p>No progress data</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"text-lg font-bold\">Commands</h2>\n\t\t\t\t\t<ul className=\"max-h-48 overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t<button name=\"intent\" value=\"clear-caches\">\n\t\t\t\t\t\t\t\t\tClear local caches\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t<button name=\"intent\" value=\"clear-data\">\n\t\t\t\t\t\t\t\t\tClear all local data (including auth data)\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t{data.inspectorRunning ? (\n\t\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t\t<button name=\"intent\" value=\"stop-inspect\">\n\t\t\t\t\t\t\t\t\t\t{isStartingInspector\n\t\t\t\t\t\t\t\t\t\t\t? 'Stopping inspector...'\n\t\t\t\t\t\t\t\t\t\t\t: 'Stop inspector'}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t\t<button name=\"intent\" value=\"inspect\">\n\t\t\t\t\t\t\t\t\t\t{isStoppingInspector\n\t\t\t\t\t\t\t\t\t\t\t? 'Starting inspector...'\n\t\t\t\t\t\t\t\t\t\t\t: 'Start inspector'}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"text-lg font-bold\">Apps</h2>\n\t\t\t\t\t<ul className=\"max-h-48 list-none overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t{data.apps.map((app) => (\n\t\t\t\t\t\t\t<li key={app.name} className=\"flex items-center gap-2 py-1\">\n\t\t\t\t\t\t\t\t{data.processes[app.name] ? (\n\t\t\t\t\t\t\t\t\t<Pinger status=\"running\" />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Pinger status=\"stopped\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{app.name}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"text-lg font-bold\">Processes</h2>\n\t\t\t\t\t<ul className=\"overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t{Object.entries(data.processes).map(([key, process]) => (\n\t\t\t\t\t\t\t<li key={key}>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{key} - Port: {process.port} - PID {process.pid} -{' '}\n\t\t\t\t\t\t\t\t\t{process.color}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"text-lg font-bold\">Test Processes</h2>\n\t\t\t\t\t<ul className=\"overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t{Object.entries(data.testProcesses).map(([key, process]) => (\n\t\t\t\t\t\t\t<li key={key}>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{key} - PID {process.pid} - Exit code: {process.exitCode}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Pinger({\n\tstatus,\n}: {\n\tstatus: 'running' | 'starting' | 'stopped' | 'taken'\n}) {\n\tconst colors = {\n\t\trunning: {\n\t\t\tpinger: 'bg-green-400',\n\t\t\tcircle: 'bg-green-500',\n\t\t},\n\t\tstarting: {\n\t\t\tpinger: 'bg-sky-400',\n\t\t\tcircle: 'bg-sky-500',\n\t\t},\n\t\tstopped: {\n\t\t\tcircle: 'bg-gray-500',\n\t\t},\n\t\ttaken: {\n\t\t\tpinger: 'bg-red-400',\n\t\t\tcircle: 'bg-red-500',\n\t\t},\n\t}[status]\n\treturn (\n\t\t<span className=\"relative flex h-3 w-3\">\n\t\t\t{colors.pinger ? (\n\t\t\t\t<span\n\t\t\t\t\tclassName={`absolute inline-flex h-full w-full animate-ping rounded-full ${colors.pinger} opacity-75`}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t<span\n\t\t\t\tclassName={`relative inline-flex h-3 w-3 rounded-full ${colors.circle}`}\n\t\t\t/>\n\t\t</span>\n\t)\n}\n"],"names":["handle","getSitemapEntries","meta","matches","rootData","find","m","id","data","title","workshopTitle","sortProgress","a","b","type","linkProgress","progress","exerciseNumber","toString","padStart","stepNumber","AdminLayout","useLoaderData","navigation","useNavigation","epicProgress","useEpicProgress","isStartingInspector","formData","get","isStoppingInspector","progressStatus","completed","incomplete","jsxs","className","children","jsx","Link","to","sort","map","epicUrl","workshopSlug","epicSectionSlug","epicLessonSlug","status","epicCompletedAt","label","filter","Boolean","join","SimpleTooltip","content","Icon","name","Form","method","value","inspectorRunning","apps","app","processes","Pinger","Object","entries","key","process","port","pid","color","testProcesses","exitCode","colors","running","pinger","circle","starting","stopped","taken"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,j as s}from"./index-1cKOJFpX.js";import{P as i}from"./preview-CqrRe2BV.js";import{u as p}from"./components-CME-nGId.js";import"./misc-ENVX3CWf.js";import"./clsx-B-dksMZM.js";import"./request-info-CEhUGODY.js";import"./button-BklqyTPS.js";import"./loading-C5uX0jJw.js";import"./client-hints-DNUUFGmB.js";import"./progress-bar-CSvo1ZXP.js";import"./tooltip-BiHTe_7F.js";import"./index-BATSX33w.js";function d(){const{appInfo:r}=p(),o=t.useRef(null);return s.jsx(i,{appInfo:r,inBrowserBrowserRef:o})}export{d as default};
2
- //# sourceMappingURL=app-BiWJY58g.js.map
@@ -1,2 +0,0 @@
1
- import{c as o,j as r}from"./index-1cKOJFpX.js";import{d as e,c as m}from"./misc-ENVX3CWf.js";import{D as p}from"./diff-CpFxuKA2.js";import{N as n}from"./nav-chevrons-B82nbdyj.js";import{u as f,b as c}from"./components-CME-nGId.js";import"./clsx-B-dksMZM.js";import"./accordion-BroSqIct.js";import"./tooltip-BiHTe_7F.js";import"./index-hogig2HK.js";import"./index-BXWoOGxB.js";import"./mdx-M0kcP-mP.js";import"./epic-video-iluUs1-s.js";import"./index-BATSX33w.js";import"./request-info-CEhUGODY.js";import"./client-hints-DNUUFGmB.js";import"./loading-C5uX0jJw.js";import"./user-D6tTg1yS.js";import"./progress-bar-CSvo1ZXP.js";function E(){const i=f(),[s]=c();new URLSearchParams(s).set("forceFresh","diff");const t=o(),a=e.useSpinDelay(t.state!=="idle",{delay:200,minDuration:200});return r.jsxs("div",{className:m("grid h-full grid-rows-[1fr,auto]",{"cursor-wait opacity-30":a}),children:[r.jsx("div",{className:"overflow-y-auto",children:r.jsx(p,{diff:i.diff,allApps:i.allApps})}),r.jsx("div",{className:"flex h-16 items-center justify-end border-t",children:r.jsx(n,{prev:i.prevLink,next:i.nextLink})})]})}export{E as default};
2
- //# sourceMappingURL=diff-Cw8ktQ1-.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,r as t}from"./index-1cKOJFpX.js";import{E as l}from"./index-Dx5GmdYq.js";import{E as n}from"./epic-video-iluUs1-s.js";import{L as a}from"./loading-C5uX0jJw.js";import{N as d}from"./nav-chevrons-B82nbdyj.js";import{M as c,E as m}from"./mdx-M0kcP-mP.js";import{c as p}from"./misc-ENVX3CWf.js";import{g as f}from"./seo-pBpFCWsy.js";import{P as h}from"./progress-BsY6hGPp.js";import{u as x,L as u}from"./components-CME-nGId.js";import"./index-BATSX33w.js";import"./request-info-CEhUGODY.js";import"./tooltip-BiHTe_7F.js";import"./client-hints-DNUUFGmB.js";import"./user-D6tTg1yS.js";import"./clsx-B-dksMZM.js";import"./progress-bar-CSvo1ZXP.js";const q={getSitemapEntries:()=>[{route:"/finished"}]},R=({matches:s})=>{var o;const r=(o=s.find(i=>i.id==="root"))==null?void 0:o.data;return r?f({title:`🎉 ${r==null?void 0:r.workshopTitle}`,description:`Elaboration for ${r==null?void 0:r.workshopTitle}`,ogTitle:`Finished ${r==null?void 0:r.workshopTitle}`,ogDescription:"You finished! Time to submit feedback.",instructor:r.instructor,requestInfo:r.requestInfo}):[]},j={h1:()=>null};function U(){const s=x();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(u,{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-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",id:s.articleId,children:s.finishedCode?e.jsx(n,{epicVideoInfosPromise:s.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(c,{code:s.finishedCode,components:j})})}):"No finished instructions yet..."}),e.jsx(l,{elementQuery:`#${s.articleId}`}),e.jsx(h,{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(m,{file:s.workshopFinished.file,relativePath:s.workshopFinished.relativePath}):null,e.jsx(d,{prev:s.prevStepLink,next:{to:"/"}})]})]}),e.jsx(b,{workshopTitle:s.workshopTitle,workshopFormEmbedUrl:s.workshopFormEmbedUrl})]})})}function b({workshopTitle:s,workshopFormEmbedUrl:r}){const[o,i]=t.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(a,{children:e.jsxs("span",{children:["Loading ",s," Elaboration form"]})})}),e.jsx("iframe",{onLoad:()=>i(!0),onError:()=>i(!0),title:"Elaboration",src:r,className:p("absolute inset-0 flex h-full w-full transition-opacity duration-300",o?"opacity-100":"opacity-0")})]})}export{U as default,q as handle,R as meta};
2
- //# sourceMappingURL=finished-Bm-bCUU2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finished-Bm-bCUU2.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n\tworkshopRoot,\n\tgetWorkshopTitle,\n} from '@epic-web/workshop-utils/apps.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { getPkgProp } from '@epic-web/workshop-utils/utils.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tdefer,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport * as React from 'react'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport { getEpicVideoInfos } from '#app/utils/epic-api.ts'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { EditFileOnGitHub } from '../launch-editor.tsx'\nimport { ProgressToggle } from '../progress.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => [{ route: '/finished' }],\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!rootData) return []\n\n\treturn getSeoMetaTags({\n\t\ttitle: `🎉 ${rootData?.workshopTitle}`,\n\t\tdescription: `Elaboration for ${rootData?.workshopTitle}`,\n\t\togTitle: `Finished ${rootData?.workshopTitle}`,\n\t\togDescription: `You finished! Time to submit feedback.`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('finishedLoader')\n\tconst exercises = await getExercises({ request, timings })\n\tconst compiledFinished = await time(() => getWorkshopFinished({ request }), {\n\t\ttimings,\n\t\ttype: 'compileMdx',\n\t\tdesc: 'compileMdx in finished',\n\t})\n\n\tconst lastExercises = exercises[exercises.length - 1]\n\tconst workshopTitle = await getWorkshopTitle()\n\tconst workshopFormTemplate = await getPkgProp(\n\t\tworkshopRoot,\n\t\t'epicshop.forms.workshop',\n\t\t'https://docs.google.com/forms/d/e/1FAIpQLSdRmj9p8-5zyoqRzxp3UpqSbC3aFkweXvvJIKes0a5s894gzg/viewform?hl=en&embedded=true&entry.2123647600={workshopTitle}',\n\t)\n\tconst workshopFormEmbedUrl = workshopFormTemplate.replace(\n\t\t'{workshopTitle}',\n\t\tencodeURIComponent(workshopTitle),\n\t)\n\treturn defer(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-finished`,\n\t\t\tworkshopTitle,\n\t\t\tworkshopFormEmbedUrl,\n\t\t\tfinishedCode:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? compiledFinished.compiled.code\n\t\t\t\t\t: null,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(compiledFinished.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\tworkshopFinished: {\n\t\t\t\tstatus: compiledFinished.compiled.status,\n\t\t\t\tfile: compiledFinished.file,\n\t\t\t\trelativePath: compiledFinished.relativePath,\n\t\t\t},\n\t\t\tprevStepLink: lastExercises\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/${lastExercises.exerciseNumber}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExerciseFinished() {\n\tconst data = useLoaderData<typeof loader>()\n\treturn (\n\t\t<div className=\"flex h-full flex-grow flex-col\">\n\t\t\t<main className=\"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t<div className=\"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-start gap-x-2\">\n\t\t\t\t\t\t\t\t<Link to=\"/\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{data.workshopTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t<span>/</span>\n\t\t\t\t\t\t\t\t<span>Elaboration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8\"\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.finishedCode ? (\n\t\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t\t<Mdx code={data.finishedCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// TODO: render a random dad joke...\n\t\t\t\t\t\t\t'No finished instructions yet...'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\ttype=\"workshop-finished\"\n\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex h-16 justify-between border-b-4 border-t lg:border-b-0\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t{data.workshopFinished.status === 'success' ? (\n\t\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\t\tfile={data.workshopFinished.file}\n\t\t\t\t\t\t\t\trelativePath={data.workshopFinished.relativePath}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<NavChevrons prev={data.prevStepLink} next={{ to: '/' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Survey\n\t\t\t\t\tworkshopTitle={data.workshopTitle}\n\t\t\t\t\tworkshopFormEmbedUrl={data.workshopFormEmbedUrl}\n\t\t\t\t/>\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nfunction Survey({\n\tworkshopTitle,\n\tworkshopFormEmbedUrl,\n}: {\n\tworkshopTitle: string\n\tworkshopFormEmbedUrl: string\n}) {\n\tconst [iframeLoaded, setIframeLoaded] = React.useState(false)\n\treturn (\n\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t{!iframeLoaded ? (\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n\t\t\t\t\t<Loading>\n\t\t\t\t\t\t<span>Loading {workshopTitle} Elaboration form</span>\n\t\t\t\t\t</Loading>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<iframe\n\t\t\t\tonLoad={() => setIframeLoaded(true)}\n\t\t\t\t// show what would have shown if there is an error\n\t\t\t\tonError={() => setIframeLoaded(true)}\n\t\t\t\ttitle=\"Elaboration\"\n\t\t\t\tsrc={workshopFormEmbedUrl}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute inset-0 flex h-full w-full transition-opacity duration-300',\n\t\t\t\t\tiframeLoaded ? 'opacity-100' : 'opacity-0',\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","route","meta","matches","rootData","find","m","id","data","getSeoMetaTags","title","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","mdxComponents","h1","ExerciseFinished","useLoaderData","className","children","jsxs","jsx","Link","to","articleId","finishedCode","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","code","components","ElementScrollRestoration","elementQuery","ProgressToggle","type","workshopFinished","status","EditFileOnGitHub","file","relativePath","NavChevrons","prev","prevStepLink","next","Survey","workshopFormEmbedUrl","iframeLoaded","setIframeLoaded","React","Loading","onLoad","onError","src","cn"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as I,j}from"./index-1cKOJFpX.js";import{a as A,Z as _e,b as Ce,c as Ue,d as Re,e as Me,f as $e,g as Be,h as Je,i as Ke,j as ze,k as qe,l as He,m as We,z as te,u as Ne}from"./request-info-CEhUGODY.js";import{I as ne}from"./misc-ENVX3CWf.js";import{S as Ge}from"./tooltip-BiHTe_7F.js";import{u as Xe}from"./client-hints-DNUUFGmB.js";import{a as Qe,d as Ye}from"./components-CME-nGId.js";function ye(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,n)}return t}function y(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?ye(Object(t),!0).forEach(function(n){xe(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ye(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function xe(e,r,t){return r=rr(r),r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function er(e,r){if(typeof e!="object"||e===null)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,r||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function rr(e){var r=er(e,"string");return typeof r=="symbol"?r:String(r)}function tr(e,r){var t=new FormData(e,r);if(r&&r.type==="submit"&&r.name!==""){var n=t.getAll(r.name);n.includes(r.value)||t.append(r.name,r.value)}return t}function T(e){return e?e.split(/\.|(\[\d*\])/).reduce((r,t)=>{if(typeof t<"u"&&t!==""&&t!=="__proto__"&&t!=="constructor"&&t!=="prototype")if(t.startsWith("[")&&t.endsWith("]")){var n=t.slice(1,-1);r.push(Number(n))}else r.push(t);return r},[]):[]}function _(e){return e.reduce((r,t)=>typeof t=="number"?"".concat(r,"[").concat(Number.isNaN(t)?"":t,"]"):r===""||t===""?[r,t].join(""):[r,t].join("."),"")}function z(e,r){return typeof r<"u"?_([...T(e),r]):e??""}function W(e,r){var t=T(e),n=T(r);return t.length>=n.length&&n.every((a,o)=>t[o]===a)}function k(e,r,t){for(var n=T(r),a=n.length,o=a-1,l=-1,i=e;i!=null&&++l<a;){var u=n[l],c=n[l+1],m=l!=o?Object.prototype.hasOwnProperty.call(i,u)&&i[u]!==null?i[u]:typeof c=="number"?[]:{}:t(i[u]);i[u]=m,i=i[u]}}function x(e,r){var t=e;for(var n of T(r)){if(typeof t>"u"||t==null)break;if(!Object.prototype.hasOwnProperty.call(t,n))return;if(Z(t)&&typeof n=="string")t=t[n];else if(Array.isArray(t)&&typeof n=="number")t=t[n];else return}return t}function Z(e){return!!e&&e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function nr(e){return typeof File>"u"?!1:e instanceof File}function M(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(Z(e)){var t=Object.keys(e).sort().reduce((n,a)=>{var o=M(e[a],r);return typeof o<"u"&&(n[a]=o),n},{});return Object.keys(t).length===0?void 0:t}if(Array.isArray(e))return e.length===0?void 0:e.map(n=>M(n,r));if(!(typeof e=="string"&&e===""||e===null||nr(e)&&(!r||e.size===0)))return e}function de(e){var r,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={},a=(r=t.resolve)!==null&&r!==void 0?r:i=>i;function o(i,u){var c=M(a(i));if(typeof c<"u"&&(n[u]=c),Array.isArray(i))for(var m=0;m<i.length;m++)o(i[m],"".concat(u,"[").concat(m,"]"));else if(Z(i))for(var[g,N]of Object.entries(i))o(N,u?"".concat(u,".").concat(g):g)}if(e){var l;o(e,(l=t.prefix)!==null&&l!==void 0?l:"")}return n}function ee(e,r){if(!e)throw new Error(r)}function $(){return(Date.now()*Math.random()).toString(36)}function J(e){return JSON.parse(JSON.stringify(e))}function ar(e){return e instanceof Element&&(e.tagName==="INPUT"||e.tagName==="SELECT"||e.tagName==="TEXTAREA"||e.tagName==="BUTTON")}function ae(e){return ar(e)&&e.type!=="submit"&&e.type!=="button"&&e.type!=="reset"}function ir(e){var r,t,n=e.target,a=e.submitter;return(r=(t=a==null?void 0:a.getAttribute("formaction"))!==null&&t!==void 0?t:n.getAttribute("action"))!==null&&r!==void 0?r:"".concat(location.pathname).concat(location.search)}function or(e){var r,t=e.target,n=e.submitter,a=(r=n==null?void 0:n.getAttribute("formenctype"))!==null&&r!==void 0?r:t.enctype;return a==="multipart/form-data"?a:"application/x-www-form-urlencoded"}function ur(e){var r,t,n=e.target,a=e.submitter,o=(r=(t=a==null?void 0:a.getAttribute("formmethod"))!==null&&t!==void 0?t:n.getAttribute("method"))===null||r===void 0?void 0:r.toUpperCase();switch(o){case"POST":case"PUT":case"PATCH":case"DELETE":return o}return"GET"}function lr(e,r){if(ee(!!e,"Failed to submit the form. The element provided is null or undefined."),typeof e.requestSubmit=="function")e.requestSubmit(r);else{var t=new SubmitEvent("submit",{bubbles:!0,cancelable:!0,submitter:r});e.dispatchEvent(t)}}var K="__intent__",ie="__state__";function Ee(e){var r=e.get(K),t=e.get(ie);ee((typeof r=="string"||r===null)&&(typeof t=="string"||t===null),'The input name "'.concat(K,'" and "').concat(ie,'" are reserved by Conform. Please use another name for your input.'));var n={payload:{},fields:new Set,intent:fr(r)};t&&(n.state=JSON.parse(t));var a=function(u){if(o===K||o===ie)return 1;n.fields.add(o),k(n.payload,o,c=>c?Array.isArray(c)?c.concat(u):[c,u]:u)};for(var[o,l]of e.entries())a(l);return n}function sr(e,r){var t=Ee(e),n=t.intent;if(n)switch(n.type){case"update":{var a=z(n.payload.name,n.payload.index),o=n.payload.value;typeof n.payload.value<"u"&&(a?k(t.payload,a,()=>o):t.payload=o);break}case"reset":{var l=z(n.payload.name,n.payload.index);l?k(t.payload,l,()=>{}):t.payload={};break}case"insert":case"remove":case"reorder":{je(t.payload,n);break}}var i=r.resolve(t.payload,n),u=c=>dr(y(y({},t),{},{value:c.value,error:c.error}));return i instanceof Promise?i.then(u):u(i)}function dr(e){return e.intent||!e.value||e.error?{status:e.intent?void 0:"error",payload:e.payload,error:typeof e.error<"u"?e.error:{},reply(r){return me(e,r)}}:{status:"success",payload:e.payload,value:e.value,reply(r){return me(e,r)}}}function me(e){var r,t,n,a,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if("resetForm"in o&&o.resetForm||((r=e.intent)===null||r===void 0?void 0:r.type)==="reset"&&((t=e.intent.payload.name)!==null&&t!==void 0?t:"")==="")return{initialValue:null};if("hideFields"in o&&o.hideFields)for(var l of o.hideFields){var i=x(e.payload,l);typeof i<"u"&&k(e.payload,l,()=>{})}var u="formErrors"in o||"fieldErrors"in o?M(y({"":(n=o.formErrors)!==null&&n!==void 0?n:null},o.fieldErrors)):null,c=e.error||u?y(y({},e.error),u):void 0;return{status:e.intent?void 0:c?"error":"success",intent:e.intent?e.intent:void 0,initialValue:(a=M(e.payload,typeof document<"u"))!==null&&a!==void 0?a:{},error:c,state:e.state,fields:Array.from(e.fields)}}function fr(e){if(!e)return null;var r=JSON.parse(e);if(typeof r.type!="string"||typeof r.payload>"u")throw new Error("Unknown form control intent");return r}function cr(e){switch(e.type){case"insert":return JSON.stringify({type:e.type,payload:y(y({},e.payload),{},{defaultValue:q(e.payload.defaultValue)})});case"update":return JSON.stringify({type:e.type,payload:y(y({},e.payload),{},{value:q(e.payload.value)})});default:return JSON.stringify(e)}}function ue(e,r){var t;switch(ee(Array.isArray(e),"Failed to update list. The value is not an array."),r.type){case"insert":e.splice((t=r.payload.index)!==null&&t!==void 0?t:e.length,0,r.payload.defaultValue);break;case"remove":e.splice(r.payload.index,1);break;case"reorder":e.splice(r.payload.to,0,...e.splice(r.payload.from,1));break;default:throw new Error("Unknown list intent received")}}function je(e,r){k(e,r.payload.name,t=>{var n=t??[];return ue(n,r),n})}var le=Symbol.for("root");function Y(e,r,t){var n=Object.keys(e).sort((u,c)=>c.localeCompare(u)),a={},o=function(){var c=e[l];W(l,r)&&l!==r&&(k(a,l,m=>typeof m>"u"?c:(m[le]=c,m)),delete e[l])};for(var l of n)o();var i=t(x(a,r));Object.assign(e,de(i,{resolve(u){if(Z(u)||Array.isArray(u)){var c;return(c=u[le])!==null&&c!==void 0?c:null}return u},prefix:r}))}function ge(e,r,t){Y(e,r.payload.name,n=>{var a=n??[];switch(r.type){case"insert":ue(a,{type:r.type,payload:y(y({},r.payload),{},{defaultValue:t==null?void 0:t(r.payload.defaultValue)})});break;default:ue(a,r);break}return a})}function q(e){return Z(e)?Object.entries(e).reduce((r,t)=>{var[n,a]=t;return r[n]=q(a),r},{}):Array.isArray(e)?e.map(q):e instanceof Date?e.toISOString():typeof e=="boolean"?e?"on":void 0:typeof e=="number"||typeof e=="bigint"?e.toString():e??void 0}function be(e,r){var t,n,a,o,l,i=r?void 0:e.lastResult,u=e.defaultValue?q(e.defaultValue):{},c=(t=i==null?void 0:i.initialValue)!==null&&t!==void 0?t:u,m={formId:e.formId,isValueUpdated:!1,submissionStatus:i==null?void 0:i.status,defaultValue:u,initialValue:c,value:c,constraint:(n=e.constraint)!==null&&n!==void 0?n:{},validated:(a=i==null||(o=i.state)===null||o===void 0?void 0:o.validated)!==null&&a!==void 0?a:{},key:r?y({"":$()},H(u)):H(u),error:(l=i==null?void 0:i.error)!==null&&l!==void 0?l:{}};return Ie(m,i==null?void 0:i.intent,i==null?void 0:i.fields),m}function H(e,r){return Object.entries(de(e,{prefix:r})).reduce((t,n)=>{var[a,o]=n;if(Array.isArray(o))for(var l=0;l<o.length;l++)t[z(a,l)]=$();return t},{})}function he(e,r){for(var t of Object.keys(e.error).concat(r??[]))e.validated[t]=!0}function Ie(e,r,t,n){var a;if(!r){he(e,t);return}switch(r.type){case"validate":{r.payload.name?e.validated[r.payload.name]=!0:he(e,t);break}case"update":{var{validated:o,value:l}=r.payload,i=z(r.payload.name,r.payload.index);typeof l<"u"&&Oe(e,i??"",l),typeof o<"u"&&(i?Y(e.validated,i,()=>{}):e.validated={},o?((Z(l)||Array.isArray(l))&&Object.assign(e.validated,de(l,{resolve(){return!0},prefix:i})),e.validated[i??""]=!0):i&&delete e.validated[i]);break}case"reset":{var u=z(r.payload.name,r.payload.index),c=x(e.defaultValue,u);Oe(e,u,c),u?(Y(e.validated,u,()=>{}),delete e.validated[u]):e.validated={};break}case"insert":case"remove":case"reorder":{n&&(e.initialValue=J(e.initialValue),e.key=J(e.key),ge(e.key,r,g=>!Array.isArray(g)&&!Z(g)?$():Object.assign(H(g),{[le]:$()})),je(e.initialValue,r)),ge(e.validated,r),e.validated[r.payload.name]=!0;break}}var m=(a=t==null?void 0:t.filter(g=>e.validated[g]))!==null&&a!==void 0?a:[];e.error=Object.entries(e.error).reduce((g,N)=>{var[E,P]=N;return(e.validated[E]||m.some(V=>W(E,V)))&&(g[E]=P),g},{})}function Oe(e,r,t){if(r===""){e.initialValue=t,e.value=t,e.key=y(y({},H(t)),{},{"":$()});return}e.initialValue=J(e.initialValue),e.value=J(e.value),e.key=J(e.key),k(e.initialValue,r,()=>t),k(e.value,r,()=>t),(Z(t)||Array.isArray(t))&&(Y(e.key,r,()=>{}),Object.assign(e.key,H(t,r))),e.key[r]=$()}function G(e){var r={};return new Proxy(r,{get(t,n,a){var o;if(typeof n=="string")return(o=r[n])!==null&&o!==void 0?o:r[n]=e(n,a)}})}function oe(e){var r=M(e);return G((t,n)=>{if(t==="")return r;var a=T(t),o=_(a.slice(0,-1)),l=_(a.slice(-1)),i=n[o];return x(i,l)})}function vr(e){return G((r,t)=>{var n,a=e[r];if(!a){for(var o=T(r),l=o.length-1;l>=0;l--){var i=o[l];if(typeof i=="number"&&!Number.isNaN(i)){o[l]=Number.NaN;break}}var u=_(o);r!==u&&(a=t[u])}return(n=a)!==null&&n!==void 0?n:{}})}function pr(e){return G((r,t)=>{var n=e[r],a=T(r);if(a.length===0)return n;var o=t[_(a.slice(0,-1))];return typeof o>"u"?n:"".concat(o,"/").concat(n??a.at(-1))})}function yr(e){return G(r=>{var t=Object.keys(e);if(r==="")return t.length===0;for(var n of t)if(W(n,r)&&typeof e[n]<"u")return!1;return!0})}function mr(e,r,t){return G(n=>JSON.stringify(e[n])!==JSON.stringify(r[n],(a,o)=>n===""&&a===""&&o?Object.entries(o).reduce((l,i)=>{var[u,c]=i;return t(u)?Object.assign(l??{},{[u]:c}):l},void 0):o))}function U(e,r,t,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:(E,P)=>JSON.stringify(E)!==JSON.stringify(P);if(n&&e!==r){var o,l,i=(o=n.prefix)!==null&&o!==void 0?o:[],u=(l=n.name)!==null&&l!==void 0?l:[],c=i.length===0?u:Array.from(new Set([...Object.keys(e),...Object.keys(r)])),m=function(P){if(i.length===0||u.includes(P)||i.some(B=>W(P,B))){var V;if((V=t[P])!==null&&V!==void 0||(t[P]=a(e[P],r[P])),t[P])return{v:!0}}},g;for(var N of c)if(g=m(N),g)return g.v}return!1}function gr(e){var r=[],t=e,n=be(e),a=l(n);function o(){return document.forms.namedItem(t.formId)}function l(s){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s,d=arguments.length>2?arguments[2]:void 0,v=!d||f.defaultValue!==s.defaultValue?oe(s.defaultValue):d.defaultValue,h=s.initialValue===s.defaultValue?v:!d||f.initialValue!==s.initialValue?oe(s.initialValue):d.initialValue,b=s.value===s.initialValue?h:!d||f.value!==s.value?oe(s.value):d.value;return{submissionStatus:s.submissionStatus,defaultValue:v,initialValue:h,value:b,error:!d||f.error!==s.error?s.error:d.error,validated:s.validated,constraint:!d||f.constraint!==s.constraint?vr(s.constraint):d.constraint,key:!d||f.key!==s.key?pr(s.key):d.key,valid:!d||f.error!==s.error?yr(s.error):d.valid,dirty:!d||f.defaultValue!==s.defaultValue||f.value!==s.value?mr(v,b,O=>{var w,L;return(w=(L=t.shouldDirtyConsider)===null||L===void 0?void 0:L.call(t,O))!==null&&w!==void 0?w:!0}):d.dirty}}function i(s){var f=n,d=a,v=l(s,f,d);n=s,a=v;var h={value:{},error:{},initialValue:{},key:{},valid:{},dirty:{}};for(var b of r){var O,w=(O=b.getSubject)===null||O===void 0?void 0:O.call(b);(!w||w.formId&&f.formId!==s.formId||w.status&&d.submissionStatus!==v.submissionStatus||U(d.error,v.error,h.error,w.error)||U(d.initialValue,v.initialValue,h.initialValue,w.initialValue)||U(d.key,v.key,h.key,w.key,(L,X)=>L!==X)||U(d.valid,v.valid,h.valid,w.valid,u)||U(d.dirty,v.dirty,h.dirty,w.dirty,u)||U(d.value,v.value,h.value,w.value))&&b.callback()}}function u(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return s!==f}function c(){return JSON.stringify({validated:n.validated})}function m(s){var f=s.target,d=s.submitter;ee(f===o(),"The submit event is dispatched by form#".concat(f.id," instead of form#").concat(t.formId));var v=tr(f,d),h={formData:v,action:ir(s),encType:or(s),method:ur(s)};if(typeof(t==null?void 0:t.onValidate)>"u")return h;var b=t.onValidate({form:f,formData:v,submitter:d});if(b.status==="success"||b.error!==null){var O=b.reply();fe(y(y({},O),{},{status:O.status!=="success"?O.status:void 0}))}return y(y({},h),{},{submission:b})}function g(s){var f=o(),d=s.target;return!f||!ae(d)||d.form!==f||!d.form.isConnected||d.name===""?null:d}function N(s,f){var{shouldValidate:d="onSubmit",shouldRevalidate:v=d}=t,h=n.validated[s.name];return h?v===f&&(f==="onInput"||n.isValueUpdated):d===f}function E(s){var f=new FormData(s),d=Ee(f);i(y(y({},n),{},{isValueUpdated:!0,value:d.payload}))}function P(s){var f=g(s);!f||!f.form||(s.defaultPrevented||!N(f,"onInput")?E(f.form):re({type:"validate",payload:{name:f.name}}))}function V(s){var f=g(s);!f||s.defaultPrevented||!N(f,"onBlur")||re({type:"validate",payload:{name:f.name}})}function B(){i(be(t,!0))}function Te(s){var f=o();s.type!=="reset"||s.target!==f||s.defaultPrevented||B()}function fe(s){var f,d,v=o();if(!s.initialValue){B();return}var h=Object.entries((f=s.error)!==null&&f!==void 0?f:{}).reduce((w,L)=>{var[X,ve]=L,pe=ve===null?n.error[X]:ve;return pe&&(w[X]=pe),w},{}),b=y(y({},n),{},{isValueUpdated:!1,submissionStatus:s.status,value:s.initialValue,validated:y(y({},n.validated),(d=s.state)===null||d===void 0?void 0:d.validated),error:h});if(Ie(b,s.intent,s.fields,!0),i(b),v&&s.status==="error"){for(var O of v.elements)if(ae(O)&&n.error[O.name]){O.focus();break}}}function De(s){var f=t.formId,d=t.lastResult;Object.assign(t,s),t.formId!==f?B():s.lastResult&&s.lastResult!==d&&fe(s.lastResult)}function ke(s,f){var d={callback:s,getSubject:f};return r.push(d),()=>{r=r.filter(v=>v!==d)}}function Ze(){return a}function re(s){var f=o(),d=document.createElement("button"),v=ce(s);d.name=v.name,d.value=v.value,d.hidden=!0,d.formNoValidate=!0,f==null||f.appendChild(d),lr(f,d),f==null||f.removeChild(d)}function ce(s){return{name:K,value:cr(s),form:t.formId,formNoValidate:!0}}function C(s){var f=function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return re({type:s,payload:v})};return Object.assign(f,{getButtonProps(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ce({type:s,payload:d})}})}function Le(){var s=new MutationObserver(f=>{var d=o();if(d)for(var v of f){var h=v.type==="childList"?[...v.addedNodes,...v.removedNodes]:[v.target];for(var b of h){var O=ae(b)?b:b instanceof HTMLElement?b.querySelector("input,select,textarea"):null;if((O==null?void 0:O.form)===d){E(d);return}}}});return s.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["form","name"]}),()=>{s.disconnect()}}return{getFormId(){return n.formId},submit:m,onReset:Te,onInput:P,onBlur:V,onUpdate:De,validate:C("validate"),reset:C("reset"),update:C("update"),insert:C("insert"),remove:C("remove"),reorder:C("reorder"),subscribe:ke,getState:Ze,getSerializedState:c,observe:Le}}function Se(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,n)}return t}function F(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Se(Object(t),!0).forEach(function(n){br(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Se(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function br(e,r,t){return r=wr(r),r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function hr(e,r){if(e==null)return{};var t={},n=Object.keys(e),a,o;for(o=0;o<n.length;o++)a=n[o],!(r.indexOf(a)>=0)&&(t[a]=e[a]);return t}function Or(e,r){if(e==null)return{};var t=hr(e,r),n,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],!(r.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}function Sr(e,r){if(typeof e!="object"||e===null)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,r||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function wr(e){var r=Sr(e,"string");return typeof r=="symbol"?r:String(r)}var Pr=Symbol("wrapped");function Nr(e,r){var t=I.useCallback(n=>e.subscribe(n,()=>r==null?void 0:r.current),[e,r]);return I.useSyncExternalStore(t,e.getState,e.getState)}function Er(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=I.useRef(e);return r.current=e,r}function R(e,r,t,n){if(r==="status"||r==="formId")e.current[r]=!0;else if(typeof t<"u"&&typeof n<"u"){var a,o;e.current[r]=F(F({},e.current[r]),{},{[t]:((a=(o=e.current[r])===null||o===void 0?void 0:o[t])!==null&&a!==void 0?a:[]).concat(n)})}}function Ve(e,r,t){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"",a=n?"".concat(e.getFormId(),"-").concat(n):e.getFormId(),o=e.getState();return new Proxy({id:a,name:n,errorId:"".concat(a,"-error"),descriptionId:"".concat(a,"-description"),get initialValue(){return o.initialValue[n]},get value(){return o.value[n]},get errors(){return o.error[n]},get key(){return o.key[n]},get valid(){return o.valid[n]},get dirty(){return o.dirty[n]},get allErrors(){if(n==="")return o.error;var l={};for(var[i,u]of Object.entries(o.error))W(i,n)&&(l[i]=u);return l},get getFieldset(){return()=>new Proxy({},{get(l,i,u){return typeof i=="string"?Ae(e,r,t,n,i):Reflect.get(l,i,u)}})}},{get(l,i,u){if(o===t)switch(i){case"id":case"errorId":case"descriptionId":R(r,"formId");break;case"key":case"initialValue":case"value":case"valid":case"dirty":R(r,i,"name",n);break;case"errors":case"allErrors":R(r,"error",i==="errors"?"name":"prefix",n);break}return Reflect.get(l,i,u)}})}function Ae(e,r,t){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"",a=arguments.length>4?arguments[4]:void 0,o=typeof a>"u"?n:_([...T(n),a]);return new Proxy({},{get(l,i,u){var c,m=Ve(e,r,t,o),g=e.getState();switch(i){case"formId":return g===t&&R(r,"formId"),e.getFormId();case"required":case"minLength":case"maxLength":case"min":case"max":case"pattern":case"step":case"multiple":return(c=g.constraint[o])===null||c===void 0?void 0:c[i];case"getFieldList":return()=>{var N,E=(N=g.initialValue[o])!==null&&N!==void 0?N:[];if(g===t&&R(r,"initialValue","name",o),!Array.isArray(E))throw new Error("The initial value at the given name is not a list");return Array(E.length).fill(0).map((P,V)=>Ae(e,r,t,o,V))}}return Reflect.get(m,i,u)}})}function jr(e,r,t,n){return new Proxy({},{get(a,o,l){var i=Ve(e,r,t),u=e.getState();switch(o){case"context":return{[Pr]:e};case"status":return u===t&&R(r,"status"),u.submissionStatus;case"validate":case"update":case"reset":case"insert":case"remove":case"reorder":return e[o];case"onSubmit":return e.submit;case"noValidate":return n}return Reflect.get(i,o,l)}})}function Ir(e){var{onSubmit:r}=e,t=gr(e);return F(F({},t),{},{submit(n){var a=n.nativeEvent,o=t.submit(a);if(!o.submission||o.submission.status==="success"||o.submission.error===null){if(!o.formData.has(K)){var l;(l=r)===null||l===void 0||l(n,o)}}else n.preventDefault()},onUpdate(n){r=n.onSubmit,t.onUpdate(n)}})}var Vr=["id"],se=typeof document>"u"?I.useEffect:I.useLayoutEffect;function Ar(e){var r=I.useId();return e??r}function Fr(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,[r,t]=I.useState(e);return se(()=>{r||t(!0)},[r]),r}function Tr(e){var{id:r}=e,t=Or(e,Vr),n=Ar(r),[a]=I.useState(()=>Ir(F(F({},t),{},{formId:n})));se(()=>{var c=a.observe();return document.addEventListener("input",a.onInput),document.addEventListener("focusout",a.onBlur),document.addEventListener("reset",a.onReset),()=>{c(),document.removeEventListener("input",a.onInput),document.removeEventListener("focusout",a.onBlur),document.removeEventListener("reset",a.onReset)}},[a]),se(()=>{a.onUpdate(F(F({},t),{},{formId:n}))});var o=Er(),l=Nr(a,o),i=Fr(e.defaultNoValidate),u=jr(a,o,l,i);return[u,u.getFieldset()]}function Fe(e){for(var r in e)e[r]===void 0&&delete e[r];return e}function Dr(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof r.ariaAttributes<"u"&&!r.ariaAttributes)return{};var t=r.ariaInvalid==="allErrors"?!e.valid:typeof e.errors<"u",n=r.ariaDescribedBy;return Fe({"aria-invalid":t||void 0,"aria-describedby":t?"".concat(e.errorId," ").concat(n??"").trim():n})}function kr(e,r){return Fe(F({id:e.id,onSubmit:e.onSubmit,noValidate:e.noValidate},Dr(e,r)))}function we(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,n)}return t}function p(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?we(Object(t),!0).forEach(function(n){Zr(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):we(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Zr(e,r,t){return r=_r(r),r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Lr(e,r){if(typeof e!="object"||e===null)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,r||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function _r(e){var r=Lr(e,"string");return typeof r=="symbol"?r:String(r)}function D(e,r){if(typeof e!="string")return e;if(e!=="")return typeof r!="function"?e:r(e)}function Q(e){if(!(typeof File<"u"&&e instanceof File&&e.name===""&&e.size===0))return e}function Cr(e){return typeof File>"u"?!1:e._def.effect.type==="refinement"&&e.innerType()._def.typeName==="ZodAny"&&e.safeParse(new File([],"")).success&&!e.safeParse("").success}function S(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Map,t=r.get(e);if(t)return t;var n=e,a=e._def;if(a.typeName==="ZodString"||a.typeName==="ZodLiteral"||a.typeName==="ZodEnum"||a.typeName==="ZodNativeEnum")n=A().transform(i=>D(i)).pipe(e);else if(a.typeName==="ZodNumber")n=A().transform(i=>D(i,u=>u.trim()===""?Number.NaN:Number(u))).pipe(e);else if(a.typeName==="ZodBoolean")n=A().transform(i=>D(i,u=>u==="on"?!0:u)).pipe(e);else if(a.typeName==="ZodDate")n=A().transform(i=>D(i,u=>{var c=new Date(u);return isNaN(c.getTime())?u:c})).pipe(e);else if(a.typeName==="ZodBigInt")n=A().transform(i=>D(i,BigInt)).pipe(e);else if(a.typeName==="ZodArray")n=A().transform(i=>Array.isArray(i)?i:typeof i>"u"||typeof Q(D(i))>"u"?[]:[i]).pipe(new _e(p(p({},a),{},{type:S(a.type,r)})));else if(a.typeName==="ZodObject"){var o=Object.fromEntries(Object.entries(a.shape()).map(i=>{var[u,c]=i;return[u,S(c,r)]}));n=new Ce(p(p({},a),{},{shape:()=>o}))}else if(a.typeName==="ZodEffects")Cr(e)?n=A().transform(i=>Q(i)).pipe(e):n=new Ue(p(p({},a),{},{schema:S(a.schema,r)}));else if(a.typeName==="ZodOptional")n=A().transform(i=>Q(D(i))).pipe(new Re(p(p({},a),{},{innerType:S(a.innerType,r)})));else if(a.typeName==="ZodDefault")n=A().transform(i=>Q(D(i))).pipe(new Me(p(p({},a),{},{innerType:S(a.innerType,r)})));else if(a.typeName==="ZodCatch")n=new $e(p(p({},a),{},{innerType:S(a.innerType,r)}));else if(a.typeName==="ZodIntersection")n=new Be(p(p({},a),{},{left:S(a.left,r),right:S(a.right,r)}));else if(a.typeName==="ZodUnion")n=new Je(p(p({},a),{},{options:a.options.map(i=>S(i,r))}));else if(a.typeName==="ZodDiscriminatedUnion")n=new Ke(p(p({},a),{},{options:a.options.map(i=>S(i,r)),optionsMap:new Map(Array.from(a.optionsMap.entries()).map(i=>{var[u,c]=i;return[u,S(c,r)]}))}));else if(a.typeName==="ZodTuple")n=new ze(p(p({},a),{},{items:a.items.map(i=>S(i,r))}));else if(a.typeName==="ZodNullable")n=new qe(p(p({},a),{},{innerType:S(a.innerType,r)}));else if(a.typeName==="ZodPipeline")n=new He(p(p({},a),{},{in:S(a.in,r),out:S(a.out,r)}));else if(a.typeName==="ZodLazy"){var l=a.getter();n=We(()=>S(l,r))}return e!==n&&r.set(e,n),n}function Ur(e,r){var t={};for(var n of e.errors){var a=_(n.path);switch(n.message){case Pe.VALIDATION_UNDEFINED:return null;case Pe.VALIDATION_SKIPPED:t[a]=null;break;default:{var o=t[a];o!==null&&(o?t[a]=o.concat(n):t[a]=[n]);break}}}return Object.entries(t).reduce((l,i)=>{var[u,c]=i;return l[u]=c?r(c):null,l},{})}function Rr(e,r){return sr(e,{resolve(t,n){var a=r.errorMap,o=S(typeof r.schema=="function"?r.schema(n):r.schema),l=i=>{var u;return{value:i.success?i.data:void 0,error:i.success?void 0:Ur(i.error,(u=r.formatError)!==null&&u!==void 0?u:c=>c.map(m=>m.message))}};return r.async?o.safeParseAsync(t,{errorMap:a}).then(i=>l(i)):l(o.safeParse(t,{errorMap:a}))}})}var Pe={VALIDATION_SKIPPED:"__skipped__",VALIDATION_UNDEFINED:"__undefined__"};function Mr({id:e,errors:r}){const t=r==null?void 0:r.filter(Boolean);return t!=null&&t.length?j.jsx("ul",{id:e,className:"space-y-1",children:t.map(n=>j.jsx("li",{className:"text-danger text-[10px]",children:n},n))}):null}const $r="/theme",Br=te.object({redirectTo:te.string().optional(),theme:te.enum(["system","light","dark"])});function Gr(){const e=Ne(),r=Qe(),[t,n]=I.useState(!1);I.useEffect(()=>{n(!0)},[]);const[a]=Tr({lastResult:r.data,onValidate({formData:u}){return Rr(u,{schema:Br})}}),o=e.session.theme??"system",l=o==="system"?"light":o==="light"?"dark":"system",i={light:j.jsx(ne,{size:"md",name:"Sun",title:"Light mode"}),dark:j.jsx(ne,{size:"md",name:"Moon",title:"Dark mode"}),system:j.jsx(ne,{size:"md",name:"Laptop",title:"System mode"})};return j.jsxs(r.Form,{method:"POST",action:$r,...kr(a),children:[j.jsxs("div",{className:"flex gap-2",children:[t?null:j.jsx("input",{type:"hidden",name:"redirectTo",value:e.path}),j.jsx("input",{type:"hidden",name:"theme",value:l}),j.jsx(Ge,{content:`Change theme from ${o} mode`,children:j.jsx("button",{type:"submit",name:"intent",value:"update-theme",className:"flex h-8 w-8 cursor-pointer items-center justify-center",children:i[o]})})]}),j.jsx(Mr,{errors:a.errors,id:a.errorId})]})}function Xr(){var o;const e=Xe(),r=Ne(),n=Ye().find(l=>{var i;return((i=l.formData)==null?void 0:i.get("intent"))==="update-theme"}),a=(o=n==null?void 0:n.formData)==null?void 0:o.get("theme");return a==="system"?e.theme:a==="light"||a==="dark"?a:r.session.theme??e.theme}export{Gr as T,Xr as u};
2
- //# sourceMappingURL=index-BATSX33w.js.map
@@ -1,2 +0,0 @@
1
- import{r as F,j as t,l as re,n as ne,d as Le}from"./index-1cKOJFpX.js";import{d as me,h as Ye,u as ve,m as He,P as J,f as z,e as pe,g as ze,S as Ge}from"./tooltip-BiHTe_7F.js";import{f as Ke,u as xe}from"./index-hogig2HK.js";import{c as Be}from"./clsx-B-dksMZM.js";import{D as Ve}from"./diff-CpFxuKA2.js";import{G as Ze}from"./error-boundary-DDTvdkB4.js";import{u as ge,I as te}from"./misc-ENVX3CWf.js";import{L as We}from"./loading-C5uX0jJw.js";import{u as Je}from"./client-hints-DNUUFGmB.js";import{D as qe,u as Qe}from"./discord-Dq4e30wV.js";import{u as le,A as Xe,L as $e,b as et}from"./components-CME-nGId.js";import{J as tt}from"./index-B-hHvmeV.js";import{S as rt}from"./set-playground-Cdy8VlVD.js";import{P as nt,a as st}from"./tests-CmNNBElK.js";import{P as oe}from"./preview-CqrRe2BV.js";import"./index-BXWoOGxB.js";import"./accordion-BroSqIct.js";import"./mdx-M0kcP-mP.js";import"./epic-video-iluUs1-s.js";import"./index-BATSX33w.js";import"./request-info-CEhUGODY.js";import"./user-D6tTg1yS.js";import"./progress-bar-CSvo1ZXP.js";import"./use-event-source-A_0lEOPX.js";import"./button-BklqyTPS.js";var ie="rovingFocusGroup.onEntryFocus",at={bubbles:!1,cancelable:!0},se="RovingFocusGroup",[ce,be,it]=Ke(se),[ot,we]=me(se,[it]),[ct,ut]=ot(se),ye=F.forwardRef((e,l)=>t.jsx(ce.Provider,{scope:e.__scopeRovingFocusGroup,children:t.jsx(ce.Slot,{scope:e.__scopeRovingFocusGroup,children:t.jsx(lt,{...e,ref:l})})}));ye.displayName=se;var lt=F.forwardRef((e,l)=>{const{__scopeRovingFocusGroup:c,orientation:s,loop:D=!1,dir:C,currentTabStopId:m,defaultCurrentTabStopId:S,onCurrentTabStopIdChange:h,onEntryFocus:f,preventScrollOnEntryFocus:b=!1,...x}=e,v=F.useRef(null),T=Ye(l,v),d=xe(C),[n=null,o]=ve({prop:m,defaultProp:S,onChange:h}),[y,w]=F.useState(!1),M=He(f),R=be(c),N=F.useRef(!1),[P,k]=F.useState(0);return F.useEffect(()=>{const I=v.current;if(I)return I.addEventListener(ie,M),()=>I.removeEventListener(ie,M)},[M]),t.jsx(ct,{scope:c,orientation:s,dir:d,loop:D,currentTabStopId:n,onItemFocus:F.useCallback(I=>o(I),[o]),onItemShiftTab:F.useCallback(()=>w(!0),[]),onFocusableItemAdd:F.useCallback(()=>k(I=>I+1),[]),onFocusableItemRemove:F.useCallback(()=>k(I=>I-1),[]),children:t.jsx(J.div,{tabIndex:y||P===0?-1:0,"data-orientation":s,...x,ref:T,style:{outline:"none",...e.style},onMouseDown:z(e.onMouseDown,()=>{N.current=!0}),onFocus:z(e.onFocus,I=>{const L=!N.current;if(I.target===I.currentTarget&&L&&!y){const O=new CustomEvent(ie,at);if(I.currentTarget.dispatchEvent(O),!O.defaultPrevented){const j=R().filter(r=>r.focusable),V=j.find(r=>r.active),X=j.find(r=>r.id===n),a=[V,X,...j].filter(Boolean).map(r=>r.ref.current);Te(a,b)}}N.current=!1}),onBlur:z(e.onBlur,()=>w(!1))})})}),je="RovingFocusGroupItem",De=F.forwardRef((e,l)=>{const{__scopeRovingFocusGroup:c,focusable:s=!0,active:D=!1,tabStopId:C,...m}=e,S=pe(),h=C||S,f=ut(je,c),b=f.currentTabStopId===h,x=be(c),{onFocusableItemAdd:v,onFocusableItemRemove:T}=f;return F.useEffect(()=>{if(s)return v(),()=>T()},[s,v,T]),t.jsx(ce.ItemSlot,{scope:c,id:h,focusable:s,active:D,children:t.jsx(J.span,{tabIndex:b?0:-1,"data-orientation":f.orientation,...m,ref:l,onMouseDown:z(e.onMouseDown,d=>{s?f.onItemFocus(h):d.preventDefault()}),onFocus:z(e.onFocus,()=>f.onItemFocus(h)),onKeyDown:z(e.onKeyDown,d=>{if(d.key==="Tab"&&d.shiftKey){f.onItemShiftTab();return}if(d.target!==d.currentTarget)return;const n=ht(d,f.orientation,f.dir);if(n!==void 0){if(d.metaKey||d.ctrlKey||d.altKey||d.shiftKey)return;d.preventDefault();let y=x().filter(w=>w.focusable).map(w=>w.ref.current);if(n==="last")y.reverse();else if(n==="prev"||n==="next"){n==="prev"&&y.reverse();const w=y.indexOf(d.currentTarget);y=f.loop?mt(y,w+1):y.slice(w+1)}setTimeout(()=>Te(y))}})})})});De.displayName=je;var ft={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function dt(e,l){return l!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ht(e,l,c){const s=dt(e.key,c);if(!(l==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(l==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return ft[s]}function Te(e,l=!1){const c=document.activeElement;for(const s of e)if(s===c||(s.focus({preventScroll:l}),document.activeElement!==c))return}function mt(e,l){return e.map((c,s)=>e[(l+s)%e.length])}var vt=ye,pt=De,fe="Tabs",[xt,ir]=me(fe,[we]),Se=we(),[gt,de]=xt(fe),Ne=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,onValueChange:D,defaultValue:C,orientation:m="horizontal",dir:S,activationMode:h="automatic",...f}=e,b=xe(S),[x,v]=ve({prop:s,onChange:D,defaultProp:C});return t.jsx(gt,{scope:c,baseId:pe(),value:x,onValueChange:v,orientation:m,dir:b,activationMode:h,children:t.jsx(J.div,{dir:b,"data-orientation":m,...f,ref:l})})});Ne.displayName=fe;var Me="TabsList",Ce=F.forwardRef((e,l)=>{const{__scopeTabs:c,loop:s=!0,...D}=e,C=de(Me,c),m=Se(c);return t.jsx(vt,{asChild:!0,...m,orientation:C.orientation,dir:C.dir,loop:s,children:t.jsx(J.div,{role:"tablist","aria-orientation":C.orientation,...D,ref:l})})});Ce.displayName=Me;var Ie="TabsTrigger",Oe=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,disabled:D=!1,...C}=e,m=de(Ie,c),S=Se(c),h=_e(m.baseId,s),f=Fe(m.baseId,s),b=s===m.value;return t.jsx(pt,{asChild:!0,...S,focusable:!D,active:b,children:t.jsx(J.button,{type:"button",role:"tab","aria-selected":b,"aria-controls":f,"data-state":b?"active":"inactive","data-disabled":D?"":void 0,disabled:D,id:h,...C,ref:l,onMouseDown:z(e.onMouseDown,x=>{!D&&x.button===0&&x.ctrlKey===!1?m.onValueChange(s):x.preventDefault()}),onKeyDown:z(e.onKeyDown,x=>{[" ","Enter"].includes(x.key)&&m.onValueChange(s)}),onFocus:z(e.onFocus,()=>{const x=m.activationMode!=="manual";!b&&!D&&x&&m.onValueChange(s)})})})});Oe.displayName=Ie;var Ee="TabsContent",Pe=F.forwardRef((e,l)=>{const{__scopeTabs:c,value:s,forceMount:D,children:C,...m}=e,S=de(Ee,c),h=_e(S.baseId,s),f=Fe(S.baseId,s),b=s===S.value,x=F.useRef(b);return F.useEffect(()=>{const v=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(v)},[]),t.jsx(ze,{present:D||b,children:({present:v})=>t.jsx(J.div,{"data-state":b?"active":"inactive","data-orientation":S.orientation,role:"tabpanel","aria-labelledby":h,hidden:!v,id:f,tabIndex:0,...m,ref:l,style:{...e.style,animationDuration:x.current?"0s":void 0},children:v&&C})})});Pe.displayName=Ee;function _e(e,l){return`${e}-trigger-${l}`}function Fe(e,l){return`${e}-content-${l}`}var $t=Ne,bt=Ce,wt=Oe,W=Pe,Re={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c=1e3,s=6e4,D=36e5,C="millisecond",m="second",S="minute",h="hour",f="day",b="week",x="month",v="quarter",T="year",d="date",n="Invalid Date",o=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,w={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(p){var a=["th","st","nd","rd"],r=p%100;return"["+p+(a[(r-20)%10]||a[r]||a[0])+"]"}},M=function(p,a,r){var u=String(p);return!u||u.length>=a?p:""+Array(a+1-u.length).join(r)+p},R={s:M,z:function(p){var a=-p.utcOffset(),r=Math.abs(a),u=Math.floor(r/60),i=r%60;return(a<=0?"+":"-")+M(u,2,"0")+":"+M(i,2,"0")},m:function p(a,r){if(a.date()<r.date())return-p(r,a);var u=12*(r.year()-a.year())+(r.month()-a.month()),i=a.clone().add(u,x),g=r-i<0,$=a.clone().add(u+(g?-1:1),x);return+(-(u+(r-i)/(g?i-$:$-i))||0)},a:function(p){return p<0?Math.ceil(p)||0:Math.floor(p)},p:function(p){return{M:x,y:T,w:b,d:f,D:d,h,m:S,s:m,ms:C,Q:v}[p]||String(p||"").toLowerCase().replace(/s$/,"")},u:function(p){return p===void 0}},N="en",P={};P[N]=w;var k="$isDayjsObject",I=function(p){return p instanceof V||!(!p||!p[k])},L=function p(a,r,u){var i;if(!a)return N;if(typeof a=="string"){var g=a.toLowerCase();P[g]&&(i=g),r&&(P[g]=r,i=g);var $=a.split("-");if(!i&&$.length>1)return p($[0])}else{var E=a.name;P[E]=a,i=E}return!u&&i&&(N=i),i||!u&&N},O=function(p,a){if(I(p))return p.clone();var r=typeof a=="object"?a:{};return r.date=p,r.args=arguments,new V(r)},j=R;j.l=L,j.i=I,j.w=function(p,a){return O(p,{locale:a.$L,utc:a.$u,x:a.$x,$offset:a.$offset})};var V=function(){function p(r){this.$L=L(r.locale,null,!0),this.parse(r),this.$x=this.$x||r.x||{},this[k]=!0}var a=p.prototype;return a.parse=function(r){this.$d=function(u){var i=u.date,g=u.utc;if(i===null)return new Date(NaN);if(j.u(i))return new Date;if(i instanceof Date)return new Date(i);if(typeof i=="string"&&!/Z$/i.test(i)){var $=i.match(o);if($){var E=$[2]-1||0,_=($[7]||"0").substring(0,3);return g?new Date(Date.UTC($[1],E,$[3]||1,$[4]||0,$[5]||0,$[6]||0,_)):new Date($[1],E,$[3]||1,$[4]||0,$[5]||0,$[6]||0,_)}}return new Date(i)}(r),this.init()},a.init=function(){var r=this.$d;this.$y=r.getFullYear(),this.$M=r.getMonth(),this.$D=r.getDate(),this.$W=r.getDay(),this.$H=r.getHours(),this.$m=r.getMinutes(),this.$s=r.getSeconds(),this.$ms=r.getMilliseconds()},a.$utils=function(){return j},a.isValid=function(){return this.$d.toString()!==n},a.isSame=function(r,u){var i=O(r);return this.startOf(u)<=i&&i<=this.endOf(u)},a.isAfter=function(r,u){return O(r)<this.startOf(u)},a.isBefore=function(r,u){return this.endOf(u)<O(r)},a.$g=function(r,u,i){return j.u(r)?this[u]:this.set(i,r)},a.unix=function(){return Math.floor(this.valueOf()/1e3)},a.valueOf=function(){return this.$d.getTime()},a.startOf=function(r,u){var i=this,g=!!j.u(u)||u,$=j.p(r),E=function(B,Y){var G=j.w(i.$u?Date.UTC(i.$y,Y,B):new Date(i.$y,Y,B),i);return g?G:G.endOf(f)},_=function(B,Y){return j.w(i.toDate()[B].apply(i.toDate("s"),(g?[0,0,0,0]:[23,59,59,999]).slice(Y)),i)},A=this.$W,U=this.$M,H=this.$D,Z="set"+(this.$u?"UTC":"");switch($){case T:return g?E(1,0):E(31,11);case x:return g?E(1,U):E(0,U+1);case b:var K=this.$locale().weekStart||0,q=(A<K?A+7:A)-K;return E(g?H-q:H+(6-q),U);case f:case d:return _(Z+"Hours",0);case h:return _(Z+"Minutes",1);case S:return _(Z+"Seconds",2);case m:return _(Z+"Milliseconds",3);default:return this.clone()}},a.endOf=function(r){return this.startOf(r,!1)},a.$set=function(r,u){var i,g=j.p(r),$="set"+(this.$u?"UTC":""),E=(i={},i[f]=$+"Date",i[d]=$+"Date",i[x]=$+"Month",i[T]=$+"FullYear",i[h]=$+"Hours",i[S]=$+"Minutes",i[m]=$+"Seconds",i[C]=$+"Milliseconds",i)[g],_=g===f?this.$D+(u-this.$W):u;if(g===x||g===T){var A=this.clone().set(d,1);A.$d[E](_),A.init(),this.$d=A.set(d,Math.min(this.$D,A.daysInMonth())).$d}else E&&this.$d[E](_);return this.init(),this},a.set=function(r,u){return this.clone().$set(r,u)},a.get=function(r){return this[j.p(r)]()},a.add=function(r,u){var i,g=this;r=Number(r);var $=j.p(u),E=function(U){var H=O(g);return j.w(H.date(H.date()+Math.round(U*r)),g)};if($===x)return this.set(x,this.$M+r);if($===T)return this.set(T,this.$y+r);if($===f)return E(1);if($===b)return E(7);var _=(i={},i[S]=s,i[h]=D,i[m]=c,i)[$]||1,A=this.$d.getTime()+r*_;return j.w(A,this)},a.subtract=function(r,u){return this.add(-1*r,u)},a.format=function(r){var u=this,i=this.$locale();if(!this.isValid())return i.invalidDate||n;var g=r||"YYYY-MM-DDTHH:mm:ssZ",$=j.z(this),E=this.$H,_=this.$m,A=this.$M,U=i.weekdays,H=i.months,Z=i.meridiem,K=function(Y,G,Q,ee){return Y&&(Y[G]||Y(u,g))||Q[G].slice(0,ee)},q=function(Y){return j.s(E%12||12,Y,"0")},B=Z||function(Y,G,Q){var ee=Y<12?"AM":"PM";return Q?ee.toLowerCase():ee};return g.replace(y,function(Y,G){return G||function(Q){switch(Q){case"YY":return String(u.$y).slice(-2);case"YYYY":return j.s(u.$y,4,"0");case"M":return A+1;case"MM":return j.s(A+1,2,"0");case"MMM":return K(i.monthsShort,A,H,3);case"MMMM":return K(H,A);case"D":return u.$D;case"DD":return j.s(u.$D,2,"0");case"d":return String(u.$W);case"dd":return K(i.weekdaysMin,u.$W,U,2);case"ddd":return K(i.weekdaysShort,u.$W,U,3);case"dddd":return U[u.$W];case"H":return String(E);case"HH":return j.s(E,2,"0");case"h":return q(1);case"hh":return q(2);case"a":return B(E,_,!0);case"A":return B(E,_,!1);case"m":return String(_);case"mm":return j.s(_,2,"0");case"s":return String(u.$s);case"ss":return j.s(u.$s,2,"0");case"SSS":return j.s(u.$ms,3,"0");case"Z":return $}return null}(Y)||$.replace(":","")})},a.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},a.diff=function(r,u,i){var g,$=this,E=j.p(u),_=O(r),A=(_.utcOffset()-this.utcOffset())*s,U=this-_,H=function(){return j.m($,_)};switch(E){case T:g=H()/12;break;case x:g=H();break;case v:g=H()/3;break;case b:g=(U-A)/6048e5;break;case f:g=(U-A)/864e5;break;case h:g=U/D;break;case S:g=U/s;break;case m:g=U/c;break;default:g=U}return i?g:j.a(g)},a.daysInMonth=function(){return this.endOf(x).$D},a.$locale=function(){return P[this.$L]},a.locale=function(r,u){if(!r)return this.$L;var i=this.clone(),g=L(r,u,!0);return g&&(i.$L=g),i},a.clone=function(){return j.w(this.$d,this)},a.toDate=function(){return new Date(this.valueOf())},a.toJSON=function(){return this.isValid()?this.toISOString():null},a.toISOString=function(){return this.$d.toISOString()},a.toString=function(){return this.$d.toUTCString()},p}(),X=V.prototype;return O.prototype=X,[["$ms",C],["$s",m],["$m",S],["$H",h],["$W",f],["$M",x],["$y",T],["$D",d]].forEach(function(p){X[p[1]]=function(a){return this.$g(a,p[0],p[1])}}),O.extend=function(p,a){return p.$i||(p(a,V,O),p.$i=!0),O},O.locale=L,O.isDayjs=I,O.unix=function(p){return O(1e3*p)},O.en=P[N],O.Ls=P,O.p={},O})})(Re);var yt=Re.exports;const ae=re(yt);var ke={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){return function(c,s,D){c=c||{};var C=s.prototype,m={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function S(f,b,x,v){return C.fromToBase(f,b,x,v)}D.en.relativeTime=m,C.fromToBase=function(f,b,x,v,T){for(var d,n,o,y=x.$locale().relativeTime||m,w=c.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],M=w.length,R=0;R<M;R+=1){var N=w[R];N.d&&(d=v?D(f).diff(x,N.d,!0):x.diff(f,N.d,!0));var P=(c.rounding||Math.round)(Math.abs(d));if(o=d>0,P<=N.r||!N.r){P<=1&&R>0&&(N=w[R-1]);var k=y[N.l];T&&(P=T(""+P)),n=typeof k=="string"?k.replace("%d",P):k(P,b,N.l,o);break}}if(b)return n;var I=o?y.future:y.past;return typeof I=="function"?I(n):I.replace("%s",n)},C.to=function(f,b){return S(f,b,this,!0)},C.from=function(f,b){return S(f,b,this)};var h=function(f){return f.$u?D.utc():D()};C.toNow=function(f){return this.to(h(this),f)},C.fromNow=function(f){return this.from(h(this),f)}}})})(ke);var jt=ke.exports;const Dt=re(jt);var Ae={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c={year:0,month:1,day:2,hour:3,minute:4,second:5},s={};return function(D,C,m){var S,h=function(v,T,d){d===void 0&&(d={});var n=new Date(v),o=function(y,w){w===void 0&&(w={});var M=w.timeZoneName||"short",R=y+"|"+M,N=s[R];return N||(N=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:y,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:M}),s[R]=N),N}(T,d);return o.formatToParts(n)},f=function(v,T){for(var d=h(v,T),n=[],o=0;o<d.length;o+=1){var y=d[o],w=y.type,M=y.value,R=c[w];R>=0&&(n[R]=parseInt(M,10))}var N=n[3],P=N===24?0:N,k=n[0]+"-"+n[1]+"-"+n[2]+" "+P+":"+n[4]+":"+n[5]+":000",I=+v;return(m.utc(k).valueOf()-(I-=I%1e3))/6e4},b=C.prototype;b.tz=function(v,T){v===void 0&&(v=S);var d=this.utcOffset(),n=this.toDate(),o=n.toLocaleString("en-US",{timeZone:v}),y=Math.round((n-new Date(o))/1e3/60),w=m(o,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(n.getTimezoneOffset()/15)-y,!0);if(T){var M=w.utcOffset();w=w.add(d-M,"minute")}return w.$x.$timezone=v,w},b.offsetName=function(v){var T=this.$x.$timezone||m.tz.guess(),d=h(this.valueOf(),T,{timeZoneName:v}).find(function(n){return n.type.toLowerCase()==="timezonename"});return d&&d.value};var x=b.startOf;b.startOf=function(v,T){if(!this.$x||!this.$x.$timezone)return x.call(this,v,T);var d=m(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return x.call(d,v,T).tz(this.$x.$timezone,!0)},m.tz=function(v,T,d){var n=d&&T,o=d||T||S,y=f(+m(),o);if(typeof v!="string")return m(v).tz(o);var w=function(P,k,I){var L=P-60*k*1e3,O=f(L,I);if(k===O)return[L,k];var j=f(L-=60*(O-k)*1e3,I);return O===j?[L,O]:[P-60*Math.min(O,j)*1e3,Math.max(O,j)]}(m.utc(v,n).valueOf(),y,o),M=w[0],R=w[1],N=m(M).utcOffset(R);return N.$x.$timezone=o,N},m.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},m.tz.setDefault=function(v){S=v}}})})(Ae);var Tt=Ae.exports;const St=re(Tt);var Ue={exports:{}};(function(e,l){(function(c,s){e.exports=s()})(ne,function(){var c="minute",s=/[+-]\d\d(?::?\d\d)?/g,D=/([+-]|\d\d)/g;return function(C,m,S){var h=m.prototype;S.utc=function(n){var o={date:n,utc:!0,args:arguments};return new m(o)},h.utc=function(n){var o=S(this.toDate(),{locale:this.$L,utc:!0});return n?o.add(this.utcOffset(),c):o},h.local=function(){return S(this.toDate(),{locale:this.$L,utc:!1})};var f=h.parse;h.parse=function(n){n.utc&&(this.$u=!0),this.$utils().u(n.$offset)||(this.$offset=n.$offset),f.call(this,n)};var b=h.init;h.init=function(){if(this.$u){var n=this.$d;this.$y=n.getUTCFullYear(),this.$M=n.getUTCMonth(),this.$D=n.getUTCDate(),this.$W=n.getUTCDay(),this.$H=n.getUTCHours(),this.$m=n.getUTCMinutes(),this.$s=n.getUTCSeconds(),this.$ms=n.getUTCMilliseconds()}else b.call(this)};var x=h.utcOffset;h.utcOffset=function(n,o){var y=this.$utils().u;if(y(n))return this.$u?0:y(this.$offset)?x.call(this):this.$offset;if(typeof n=="string"&&(n=function(N){N===void 0&&(N="");var P=N.match(s);if(!P)return null;var k=(""+P[0]).match(D)||["-",0,0],I=k[0],L=60*+k[1]+ +k[2];return L===0?0:I==="+"?L:-L}(n),n===null))return this;var w=Math.abs(n)<=16?60*n:n,M=this;if(o)return M.$offset=w,M.$u=n===0,M;if(n!==0){var R=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(M=this.local().add(w+R,c)).$offset=w,M.$x.$localOffset=R}else M=this.utc();return M};var v=h.format;h.format=function(n){var o=n||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return v.call(this,o)},h.valueOf=function(){var n=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*n},h.isUTC=function(){return!!this.$u},h.toISOString=function(){return this.toDate().toISOString()},h.toString=function(){return this.toDate().toUTCString()};var T=h.toDate;h.toDate=function(n){return n==="s"&&this.$offset?S(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():T.call(this)};var d=h.diff;h.diff=function(n,o,y){if(n&&this.$u===n.$u)return d.call(this,n,o,y);var w=this.local(),M=S(n).local();return d.call(w,M,o,y)}}})})(Ue);var Nt=Ue.exports;const Mt=re(Nt);ae.extend(Mt);ae.extend(St);ae.extend(Dt);function Ct(){const e=le();return t.jsxs("div",{className:"flex h-full w-full flex-col gap-4 pt-4",children:[t.jsx("div",{className:"text-center",children:t.jsx(qe,{discordAuthUrl:e.discordAuthUrl})}),t.jsx("div",{className:"flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar",children:t.jsx(It,{})})]})}function It(){const e=le(),l=Qe({discordAuthUrl:e.discordAuthUrl}),c=ge();return t.jsxs("div",{className:"flex h-full flex-col items-center justify-between",children:[t.jsx(F.Suspense,{fallback:t.jsx("div",{className:"flex h-full w-full flex-col items-center justify-center",children:t.jsx(We,{children:"Loading Discord Posts"})}),children:t.jsx(Xe,{resolve:e.discordPostsPromise,errorElement:t.jsx("div",{className:"text-red-500",children:"There was a problem loading the discord posts"}),children:s=>t.jsx("ul",{className:"flex w-full flex-col gap-4 p-3 xl:p-12",children:s.map(D=>t.jsx("li",{className:"rounded-xl border bg-background transition-all duration-200 focus-within:-translate-y-1 focus-within:shadow-lg hover:-translate-y-1 hover:shadow-lg",children:t.jsx(Ot,{thread:D})},D.id))})})}),t.jsx("div",{children:t.jsxs($e,{to:c&&!l.includes("oauth")?l.replace(/^https/,"discord"):l,target:l.includes("oauth")?void 0:"_blank",rel:"noreferrer noopener",onClick:c?s=>{s.preventDefault(),window.open(s.currentTarget.href,"_blank","noreferrer noopener")}:void 0,className:"flex items-center gap-2 p-2 text-xl hover:underline",children:["Create Post ",t.jsx(te,{name:"ExternalLink"})]})})]})}function Ot({thread:e}){const l=e.reactions.filter(s=>s.count),c=Je();return t.jsx("div",{children:t.jsxs("div",{className:"flex flex-col gap-2 p-4",children:[t.jsxs("div",{className:"flex gap-4",children:[t.jsxs("div",{className:"flex flex-col gap-1",children:[e.tags.length?t.jsx("div",{className:"flex gap-2",children:e.tags.map(s=>t.jsxs("div",{className:"flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm",children:[t.jsx("span",{className:"h-3 w-3 leading-3",children:t.jsx(he,{name:s.emojiName,url:s.emojiUrl})}),t.jsx("span",{children:s.name})]},s.name))}):null,t.jsx("strong",{className:"text-xl font-bold",children:e.name}),t.jsxs("div",{className:"flex items-start gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[e.authorAvatarUrl?t.jsx("img",{src:e.authorAvatarUrl,alt:"",className:"h-6 w-6 rounded-full"}):null,t.jsxs("span",{children:[t.jsx("span",{className:"font-bold",style:e.authorHexAccentColor?{color:e.authorHexAccentColor}:{},children:e.authorDisplayName}),":"," "]})]}),t.jsx("span",{className:"flex-1 overflow-ellipsis text-muted-foreground",children:e.messagePreview})]})]}),e.previewImageUrl?t.jsx("img",{src:e.previewImageUrl,alt:"",className:"h-28 w-28 rounded-lg object-cover"}):null]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{children:l.length?t.jsx("ul",{className:"flex items-center gap-2",children:l.map((s,D)=>t.jsxs("li",{className:"flex items-center gap-1 rounded-md border border-blue-600 bg-blue-500/20 px-[5px] py-[0.5px] text-sm",children:[t.jsx("span",{className:"h-3 w-3 leading-3",children:t.jsx(he,{name:s.emojiName,url:s.emojiUrl})}),t.jsx("span",{children:s.count})]},D))}):null}),t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsxs("span",{className:"inline-flex items-center gap-1",children:[t.jsx(te,{name:"Chat"})," ",e.messageCount]}),` · ${ae(e.lastUpdated).tz(c.timeZone).fromNow()}`]})]}),t.jsxs("span",{className:"flex items-center gap-4",children:[t.jsx("a",{href:e.link.replace(/^https/,"discord"),children:t.jsx(te,{name:"Discord"})}),t.jsx("a",{href:e.link,target:"_blank",rel:"noreferrer noopener",children:t.jsx(te,{name:"ExternalLink"})})]})]})]})})}function he({name:e,url:l}){return l?t.jsx("img",{src:l,alt:e,className:"h-full w-full"}):e||null}function Et({appInfo:e,inBrowserBrowserRef:l,problemAppName:c,allApps:s,isUpToDate:D}){return t.jsx(nt,{playgroundAppName:e==null?void 0:e.appName,problemAppName:c,allApps:s,isUpToDate:D,children:(e==null?void 0:e.dev.type)==="none"?t.jsxs("div",{children:[t.jsx("div",{className:"text-foreground-secondary flex h-full items-center justify-center text-2xl",children:"Non-UI playground"}),t.jsx("div",{children:t.jsxs("div",{className:"text-foreground-secondary flex flex-wrap gap-1 text-center",children:["Navigate to"," ",t.jsx(Ge,{content:e.fullPath,children:t.jsx("span",{className:"underline",onClick:()=>{navigator.clipboard.writeText(e.fullPath),tt.success("Copied playground path to clipboard")},children:"the playground directory"})})," ","in your editor and terminal to work on this exercise!"]})})]}):e?t.jsx(oe,{id:e.appName,appInfo:e,inBrowserBrowserRef:l}):t.jsxs("div",{className:"flex flex-col justify-center gap-2",children:[t.jsx("p",{children:"Please set the playground first"}),c?t.jsx(rt,{appName:c}):null]})})}const ue=["playground","problem","solution","tests","diff","chat"],Pt=e=>!!(e&&ue.includes(e));function _t(e,l,c){const s=new URLSearchParams(e);return c===null?s.delete(l):s.set(l,c),s}function or(){var b,x,v,T,d,n;const e=le(),[l]=et(),c=l.get("preview"),s=F.useRef(null),D=ge(),C=Le();function m(o){var y,w,M;if(o==="tests")return ENV.EPICSHOP_DEPLOYED||!e.playground||e.playground.test.type==="none";if(o==="problem"||o==="solution"){if(((y=e[o])==null?void 0:y.dev.type)==="none")return!0;if(ENV.EPICSHOP_DEPLOYED)return((w=e[o])==null?void 0:w.dev.type)!=="browser"&&!((M=e[o])!=null&&M.stackBlitzUrl)}return!!(o==="playground"&&ENV.EPICSHOP_DEPLOYED)}const S=Pt(c)?c:ue.find(o=>!m(o)),h=`/diff?${new URLSearchParams({app1:((b=e.problem)==null?void 0:b.name)??"",app2:((x=e.solution)==null?void 0:x.name)??""})}`;function f(o){o.altKey&&!o.ctrlKey&&!o.shiftKey&&!o.metaKey&&(o.preventDefault(),C(h))}return t.jsxs($t,{className:"relative flex flex-col overflow-y-auto sm:col-span-1 sm:row-span-1",value:S,children:[t.jsx(bt,{className:"h-14 min-h-14 overflow-x-hidden border-b scrollbar-thin scrollbar-thumb-scrollbar",children:ue.map(o=>{const y=m(o);return t.jsx(wt,{value:o,hidden:y,asChild:!0,children:t.jsx($e,{id:`${o}-tab`,className:Be("clip-path-button relative h-full px-6 py-4 font-mono text-sm uppercase outline-none radix-state-active:z-10 radix-state-active:bg-foreground radix-state-active:text-background radix-state-active:hover:bg-foreground/80 radix-state-active:hover:text-background/80 radix-state-inactive:hover:bg-foreground/20 radix-state-inactive:hover:text-foreground/80 focus:bg-foreground/80 focus:text-background/80",y?"hidden":"inline-block"),preventScrollReset:!0,prefetch:"intent",onClick:f,to:o==="diff"&&D?h:`?${_t(l,"preview",o==="playground"?null:o)}`,children:o})},o)})}),t.jsxs("div",{className:"relative z-10 flex min-h-96 flex-grow flex-col overflow-y-auto",children:[t.jsx(W,{value:"playground",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(Et,{appInfo:e.playground,problemAppName:(v=e.problem)==null?void 0:v.name,inBrowserBrowserRef:s,allApps:e.allApps,isUpToDate:((T=e.playground)==null?void 0:T.isUpToDate)??!1})}),t.jsx(W,{value:"problem",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(oe,{appInfo:e.problem,inBrowserBrowserRef:s})}),t.jsx(W,{value:"solution",className:"flex w-full flex-grow items-center justify-center self-start radix-state-inactive:hidden",children:t.jsx(oe,{appInfo:e.solution,inBrowserBrowserRef:s})}),t.jsx(W,{value:"tests",className:"flex w-full flex-grow items-start justify-center self-start overflow-hidden radix-state-inactive:hidden",children:t.jsx(st,{appInfo:e.playground,problemAppName:(d=e.problem)==null?void 0:d.name,allApps:e.allApps,isUpToDate:((n=e.playground)==null?void 0:n.isUpToDate)??!1})}),t.jsx(W,{value:"diff",className:"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden",children:t.jsx(Ve,{diff:e.diff,allApps:e.allApps})}),t.jsx(W,{value:"chat",className:"flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden",children:t.jsx(Ct,{})})]})]})}function cr(){return t.jsx(Ze,{statusHandlers:{404:()=>t.jsx("p",{children:"Sorry, we couldn't find an app here."})}})}export{cr as ErrorBoundary,or as default};
2
- //# sourceMappingURL=index-Dm1ll1kT.js.map
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-1cKOJFpX.js";import{E as t}from"./index-Dx5GmdYq.js";import{E as a}from"./epic-video-iluUs1-s.js";import{G as i}from"./error-boundary-DDTvdkB4.js";import{M as l,E as m}from"./mdx-M0kcP-mP.js";import{c as n}from"./misc-ENVX3CWf.js";import{P as c,u as d}from"./progress-BsY6hGPp.js";import{u as p,L as x}from"./components-CME-nGId.js";import"./index-BATSX33w.js";import"./request-info-CEhUGODY.js";import"./tooltip-BiHTe_7F.js";import"./client-hints-DNUUFGmB.js";import"./loading-C5uX0jJw.js";import"./user-D6tTg1yS.js";import"./clsx-B-dksMZM.js";import"./progress-bar-CSvo1ZXP.js";function h({exercise:r}){const s=d(r.exerciseNumber);return e.jsx("li",{children:e.jsxs(x,{className:n("relative flex items-center gap-4 px-4 py-3 text-lg font-semibold transition after:absolute after:right-10 after:-translate-x-2 after:opacity-0 after:transition after:content-['→'] hover:bg-gray-50 hover:after:translate-x-0 hover:after:opacity-100 dark:hover:bg-white/5",s),to:`${r.exerciseNumber.toString().padStart(2,"0")}`,children:[e.jsx("span",{className:"text-xs font-normal tabular-nums opacity-50",children:r.exerciseNumber}),e.jsx("span",{children:r.title})]})},r.exerciseNumber)}const f={h1:()=>null};function S(){const r=p(),s=e.jsxs("ul",{className:"flex flex-col divide-y divide-border dark:divide-border/50",children:[e.jsx("strong",{className:"px-10 pb-3 font-mono text-xs uppercase",children:"Exercises"}),r.exercises.map(o=>e.jsx(h,{exercise:o},o.exerciseNumber))]});return e.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:[e.jsxs("article",{id:r.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:[e.jsx("div",{children:e.jsx("h1",{className:"px-10 text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none",children:r.title})}),e.jsxs("div",{className:"w-full max-w-none scroll-pt-6 border-t px-3 pt-3 md:px-10 md:pt-8",children:[e.jsx("h2",{className:"pb-5 font-mono text-xs font-semibold uppercase",children:"Intro"}),r.workshopReadme.compiled.status==="success"&&r.workshopReadme.compiled.code?e.jsx(a,{epicVideoInfosPromise:r.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(l,{code:r.workshopReadme.compiled.code,components:f})})}):r.workshopReadme.compiled.status==="error"?e.jsxs("div",{className:"text-red-500",children:["There was an error:",e.jsx("pre",{children:r.workshopReadme.compiled.error})]}):"No instructions yet..."]}),e.jsx("div",{className:"pb-5 pt-10",children:r.workshopReadme.compiled.status==="success"&&r.workshopReadme.compiled.code&&r.workshopReadme.compiled.code.length>500?s:null})]}),e.jsx(t,{elementQuery:`#${r.articleId}`}),e.jsx(c,{type:"workshop-instructions",className:"h-14 border-t px-6"}),e.jsx("div",{className:"flex h-16 justify-center border-t",children:e.jsx(m,{file:r.workshopReadme.file,relativePath:r.workshopReadme.relativePath})})]})}function V(){return e.jsx(i,{})}export{V as ErrorBoundary,S as default};
2
- //# sourceMappingURL=index-Tfdnz1AB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Tfdnz1AB.js","sources":["../../../app/routes/_app+/index.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopInstructions,\n\tgetWorkshopTitle,\n} from '@epic-web/workshop-utils/apps.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\tdefer,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype SerializeFrom,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { GeneralErrorBoundary } from '#app/components/error-boundary.tsx'\nimport { EditFileOnGitHub } from '#app/routes/launch-editor.tsx'\nimport { getEpicVideoInfos } from '#app/utils/epic-api.ts'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { ProgressToggle, useExerciseProgressClassName } from '../progress.tsx'\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('indexLoader')\n\tconst [title, exercises, workshopReadme] = await Promise.all([\n\t\ttime(() => getWorkshopTitle(), {\n\t\t\ttimings,\n\t\t\ttype: 'getWorkshopTitle',\n\t\t\tdesc: 'getWorkshopTitle in index',\n\t\t}),\n\t\ttime(() => getExercises({ request, timings }), {\n\t\t\ttimings,\n\t\t\ttype: 'getExercises',\n\t\t\tdesc: 'getExercises in index',\n\t\t}),\n\t\ttime(() => getWorkshopInstructions({ request }), {\n\t\t\ttimings,\n\t\t\ttype: 'compileMdx',\n\t\t\tdesc: 'compileMdx in index',\n\t\t}),\n\t])\n\n\treturn defer(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(title)}-instructions`,\n\t\t\ttitle:\n\t\t\t\tworkshopReadme.compiled.status === 'success'\n\t\t\t\t\t? workshopReadme.compiled.title\n\t\t\t\t\t: title,\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})),\n\t\t\tworkshopReadme,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tworkshopReadme.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(workshopReadme.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nfunction ExerciseListItem({\n\texercise,\n}: {\n\texercise: SerializeFrom<typeof loader>['exercises'][number]\n}) {\n\tconst progressClassName = useExerciseProgressClassName(\n\t\texercise.exerciseNumber,\n\t)\n\treturn (\n\t\t<li key={exercise.exerciseNumber}>\n\t\t\t<Link\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative flex items-center gap-4 px-4 py-3 text-lg font-semibold transition after:absolute after:right-10 after:-translate-x-2 after:opacity-0 after:transition after:content-['→'] hover:bg-gray-50 hover:after:translate-x-0 hover:after:opacity-100 dark:hover:bg-white/5\",\n\t\t\t\t\tprogressClassName,\n\t\t\t\t)}\n\t\t\t\tto={`${exercise.exerciseNumber.toString().padStart(2, '0')}`}\n\t\t\t>\n\t\t\t\t<span className=\"text-xs font-normal tabular-nums opacity-50\">\n\t\t\t\t\t{exercise.exerciseNumber}\n\t\t\t\t</span>\n\t\t\t\t<span>{exercise.title}</span>\n\t\t\t</Link>\n\t\t</li>\n\t)\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function Index() {\n\tconst data = useLoaderData<typeof loader>()\n\n\tconst exerciseLinks = (\n\t\t<ul className=\"flex flex-col divide-y divide-border dark:divide-border/50\">\n\t\t\t<strong className=\"px-10 pb-3 font-mono text-xs uppercase\">\n\t\t\t\tExercises\n\t\t\t</strong>\n\t\t\t{data.exercises.map((exercise) => (\n\t\t\t\t<ExerciseListItem key={exercise.exerciseNumber} exercise={exercise} />\n\t\t\t))}\n\t\t</ul>\n\t)\n\treturn (\n\t\t<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\">\n\t\t\t<article\n\t\t\t\tid={data.articleId}\n\t\t\t\tclassName=\"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\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<h1 className=\"px-10 text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none\">\n\t\t\t\t\t\t{data.title}\n\t\t\t\t\t</h1>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"w-full max-w-none scroll-pt-6 border-t px-3 pt-3 md:px-10 md:pt-8\">\n\t\t\t\t\t<h2 className=\"pb-5 font-mono text-xs font-semibold uppercase\">\n\t\t\t\t\t\tIntro\n\t\t\t\t\t</h2>\n\t\t\t\t\t{data.workshopReadme.compiled.status === 'success' &&\n\t\t\t\t\tdata.workshopReadme.compiled.code ? (\n\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t<Mdx\n\t\t\t\t\t\t\t\t\tcode={data.workshopReadme.compiled.code}\n\t\t\t\t\t\t\t\t\tcomponents={mdxComponents}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t) : data.workshopReadme.compiled.status === 'error' ? (\n\t\t\t\t\t\t<div className=\"text-red-500\">\n\t\t\t\t\t\t\tThere was an error:\n\t\t\t\t\t\t\t<pre>{data.workshopReadme.compiled.error}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t'No instructions yet...'\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"pb-5 pt-10\">\n\t\t\t\t\t{data.workshopReadme.compiled.status === 'success' &&\n\t\t\t\t\tdata.workshopReadme.compiled.code &&\n\t\t\t\t\tdata.workshopReadme.compiled.code.length > 500\n\t\t\t\t\t\t? exerciseLinks\n\t\t\t\t\t\t: null}\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t<ProgressToggle\n\t\t\t\ttype=\"workshop-instructions\"\n\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t/>\n\t\t\t<div className=\"flex h-16 justify-center border-t\">\n\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\tfile={data.workshopReadme.file}\n\t\t\t\t\trelativePath={data.workshopReadme.relativePath}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nexport function ErrorBoundary() {\n\treturn <GeneralErrorBoundary />\n}\n"],"names":["ExerciseListItem","exercise","progressClassName","useExerciseProgressClassName","exerciseNumber","children","jsxs","Link","className","cn","to","toString","padStart","jsx","title","mdxComponents","h1","Index","data","useLoaderData","exerciseLinks","exercises","map","id","articleId","workshopReadme","compiled","status","code","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","components","error","length","ElementScrollRestoration","elementQuery","ProgressToggle","type","EditFileOnGitHub","file","relativePath","ErrorBoundary","GeneralErrorBoundary"],"mappings":"+lBAmFA,SAASA,EAAiB,CACzBC,SAAAA,CACD,EAEG,CACF,MAAMC,EAAoBC,EACzBF,EAASG,cACV,EACA,aACE,KACA,CAAAC,SAAAC,EAAA,KAACC,EAAA,CACAC,UAAWC,EACV,+QACAP,CACD,EACAQ,GAAI,GAAGT,EAASG,eAAeO,SAAW,EAAAC,SAAS,EAAG,GAAG,CAAC,GAE1DP,SAAA,CAAAQ,EAAA,IAAC,OAAK,CAAAL,UAAU,8CACdH,SAAAJ,EAASG,cACX,CAAA,EACAS,EAAA,IAAC,OAAM,CAAAR,SAAAJ,EAASa,KAAM,CAAA,CAAA,EACvB,CAAA,EAZQb,EAASG,cAalB,CAEF,CAEA,MAAMW,EAAgB,CAAEC,GAAIA,IAAM,IAAK,EAEvC,SAAwBC,GAAQ,CAC/B,MAAMC,EAAOC,IAEPC,EACLd,EAAA,KAAC,KAAG,CAAAE,UAAU,6DACbH,SAAA,CAACQ,EAAA,IAAA,SAAA,CAAOL,UAAU,yCAAyCH,SAE3D,WAAA,CAAA,EACCa,EAAKG,UAAUC,IAAKrB,SACnBD,EAA+C,CAAAC,SAAAA,CAAA,EAAzBA,EAASG,cAAoC,CACpE,CAAA,CACF,CAAA,EAGA,OAAAE,EAAAA,KAAC,OAAK,CAAAE,UAAU,4FACfH,SAAA,CAAAC,EAAA,KAAC,UAAA,CACAiB,GAAIL,EAAKM,UACThB,UAAU,8JAEVH,SAAA,CAAAQ,EAAA,IAAC,OACAR,SAACQ,EAAA,IAAA,KAAA,CAAGL,UAAU,kEACZH,SAAAa,EAAKJ,MACP,CACD,CAAA,EACAR,EAAA,KAAC,MAAI,CAAAE,UAAU,oEACdH,SAAA,CAACQ,EAAA,IAAA,KAAA,CAAGL,UAAU,iDAAiDH,SAE/D,OAAA,CAAA,EACCa,EAAKO,eAAeC,SAASC,SAAW,WACzCT,EAAKO,eAAeC,SAASE,KAC5Bf,EAAAA,IAACgB,EAAA,CACAC,sBAAuBZ,EAAKY,sBAE5BzB,SAAAQ,EAAA,IAAC,MAAI,CAAAL,UAAU,sCACdH,SAAAQ,EAAA,IAACkB,EAAA,CACAH,KAAMV,EAAKO,eAAeC,SAASE,KACnCI,WAAYjB,EACb,EACD,CAAA,CACD,EACGG,EAAKO,eAAeC,SAASC,SAAW,QAC3CrB,EAAA,KAAC,MAAI,CAAAE,UAAU,eAAeH,SAAA,CAAA,sBAE5BQ,EAAA,IAAA,MAAA,CAAKR,SAAKa,EAAAO,eAAeC,SAASO,KAAM,CAAA,CAAA,CAC1C,CAAA,EAEA,wBAAA,CAEF,CAAA,EACApB,EAAA,IAAC,OAAIL,UAAU,aACbH,WAAKoB,eAAeC,SAASC,SAAW,WACzCT,EAAKO,eAAeC,SAASE,MAC7BV,EAAKO,eAAeC,SAASE,KAAKM,OAAS,IACxCd,EACA,IACJ,CAAA,CAAA,CAAA,CACD,QACCe,EAAyB,CAAAC,aAAc,IAAIlB,EAAKM,SAAS,EAAI,CAAA,EAC9DX,EAAA,IAACwB,EAAA,CACAC,KAAK,wBACL9B,UAAU,oBAAA,CACX,EACAK,EAAA,IAAC,MAAI,CAAAL,UAAU,oCACdH,SAAAQ,EAAA,IAAC0B,EAAA,CACAC,KAAMtB,EAAKO,eAAee,KAC1BC,aAAcvB,EAAKO,eAAegB,aACnC,CACD,CAAA,CAAA,CACD,CAAA,CAEF,CAEO,SAASC,GAAgB,CAC/B,aAAQC,EAAqB,CAAA,CAAA,CAC9B"}
@@ -1 +0,0 @@
1
- window.__remixManifest={"entry":{"module":"/assets/entry.client-3M2p-8I3.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-Tcnfz99O.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/use-hydrated-Citou692.js","/assets/error-boundary-DDTvdkB4.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-B-hHvmeV.js","/assets/index-BATSX33w.js","/assets/presence-Cr--lRCr.js","/assets/seo-pBpFCWsy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-DbrWZazo.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/error-boundary-DDTvdkB4.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-AgYGL72C.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/use-hydrated-Citou692.js","/assets/index-BXWoOGxB.js","/assets/user-D6tTg1yS.js","/assets/presence-Cr--lRCr.js","/assets/progress-BsY6hGPp.js","/assets/index-BATSX33w.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-7o6O4ruO.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/button-BklqyTPS.js","/assets/tooltip-BiHTe_7F.js","/assets/user-D6tTg1yS.js","/assets/presence-Cr--lRCr.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName/","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-CHP4_JLJ.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/user-D6tTg1yS.js","/assets/discord-Dq4e30wV.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-BUs3av-e.js","imports":["/assets/index-1cKOJFpX.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Cq0nozYz.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-BocZ2xWF.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/index-Dx5GmdYq.js","/assets/error-boundary-DDTvdkB4.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/set-playground-Cdy8VlVD.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-BiWJY58g.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/button-BklqyTPS.js","/assets/loading-C5uX0jJw.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-BATSX33w.js","/assets/preview-CqrRe2BV.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-Dm1ll1kT.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/mdx-M0kcP-mP.js","/assets/use-event-source-A_0lEOPX.js","/assets/set-playground-Cdy8VlVD.js","/assets/button-BklqyTPS.js","/assets/diff-CpFxuKA2.js","/assets/error-boundary-DDTvdkB4.js","/assets/discord-Dq4e30wV.js","/assets/index-B-hHvmeV.js","/assets/tests-CmNNBElK.js","/assets/preview-CqrRe2BV.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-D9HsTvpe.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/index-BATSX33w.js","/assets/use-event-source-A_0lEOPX.js","/assets/set-playground-Cdy8VlVD.js","/assets/tests-CmNNBElK.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-Q9qnPuZX.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-Bm-bCUU2.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/seo-pBpFCWsy.js","/assets/progress-BsY6hGPp.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-Tfdnz1AB.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/error-boundary-DDTvdkB4.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-4cvVFzF8.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/use-event-source-A_0lEOPX.js","/assets/button-BklqyTPS.js","/assets/loading-C5uX0jJw.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-hcqGIpir.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-C8uU4Hwj.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/progress-BsY6hGPp.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-Cw8ktQ1-.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/mdx-M0kcP-mP.js","/assets/diff-CpFxuKA2.js","/assets/nav-chevrons-B82nbdyj.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/discord.callback":{"id":"routes/discord.callback","parentId":"root","path":"discord/callback","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord.callback-l0sNRNKZ.js","imports":[],"css":[]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-Bib-wh6d.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/button-BklqyTPS.js","/assets/epic-video-iluUs1-s.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/update-mdx-cache":{"id":"routes/update-mdx-cache","parentId":"root","path":"update-mdx-cache","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-mdx-cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]}},"url":"/assets/manifest-4bde8719.js","version":"4bde8719"};
@@ -1,2 +0,0 @@
1
- var Qt=Object.defineProperty;var Lt=n=>{throw TypeError(n)};var te=(n,e,i)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var O=(n,e,i)=>te(n,typeof e!="symbol"?e+"":e,i),xt=(n,e,i)=>e.has(n)||Lt("Cannot "+i);var t=(n,e,i)=>(xt(n,e,"read from private field"),i?i.call(n):e.get(n)),b=(n,e,i)=>e.has(n)?Lt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,i),f=(n,e,i,s)=>(xt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i),u=(n,e,i)=>(xt(n,e,"access private method"),i);var mt=(n,e,i,s)=>({set _(o){f(n,e,o,i)},get _(){return t(n,e,s)}});import{j as g,r as at}from"./index-1cKOJFpX.js";import{c as St}from"./clsx-B-dksMZM.js";import{e as ee,L as Ht,a as ie,r as se,u as ne}from"./components-CME-nGId.js";import{V as re,D as oe}from"./epic-video-iluUs1-s.js";import{I as ae,c as he,H as ht,A as le}from"./misc-ENVX3CWf.js";import{s as ce}from"./progress-bar-CSvo1ZXP.js";import{u as ue}from"./request-info-CEhUGODY.js";function fe(){const n=ee("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Ut(n){const e=ie();return at.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function de({file:n,appFile:e,appName:i,syncTo:s,line:o,column:r,children:a,onUpdate:h}){var W;const c=Ut(h),m=typeof e=="string"?[e]:e,F=n?"file":e?"appFile":"",w=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return g.jsxs(c.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[ce,g.jsx("input",{type:"hidden",name:"line",value:o}),g.jsx("input",{type:"hidden",name:"column",value:r}),g.jsx("input",{type:"hidden",name:"type",value:F}),g.jsx("input",{type:"hidden",name:"file",value:n}),g.jsx("input",{type:"hidden",name:"appName",value:i}),m==null?void 0:m.map(_=>g.jsx("input",{type:"hidden",name:"appFile",value:_},_)),s?g.jsxs(g.Fragment,{children:[g.jsx("input",{type:"hidden",name:"syncTo.type",value:w}),g.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),g.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),g.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,g.jsx("button",{type:"submit",className:St("launch_button",c.state==="idle"?null:"cursor-progress",((W=c.data)==null?void 0:W.status)==="error"?"cursor-not-allowed":null),children:a})]})}function pe({file:n,appFile:e,appName:i,line:s,children:o}){const r=fe(),a=ue();if(Array.isArray(e))return g.jsx("div",{children:"Cannot open more than one file"});if(n){const m=F=>F.replace(/\\/g,"/");return g.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:o})}const h=r.find(m=>m.name===i),c=[...(h==null?void 0:h.relativePath.split(a.separator))??[],e+(s?`#L${s}`:"")].join("/");return g.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${c}`,rel:"noreferrer",target:"_blank",children:o})}function Re({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const o=Ut(),r=h=>{if(!h.altKey||ENV.EPICSHOP_DEPLOYED)return;h.preventDefault();const c=new FormData,m=i?"file":"appFile";c.append(m,i??n),c.append("type",m),e&&c.append("appName",e),o.submit(c,{method:"POST",action:"/launch-editor"})},a=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return g.jsxs(Ht,{className:"self-center font-mono text-sm",onClick:r,target:"_blank",to:`${a}/${s}/${n}`.replace(/\\/g,"/"),children:[g.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),g.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Vt=ENV.EPICSHOP_DEPLOYED?pe:de,lt=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Bt=new Set,At=typeof process=="object"&&process?process:{},$t=(n,e,i,s)=>{typeof At.emitWarning=="function"?At.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let yt=globalThis.AbortController,It=globalThis.AbortSignal;var Mt;if(typeof yt>"u"){It=class{constructor(){O(this,"onabort");O(this,"_onabort",[]);O(this,"reason");O(this,"aborted",!1)}addEventListener(s,o){this._onabort.push(o)}},yt=class{constructor(){O(this,"signal",new It);e()}abort(s){var o,r;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const a of this.signal._onabort)a(s);(r=(o=this.signal).onabort)==null||r.call(o,s)}}};let n=((Mt=At.env)==null?void 0:Mt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,$t("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const ge=n=>!Bt.has(n),Q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),qt=n=>Q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?bt:null:null;class bt extends Array{constructor(e){super(e),this.fill(0)}}var ct;const nt=class nt{constructor(e,i){O(this,"heap");O(this,"length");if(!t(nt,ct))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=qt(e);if(!i)return[];f(nt,ct,!0);const s=new nt(e,i);return f(nt,ct,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};ct=new WeakMap,b(nt,ct,!1);let Ft=nt;var Gt,kt,U,I,V,B,ut,A,$,v,E,p,N,M,z,C,q,T,X,Y,G,K,it,R,l,Ct,rt,Z,pt,k,Xt,ot,ft,gt,tt,et,Tt,wt,_t,S,Dt,dt;const Nt=class Nt{constructor(e){b(this,l);b(this,U);b(this,I);b(this,V);b(this,B);b(this,ut);O(this,"ttl");O(this,"ttlResolution");O(this,"ttlAutopurge");O(this,"updateAgeOnGet");O(this,"updateAgeOnHas");O(this,"allowStale");O(this,"noDisposeOnSet");O(this,"noUpdateTTL");O(this,"maxEntrySize");O(this,"sizeCalculation");O(this,"noDeleteOnFetchRejection");O(this,"noDeleteOnStaleGet");O(this,"allowStaleOnFetchAbort");O(this,"allowStaleOnFetchRejection");O(this,"ignoreFetchAbort");b(this,A);b(this,$);b(this,v);b(this,E);b(this,p);b(this,N);b(this,M);b(this,z);b(this,C);b(this,q);b(this,T);b(this,X);b(this,Y);b(this,G);b(this,K);b(this,it);b(this,R);b(this,rt,()=>{});b(this,Z,()=>{});b(this,pt,()=>{});b(this,k,()=>!1);b(this,ot,e=>{});b(this,ft,(e,i,s)=>{});b(this,gt,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});O(this,Gt,"LRUCache");const{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:a,updateAgeOnHas:h,allowStale:c,dispose:m,disposeAfter:F,noDisposeOnSet:w,noUpdateTTL:W,maxSize:_=0,maxEntrySize:P=0,sizeCalculation:x,fetchMethod:j,noDeleteOnFetchRejection:d,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:D,ignoreFetchAbort:H}=e;if(i!==0&&!Q(i))throw new TypeError("max option must be a nonnegative integer");const st=i?qt(i):Array;if(!st)throw new Error("invalid max value: "+i);if(f(this,U,i),f(this,I,_),this.maxEntrySize=P||t(this,I),this.sizeCalculation=x,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(f(this,ut,j),f(this,it,!!j),f(this,v,new Map),f(this,E,new Array(i).fill(void 0)),f(this,p,new Array(i).fill(void 0)),f(this,N,new st(i)),f(this,M,new st(i)),f(this,z,0),f(this,C,0),f(this,q,Ft.create(i)),f(this,A,0),f(this,$,0),typeof m=="function"&&f(this,V,m),typeof F=="function"?(f(this,B,F),f(this,T,[])):(f(this,B,void 0),f(this,T,void 0)),f(this,K,!!t(this,V)),f(this,R,!!t(this,B)),this.noDisposeOnSet=!!w,this.noUpdateTTL=!!W,this.noDeleteOnFetchRejection=!!d,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!H,this.maxEntrySize!==0){if(t(this,I)!==0&&!Q(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!Q(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");u(this,l,Xt).call(this)}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!a,this.updateAgeOnHas=!!h,this.ttlResolution=Q(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!Q(this.ttl))throw new TypeError("ttl must be a positive integer if specified");u(this,l,Ct).call(this)}if(t(this,U)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,U)&&!t(this,I)){const J="LRU_CACHE_UNBOUNDED";ge(J)&&(Bt.add(J),$t("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,Nt))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,v),keyList:t(e,E),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,C)},free:t(e,q),isBackgroundFetch:i=>{var s;return u(s=e,l,S).call(s,i)},backgroundFetch:(i,s,o,r)=>{var a;return u(a=e,l,_t).call(a,i,s,o,r)},moveToTail:i=>{var s;return u(s=e,l,dt).call(s,i)},indexes:i=>{var s;return u(s=e,l,tt).call(s,i)},rindexes:i=>{var s;return u(s=e,l,et).call(s,i)},isStale:i=>{var s;return t(s=e,k).call(s,i)}}}get max(){return t(this,U)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,$)}get size(){return t(this,A)}get fetchMethod(){return t(this,ut)}get dispose(){return t(this,V)}get disposeAfter(){return t(this,B)}getRemainingTTL(e){return t(this,v).has(e)?1/0:0}*entries(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*rentries(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*keys(){for(const e of u(this,l,tt).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of u(this,l,et).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[(kt=Symbol.iterator,Gt=Symbol.toStringTag,kt)](){return this.entries()}find(e,i={}){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&e(r,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}rforEach(e,i=this){for(const s of u(this,l,et).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}purgeStale(){let e=!1;for(const i of u(this,l,et).call(this,{allowStale:!0}))t(this,k).call(this,i)&&(this.delete(t(this,E)[i]),e=!0);return e}info(e){const i=t(this,v).get(e);if(i===void 0)return;const s=t(this,p)[i],o=u(this,l,S).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;const r={value:o};if(t(this,G)&&t(this,Y)){const a=t(this,G)[i],h=t(this,Y)[i];if(a&&h){const c=a-(lt.now()-h);r.ttl=c,r.start=Date.now()}}return t(this,X)&&(r.size=t(this,X)[i]),r}dump(){const e=[];for(const i of u(this,l,tt).call(this,{allowStale:!0})){const s=t(this,E)[i],o=t(this,p)[i],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||s===void 0)continue;const a={value:r};if(t(this,G)&&t(this,Y)){a.ttl=t(this,G)[i];const h=lt.now()-t(this,Y)[i];a.start=Math.floor(Date.now()-h)}t(this,X)&&(a.size=t(this,X)[i]),e.unshift([s,a])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const o=Date.now()-s.start;s.start=lt.now()-o}this.set(i,s.value,s)}}set(e,i,s={}){var W,_,P,x,j;if(i===void 0)return this.delete(e),this;const{ttl:o=this.ttl,start:r,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:c}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const F=t(this,gt).call(this,e,i,s.size||0,h);if(this.maxEntrySize&&F>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.delete(e),this;let w=t(this,A)===0?void 0:t(this,v).get(e);if(w===void 0)w=t(this,A)===0?t(this,C):t(this,q).length!==0?t(this,q).pop():t(this,A)===t(this,U)?u(this,l,wt).call(this,!1):t(this,A),t(this,E)[w]=e,t(this,p)[w]=i,t(this,v).set(e,w),t(this,N)[t(this,C)]=w,t(this,M)[w]=t(this,C),f(this,C,w),mt(this,A)._++,t(this,ft).call(this,w,F,c),c&&(c.set="add"),m=!1;else{u(this,l,dt).call(this,w);const d=t(this,p)[w];if(i!==d){if(t(this,it)&&u(this,l,S).call(this,d)){d.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=d;y!==void 0&&!a&&(t(this,K)&&((W=t(this,V))==null||W.call(this,y,e,"set")),t(this,R)&&((_=t(this,T))==null||_.push([y,e,"set"])))}else a||(t(this,K)&&((P=t(this,V))==null||P.call(this,d,e,"set")),t(this,R)&&((x=t(this,T))==null||x.push([d,e,"set"])));if(t(this,ot).call(this,w),t(this,ft).call(this,w,F,c),t(this,p)[w]=i,c){c.set="replace";const y=d&&u(this,l,S).call(this,d)?d.__staleWhileFetching:d;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(o!==0&&!t(this,G)&&u(this,l,Ct).call(this),t(this,G)&&(m||t(this,pt).call(this,w,o,r),c&&t(this,Z).call(this,c,w)),!a&&t(this,R)&&t(this,T)){const d=t(this,T);let y;for(;y=d==null?void 0:d.shift();)(j=t(this,B))==null||j.call(this,...y)}return this}pop(){var e;try{for(;t(this,A);){const i=t(this,p)[t(this,z)];if(u(this,l,wt).call(this,!0),u(this,l,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,R)&&t(this,T)){const i=t(this,T);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,B))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,r=t(this,v).get(e);if(r!==void 0){const a=t(this,p)[r];if(u(this,l,S).call(this,a)&&a.__staleWhileFetching===void 0)return!1;if(t(this,k).call(this,r))o&&(o.has="stale",t(this,Z).call(this,o,r));else return s&&t(this,rt).call(this,r),o&&(o.has="hit",t(this,Z).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,o=t(this,v).get(e);if(o===void 0||!s&&t(this,k).call(this,o))return;const r=t(this,p)[o];return u(this,l,S).call(this,r)?r.__staleWhileFetching:r}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:c=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:F=this.noUpdateTTL,noDeleteOnFetchRejection:w=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:W=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:P=this.allowStaleOnFetchAbort,context:x,forceRefresh:j=!1,status:d,signal:y}=i;if(!t(this,it))return d&&(d.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:d});const L={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:a,noDisposeOnSet:h,size:c,sizeCalculation:m,noUpdateTTL:F,noDeleteOnFetchRejection:w,allowStaleOnFetchRejection:W,allowStaleOnFetchAbort:P,ignoreFetchAbort:_,status:d,signal:y};let D=t(this,v).get(e);if(D===void 0){d&&(d.fetch="miss");const H=u(this,l,_t).call(this,e,D,L,x);return H.__returned=H}else{const H=t(this,p)[D];if(u(this,l,S).call(this,H)){const Wt=s&&H.__staleWhileFetching!==void 0;return d&&(d.fetch="inflight",Wt&&(d.returnedStale=!0)),Wt?H.__staleWhileFetching:H.__returned=H}const st=t(this,k).call(this,D);if(!j&&!st)return d&&(d.fetch="hit"),u(this,l,dt).call(this,D),o&&t(this,rt).call(this,D),d&&t(this,Z).call(this,d,D),H;const J=u(this,l,_t).call(this,e,D,L,x),Rt=J.__staleWhileFetching!==void 0&&s;return d&&(d.fetch=st?"stale":"refresh",Rt&&st&&(d.returnedStale=!0)),Rt?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:a}=i,h=t(this,v).get(e);if(h!==void 0){const c=t(this,p)[h],m=u(this,l,S).call(this,c);return a&&t(this,Z).call(this,a,h),t(this,k).call(this,h)?(a&&(a.get="stale"),m?(a&&s&&c.__staleWhileFetching!==void 0&&(a.returnedStale=!0),s?c.__staleWhileFetching:void 0):(r||this.delete(e),a&&s&&(a.returnedStale=!0),s?c:void 0)):(a&&(a.get="hit"),m?c.__staleWhileFetching:(u(this,l,dt).call(this,h),o&&t(this,rt).call(this,h),c))}else a&&(a.get="miss")}delete(e){var s,o,r,a;let i=!1;if(t(this,A)!==0){const h=t(this,v).get(e);if(h!==void 0)if(i=!0,t(this,A)===1)this.clear();else{t(this,ot).call(this,h);const c=t(this,p)[h];if(u(this,l,S).call(this,c)?c.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,R))&&(t(this,K)&&((s=t(this,V))==null||s.call(this,c,e,"delete")),t(this,R)&&((o=t(this,T))==null||o.push([c,e,"delete"]))),t(this,v).delete(e),t(this,E)[h]=void 0,t(this,p)[h]=void 0,h===t(this,C))f(this,C,t(this,M)[h]);else if(h===t(this,z))f(this,z,t(this,N)[h]);else{const m=t(this,M)[h];t(this,N)[m]=t(this,N)[h];const F=t(this,N)[h];t(this,M)[F]=t(this,M)[h]}mt(this,A)._--,t(this,q).push(h)}}if(t(this,R)&&((r=t(this,T))!=null&&r.length)){const h=t(this,T);let c;for(;c=h==null?void 0:h.shift();)(a=t(this,B))==null||a.call(this,...c)}return i}clear(){var e,i,s;for(const o of u(this,l,et).call(this,{allowStale:!0})){const r=t(this,p)[o];if(u(this,l,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const a=t(this,E)[o];t(this,K)&&((e=t(this,V))==null||e.call(this,r,a,"delete")),t(this,R)&&((i=t(this,T))==null||i.push([r,a,"delete"]))}}if(t(this,v).clear(),t(this,p).fill(void 0),t(this,E).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),f(this,z,0),f(this,C,0),t(this,q).length=0,f(this,$,0),f(this,A,0),t(this,R)&&t(this,T)){const o=t(this,T);let r;for(;r=o==null?void 0:o.shift();)(s=t(this,B))==null||s.call(this,...r)}}};U=new WeakMap,I=new WeakMap,V=new WeakMap,B=new WeakMap,ut=new WeakMap,A=new WeakMap,$=new WeakMap,v=new WeakMap,E=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,C=new WeakMap,q=new WeakMap,T=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,it=new WeakMap,R=new WeakMap,l=new WeakSet,Ct=function(){const e=new bt(t(this,U)),i=new bt(t(this,U));f(this,G,e),f(this,Y,i),f(this,pt,(r,a,h=lt.now())=>{if(i[r]=a!==0?h:0,e[r]=a,a!==0&&this.ttlAutopurge){const c=setTimeout(()=>{t(this,k).call(this,r)&&this.delete(t(this,E)[r])},a+1);c.unref&&c.unref()}}),f(this,rt,r=>{i[r]=e[r]!==0?lt.now():0}),f(this,Z,(r,a)=>{if(e[a]){const h=e[a],c=i[a];if(!h||!c)return;r.ttl=h,r.start=c,r.now=s||o();const m=r.now-c;r.remainingTTL=h-m}});let s=0;const o=()=>{const r=lt.now();if(this.ttlResolution>0){s=r;const a=setTimeout(()=>s=0,this.ttlResolution);a.unref&&a.unref()}return r};this.getRemainingTTL=r=>{const a=t(this,v).get(r);if(a===void 0)return 0;const h=e[a],c=i[a];if(!h||!c)return 1/0;const m=(s||o())-c;return h-m},f(this,k,r=>{const a=i[r],h=e[r];return!!h&&!!a&&(s||o())-a>h})},rt=new WeakMap,Z=new WeakMap,pt=new WeakMap,k=new WeakMap,Xt=function(){const e=new bt(t(this,U));f(this,$,0),f(this,X,e),f(this,ot,i=>{f(this,$,t(this,$)-e[i]),e[i]=0}),f(this,gt,(i,s,o,r)=>{if(u(this,l,S).call(this,s))return 0;if(!Q(o))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(o=r(s,i),!Q(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),f(this,ft,(i,s,o)=>{if(e[i]=s,t(this,I)){const r=t(this,I)-e[i];for(;t(this,$)>r;)u(this,l,wt).call(this,!0)}f(this,$,t(this,$)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,$))})},ot=new WeakMap,ft=new WeakMap,gt=new WeakMap,tt=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,C);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},et=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,z);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,N)[i]},Tt=function(e){return e!==void 0&&t(this,v).get(t(this,E)[e])===e},wt=function(e){var r,a;const i=t(this,z),s=t(this,E)[i],o=t(this,p)[i];return t(this,it)&&u(this,l,S).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,R))&&(t(this,K)&&((r=t(this,V))==null||r.call(this,o,s,"evict")),t(this,R)&&((a=t(this,T))==null||a.push([o,s,"evict"]))),t(this,ot).call(this,i),e&&(t(this,E)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,A)===1?(f(this,z,f(this,C,0)),t(this,q).length=0):f(this,z,t(this,N)[i]),t(this,v).delete(s),mt(this,A)._--,i},_t=function(e,i,s,o){const r=i===void 0?void 0:t(this,p)[i];if(u(this,l,S).call(this,r))return r;const a=new yt,{signal:h}=s;h==null||h.addEventListener("abort",()=>a.abort(h.reason),{signal:a.signal});const c={signal:a.signal,options:s,context:o},m=(x,j=!1)=>{const{aborted:d}=a.signal,y=s.ignoreFetchAbort&&x!==void 0;if(s.status&&(d&&!j?(s.status.fetchAborted=!0,s.status.fetchError=a.signal.reason,y&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),d&&!y&&!j)return w(a.signal.reason);const L=_;return t(this,p)[i]===_&&(x===void 0?L.__staleWhileFetching?t(this,p)[i]=L.__staleWhileFetching:this.delete(e):(s.status&&(s.status.fetchUpdated=!0),this.set(e,x,c.options))),x},F=x=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=x),w(x)),w=x=>{const{aborted:j}=a.signal,d=j&&s.allowStaleOnFetchAbort,y=d||s.allowStaleOnFetchRejection,L=y||s.noDeleteOnFetchRejection,D=_;if(t(this,p)[i]===_&&(!L||D.__staleWhileFetching===void 0?this.delete(e):d||(t(this,p)[i]=D.__staleWhileFetching)),y)return s.status&&D.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw x},W=(x,j)=>{var y;const d=(y=t(this,ut))==null?void 0:y.call(this,e,r,c);d&&d instanceof Promise&&d.then(L=>x(L===void 0?void 0:L),j),a.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(x(void 0),s.allowStaleOnFetchAbort&&(x=L=>m(L,!0)))})};s.status&&(s.status.fetchDispatched=!0);const _=new Promise(W).then(m,F),P=Object.assign(_,{__abortController:a,__staleWhileFetching:r,__returned:void 0});return i===void 0?(this.set(e,P,{...c.options,status:void 0}),i=t(this,v).get(e)):t(this,p)[i]=P,P},S=function(e){if(!t(this,it))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof yt},Dt=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},dt=function(e){e!==t(this,C)&&(e===t(this,z)?f(this,z,t(this,N)[e]):u(this,l,Dt).call(this,t(this,M)[e],t(this,N)[e]),u(this,l,Dt).call(this,t(this,C),e),f(this,C,e))};let jt=Nt;var Et={};Object.defineProperty(Et,"__esModule",{value:!0});Et.getMDXComponent=_e;Et.getMDXExport=Kt;var me=Pt(at),be=Pt(g),we=Pt(se);function Yt(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(Yt=function(s){return s?i:e})(n)}function Pt(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=Yt(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in n)if(r!=="default"&&{}.hasOwnProperty.call(n,r)){var a=o?Object.getOwnPropertyDescriptor(n,r):null;a&&(a.get||a.set)?Object.defineProperty(s,r,a):s[r]=n[r]}return s.default=n,i&&i.set(n,s),s}function _e(n,e){return Kt(n,e).default}function Kt(n,e){const i={React:me,ReactDOM:we,_jsx_runtime:be,...e};return new Function(...Object.keys(i),n)(...Object.values(i))}var ye=Et;const Ot=n=>n.replace(/\\/g,"/");function Zt(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const zt="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function Se({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":o,"data-type":r}){var W;const a=ne();if(r==="other"||!n||!e||!i)return null;const h=Ot(((W=a[a.type])==null?void 0:W.fullPath)??""),c=!i.startsWith(h),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],F=n.split(","),w=m.filter(_=>F.includes(_));return g.jsx(g.Fragment,{children:w.map(_=>{var d;const P=a[_];if(_==="playground"){const y=a.playground&&a.playground.appName!==((d=a.problem)==null?void 0:d.name);if(!P||y||c)return g.jsxs("button",{className:St(zt,"cursor-not-allowed"),title:y?"Playground is not set to the right app":c?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]},_)}if(!P||!P.fullPath)return null;const x=[Ot(P.fullPath),Ot(e)].join(s),j=Zt(x,s,_);return g.jsx(Vt,{file:x,line:Number(o??1),children:g.jsxs("span",{title:j,className:zt,children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]})},_)})})}function Ee(){const[n,e]=at.useState(!1);return at.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),g.jsx("button",{className:he(zt,"w-12 uppercase"),onClick:i=>{var r,a,h;e(!0);const o=((h=(a=(r=i.currentTarget.parentElement)==null?void 0:r.parentElement)==null?void 0:a.querySelector("pre"))==null?void 0:h.textContent)||"";navigator.clipboard.writeText(o)},children:n?"copied":"copy"})}function xe({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":o,"data-nocopy":r,"data-sep":a}=e,h=r===void 0;function c(){if(o&&a)return!s||s.includes("..")?{"data-filename":Zt(o,a)}:{"data-filename":s.replace(/\//g,a)}}return g.jsxs("div",{className:"group relative",children:[g.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?g.jsx(Se,{...e}):null,h?g.jsx(Ee,{}):null]}),g.jsx("pre",{...e,className:St("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...c(),children:n})]})}const Oe={h1:n=>g.jsx(ht,{...n,as:"h1"}),h2:n=>g.jsx(ht,{...n,as:"h2"}),h3:n=>g.jsx(ht,{...n,as:"h3"}),h4:n=>g.jsx(ht,{...n,as:"h4"}),h5:n=>g.jsx(ht,{...n,as:"h5"}),h6:n=>g.jsx(ht,{...n,as:"h6"}),a:le,p:n=>g.jsx("div",{...n}),pre:n=>g.jsx("pre",{...n,className:St("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Vt,VideoEmbed:re,EpicVideo:oe};function ve(n){const e=ye.getMDXComponent(n);function i({components:s,...o}){const r=at.useMemo(()=>({...Oe,...s}),[s]);return g.jsx(e,{components:r,...o})}return i}const vt=new jt({max:1e3});function Ae(n){return at.useMemo(()=>{if(vt.has(n))return vt.get(n);const e=ve(n);return vt.set(n,e),e},[n])}function Ie({code:n,components:e}){const i=Ae(n),s=at.useMemo(()=>({Icon:ae,pre:xe,Link:Ht,...e}),[e]);return g.jsx(i,{components:s})}export{Re as E,Vt as L,Ie as M};
2
- //# sourceMappingURL=mdx-M0kcP-mP.js.map