@epic-web/workshop-app 4.14.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_layout-Bn9QhWq9.js → _layout-0urSK0i1.js} +2 -2
- package/build/client/assets/{_layout-Bn9QhWq9.js.map → _layout-0urSK0i1.js.map} +1 -1
- package/build/client/assets/_layout-CZ3fjUvs.js +2 -0
- package/build/client/assets/_layout-CZ3fjUvs.js.map +1 -0
- package/build/client/assets/_layout-DLIzcS5v.js +2 -0
- package/build/client/assets/_layout-DLIzcS5v.js.map +1 -0
- package/build/client/assets/account-LnI_Eq0t.js +2 -0
- package/build/client/assets/account-LnI_Eq0t.js.map +1 -0
- package/build/client/assets/app-b7uXHF5m.css +1 -0
- package/build/client/assets/discord-BgaWmFRC.js +2 -0
- package/build/client/assets/discord-BgaWmFRC.js.map +1 -0
- package/build/client/assets/discord-Dk1wbXOn.js +2 -0
- package/build/client/assets/discord-Dk1wbXOn.js.map +1 -0
- package/build/client/assets/finished-DRjILUr_.js +2 -0
- package/build/client/assets/finished-DRjILUr_.js.map +1 -0
- package/build/client/assets/login-SJlLMYmL.js +2 -0
- package/build/client/assets/login-SJlLMYmL.js.map +1 -0
- package/build/client/assets/{manifest-b122038e.js → manifest-fcdcf131.js} +1 -1
- package/build/client/assets/onboarding-CxyD6D0I.js +2 -0
- package/build/client/assets/onboarding-CxyD6D0I.js.map +1 -0
- package/build/client/assets/robots_._txt-l0sNRNKZ.js +2 -0
- package/build/client/assets/robots_._txt-l0sNRNKZ.js.map +1 -0
- package/build/client/assets/{root-B86bLhuo.js → root-BUqeXmeK.js} +4 -4
- package/build/client/assets/{root-B86bLhuo.js.map → root-BUqeXmeK.js.map} +1 -1
- package/build/client/assets/sitemap_._xml-l0sNRNKZ.js +2 -0
- package/build/client/assets/sitemap_._xml-l0sNRNKZ.js.map +1 -0
- package/build/client/assets/support-DZyqD0NL.js +2 -0
- package/build/client/assets/support-DZyqD0NL.js.map +1 -0
- package/build/server/index.js +166 -81
- package/build/server/index.js.map +1 -1
- package/dist/server/index.js +12 -4
- package/package.json +5 -3
- package/build/client/assets/_layout-B9Y-8OU6.js +0 -2
- package/build/client/assets/_layout-B9Y-8OU6.js.map +0 -1
- package/build/client/assets/_layout-DaZNLfOL.js +0 -2
- package/build/client/assets/_layout-DaZNLfOL.js.map +0 -1
- package/build/client/assets/account-uvU1jIL2.js +0 -2
- package/build/client/assets/account-uvU1jIL2.js.map +0 -1
- package/build/client/assets/app-BOiko_VU.css +0 -1
- package/build/client/assets/discord-CgwNGD2p.js +0 -2
- package/build/client/assets/discord-CgwNGD2p.js.map +0 -1
- package/build/client/assets/discord-yZor-3t1.js +0 -2
- package/build/client/assets/discord-yZor-3t1.js.map +0 -1
- package/build/client/assets/finished-B9qjUR4B.js +0 -2
- package/build/client/assets/finished-B9qjUR4B.js.map +0 -1
- package/build/client/assets/login-CHE9W6po.js +0 -2
- package/build/client/assets/login-CHE9W6po.js.map +0 -1
- package/build/client/assets/onboarding-FD1FkQuu.js +0 -2
- package/build/client/assets/onboarding-FD1FkQuu.js.map +0 -1
- package/build/client/assets/support-D1ydJNdm.js +0 -2
- package/build/client/assets/support-D1ydJNdm.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as b,j as e}from"./index-Czg1ruVn.js";import{I as m}from"./misc-S5ZD98sI.js";import{S as f}from"./tooltip-BtzSIxlB.js";import{a as g}from"./progress-BwanvUpB.js";import{u as N,L as i,F as c}from"./components-wgHiPsTg.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-CZ3fjUvs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_layout-CZ3fjUvs.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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_layout-DLIzcS5v.js","sources":["../../../app/routes/_app+/_exercises+/_layout.tsx"],"sourcesContent":["import { getExercises } from '@epic-web/workshop-utils/apps.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { Outlet } from '@remix-run/react'\nimport { serverOnly$ } from 'vite-env-only/macros'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: serverOnly$(async (request) => {\n\t\tconst exercises = await getExercises({ request })\n\t\treturn exercises.flatMap((e) => [\n\t\t\t{ route: `/${e.exerciseNumber.toString().padStart(2, '0')}` },\n\t\t\t...e.steps.flatMap((s) =>\n\t\t\t\t['problem', 'solution'].map((type) => ({\n\t\t\t\t\troute: `/${e.exerciseNumber.toString().padStart(2, '0')}/${s.stepNumber.toString().padStart(2, '0')}/${type}`,\n\t\t\t\t})),\n\t\t\t),\n\t\t\t{ route: `/${e.exerciseNumber.toString().padStart(2, '0')}/finished` },\n\t\t])\n\t}),\n}\n\nexport default function ExercisesLayout() {\n\treturn (\n\t\t<div className=\"flex h-full flex-grow\">\n\t\t\t<Outlet />\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","undefined","ExercisesLayout","className","children","jsx","Outlet"],"mappings":"+CAKO,MAAMA,EAAoB,CAChCC,kBAAAC,MAYD,EAEA,SAAwBC,GAAkB,CACzC,aACE,MAAI,CAAAC,UAAU,wBACdC,SAAAC,EAAAA,IAACC,IAAO,CACT,CAAA,CAEF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./index-Czg1ruVn.js";import{B as a}from"./button-BA3iiLRs.js";import{I as i}from"./misc-S5ZD98sI.js";import{S as o}from"./tooltip-BtzSIxlB.js";import{u as m,a as u}from"./user-CdUDQ7a8.js";import{u as x}from"./presence-CW1_eiIo.js";import{u as h,a as p,L as r,F as c}from"./components-wgHiPsTg.js";import"./clsx-B-dksMZM.js";import"./request-info-DHtGM4FI.js";const O={getSitemapEntries:()=>null};function k(){const l=h(),d=p(),t=m(),s=u(),n=x();return e.jsxs("main",{className:"container flex h-full w-full max-w-3xl flex-grow flex-col items-center justify-center gap-4",children:[e.jsx("img",{className:"h-36 w-36 rounded-full",alt:(s==null?void 0:s.displayName)??t.name??t.email,src:t.avatarUrl}),e.jsx("h1",{className:"mb-1 text-2xl",children:"Your Account"}),e.jsx("p",{className:"text-center text-gray-700 dark:text-gray-300",children:t.name?`Hi ${(s==null?void 0:s.displayName)??t.name}, your device is logged in with ${t.email}.`:`Your device is logged in with ${t.email}.`}),s?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-center text-gray-700 dark:text-gray-300",children:["And you are connected to discord as ",s.displayName," (",s.id,")."]}),e.jsxs("div",{className:"flex justify-center gap-2",children:[e.jsx(d.Form,{method:"post",children:e.jsx(a,{varient:"mono",name:"intent",value:"disconnect-discord",children:"Disconnect Discord"})}),e.jsx(o,{content:"Your discord connection gives you access to the exclusive Discord channels for Epic Web",children:e.jsx(i,{name:"Question",tabIndex:0})})]})]}):e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(r,{to:l.discordAuthUrl,className:"inline-flex items-center gap-2 underline",children:[e.jsx(i,{name:"Discord",size:"lg"}),"Connect Discord"]}),e.jsx(o,{content:"This will give you access to the exclusive Discord channels for Epic Web",children:e.jsx(i,{name:"Question",tabIndex:0})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(c,{method:"POST",children:[e.jsx("input",{name:"optOut",type:"hidden",value:n!=null&&n.optOut?"false":"true"}),e.jsxs(a,{varient:"mono",name:"intent",value:"presence-opt-out",children:[n!=null&&n.optOut?"Opt in to":"Opt out of"," presence"]})]}),e.jsx(o,{content:"This controls whether your name and avatar are displayed in the pile of faces in navigation",children:e.jsx(i,{name:"Question",tabIndex:0})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(c,{method:"post",children:e.jsx(a,{varient:"mono",name:"intent",value:"logout",children:"Log device out"})}),e.jsx(o,{content:e.jsxs("div",{children:["Note: it is your ",e.jsx("i",{className:"italic",children:"device"})," that's logged in, not your browser.",e.jsx("br",{}),"So all browsers on this device will be logged in with the same account on this device."]}),children:e.jsx(i,{name:"Question",tabIndex:0})})]}),e.jsxs("p",{children:["Check"," ",e.jsx(r,{to:"/onboarding",className:"underline",children:"/onboarding"})," ","if you'd like to review onboarding again."]}),e.jsxs("p",{children:["Check"," ",e.jsx(r,{to:"/support",className:"underline",children:"/support"})," ","if you need support."]})]})}export{k as default,O as handle};
|
|
2
|
+
//# sourceMappingURL=account-LnI_Eq0t.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-LnI_Eq0t.js","sources":["../../../app/routes/_app+/account.tsx"],"sourcesContent":["import { deleteCache } from '@epic-web/workshop-utils/cache.server'\nimport {\n\tdeleteDb,\n\tdeleteDiscordInfo,\n\trequireAuthInfo,\n\tsetPresencePreferences,\n} from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { json, redirect, type LoaderFunctionArgs } from '@remix-run/node'\nimport { Form, Link, useFetcher, useLoaderData } from '@remix-run/react'\nimport { Button } from '#app/components/button.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.js'\nimport { useOptionalDiscordMember, useUser } from '#app/components/user.tsx'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { usePresencePreferences } from '#app/utils/presence.tsx'\nimport { redirectWithToast } from '#app/utils/toast.server.ts'\nimport { getDiscordAuthURL } from '../discord.callback.ts'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\tawait requireAuthInfo({ request })\n\treturn json({ discordAuthUrl: getDiscordAuthURL() })\n}\n\nexport async function action({ request }: { request: Request }) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\tconst intent = formData.get('intent')\n\tif (intent === 'disconnect-discord') {\n\t\tawait deleteDiscordInfo()\n\t\treturn redirectWithToast('/account', {\n\t\t\ttype: 'success',\n\t\t\ttitle: 'Disconnected',\n\t\t\tdescription: 'Local discord data has been deleted.',\n\t\t})\n\t} else if (intent === 'logout') {\n\t\tawait deleteDb()\n\t\tawait deleteCache()\n\t\treturn redirectWithToast('/login', {\n\t\t\ttype: 'success',\n\t\t\ttitle: 'Logged out',\n\t\t\tdescription: 'Goodbye! Come back soon!',\n\t\t})\n\t} else if (intent === 'presence-opt-out') {\n\t\tconst optOut = formData.get('optOut') === 'true'\n\t\tawait setPresencePreferences({ optOut })\n\t\treturn redirectWithToast('/account', {\n\t\t\ttitle: optOut ? 'Opted out' : 'Opted in',\n\t\t\tdescription: `You are now ${optOut ? 'invisible' : 'visible'}.`,\n\t\t\ttype: 'success',\n\t\t})\n\t}\n\n\treturn redirect('/account')\n}\n\nexport default function Account() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst disconnectFetcher = useFetcher()\n\tconst user = useUser()\n\tconst discordMember = useOptionalDiscordMember()\n\tconst presencePreferences = usePresencePreferences()\n\treturn (\n\t\t<main className=\"container flex h-full w-full max-w-3xl flex-grow flex-col items-center justify-center gap-4\">\n\t\t\t<img\n\t\t\t\tclassName=\"h-36 w-36 rounded-full\"\n\t\t\t\talt={discordMember?.displayName ?? user.name ?? user.email}\n\t\t\t\tsrc={user.avatarUrl}\n\t\t\t/>\n\t\t\t<h1 className=\"mb-1 text-2xl\">Your Account</h1>\n\t\t\t<p className=\"text-center text-gray-700 dark:text-gray-300\">\n\t\t\t\t{user.name\n\t\t\t\t\t? `Hi ${\n\t\t\t\t\t\t\tdiscordMember?.displayName ?? user.name\n\t\t\t\t\t\t}, your device is logged in with ${user.email}.`\n\t\t\t\t\t: `Your device is logged in with ${user.email}.`}\n\t\t\t</p>\n\t\t\t{discordMember ? (\n\t\t\t\t<>\n\t\t\t\t\t<p className=\"text-center text-gray-700 dark:text-gray-300\">\n\t\t\t\t\t\tAnd you are connected to discord as {discordMember.displayName} (\n\t\t\t\t\t\t{discordMember.id}).\n\t\t\t\t\t</p>\n\t\t\t\t\t<div className=\"flex justify-center gap-2\">\n\t\t\t\t\t\t<disconnectFetcher.Form method=\"post\">\n\t\t\t\t\t\t\t<Button varient=\"mono\" name=\"intent\" value=\"disconnect-discord\">\n\t\t\t\t\t\t\t\tDisconnect Discord\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</disconnectFetcher.Form>\n\t\t\t\t\t\t<SimpleTooltip content=\"Your discord connection gives you access to the exclusive Discord channels for Epic Web\">\n\t\t\t\t\t\t\t<Icon name=\"Question\" tabIndex={0} />\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto={data.discordAuthUrl}\n\t\t\t\t\t\tclassName=\"inline-flex items-center gap-2 underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon name=\"Discord\" size=\"lg\" />\n\t\t\t\t\t\tConnect Discord\n\t\t\t\t\t</Link>\n\t\t\t\t\t<SimpleTooltip content=\"This will give you access to the exclusive Discord channels for Epic Web\">\n\t\t\t\t\t\t<Icon name=\"Question\" tabIndex={0} />\n\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t<input\n\t\t\t\t\t\tname=\"optOut\"\n\t\t\t\t\t\ttype=\"hidden\"\n\t\t\t\t\t\tvalue={presencePreferences?.optOut ? 'false' : 'true'}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button varient=\"mono\" name=\"intent\" value=\"presence-opt-out\">\n\t\t\t\t\t\t{presencePreferences?.optOut ? 'Opt in to' : 'Opt out of'} presence\n\t\t\t\t\t</Button>\n\t\t\t\t</Form>\n\t\t\t\t<SimpleTooltip content=\"This controls whether your name and avatar are displayed in the pile of faces in navigation\">\n\t\t\t\t\t<Icon name=\"Question\" tabIndex={0} />\n\t\t\t\t</SimpleTooltip>\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Form method=\"post\">\n\t\t\t\t\t<Button varient=\"mono\" name=\"intent\" value=\"logout\">\n\t\t\t\t\t\tLog device out\n\t\t\t\t\t</Button>\n\t\t\t\t</Form>\n\t\t\t\t<SimpleTooltip\n\t\t\t\t\tcontent={\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\tNote: it is your <i className=\"italic\">device</i> that's logged\n\t\t\t\t\t\t\tin, not your browser.\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\tSo all browsers on this device will be logged in with the same\n\t\t\t\t\t\t\taccount on this device.\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<Icon name=\"Question\" tabIndex={0} />\n\t\t\t\t</SimpleTooltip>\n\t\t\t</div>\n\t\t\t<p>\n\t\t\t\tCheck{' '}\n\t\t\t\t<Link to=\"/onboarding\" className=\"underline\">\n\t\t\t\t\t/onboarding\n\t\t\t\t</Link>{' '}\n\t\t\t\tif you'd like to review onboarding again.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tCheck{' '}\n\t\t\t\t<Link to=\"/support\" className=\"underline\">\n\t\t\t\t\t/support\n\t\t\t\t</Link>{' '}\n\t\t\t\tif you need support.\n\t\t\t</p>\n\t\t</main>\n\t)\n}\n"],"names":["handle","getSitemapEntries","Account","data","useLoaderData","disconnectFetcher","useFetcher","user","useUser","discordMember","useOptionalDiscordMember","presencePreferences","usePresencePreferences","jsxs","className","children","jsx","alt","displayName","name","email","src","avatarUrl","Fragment","id","Form","method","Button","varient","value","SimpleTooltip","content","Icon","tabIndex","Link","to","discordAuthUrl","size","type","optOut"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#files h2{display:none}#files ul{display:flex;flex-direction:column;gap:.125rem;font-size:1rem;line-height:1.5rem}#files ul li code{font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}#files ul li span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}#files ul li[data-state=modified] button:before,#files ul li[data-state=modified] a:before{margin-right:.5rem;height:1rem;width:1rem;content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 16 16' fill='rgb(251 146 60)' width='16' height='16' %3E%3Cpath d='M13.25 1c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 15H2.75A1.75 1.75 0 0 1 1 13.25V2.75C1 1.784 1.784 1 2.75 1ZM2.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z'%3E%3C/path%3E%3C/svg%3E")}#files ul li[data-state=added] button:before,#files ul li[data-state=added] a:before{margin-right:.5rem;height:1rem;width:1rem;content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 16 16' fill='rgb(16 185 129)' width='16' height='16'%3E%3Cpath d='M2.75 1h10.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 15H2.75A1.75 1.75 0 0 1 1 13.25V2.75C1 1.784 1.784 1 2.75 1Zm10.5 1.5H2.75a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25ZM8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4Z'%3E%3C/path%3E%3C/svg%3E")}#files ul li[data-state=deleted] button:before,#files ul li[data-state=deleted] a:before{margin-right:.5rem;height:1rem;width:1rem;content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 16 16' fill='rgb(239 68 68)' width='16' height='16'%3E%3Cpath d='M13.25 1c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 15H2.75A1.75 1.75 0 0 1 1 13.25V2.75C1 1.784 1.784 1 2.75 1ZM2.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25Zm8.5 6.25h-6.5a.75.75 0 0 1 0-1.5h6.5a.75.75 0 0 1 0 1.5Z'%3E%3C/path%3E%3C/svg%3E")}.launch-editor-wrapper form .launch_button{display:flex;width:100%;align-items:center;border-radius:.25rem;padding:.25rem .5rem;outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.launch-editor-wrapper form .launch_button:hover{background-color:hsl(var(--foreground) / .2)}.launch-editor-wrapper form .launch_button:focus{background-color:hsl(var(--foreground) / .2)}.launch-editor-wrapper .not-allowed{cursor:not-allowed}.launch-editor-wrapper .not-allowed .launch_button{pointer-events:none}summary[data-state=modified]:before{padding-right:.25rem;content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 16 16' fill='rgb(251 146 60)' width='16' height='16' %3E%3Cpath d='M13.25 1c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 15H2.75A1.75 1.75 0 0 1 1 13.25V2.75C1 1.784 1.784 1 2.75 1ZM2.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z'%3E%3C/path%3E%3C/svg%3E")}body{-moz-tab-size:2ch;-o-tab-size:2ch;tab-size:2ch}.clip-path-button-outer{clip-path:polygon(0 0,100% 0,100% 70%,88% 100%,0 100%)}.clip-path-button{clip-path:polygon(0 0,100% 0,100% 70%,88.5% 100%,0 100%)}.shadow-on-scrollbox{background:linear-gradient(hsl(var(--background)) 30%,hsl(var(--foreground) / 0)),radial-gradient(farthest-side at 50% 0,hsl(var(--foreground) / .2),hsl(var(--foreground) / 0)) 0 0,linear-gradient(hsl(var(--foreground) / 0),hsl(var(--background)) 70%) 0 100%,radial-gradient(farthest-side at 50% 100%,hsl(var(--foreground) / .2),hsl(var(--foreground) / 0)) 0 100%;background-repeat:no-repeat;background-color:hsl(var(--background));background-size:100% 40px,100% 14px,100% 40px,100% 14px;background-attachment:local,scroll,local,local}.orientation-sideways{text-orientation:sideways;writing-mode:vertical-rl;--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.display-alt-down{display:none}.alt-down .display-alt-down{display:inherit}.alt-down .display-alt-up{display:none}:root{--base00: #121318;--base01: #2d2d2d;--base02: #424242;--base03: #637777;--base04: #555555;--base05: #d6deeb;--base06: #c8c8c8;--base07: #fafafa;--base08: #7fdbca;--base09: #f78c6c;--base0A: #c792ea;--base0B: #ecc48d;--base0C: #f78c6c;--base0D: #82aaff;--base0E: #c792ea;--base0F: #d3423e;--highlight-added: #7fdbca;--highlight-added-selection: #7fdbca47;--highlight-removed: #d3423e;--highlight-removed-selection: #d3433e57}:root .light,:root.light{--base00: #f3f3f3;--base01: #e0e0e0;--base02: #d6d6d6;--base03: #989fb1;--base04: #969896;--base05: #2e3039;--base06: #282a2e;--base07: #1d1f21;--base08: #0c969b;--base09: #aa0982;--base0A: #994cc3;--base0B: #c96765;--base0C: #aa0982;--base0D: #4876d6;--base0E: #994cc3;--base0F: #d3423e;--highlight-added: #0c969b;--highlight-added-selection: #7fdbca4a;--highlight-removed: #d3423e;--highlight-removed-selection: #d3433e24}.prose ul.list-none>li{padding-left:unset}.prose ul.list-none>li:before{content:unset}.dark .prose ol>li:before,.dark .prose ul>li:before{color:var(--color-gray-300)}.dark .dark\:prose-dark thead{color:var(--color-slate-500)}.prose pre[data-line-numbers=true],.prose pre[data-add],.prose pre[data-remove],.prose pre:has([data-highlight]){padding-left:0rem;padding-right:0rem}.prose pre:not([data-line-numbers=true]):has([data-highlight]){padding-left:0rem;padding-right:0rem}.prose pre:not([data-line-numbers=true]) .codeblock-line:before,.prose pre[data-line-numbers=true] .codeblock-line:before,.prose pre[data-remove] .codeblock-line:before,.prose pre[data-add] .codeblock-line:before{padding-left:0rem;content:attr(data-line-number);text-align:right;display:inline-block;width:4rem;color:var(--base03);padding-right:1.5rem;position:sticky;left:0;background-color:var(--base00)}.prose pre[data-line-numbers=false][data-line-numbers=false] .codeblock-line:before{content:" "}.prose pre[data-line-numbers=false]:not([data-add]):not([data-remove]):not(:has([data-highlight])) .codeblock-line:before{width:0;padding-right:0}.prose pre[data-line-numbers=false]:not([data-add]):not([data-remove]):has([data-highlight]) .codeblock-line:before{width:2rem}.prose pre[data-filename]{padding-top:2rem}.prose pre[data-filename][data-buttons][data-fullpath]{padding-top:3rem}.prose pre[data-lang]:not([data-nolang]){padding-bottom:2rem}.prose pre:not([data-lang]):not([data-nolang]){background-color:var(--base00);color:var(--base05)}.prose pre[data-line-numbers=true] [data-line-number]:before .codeblock-line[data-highlight=true]:before{background:var(--base0E)}.prose *:not(pre) code{background:var(--base00);color:var(--base05);padding:.2rem .4rem;border-radius:.2rem}.prose pre[data-add]:not([data-line-numbers=true]) [data-diff-line-number]:before,.prose pre[data-remove]:not([data-line-numbers=true]) [data-diff-line-number]:before{content:attr(data-diff-line-number)}.prose pre>code{display:inline-block;min-width:100%}.codeblock-line{display:block;position:relative;padding-right:1rem}.codeblock-line[data-highlight=true]:after,.prose pre[data-remove] .codeblock-line[data-remove]:after,.prose pre[data-add] .codeblock-line[data-add]:after{content:" ";position:absolute;left:0;top:0;width:100%;opacity:.15;pointer-events:none}.codeblock-line[data-highlight=true]:before{border-left:6px solid var(--base0E)}.codeblock-line[data-highlight=true]:after{background:var(--base0E)}.prose pre[data-remove][data-remove][data-remove] .codeblock-line[data-remove]:before{content:"-"}.prose pre[data-remove] .codeblock-line[data-remove]:after{background:var(--highlight-removed)}.prose pre[data-add][data-add][data-add] .codeblock-line[data-add]:before{content:"+"}.prose pre[data-add] .codeblock-line[data-add]:after{background:var(--highlight-added)}.prose pre[data-add] .codeblock-line[data-add]::-moz-selection,.prose pre[data-add] .codeblock-line[data-add] span::-moz-selection{background:var(--highlight-added-selection)}.prose pre[data-add] .codeblock-line[data-add]::selection,.prose pre[data-add] .codeblock-line[data-add] span::selection{background:var(--highlight-added-selection)}.prose pre[data-remove] .codeblock-line[data-remove]::-moz-selection,.prose pre[data-remove] .codeblock-line[data-remove] span::-moz-selection{background:var(--highlight-removed-selection)}.prose pre[data-remove] .codeblock-line[data-remove]::selection,.prose pre[data-remove] .codeblock-line[data-remove] span::selection{background:var(--highlight-removed-selection)}.prose pre{position:relative}.prose pre[data-filename]:before{content:attr(data-filename);position:absolute;left:8px;top:4px;font-size:.7rem;opacity:.7}.prose pre[data-lang]:not([data-nolang]):after{content:attr(data-lang);position:sticky;right:0;font-size:.7rem;opacity:.7;display:inline-block;transform:translate(-16px,24px);text-align:right;width:200px;margin-left:-200px}.prose>*{margin-bottom:1rem}.prose callout-muted a,.prose callout-info a,.prose callout-warning a,.prose callout-danger a,.prose callout-success a{text-decoration:underline}.prose callout-muted p,.prose callout-info p,.prose callout-warning p,.prose callout-danger p,.prose callout-success p{margin-bottom:0}.prose callout-muted,.prose callout-info,.prose callout-warning,.prose callout-danger,.prose callout-success{margin-top:0;margin-bottom:2rem;display:block;border-left:solid 4px;padding:.5rem 1rem;position:relative;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.prose callout-muted,.prose callout-info,.prose callout-warning,.prose callout-danger,.prose callout-success,.prose callout-muted *,.prose callout-info *,.prose callout-warning *,.prose callout-danger *,.prose callout-success *{font-size:1rem}.prose callout-muted.aside,.prose callout-info.aside,.prose callout-warning.aside,.prose callout-danger.aside,.prose callout-success.aside,.prose callout-muted.aside *,.prose callout-info.aside *,.prose callout-warning.aside *,.prose callout-danger.aside *,.prose callout-success.aside *{font-size:.875rem}.prose callout-muted.important,.prose callout-info.important,.prose callout-warning.important,.prose callout-danger.important,.prose callout-success.important,.prose callout-muted.important *,.prose callout-info.important *,.prose callout-warning.important *,.prose callout-danger.important *,.prose callout-success.important *{font-size:1.25rem;font-weight:700}.prose callout-muted:before,.prose callout-info:before,.prose callout-warning:before,.prose callout-danger:before,.prose callout-success:before{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.1;pointer-events:none}.light .prose callout-warning,.light .prose callout-warning ol>li:before{color:#676000}.light .prose callout-warning:before{background:#ffd800}.prose callout-warning,.prose callout-warning ol>li:before{color:#ffd644}.prose callout-warning:before{background:#ffd644}.light .prose callout-muted,.light .prose callout-muted ol>li:before{color:#4c4b5e}.light .prose callout-muted:before{background:#3c3e4d}.prose callout-muted,.prose callout-muted ol>li:before{color:#b9b9c3}.prose callout-muted:before{background:#3c3e4d}.prose callout-info,.prose callout-info ol>li:before{color:#4b96ff}.prose callout-info:before{background:#4b96ff}.prose callout-danger,.prose callout-danger ol>li:before{color:#ff4545}.prose callout-danger:before{background:#ff4545}.prose callout-success,.prose callout-success ol>li:before{color:#30c85e}.prose callout-success:before{background:#30c85e}.prose callout-warning.notification .title,.prose callout-danger.notification .title{font-size:1.5rem;line-height:2rem}.prose callout-danger.notification pre{border:4px solid #ff4545;padding-block:1.5rem;margin-block:.5rem}.prose callout-warning.notification,.prose callout-danger.notification{margin-bottom:0!important}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./index-Czg1ruVn.js";import{I as i}from"./misc-S5ZD98sI.js";import{b as o,a as c}from"./user-CdUDQ7a8.js";import{u as l,L as s}from"./components-wgHiPsTg.js";const m={getSitemapEntries:()=>null};function p({discordAuthUrl:r}){const n=o(),t=c();return n?t?"https://discord.com/channels/715220730605731931/1161045224907341972":r:"/login"}function a({discordAuthUrl:r}){const n=o(),t=c();return n?t?e.jsxs("div",{className:"flex items-center justify-center gap-2 text-xl underline",children:[e.jsx(s,{to:"discord://discord.com/channels/715220730605731931/1161045224907341972",children:e.jsx(i,{name:"Discord",size:"2xl"})}),e.jsx(s,{to:"https://discord.com/channels/715220730605731931/1161045224907341972",target:"_blank",rel:"noreferrer noopener",children:"Open Discord"})]}):e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xl",children:[e.jsxs(s,{to:r,className:"flex items-center gap-2 underline",children:[e.jsx(i,{name:"Discord",size:"2xl"}),"Connect Discord"]})," ",e.jsxs("span",{children:["to get access to the exclusive"," ",e.jsx(s,{to:"/discord",className:"underline",children:"discord channel"}),"."]})]}):e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xl",children:[e.jsxs(s,{to:"/login",className:"inline-flex items-center gap-2 underline",children:[e.jsx(i,{name:"Discord",size:"2xl"}),"Login"]})," ",e.jsxs("span",{children:["to get access to the exclusive"," ",e.jsx(s,{to:"/discord",className:"underline",children:"discord channel"}),"."]})]})}function f(){const r=l();return e.jsxs("div",{className:"container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12",children:[e.jsx(a,{discordAuthUrl:r.discordAuthUrl}),e.jsxs("p",{children:["The"," ",e.jsx(s,{target:"_blank",rel:"noreferrer noopener",className:"underline",to:"https://kentcdodds.com/discord",children:"Epic Web Community on Discord"})," ","is a great place to hang out with other developers who are working through this workshop. You can ask questions, get help, and solidify what you're learning by helping others."]}),e.jsx("p",{children:e.jsxs("small",{className:"text-sm",children:["If you've not joined the Epic Web Community on Discord yet, you'll be required to go through a short onboarding process first. A friendly bot will explain the process when you"," ",e.jsx(s,{to:"https://kcd.im/discord",target:"_blank",rel:"noreferrer noopener",className:"underline",children:"join"}),"."]})})]})}export{a as D,f as a,m as h,p as u};
|
|
2
|
+
//# sourceMappingURL=discord-BgaWmFRC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-BgaWmFRC.js","sources":["../../../app/routes/_app+/discord.tsx"],"sourcesContent":["import { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { json } from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport { Icon } from '#app/components/icons.tsx'\nimport {\n\tuseOptionalDiscordMember,\n\tuseOptionalUser,\n} from '#app/components/user.tsx'\nimport { getDiscordAuthURL } from '../discord.callback.ts'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\treturn json({ discordAuthUrl: getDiscordAuthURL() })\n}\n\nexport function useDiscordCTALink({\n\tdiscordAuthUrl,\n}: {\n\tdiscordAuthUrl: string\n}) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\n\tif (!user) {\n\t\treturn '/login'\n\t}\n\tif (!discordMember) {\n\t\treturn discordAuthUrl\n\t}\n\n\treturn 'https://discord.com/channels/715220730605731931/1161045224907341972'\n}\n\nexport function DiscordCTA({ discordAuthUrl }: { discordAuthUrl: string }) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\n\tif (!user) {\n\t\treturn (\n\t\t\t<div className=\"flex flex-wrap items-center justify-center gap-2 text-xl\">\n\t\t\t\t<Link to=\"/login\" className=\"inline-flex items-center gap-2 underline\">\n\t\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t\t\tLogin\n\t\t\t\t</Link>{' '}\n\t\t\t\t<span>\n\t\t\t\t\tto get access to the exclusive{' '}\n\t\t\t\t\t<Link to=\"/discord\" className=\"underline\">\n\t\t\t\t\t\tdiscord channel\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t)\n\t}\n\tif (!discordMember) {\n\t\treturn (\n\t\t\t<div className=\"flex flex-wrap items-center justify-center gap-2 text-xl\">\n\t\t\t\t<Link to={discordAuthUrl} className=\"flex items-center gap-2 underline\">\n\t\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t\t\tConnect Discord\n\t\t\t\t</Link>{' '}\n\t\t\t\t<span>\n\t\t\t\t\tto get access to the exclusive{' '}\n\t\t\t\t\t<Link to=\"/discord\" className=\"underline\">\n\t\t\t\t\t\tdiscord channel\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className=\"flex items-center justify-center gap-2 text-xl underline\">\n\t\t\t<Link to=\"discord://discord.com/channels/715220730605731931/1161045224907341972\">\n\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t</Link>\n\t\t\t<Link\n\t\t\t\tto=\"https://discord.com/channels/715220730605731931/1161045224907341972\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t>\n\t\t\t\tOpen Discord\n\t\t\t</Link>\n\t\t</div>\n\t)\n}\n\nexport default function DiscordRoute() {\n\tconst data = useLoaderData<typeof loader>()\n\n\treturn (\n\t\t<div className=\"container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12\">\n\t\t\t<DiscordCTA discordAuthUrl={data.discordAuthUrl} />\n\t\t\t<p>\n\t\t\t\tThe{' '}\n\t\t\t\t<Link\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\tto=\"https://kentcdodds.com/discord\"\n\t\t\t\t>\n\t\t\t\t\tEpic Web Community on Discord\n\t\t\t\t</Link>{' '}\n\t\t\t\tis a great place to hang out with other developers who are working\n\t\t\t\tthrough this workshop. You can ask questions, get help, and solidify\n\t\t\t\twhat you're learning by helping others.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<small className=\"text-sm\">\n\t\t\t\t\tIf you've not joined the Epic Web Community on Discord yet, you'll be\n\t\t\t\t\trequired to go through a short onboarding process first. A friendly\n\t\t\t\t\tbot will explain the process when you{' '}\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto=\"https://kcd.im/discord\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</small>\n\t\t\t</p>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","useDiscordCTALink","discordAuthUrl","user","useOptionalUser","discordMember","useOptionalDiscordMember","DiscordCTA","jsxs","className","children","jsx","Link","to","Icon","name","size","target","rel","DiscordRoute","data","useLoaderData"],"mappings":"iLAUO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,IAC1B,EAMO,SAASC,EAAkB,CACjCC,eAAAA,CACD,EAEG,CACF,MAAMC,EAAOC,IACPC,EAAgBC,IAEtB,OAAKH,EAGAE,EAIE,sEAHCH,EAHA,QAOT,CAEgB,SAAAK,EAAW,CAAEL,eAAAA,CAAe,EAA+B,CAC1E,MAAMC,EAAOC,IACPC,EAAgBC,IAEtB,OAAKH,EAiBAE,EAmBJG,EAAAA,KAAC,MAAI,CAAAC,UAAU,2DACdC,SAAA,CAACC,EAAA,IAAAC,EAAA,CAAKC,GAAG,wEACRH,SAAAC,EAAA,IAACG,GAAKC,KAAK,UAAUC,KAAK,MAAM,CACjC,CAAA,EACAL,EAAA,IAACC,EAAA,CACAC,GAAG,sEACHI,OAAO,SACPC,IAAI,sBACJR,SAAA,cAAA,CAED,CAAA,CACD,CAAA,EA5BCF,EAAAA,KAAC,MAAI,CAAAC,UAAU,2DACdC,SAAA,CAAAF,EAAA,KAACI,EAAK,CAAAC,GAAIX,EAAgBO,UAAU,oCACnCC,SAAA,CAAAC,EAAA,IAACG,EAAK,CAAAC,KAAK,UAAUC,KAAK,KAAM,CAAA,EAAE,iBAAA,EAEnC,EAAQ,WACP,OAAK,CAAAN,SAAA,CAAA,iCAC0B,UAC9BE,EAAK,CAAAC,GAAG,WAAWJ,UAAU,YAAYC,SAE1C,iBAAA,CAAA,EAAO,GAAA,CAER,CAAA,CAAA,CACD,CAAA,EA7BAF,EAAAA,KAAC,MAAI,CAAAC,UAAU,2DACdC,SAAA,CAAAF,EAAA,KAACI,EAAK,CAAAC,GAAG,SAASJ,UAAU,2CAC3BC,SAAA,CAAAC,EAAA,IAACG,EAAK,CAAAC,KAAK,UAAUC,KAAK,KAAM,CAAA,EAAE,OAAA,EAEnC,EAAQ,WACP,OAAK,CAAAN,SAAA,CAAA,iCAC0B,UAC9BE,EAAK,CAAAC,GAAG,WAAWJ,UAAU,YAAYC,SAE1C,iBAAA,CAAA,EAAO,GAAA,CAER,CAAA,CAAA,CACD,CAAA,CAmCH,CAEA,SAAwBS,GAAe,CACtC,MAAMC,EAAOC,IAGZ,OAAAb,EAAAA,KAAC,MAAI,CAAAC,UAAU,kFACdC,SAAA,CAACC,EAAA,IAAAJ,EAAA,CAAWL,eAAgBkB,EAAKlB,cAAgB,CAAA,SAChD,IAAE,CAAAQ,SAAA,CAAA,MACE,IACJC,EAAAA,IAACC,EAAA,CACAK,OAAO,SACPC,IAAI,sBACJT,UAAU,YACVI,GAAG,iCACHH,SAAA,+BAAA,CAED,EAAQ,IAAI,iLAAA,CAIb,CAAA,EACCC,EAAA,IAAA,IAAA,CACAD,SAACF,EAAA,KAAA,QAAA,CAAMC,UAAU,UAAUC,SAAA,CAAA,kLAGY,IACtCC,EAAAA,IAACC,EAAA,CACAC,GAAG,yBACHI,OAAO,SACPC,IAAI,sBACJT,UAAU,YACVC,SAAA,MAED,CAAA,EAAO,GAAA,EAER,CACD,CAAA,CAAA,CACD,CAAA,CAEF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-Dk1wbXOn.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,r as t}from"./index-Czg1ruVn.js";import{E as l}from"./index-D6ukHE4T.js";import{E as n}from"./epic-video-DJN9_SUj.js";import{L as a}from"./loading-B0uKxERz.js";import{N as d}from"./nav-chevrons-DaXg0NPS.js";import{M as c,E as m}from"./mdx-BENF-kTQ.js";import{c as p}from"./misc-S5ZD98sI.js";import{g as f}from"./seo-pBpFCWsy.js";import{P as h}from"./progress-BwanvUpB.js";import{u as x,L as u}from"./components-wgHiPsTg.js";import"./index-yEAxvbDV.js";import"./request-info-DHtGM4FI.js";import"./tooltip-BtzSIxlB.js";import"./client-hints-DLYDs4RF.js";import"./user-CdUDQ7a8.js";import"./clsx-B-dksMZM.js";import"./progress-bar-wMXWRGq0.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-DRjILUr_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finished-DRjILUr_.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n\tgetWorkshopRoot,\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 workshopRoot = getWorkshopRoot()\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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as i,d as h,e as C,j as e}from"./index-Czg1ruVn.js";import{u as j}from"./use-event-source-ySol3hbz.js";import{a as g,B as v}from"./button-BA3iiLRs.js";import{L as R}from"./loading-B0uKxERz.js";import{z as t}from"./request-info-DHtGM4FI.js";import{a as L}from"./components-wgHiPsTg.js";import"./clsx-B-dksMZM.js";import"./client-hints-DLYDs4RF.js";const r={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},S=t.object({type:t.literal(r.USER_CODE_RECEIVED),code:t.string(),url:t.string()}),b=t.object({type:t.literal(r.AUTH_RESOLVED)}),w=t.object({type:t.literal(r.AUTH_REJECTED),error:t.string().optional().default("Unknown error")}),y=t.union([S,b,w]),F={getSitemapEntries:()=>null};function H(){var x;const s=L(),[u,E]=i.useState(!1),[o,m]=i.useState(null),[l,f]=i.useState(null),c=h(),d=C(),n=j("/login-sse");return i.useEffect(()=>{if(!n)return;const p=JSON.parse(n),a=y.safeParse(p);if(!a.success){console.error(a.error.flatten());return}switch(a.data.type){case r.USER_CODE_RECEIVED:{f(a.data);break}case r.AUTH_RESOLVED:{d.revalidate(),c("/");break}case r.AUTH_REJECTED:{m(a.data.error);break}}},[n,c,d]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(_,{className:"h-16 w-16"}),e.jsx("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:"Authenticate with EpicWeb.dev"}),e.jsx("h2",{className:"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300",children:"If you have purchased Epic Web, you'll be able to watch videos, track progress, and more!"}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[l?e.jsxs("div",{className:"flex w-full flex-col items-center gap-3",children:[e.jsxs("div",{className:"my-2 flex w-full flex-col items-center gap-2",children:[e.jsx("p",{className:"text-lg",children:"Your verification code is: "}),e.jsx("div",{className:"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:l.code})})]}),e.jsx(g,{varient:"primary",to:l.url,target:"_blank",rel:"noreferrer",onClick:()=>E(!0),children:"Continue"}),u?e.jsx("div",{className:"pt-5 opacity-60",children:e.jsx(R,{children:"Waiting for confirmation"})}):null]}):e.jsx(s.Form,{method:"POST",children:e.jsx(v,{varient:"primary",type:"submit",children:s.state==="idle"&&((x=s.data)==null?void 0:x.status)!=="pending"?"Retrieve Code":"Retrieving Code..."})}),o?e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:o})]}):null]})]})})}function _({className:s=""}){return e.jsxs("svg",{className:s,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[e.jsx("path",{d:"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z",fill:"url(#epicGradient)"}),e.jsx("path",{d:"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z",fill:"currentColor"}),e.jsx("defs",{children:e.jsxs("linearGradient",{id:"epicGradient",x1:"16.9703",y1:"7.03022",x2:"7.05798",y2:"16.948",gradientUnits:"userSpaceOnUse",children:[e.jsx("stop",{stopColor:"#4F75FF"}),e.jsx("stop",{offset:"1",stopColor:"#30AFFF"})]})})]})}export{H as default,F as handle};
|
|
2
|
+
//# sourceMappingURL=login-SJlLMYmL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-SJlLMYmL.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse(data)\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { json, redirect } from '@remix-run/node'\nimport { useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn json({})\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn json({ status: 'pending' } as const)\n}\n\nexport default function Login() {\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tAuthenticate with EpicWeb.dev\n\t\t\t\t</h1>\n\t\t\t\t<h2 className=\"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\tIf you have purchased Epic Web, you'll be able to watch videos, track\n\t\t\t\t\tprogress, and more!\n\t\t\t\t</h2>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"pt-5 opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading>Waiting for confirmation</Loading>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t? `Retrieve Code`\n\t\t\t\t\t\t\t\t\t: `Retrieving Code...`}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Logo({ className = '' }) {\n\t// svg sprites do not support gradients\n\treturn (\n\t\t<svg\n\t\t\tclassName={className}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z\"\n\t\t\t\tfill=\"url(#epicGradient)\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"epicGradient\"\n\t\t\t\t\tx1=\"16.9703\"\n\t\t\t\t\ty1=\"7.03022\"\n\t\t\t\t\tx2=\"7.05798\"\n\t\t\t\t\ty2=\"16.948\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#4F75FF\" />\n\t\t\t\t\t<stop offset=\"1\" stopColor=\"#30AFFF\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","handle","getSitemapEntries","Login","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","Form","method","Button","state","status","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.__remixManifest={"entry":{"module":"/assets/entry.client-Cs8lBz8l.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-B86bLhuo.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/error-boundary-BVTbN8PZ.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-DjzedX4O.js","/assets/index-yEAxvbDV.js","/assets/presence-CW1_eiIo.js","/assets/seo-pBpFCWsy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-DYArYM0Z.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/error-boundary-BVTbN8PZ.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-dHX2Hcew.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-C6ToujzV.js","/assets/user-CdUDQ7a8.js","/assets/presence-CW1_eiIo.js","/assets/progress-BwanvUpB.js","/assets/index-yEAxvbDV.js"],"css":[]},"routes/_app+/_exercises+/_layout":{"id":"routes/_app+/_exercises+/_layout","parentId":"routes/_app+/_layout","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-DaZNLfOL.js","imports":["/assets/index-Czg1ruVn.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Ccwr4LZw.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-Ct5BCuA1.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-Bn9QhWq9.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-C6ToujzV.js","/assets/mdx-BENF-kTQ.js","/assets/index-D6ukHE4T.js","/assets/diff-CpG96hGZ.js","/assets/error-boundary-BVTbN8PZ.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js","/assets/discord-yZor-3t1.js","/assets/index-DjzedX4O.js","/assets/button-BA3iiLRs.js","/assets/use-event-source-ySol3hbz.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/_exercises+/$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+/_exercises+/$exerciseNumber_.finished":{"id":"routes/_app+/_exercises+/$exerciseNumber_.finished","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-gEWcHsfL.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.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-uvU1jIL2.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/button-BA3iiLRs.js","/assets/tooltip-BtzSIxlB.js","/assets/user-CdUDQ7a8.js","/assets/presence-CW1_eiIo.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-l0sNRNKZ.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+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-CgwNGD2p.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/user-CdUDQ7a8.js","/assets/discord-yZor-3t1.js"],"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-B9qjUR4B.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/mdx-BENF-kTQ.js","/assets/seo-pBpFCWsy.js","/assets/progress-BwanvUpB.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-3HxjMIAS.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/error-boundary-BVTbN8PZ.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.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-CHE9W6po.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/use-event-source-ySol3hbz.js","/assets/button-BA3iiLRs.js","/assets/loading-B0uKxERz.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-D1ydJNdm.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.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-B9Y-8OU6.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/progress-BwanvUpB.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-Bd9WnUnR.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-C6ToujzV.js","/assets/mdx-BENF-kTQ.js","/assets/diff-CpG96hGZ.js","/assets/nav-chevrons-DaXg0NPS.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-FD1FkQuu.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/button-BA3iiLRs.js","/assets/epic-video-DJN9_SUj.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/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/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-DP2rzg_V.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-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-b122038e.js","version":"b122038e"};
|
|
1
|
+
window.__remixManifest={"entry":{"module":"/assets/entry.client-Cs8lBz8l.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-BUqeXmeK.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/error-boundary-BVTbN8PZ.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-DjzedX4O.js","/assets/index-yEAxvbDV.js","/assets/presence-CW1_eiIo.js","/assets/seo-pBpFCWsy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-DYArYM0Z.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/error-boundary-BVTbN8PZ.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-dHX2Hcew.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-C6ToujzV.js","/assets/user-CdUDQ7a8.js","/assets/presence-CW1_eiIo.js","/assets/progress-BwanvUpB.js","/assets/index-yEAxvbDV.js"],"css":[]},"routes/_app+/_exercises+/_layout":{"id":"routes/_app+/_exercises+/_layout","parentId":"routes/_app+/_layout","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-DLIzcS5v.js","imports":["/assets/index-Czg1ruVn.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Ccwr4LZw.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-Ct5BCuA1.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-0urSK0i1.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-C6ToujzV.js","/assets/mdx-BENF-kTQ.js","/assets/index-D6ukHE4T.js","/assets/diff-CpG96hGZ.js","/assets/error-boundary-BVTbN8PZ.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js","/assets/discord-BgaWmFRC.js","/assets/index-DjzedX4O.js","/assets/button-BA3iiLRs.js","/assets/use-event-source-ySol3hbz.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/_exercises+/$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+/_exercises+/$exerciseNumber_.finished":{"id":"routes/_app+/_exercises+/$exerciseNumber_.finished","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-gEWcHsfL.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.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-LnI_Eq0t.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/button-BA3iiLRs.js","/assets/tooltip-BtzSIxlB.js","/assets/user-CdUDQ7a8.js","/assets/presence-CW1_eiIo.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-l0sNRNKZ.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+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-Dk1wbXOn.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/user-CdUDQ7a8.js","/assets/discord-BgaWmFRC.js"],"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-DRjILUr_.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/nav-chevrons-DaXg0NPS.js","/assets/mdx-BENF-kTQ.js","/assets/seo-pBpFCWsy.js","/assets/progress-BwanvUpB.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-3HxjMIAS.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.js","/assets/clsx-B-dksMZM.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-D6ukHE4T.js","/assets/error-boundary-BVTbN8PZ.js","/assets/mdx-BENF-kTQ.js","/assets/progress-BwanvUpB.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-SJlLMYmL.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/use-event-source-ySol3hbz.js","/assets/button-BA3iiLRs.js","/assets/loading-B0uKxERz.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-DZyqD0NL.js","imports":["/assets/index-Czg1ruVn.js","/assets/components-wgHiPsTg.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-CZ3fjUvs.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/progress-BwanvUpB.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-l0sNRNKZ.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-DP2rzg_V.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-Bd9WnUnR.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/tooltip-BtzSIxlB.js","/assets/request-info-DHtGM4FI.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/epic-video-DJN9_SUj.js","/assets/progress-bar-wMXWRGq0.js","/assets/index-C6ToujzV.js","/assets/mdx-BENF-kTQ.js","/assets/diff-CpG96hGZ.js","/assets/nav-chevrons-DaXg0NPS.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-CxyD6D0I.js","imports":["/assets/index-Czg1ruVn.js","/assets/clsx-B-dksMZM.js","/assets/components-wgHiPsTg.js","/assets/misc-S5ZD98sI.js","/assets/request-info-DHtGM4FI.js","/assets/tooltip-BtzSIxlB.js","/assets/client-hints-DLYDs4RF.js","/assets/index-yEAxvbDV.js","/assets/loading-B0uKxERz.js","/assets/user-CdUDQ7a8.js","/assets/button-BA3iiLRs.js","/assets/epic-video-DJN9_SUj.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-K6Dvbx-E.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-fcdcf131.js","version":"fcdcf131"};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./index-Czg1ruVn.js";import{B as o}from"./button-BA3iiLRs.js";import{E as r,D as s}from"./epic-video-DJN9_SUj.js";import{u as i,F as l}from"./components-wgHiPsTg.js";import"./clsx-B-dksMZM.js";import"./index-yEAxvbDV.js";import"./request-info-DHtGM4FI.js";import"./misc-S5ZD98sI.js";import"./tooltip-BtzSIxlB.js";import"./client-hints-DLYDs4RF.js";import"./loading-B0uKxERz.js";import"./user-CdUDQ7a8.js";const w={getSitemapEntries:()=>null};function v(){const t=i();return e.jsxs("main",{className:"flex h-full w-full flex-col items-center justify-between gap-4",children:[e.jsxs("div",{className:"container flex h-full w-full max-w-5xl flex-1 flex-col items-center gap-4 overflow-y-scroll py-12 scrollbar-thin scrollbar-thumb-scrollbar",children:[e.jsx("h1",{className:"text-5xl",children:"Onboarding"}),e.jsx("p",{className:"text-xl",children:"Welcome to EpicWeb.dev!"}),e.jsxs("p",{className:"text-lg",children:["Before you get started, ",e.jsx("strong",{children:"you must watch the tour video"}),"! You're going to be spending a lot of time in here, so it's important you understand how to work effectively in this workshop"]}),e.jsx("div",{className:"w-[780px] max-w-full",children:e.jsx(r,{epicVideoInfosPromise:t.videoInfos,children:e.jsx(s,{url:t.tourUrl})})})]}),e.jsx(l,{method:"post",className:"pb-4",children:e.jsx(o,{name:"intent",value:"complete",varient:"primary",children:"I've watched it. Let's go!"})})]})}export{v as default,w as handle};
|
|
2
|
+
//# sourceMappingURL=onboarding-CxyD6D0I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-CxyD6D0I.js","sources":["../../../app/routes/onboarding.tsx"],"sourcesContent":["import { invariantResponse } from '@epic-web/invariant'\nimport { updateOnboardingData } from '@epic-web/workshop-utils/db.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tdefer,\n\tredirect,\n\ttype ActionFunctionArgs,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport { Form, useLoaderData } from '@remix-run/react'\nimport { Button } from '#app/components/button.tsx'\nimport {\n\tDeferredEpicVideo,\n\tEpicVideoInfoProvider,\n} from '#app/components/epic-video.tsx'\nimport { getEpicVideoInfos } from '#app/utils/epic-api.ts'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('onboarding')\n\n\tconst tourUrl =\n\t\t'https://www.epicweb.dev/tips/get-started-with-the-epic-workshop-app'\n\tconst videoInfos = getEpicVideoInfos([tourUrl], { request, timings })\n\treturn defer(\n\t\t{ tourUrl, videoInfos },\n\t\t{ headers: { 'Server-Timing': timings.toString() } },\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders }) => {\n\tconst headers = {\n\t\t'Server-Timing': loaderHeaders.get('Server-Timing') ?? '',\n\t}\n\treturn headers\n}\n\nexport async function action({ request }: ActionFunctionArgs) {\n\tconst data = await request.formData()\n\tconst intent = data.get('intent')\n\tinvariantResponse(intent === 'complete', 'Invalid intent')\n\tawait updateOnboardingData({ finishedTourVideo: true })\n\tthrow redirect('/account')\n}\n\nexport default function Onboarding() {\n\tconst data = useLoaderData<typeof loader>()\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-col items-center justify-between gap-4\">\n\t\t\t<div className=\"container flex h-full w-full max-w-5xl flex-1 flex-col items-center gap-4 overflow-y-scroll py-12 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t<h1 className=\"text-5xl\">Onboarding</h1>\n\t\t\t\t<p className=\"text-xl\">Welcome to EpicWeb.dev!</p>\n\t\t\t\t<p className=\"text-lg\">\n\t\t\t\t\tBefore you get started, <strong>you must watch the tour video</strong>\n\t\t\t\t\t! You're going to be spending a lot of time in here, so it's important\n\t\t\t\t\tyou understand how to work effectively in this workshop\n\t\t\t\t</p>\n\t\t\t\t<div className=\"w-[780px] max-w-full\">\n\t\t\t\t\t<EpicVideoInfoProvider epicVideoInfosPromise={data.videoInfos}>\n\t\t\t\t\t\t<DeferredEpicVideo url={data.tourUrl} />\n\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Form method=\"post\" className=\"pb-4\">\n\t\t\t\t<Button name=\"intent\" value=\"complete\" varient=\"primary\">\n\t\t\t\t\tI've watched it. Let's go!\n\t\t\t\t</Button>\n\t\t\t</Form>\n\t\t</main>\n\t)\n}\n"],"names":["handle","getSitemapEntries","Onboarding","data","useLoaderData","jsxs","className","children","jsx","EpicVideoInfoProvider","epicVideoInfosPromise","videoInfos","DeferredEpicVideo","url","tourUrl","Form","method","Button","name","value","varient"],"mappings":"waAmBO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,IAC1B,EA6BA,SAAwBC,GAAa,CACpC,MAAMC,EAAOC,IAEZ,OAAAC,EAAAA,KAAC,OAAK,CAAAC,UAAU,iEACfC,SAAA,CAACF,EAAA,KAAA,MAAA,CAAIC,UAAU,6IACdC,SAAA,CAACC,EAAA,IAAA,KAAA,CAAGF,UAAU,WAAWC,SAAU,YAAA,CAAA,EAClCC,EAAA,IAAA,IAAA,CAAEF,UAAU,UAAUC,SAAuB,yBAAA,CAAA,EAC9CF,EAAA,KAAC,IAAE,CAAAC,UAAU,UAAUC,SAAA,CAAA,2BACEC,EAAA,IAAC,UAAOD,SAA6B,+BAAA,CAAA,EAAS,gIAAA,CAGvE,CAAA,EACCC,EAAA,IAAA,MAAA,CAAIF,UAAU,uBACdC,eAACE,EAAsB,CAAAC,sBAAuBP,EAAKQ,WAClDJ,eAACK,EAAkB,CAAAC,IAAKV,EAAKW,QAAS,EACvC,CACD,CAAA,CAAA,CACD,CAAA,EACCN,EAAA,IAAAO,EAAA,CAAKC,OAAO,OAAOV,UAAU,OAC7BC,SAAAC,EAAA,IAACS,EAAO,CAAAC,KAAK,SAASC,MAAM,WAAWC,QAAQ,UAAUb,sCAEzD,CACD,CAAA,CAAA,CACD,CAAA,CAEF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"robots_._txt-l0sNRNKZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as
|
|
1
|
+
import{u as G,l as L,r as h,n as Y,R as m,j as c,c as Q,O as $,e as V}from"./index-Czg1ruVn.js";import{d as J,u as U,c as X}from"./misc-S5ZD98sI.js";import{G as z}from"./error-boundary-BVTbN8PZ.js";import{E as K}from"./progress-bar-wMXWRGq0.js";import{T as Z,J as ee}from"./index-DjzedX4O.js";import{T as te}from"./tooltip-BtzSIxlB.js";import{u as ne}from"./index-yEAxvbDV.js";import{C as ie}from"./client-hints-DLYDs4RF.js";import{P as re}from"./presence-CW1_eiIo.js";import{g as oe}from"./seo-pBpFCWsy.js";import{p as se,q as ae,_ as ce,u as T,M as ue,t as le,S as fe}from"./components-wgHiPsTg.js";import"./clsx-B-dksMZM.js";import"./request-info-DHtGM4FI.js";/**
|
|
2
2
|
* @remix-run/react v2.10.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
@@ -7,7 +7,7 @@ import{u as H,l as L,r as h,n as Y,R as m,j as c,c as Q,O as V,e as $}from"./ind
|
|
|
7
7
|
* LICENSE.md file in the root directory of this source tree.
|
|
8
8
|
*
|
|
9
9
|
* @license MIT
|
|
10
|
-
*/let N="positions";function he({getKey:e,...n}){let{isSpaMode:r}=se(),t=H(),i=L();ae({getKey:e,storageKey:N});let o=h.useMemo(()=>{if(!e)return null;let a=e(t,i);return a!==t.key?a:null},[]);if(r)return null;let s=((a,l)=>{if(!window.history.state||!window.history.state.key){let u=Math.random().toString(32).slice(2);window.history.replaceState({key:u},"")}try{let x=JSON.parse(sessionStorage.getItem(a)||"{}")[l||window.history.state.key];typeof x=="number"&&window.scrollTo(0,x)}catch(u){console.error(u),sessionStorage.removeItem(a)}}).toString();return h.createElement("script",ce({},n,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${s})(${JSON.stringify(N)}, ${JSON.stringify(o)})`}}))}var O={linear:function(e,n,r,t){var i=r-n;return i*e/t+n},easeInQuad:function(e,n,r,t){var i=r-n;return i*(e/=t)*e+n},easeOutQuad:function(e,n,r,t){var i=r-n;return-i*(e/=t)*(e-2)+n},easeInOutQuad:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e+n:-i/2*(--e*(e-2)-1)+n},easeInCubic:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e+n},easeOutCubic:function(e,n,r,t){var i=r-n;return i*((e=e/t-1)*e*e+1)+n},easeInOutCubic:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e+n:i/2*((e-=2)*e*e+2)+n},easeInQuart:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e*e+n},easeOutQuart:function(e,n,r,t){var i=r-n;return-i*((e=e/t-1)*e*e*e-1)+n},easeInOutQuart:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e*e+n:-i/2*((e-=2)*e*e*e-2)+n},easeInQuint:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e*e*e+n},easeOutQuint:function(e,n,r,t){var i=r-n;return i*((e=e/t-1)*e*e*e*e+1)+n},easeInOutQuint:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e*e*e+n:i/2*((e-=2)*e*e*e*e+2)+n},easeInSine:function(e,n,r,t){var i=r-n;return-i*Math.cos(e/t*(Math.PI/2))+i+n},easeOutSine:function(e,n,r,t){var i=r-n;return i*Math.sin(e/t*(Math.PI/2))+n},easeInOutSine:function(e,n,r,t){var i=r-n;return-i/2*(Math.cos(Math.PI*e/t)-1)+n},easeInExpo:function(e,n,r,t){var i=r-n;return e==0?n:i*Math.pow(2,10*(e/t-1))+n},easeOutExpo:function(e,n,r,t){var i=r-n;return e==t?n+i:i*(-Math.pow(2,-10*e/t)+1)+n},easeInOutExpo:function(e,n,r,t){var i=r-n;return e===0?n:e===t?n+i:(e/=t/2)<1?i/2*Math.pow(2,10*(e-1))+n:i/2*(-Math.pow(2,-10*--e)+2)+n},easeInCirc:function(e,n,r,t){var i=r-n;return-i*(Math.sqrt(1-(e/=t)*e)-1)+n},easeOutCirc:function(e,n,r,t){var i=r-n;return i*Math.sqrt(1-(e=e/t-1)*e)+n},easeInOutCirc:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?-i/2*(Math.sqrt(1-e*e)-1)+n:i/2*(Math.sqrt(1-(e-=2)*e)+1)+n},easeInElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t)===1?n+i:(s||(s=t*.3),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),-(o*Math.pow(2,10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s))+n)},easeOutElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t)===1?n+i:(s||(s=t*.3),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),o*Math.pow(2,-10*e)*Math.sin((e*t-a)*(2*Math.PI)/s)+i+n)},easeInOutElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t/2)===2?n+i:(s||(s=t*(.3*1.5)),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),e<1?-.5*(o*Math.pow(2,10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s))+n:o*Math.pow(2,-10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s)*.5+i+n)},easeInBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),o*(e/=t)*e*((i+1)*e-i)+n},easeOutBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),o*((e=e/t-1)*e*((i+1)*e+i)+1)+n},easeInOutBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),(e/=t/2)<1?o/2*(e*e*(((i*=1.525)+1)*e-i))+n:o/2*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)+n},easeInBounce:function(e,n,r,t){var i=r-n,o;return o=O.easeOutBounce(t-e,0,i,t),i-o+n},easeOutBounce:function(e,n,r,t){var i=r-n;return(e/=t)<1/2.75?i*(7.5625*e*e)+n:e<2/2.75?i*(7.5625*(e-=1.5/2.75)*e+.75)+n:e<2.5/2.75?i*(7.5625*(e-=2.25/2.75)*e+.9375)+n:i*(7.5625*(e-=2.625/2.75)*e+.984375)+n},easeInOutBounce:function(e,n,r,t){var i=r-n,o;return e<t/2?(o=O.easeInBounce(e*2,0,i,t),o*.5+n):(o=O.easeOutBounce(e*2-t,0,i,t),o*.5+i*.5+n)}},pe=O;const ve=Y(pe);function de(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}function ge(e,n,r){return n&&de(e.prototype,n),e}function y(){return y=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},y.apply(this,arguments)}function we(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,C(e,n)}function C(e,n){return C=Object.setPrototypeOf||function(t,i){return t.__proto__=i,t},C(e,n)}function me(e){return e*Math.PI/180}function f(e,n){return e+Math.random()*(n-e)}function ye(e,n){return Math.floor(e+Math.random()*(n-e+1))}var w;(function(e){e[e.Circle=0]="Circle",e[e.Square=1]="Square",e[e.Strip=2]="Strip"})(w||(w={}));var p;(function(e){e[e.Positive=1]="Positive",e[e.Negative=-1]="Negative"})(p||(p={}));var xe=function(){function e(r,t,i,o){this.getOptions=t;var s=this.getOptions(),a=s.colors,l=s.initialVelocityX,u=s.initialVelocityY;this.context=r,this.x=i,this.y=o,this.w=f(5,20),this.h=f(5,20),this.radius=f(5,10),this.vx=f(-l,l),this.vy=f(-u,0),this.shape=ye(0,2),this.angle=me(f(0,360)),this.angularSpin=f(-.2,.2),this.color=a[Math.floor(Math.random()*a.length)],this.rotateY=f(0,1),this.rotationDirection=f(0,1)?p.Positive:p.Negative}var n=e.prototype;return n.update=function(){var t=this.getOptions(),i=t.gravity,o=t.wind,s=t.friction,a=t.opacity,l=t.drawShape;this.x+=this.vx,this.y+=this.vy,this.vy+=i,this.vx+=o,this.vx*=s,this.vy*=s,this.rotateY>=1&&this.rotationDirection===p.Positive?this.rotationDirection=p.Negative:this.rotateY<=-1&&this.rotationDirection===p.Negative&&(this.rotationDirection=p.Positive);var u=.1*this.rotationDirection;if(this.rotateY+=u,this.angle+=this.angularSpin,this.context.save(),this.context.translate(this.x,this.y),this.context.rotate(this.angle),this.context.scale(1,this.rotateY),this.context.rotate(this.angle),this.context.beginPath(),this.context.fillStyle=this.color,this.context.strokeStyle=this.color,this.context.globalAlpha=a,this.context.lineCap="round",this.context.lineWidth=2,l&&typeof l=="function")l.call(this,this.context);else switch(this.shape){case w.Circle:{this.context.beginPath(),this.context.arc(0,0,this.radius,0,2*Math.PI),this.context.fill();break}case w.Square:{this.context.fillRect(-this.w/2,-this.h/2,this.w,this.h);break}case w.Strip:{this.context.fillRect(-this.w/6,-this.h/2,this.w/3,this.h);break}default:throw new Error("Unknown type in Particle.ts")}this.context.closePath(),this.context.restore()},e}(),Oe=function(n,r){var t=this;this.x=0,this.y=0,this.w=0,this.h=0,this.lastNumberOfPieces=0,this.tweenInitTime=Date.now(),this.particles=[],this.particlesGenerated=0,this.removeParticleAt=function(o){t.particles.splice(o,1)},this.getParticle=function(){var o=f(t.x,t.w+t.x),s=f(t.y,t.h+t.y);return new xe(t.context,t.getOptions,o,s)},this.animate=function(){var o=t.canvas,s=t.context,a=t.particlesGenerated,l=t.lastNumberOfPieces,u=t.getOptions(),x=u.run,E=u.recycle,v=u.numberOfPieces,W=u.debug,A=u.tweenFunction,P=u.tweenDuration;if(!x)return!1;var M=t.particles.length,d=E?M:a,I=Date.now();if(d<v){l!==v&&(t.tweenInitTime=I,t.lastNumberOfPieces=v);for(var D=t.tweenInitTime,q=I-D>P?P:Math.max(0,I-D),G=A(q,d,v,P),F=Math.round(G-d),k=0;k<F;k+=1)t.particles.push(t.getParticle());t.particlesGenerated+=F}return W&&(s.font="12px sans-serif",s.fillStyle="#333",s.textAlign="right",s.fillText("Particles: "+M,o.width-10,o.height-20)),t.particles.forEach(function(g,R){g.update(),(g.y>o.height||g.y<-100||g.x>o.width+100||g.x<-100)&&(E&&d<=v?t.particles[R]=t.getParticle():t.removeParticleAt(R))}),M>0||d<v},this.canvas=n;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.getOptions=r},j={width:typeof window<"u"?window.innerWidth:300,height:typeof window<"u"?window.innerHeight:200,numberOfPieces:200,friction:.99,wind:0,gravity:.1,initialVelocityX:4,initialVelocityY:10,colors:["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4CAF50","#8BC34A","#CDDC39","#FFEB3B","#FFC107","#FF9800","#FF5722","#795548"],opacity:1,debug:!1,tweenFunction:ve.easeInOutQuad,tweenDuration:5e3,recycle:!0,run:!0},Pe=function(){function e(n,r){var t=this;this.setOptionsWithDefaults=function(o){var s={confettiSource:{x:0,y:0,w:t.canvas.width,h:0}};t._options=y({},s,j,o),Object.assign(t,o.confettiSource)},this.update=function(){var o=t.options,s=o.run,a=o.onConfettiComplete,l=t.canvas,u=t.context;s&&(u.fillStyle="white",u.clearRect(0,0,l.width,l.height)),t.generator.animate()?t.rafId=requestAnimationFrame(t.update):(a&&typeof a=="function"&&t.generator.particlesGenerated>0&&a.call(t,t),t._options.run=!1)},this.reset=function(){t.generator&&t.generator.particlesGenerated>0&&(t.generator.particlesGenerated=0,t.generator.particles=[],t.generator.lastNumberOfPieces=0)},this.stop=function(){t.options={run:!1},t.rafId&&(cancelAnimationFrame(t.rafId),t.rafId=void 0)},this.canvas=n;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.generator=new Oe(this.canvas,function(){return t.options}),this.options=r,this.update()}return ge(e,[{key:"options",get:function(){return this._options},set:function(r){var t=this._options&&this._options.run,i=this._options&&this._options.recycle;this.setOptionsWithDefaults(r),this.generator&&(Object.assign(this.generator,this.options.confettiSource),typeof r.recycle=="boolean"&&r.recycle&&i===!1&&(this.generator.lastNumberOfPieces=this.generator.particles.length)),typeof r.run=="boolean"&&r.run&&t===!1&&this.update()}}]),e}(),B=m.createRef();function S(e){var n={},r={},t={},i=[].concat(Object.keys(j),["confettiSource","drawShape","onConfettiComplete"]),o=["canvasRef"];return Object.keys(e).forEach(function(s){var a=e[s];i.includes(s)?n[s]=a:o.includes(s)?o[s]=a:t[s]=a}),[n,t,r]}var _=function(e){we(n,e);function n(t){for(var i,o=arguments.length,s=new Array(o>1?o-1:0),a=1;a<o;a++)s[a-1]=arguments[a];return i=e.call.apply(e,[this,t].concat(s))||this,i.canvas=m.createRef(),i.canvas=t.canvasRef||B,i}var r=n.prototype;return r.componentDidMount=function(){if(this.canvas.current){var i=S(this.props)[0];this.confetti=new Pe(this.canvas.current,i)}},r.componentDidUpdate=function(){var i=S(this.props)[0];this.confetti&&(this.confetti.options=i)},r.componentWillUnmount=function(){this.confetti&&this.confetti.stop(),this.confetti=void 0},r.render=function(){var i=S(this.props),o=i[0],s=i[1],a=y({zIndex:2,position:"absolute",pointerEvents:"none",top:0,left:0,bottom:0,right:0},s.style);return m.createElement("canvas",Object.assign({width:o.width,height:o.height,ref:this.canvas},s,{style:a}))},n}(h.Component);_.defaultProps=y({},j);_.displayName="ConfettiReact";var Me=m.forwardRef(function(e,n){return m.createElement(_,Object.assign({canvasRef:B},e))});function Ie(){return()=>{}}function Se(){return h.useSyncExternalStore(Ie,()=>!0,()=>!1)}function Ce({children:e,fallback:n=null}){return Se()?h.createElement(h.Fragment,null,e()):h.createElement(h.Fragment,null,n)}function je({id:e}){return e?c.jsx(Ce,{children:()=>c.jsx(Me,{run:!!e,recycle:!1,numberOfPieces:800,width:window.innerWidth,height:window.innerHeight},e)}):null}function _e({toast:e}){return c.jsxs(c.Fragment,{children:[c.jsx(Z,{closeButton:!0,position:"top-center"}),e?c.jsx(Ee,{toast:e}):null]})}function Ee({toast:e}){const{id:n,type:r,title:t,description:i}=e;return h.useEffect(()=>{setTimeout(()=>{ee[r](t,{id:n,description:i})},0)},[i,n,t,r]),null}const De="/assets/app-BOiko_VU.css",Fe="/assets/tailwind-BZciDTNv.css",$e=()=>[{rel:"stylesheet",href:"/neogrotesk-font.css"},{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,200;0,300;0,400;0,500;0,600;1,700&display=swap"},{rel:"stylesheet",href:Fe},{rel:"stylesheet",href:De},{rel:"mask-icon",href:"/favicons/favicon.svg"},{rel:"alternate icon",type:"image/png",href:"/favicon.png"},{rel:"icon",type:"image/svg+xml",href:"/favicon.svg"}],Je=({data:e})=>e?oe({instructor:e.instructor,title:e.workshopTitle,description:e.workshopSubtitle,requestInfo:e.requestInfo}):[];function b({children:e,env:n={},className:r}){const t=$();return h.useEffect(()=>{window.__epicshop??(window.__epicshop={}),window.__epicshop.handleFileChange=t.revalidate},[t]),c.jsxs("html",{lang:"en",className:r,children:[c.jsxs("head",{children:[c.jsx(ie,{}),c.jsx(ue,{}),c.jsx("meta",{charSet:"utf-8"}),c.jsx("meta",{name:"viewport",content:"width=device-width,initial-scale=1"}),c.jsx(le,{}),c.jsx("script",{dangerouslySetInnerHTML:{__html:`window.ENV = ${JSON.stringify(n)}`}})]}),c.jsxs("body",{className:"bg-background text-foreground scrollbar-thin scrollbar-thumb-scrollbar h-screen-safe",children:[e,c.jsx(he,{}),c.jsx(fe,{}),ENV.EPICSHOP_DEPLOYED?null:c.jsx("script",{dangerouslySetInnerHTML:{__html:Re()}})]})]})}function ke(){const e=T(),n=Q(),r=J.useSpinDelay(n.state!=="idle",{delay:400,minDuration:200}),t=U(),i=ne();return c.jsxs(b,{className:X("antialiased h-screen-safe",i,{"cursor-progress":r},t?"alt-down":null),env:e.ENV,children:[c.jsx(V,{}),c.jsx(je,{id:e.confettiId}),c.jsx(_e,{toast:e.toast}),c.jsx(K,{})]})}function Ue(){const{user:e}=T();return c.jsx(re,{user:e,children:c.jsx(te,{children:c.jsx(ke,{})})})}function Xe(){return c.jsx(b,{className:"h-screen-safe",children:c.jsx(z,{})})}function Re(){return`
|
|
10
|
+
*/let N="positions";function he({getKey:e,...n}){let{isSpaMode:r}=se(),t=G(),i=L();ae({getKey:e,storageKey:N});let o=h.useMemo(()=>{if(!e)return null;let a=e(t,i);return a!==t.key?a:null},[]);if(r)return null;let s=((a,l)=>{if(!window.history.state||!window.history.state.key){let u=Math.random().toString(32).slice(2);window.history.replaceState({key:u},"")}try{let x=JSON.parse(sessionStorage.getItem(a)||"{}")[l||window.history.state.key];typeof x=="number"&&window.scrollTo(0,x)}catch(u){console.error(u),sessionStorage.removeItem(a)}}).toString();return h.createElement("script",ce({},n,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${s})(${JSON.stringify(N)}, ${JSON.stringify(o)})`}}))}var O={linear:function(e,n,r,t){var i=r-n;return i*e/t+n},easeInQuad:function(e,n,r,t){var i=r-n;return i*(e/=t)*e+n},easeOutQuad:function(e,n,r,t){var i=r-n;return-i*(e/=t)*(e-2)+n},easeInOutQuad:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e+n:-i/2*(--e*(e-2)-1)+n},easeInCubic:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e+n},easeOutCubic:function(e,n,r,t){var i=r-n;return i*((e=e/t-1)*e*e+1)+n},easeInOutCubic:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e+n:i/2*((e-=2)*e*e+2)+n},easeInQuart:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e*e+n},easeOutQuart:function(e,n,r,t){var i=r-n;return-i*((e=e/t-1)*e*e*e-1)+n},easeInOutQuart:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e*e+n:-i/2*((e-=2)*e*e*e-2)+n},easeInQuint:function(e,n,r,t){var i=r-n;return i*(e/=t)*e*e*e*e+n},easeOutQuint:function(e,n,r,t){var i=r-n;return i*((e=e/t-1)*e*e*e*e+1)+n},easeInOutQuint:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?i/2*e*e*e*e*e+n:i/2*((e-=2)*e*e*e*e+2)+n},easeInSine:function(e,n,r,t){var i=r-n;return-i*Math.cos(e/t*(Math.PI/2))+i+n},easeOutSine:function(e,n,r,t){var i=r-n;return i*Math.sin(e/t*(Math.PI/2))+n},easeInOutSine:function(e,n,r,t){var i=r-n;return-i/2*(Math.cos(Math.PI*e/t)-1)+n},easeInExpo:function(e,n,r,t){var i=r-n;return e==0?n:i*Math.pow(2,10*(e/t-1))+n},easeOutExpo:function(e,n,r,t){var i=r-n;return e==t?n+i:i*(-Math.pow(2,-10*e/t)+1)+n},easeInOutExpo:function(e,n,r,t){var i=r-n;return e===0?n:e===t?n+i:(e/=t/2)<1?i/2*Math.pow(2,10*(e-1))+n:i/2*(-Math.pow(2,-10*--e)+2)+n},easeInCirc:function(e,n,r,t){var i=r-n;return-i*(Math.sqrt(1-(e/=t)*e)-1)+n},easeOutCirc:function(e,n,r,t){var i=r-n;return i*Math.sqrt(1-(e=e/t-1)*e)+n},easeInOutCirc:function(e,n,r,t){var i=r-n;return(e/=t/2)<1?-i/2*(Math.sqrt(1-e*e)-1)+n:i/2*(Math.sqrt(1-(e-=2)*e)+1)+n},easeInElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t)===1?n+i:(s||(s=t*.3),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),-(o*Math.pow(2,10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s))+n)},easeOutElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t)===1?n+i:(s||(s=t*.3),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),o*Math.pow(2,-10*e)*Math.sin((e*t-a)*(2*Math.PI)/s)+i+n)},easeInOutElastic:function(e,n,r,t){var i=r-n,o,s,a;return a=1.70158,s=0,o=i,e===0?n:(e/=t/2)===2?n+i:(s||(s=t*(.3*1.5)),o<Math.abs(i)?(o=i,a=s/4):a=s/(2*Math.PI)*Math.asin(i/o),e<1?-.5*(o*Math.pow(2,10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s))+n:o*Math.pow(2,-10*(e-=1))*Math.sin((e*t-a)*(2*Math.PI)/s)*.5+i+n)},easeInBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),o*(e/=t)*e*((i+1)*e-i)+n},easeOutBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),o*((e=e/t-1)*e*((i+1)*e+i)+1)+n},easeInOutBack:function(e,n,r,t,i){var o=r-n;return i===void 0&&(i=1.70158),(e/=t/2)<1?o/2*(e*e*(((i*=1.525)+1)*e-i))+n:o/2*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)+n},easeInBounce:function(e,n,r,t){var i=r-n,o;return o=O.easeOutBounce(t-e,0,i,t),i-o+n},easeOutBounce:function(e,n,r,t){var i=r-n;return(e/=t)<1/2.75?i*(7.5625*e*e)+n:e<2/2.75?i*(7.5625*(e-=1.5/2.75)*e+.75)+n:e<2.5/2.75?i*(7.5625*(e-=2.25/2.75)*e+.9375)+n:i*(7.5625*(e-=2.625/2.75)*e+.984375)+n},easeInOutBounce:function(e,n,r,t){var i=r-n,o;return e<t/2?(o=O.easeInBounce(e*2,0,i,t),o*.5+n):(o=O.easeOutBounce(e*2-t,0,i,t),o*.5+i*.5+n)}},pe=O;const ve=Y(pe);function de(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}function ge(e,n,r){return n&&de(e.prototype,n),e}function y(){return y=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},y.apply(this,arguments)}function we(e,n){e.prototype=Object.create(n.prototype),e.prototype.constructor=e,C(e,n)}function C(e,n){return C=Object.setPrototypeOf||function(t,i){return t.__proto__=i,t},C(e,n)}function me(e){return e*Math.PI/180}function f(e,n){return e+Math.random()*(n-e)}function ye(e,n){return Math.floor(e+Math.random()*(n-e+1))}var w;(function(e){e[e.Circle=0]="Circle",e[e.Square=1]="Square",e[e.Strip=2]="Strip"})(w||(w={}));var p;(function(e){e[e.Positive=1]="Positive",e[e.Negative=-1]="Negative"})(p||(p={}));var xe=function(){function e(r,t,i,o){this.getOptions=t;var s=this.getOptions(),a=s.colors,l=s.initialVelocityX,u=s.initialVelocityY;this.context=r,this.x=i,this.y=o,this.w=f(5,20),this.h=f(5,20),this.radius=f(5,10),this.vx=f(-l,l),this.vy=f(-u,0),this.shape=ye(0,2),this.angle=me(f(0,360)),this.angularSpin=f(-.2,.2),this.color=a[Math.floor(Math.random()*a.length)],this.rotateY=f(0,1),this.rotationDirection=f(0,1)?p.Positive:p.Negative}var n=e.prototype;return n.update=function(){var t=this.getOptions(),i=t.gravity,o=t.wind,s=t.friction,a=t.opacity,l=t.drawShape;this.x+=this.vx,this.y+=this.vy,this.vy+=i,this.vx+=o,this.vx*=s,this.vy*=s,this.rotateY>=1&&this.rotationDirection===p.Positive?this.rotationDirection=p.Negative:this.rotateY<=-1&&this.rotationDirection===p.Negative&&(this.rotationDirection=p.Positive);var u=.1*this.rotationDirection;if(this.rotateY+=u,this.angle+=this.angularSpin,this.context.save(),this.context.translate(this.x,this.y),this.context.rotate(this.angle),this.context.scale(1,this.rotateY),this.context.rotate(this.angle),this.context.beginPath(),this.context.fillStyle=this.color,this.context.strokeStyle=this.color,this.context.globalAlpha=a,this.context.lineCap="round",this.context.lineWidth=2,l&&typeof l=="function")l.call(this,this.context);else switch(this.shape){case w.Circle:{this.context.beginPath(),this.context.arc(0,0,this.radius,0,2*Math.PI),this.context.fill();break}case w.Square:{this.context.fillRect(-this.w/2,-this.h/2,this.w,this.h);break}case w.Strip:{this.context.fillRect(-this.w/6,-this.h/2,this.w/3,this.h);break}default:throw new Error("Unknown type in Particle.ts")}this.context.closePath(),this.context.restore()},e}(),Oe=function(n,r){var t=this;this.x=0,this.y=0,this.w=0,this.h=0,this.lastNumberOfPieces=0,this.tweenInitTime=Date.now(),this.particles=[],this.particlesGenerated=0,this.removeParticleAt=function(o){t.particles.splice(o,1)},this.getParticle=function(){var o=f(t.x,t.w+t.x),s=f(t.y,t.h+t.y);return new xe(t.context,t.getOptions,o,s)},this.animate=function(){var o=t.canvas,s=t.context,a=t.particlesGenerated,l=t.lastNumberOfPieces,u=t.getOptions(),x=u.run,E=u.recycle,v=u.numberOfPieces,W=u.debug,A=u.tweenFunction,P=u.tweenDuration;if(!x)return!1;var M=t.particles.length,d=E?M:a,I=Date.now();if(d<v){l!==v&&(t.tweenInitTime=I,t.lastNumberOfPieces=v);for(var F=t.tweenInitTime,H=I-F>P?P:Math.max(0,I-F),q=A(H,d,v,P),D=Math.round(q-d),k=0;k<D;k+=1)t.particles.push(t.getParticle());t.particlesGenerated+=D}return W&&(s.font="12px sans-serif",s.fillStyle="#333",s.textAlign="right",s.fillText("Particles: "+M,o.width-10,o.height-20)),t.particles.forEach(function(g,R){g.update(),(g.y>o.height||g.y<-100||g.x>o.width+100||g.x<-100)&&(E&&d<=v?t.particles[R]=t.getParticle():t.removeParticleAt(R))}),M>0||d<v},this.canvas=n;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.getOptions=r},j={width:typeof window<"u"?window.innerWidth:300,height:typeof window<"u"?window.innerHeight:200,numberOfPieces:200,friction:.99,wind:0,gravity:.1,initialVelocityX:4,initialVelocityY:10,colors:["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4CAF50","#8BC34A","#CDDC39","#FFEB3B","#FFC107","#FF9800","#FF5722","#795548"],opacity:1,debug:!1,tweenFunction:ve.easeInOutQuad,tweenDuration:5e3,recycle:!0,run:!0},Pe=function(){function e(n,r){var t=this;this.setOptionsWithDefaults=function(o){var s={confettiSource:{x:0,y:0,w:t.canvas.width,h:0}};t._options=y({},s,j,o),Object.assign(t,o.confettiSource)},this.update=function(){var o=t.options,s=o.run,a=o.onConfettiComplete,l=t.canvas,u=t.context;s&&(u.fillStyle="white",u.clearRect(0,0,l.width,l.height)),t.generator.animate()?t.rafId=requestAnimationFrame(t.update):(a&&typeof a=="function"&&t.generator.particlesGenerated>0&&a.call(t,t),t._options.run=!1)},this.reset=function(){t.generator&&t.generator.particlesGenerated>0&&(t.generator.particlesGenerated=0,t.generator.particles=[],t.generator.lastNumberOfPieces=0)},this.stop=function(){t.options={run:!1},t.rafId&&(cancelAnimationFrame(t.rafId),t.rafId=void 0)},this.canvas=n;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.generator=new Oe(this.canvas,function(){return t.options}),this.options=r,this.update()}return ge(e,[{key:"options",get:function(){return this._options},set:function(r){var t=this._options&&this._options.run,i=this._options&&this._options.recycle;this.setOptionsWithDefaults(r),this.generator&&(Object.assign(this.generator,this.options.confettiSource),typeof r.recycle=="boolean"&&r.recycle&&i===!1&&(this.generator.lastNumberOfPieces=this.generator.particles.length)),typeof r.run=="boolean"&&r.run&&t===!1&&this.update()}}]),e}(),B=m.createRef();function S(e){var n={},r={},t={},i=[].concat(Object.keys(j),["confettiSource","drawShape","onConfettiComplete"]),o=["canvasRef"];return Object.keys(e).forEach(function(s){var a=e[s];i.includes(s)?n[s]=a:o.includes(s)?o[s]=a:t[s]=a}),[n,t,r]}var _=function(e){we(n,e);function n(t){for(var i,o=arguments.length,s=new Array(o>1?o-1:0),a=1;a<o;a++)s[a-1]=arguments[a];return i=e.call.apply(e,[this,t].concat(s))||this,i.canvas=m.createRef(),i.canvas=t.canvasRef||B,i}var r=n.prototype;return r.componentDidMount=function(){if(this.canvas.current){var i=S(this.props)[0];this.confetti=new Pe(this.canvas.current,i)}},r.componentDidUpdate=function(){var i=S(this.props)[0];this.confetti&&(this.confetti.options=i)},r.componentWillUnmount=function(){this.confetti&&this.confetti.stop(),this.confetti=void 0},r.render=function(){var i=S(this.props),o=i[0],s=i[1],a=y({zIndex:2,position:"absolute",pointerEvents:"none",top:0,left:0,bottom:0,right:0},s.style);return m.createElement("canvas",Object.assign({width:o.width,height:o.height,ref:this.canvas},s,{style:a}))},n}(h.Component);_.defaultProps=y({},j);_.displayName="ConfettiReact";var Me=m.forwardRef(function(e,n){return m.createElement(_,Object.assign({canvasRef:B},e))});function Ie(){return()=>{}}function Se(){return h.useSyncExternalStore(Ie,()=>!0,()=>!1)}function Ce({children:e,fallback:n=null}){return Se()?h.createElement(h.Fragment,null,e()):h.createElement(h.Fragment,null,n)}function je({id:e}){return e?c.jsx(Ce,{children:()=>c.jsx(Me,{run:!!e,recycle:!1,numberOfPieces:800,width:window.innerWidth,height:window.innerHeight},e)}):null}function _e({toast:e}){return c.jsxs(c.Fragment,{children:[c.jsx(Z,{closeButton:!0,position:"top-center"}),e?c.jsx(Ee,{toast:e}):null]})}function Ee({toast:e}){const{id:n,type:r,title:t,description:i}=e;return h.useEffect(()=>{setTimeout(()=>{ee[r](t,{id:n,description:i})},0)},[i,n,t,r]),null}const Fe="/assets/app-b7uXHF5m.css",De="/assets/tailwind-BZciDTNv.css",Ve=()=>[{rel:"stylesheet",href:"/neogrotesk-font.css"},{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,200;0,300;0,400;0,500;0,600;1,700&display=swap"},{rel:"stylesheet",href:De},{rel:"stylesheet",href:Fe},{rel:"mask-icon",href:"/favicons/favicon.svg"},{rel:"alternate icon",type:"image/png",href:"/favicon.png"},{rel:"icon",type:"image/svg+xml",href:"/favicon.svg"}],Je=({data:e})=>e?oe({instructor:e.instructor,title:e.workshopTitle,description:e.workshopSubtitle,requestInfo:e.requestInfo}):[];function b({children:e,env:n={},className:r}){const t=V();return h.useEffect(()=>{window.__epicshop??(window.__epicshop={}),window.__epicshop.handleFileChange=t.revalidate},[t]),c.jsxs("html",{lang:"en",className:r,children:[c.jsxs("head",{children:[c.jsx(ie,{}),c.jsx(ue,{}),c.jsx("meta",{charSet:"utf-8"}),c.jsx("meta",{name:"viewport",content:"width=device-width,initial-scale=1"}),c.jsx(le,{}),c.jsx("script",{dangerouslySetInnerHTML:{__html:`window.ENV = ${JSON.stringify(n)}`}})]}),c.jsxs("body",{className:"bg-background text-foreground scrollbar-thin scrollbar-thumb-scrollbar h-screen-safe",children:[e,c.jsx(he,{}),c.jsx(fe,{}),ENV.EPICSHOP_DEPLOYED?null:c.jsx("script",{dangerouslySetInnerHTML:{__html:Re()}})]})]})}function ke(){const e=T(),n=Q(),r=J.useSpinDelay(n.state!=="idle",{delay:400,minDuration:200}),t=U(),i=ne();return c.jsxs(b,{className:X("antialiased h-screen-safe",i,{"cursor-progress":r},t?"alt-down":null),env:e.ENV,children:[c.jsx($,{}),c.jsx(je,{id:e.confettiId}),c.jsx(_e,{toast:e.toast}),c.jsx(K,{})]})}function Ue(){const{user:e}=T();return c.jsx(re,{user:e,children:c.jsx(te,{children:c.jsx(ke,{})})})}function Xe(){return c.jsx(b,{className:"h-screen-safe",children:c.jsx(z,{})})}function Re(){return`
|
|
11
11
|
function epicLiveReloadConnect(config) {
|
|
12
12
|
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
13
13
|
const host = location.hostname;
|
|
@@ -64,5 +64,5 @@ import{u as H,l as L,r as h,n as Y,R as m,j as c,c as Q,O as V,e as $}from"./ind
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
epicLiveReloadConnect();
|
|
67
|
-
`}export{Xe as ErrorBoundary,Ue as default
|
|
68
|
-
//# sourceMappingURL=root-
|
|
67
|
+
`}export{Xe as ErrorBoundary,Ue as default,Ve as links,Je as meta};
|
|
68
|
+
//# sourceMappingURL=root-BUqeXmeK.js.map
|