@epic-web/workshop-app 5.8.2 → 5.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/login-DAM6vd88.js +2 -0
- package/build/client/assets/login-DAM6vd88.js.map +1 -0
- package/build/client/assets/{manifest-09f05ff8.js → manifest-7e8c39f1.js} +1 -1
- package/build/client/assets/preferences-iiHyCxkL.js +2 -0
- package/build/client/assets/preferences-iiHyCxkL.js.map +1 -0
- package/build/client/assets/version-D61Qvt0X.js.map +1 -1
- package/build/server/index.js +38 -27
- package/build/server/index.js.map +1 -1
- package/package.json +3 -4
- package/build/client/assets/login-CJfcLXAB.js +0 -2
- package/build/client/assets/login-CJfcLXAB.js.map +0 -1
- package/build/client/assets/preferences-DhTuJwew.js +0 -2
- package/build/client/assets/preferences-DhTuJwew.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as i,e as g,d as v,j as e}from"./index-CGzylDPY.js";import{u as j}from"./use-event-source-AZJtQsFX.js";import{a as y,B as R}from"./button-DhtjxLl5.js";import{L as b}from"./loading-ZSC9wgHC.js";import{L as C}from"./product-DD8nUALO.js";import{u as N}from"./workshop-config-oL_FWDKq.js";import{z as t}from"./index-Ba7zHVvt.js";import{a as S}from"./components-DrvY4pal.js";import"./misc-D9k1wGip.js";import"./tooltip-CzrLrLJU.js";import"./pe-DXT2FOp1.js";const s={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},k=t.object({type:t.literal(s.USER_CODE_RECEIVED),code:t.string(),url:t.string()}),_=t.object({type:t.literal(s.AUTH_RESOLVED)}),w=t.object({type:t.literal(s.AUTH_REJECTED).optional(),error:t.string().optional().default("Unknown error")}),D=t.union([k,_,w]),P={getSitemapEntries:()=>null};function W(){var m;const{product:{displayName:a}}=N(),l=S(),[f,x]=i.useState(!1),[c,p]=i.useState(null),[o,h]=i.useState(null),d=g(),u=v(),n=j("/login-sse");return i.useEffect(()=>{if(!n)return;const E=JSON.parse(n),r=D.safeParse(E);if(!r.success){console.error(r.error.flatten());return}switch(r.data.type){case s.USER_CODE_RECEIVED:{h(r.data);break}case s.AUTH_RESOLVED:{u.revalidate(),d("/");break}case s.AUTH_REJECTED:{p(r.data.error);break}}},[n,d,u]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(C,{className:"h-16 w-16"}),e.jsxs("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:["Login to ",a]}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[o?e.jsxs("div",{className:"flex w-full max-w-md 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-center text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:o.code})}),e.jsxs("p",{className:"text-base",children:["You'll use this to verify your device on ",a,". Click verify code below to open the verification page."]})]}),e.jsx(y,{varient:"primary",to:o.url,target:"_blank",rel:"noreferrer",onClick:()=>x(!0),children:"Verify Auth Code"}),f?e.jsxs("div",{className:"justify-center pt-5 text-center opacity-60",children:[e.jsx(b,{className:"justify-center",children:"Waiting for confirmation"}),e.jsxs("p",{className:"pt-2",children:["Please open"," ",e.jsx("a",{href:o.url,target:"_blank",className:"underline",children:"your auth page"})," ","in a new tab to continue."]})]}):null]}):e.jsxs("div",{className:"flex flex-col items-center gap-8",children:[e.jsxs("div",{className:"flex max-w-lg flex-col gap-2 gap-3 pt-3 text-base text-gray-700 dark:text-gray-300",children:[e.jsxs("p",{children:["If you have access to this workshop on ",a,", you'll be able to watch videos, track progress, run tests, view the diffs, and more!"]}),e.jsxs("p",{children:["First you need to authenticate your device by requesting an access code and verifying on ",a,"."]})]}),e.jsx(l.Form,{method:"POST",children:e.jsx(R,{varient:"primary",type:"submit",children:l.state==="idle"&&((m=l.data)==null?void 0:m.status)!=="pending"?"Retrieve Auth Code":"Retrieving Auth Code..."})})]}),c?e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:c})]}):null]})]})})}export{W as default,P as handle};
|
|
2
|
+
//# sourceMappingURL=login-DAM6vd88.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-DAM6vd88.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).optional(),\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 { 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 { Logo } from '#app/components/product.tsx'\nimport { useWorkshopConfig } from '#app/components/workshop-config.js'\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 {}\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn { status: 'pending' } as const\n}\n\nexport default function Login() {\n\tconst {\n\t\tproduct: { displayName },\n\t} = useWorkshopConfig()\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\">\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\tLogin to {displayName}\n\t\t\t\t</h1>\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 max-w-md 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-center 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\t<p className=\"text-base\">\n\t\t\t\t\t\t\t\t\tYou'll use this to verify your device on {displayName}. Click\n\t\t\t\t\t\t\t\t\tverify code below to open the verification page.\n\t\t\t\t\t\t\t\t</p>\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\tVerify Auth Code\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=\"justify-center pt-5 text-center opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading className=\"justify-center\">\n\t\t\t\t\t\t\t\t\t\tWaiting for confirmation\n\t\t\t\t\t\t\t\t\t</Loading>\n\t\t\t\t\t\t\t\t\t<p className=\"pt-2\">\n\t\t\t\t\t\t\t\t\t\tPlease open{' '}\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\thref={userCodeInfo.url}\n\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tyour auth page\n\t\t\t\t\t\t\t\t\t\t</a>{' '}\n\t\t\t\t\t\t\t\t\t\tin a new tab to continue.\n\t\t\t\t\t\t\t\t\t</p>\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<div className=\"flex flex-col items-center gap-8\">\n\t\t\t\t\t\t\t<div className=\"flex max-w-lg flex-col gap-2 gap-3 pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tIf you have access to this workshop on {displayName}, you'll\n\t\t\t\t\t\t\t\t\tbe able to watch videos, track progress, run tests, view the\n\t\t\t\t\t\t\t\t\tdiffs, and more!\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tFirst you need to authenticate your device by requesting an\n\t\t\t\t\t\t\t\t\taccess code and verifying on {displayName}.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t\t? `Retrieve Auth Code`\n\t\t\t\t\t\t\t\t\t\t: `Retrieving Auth Code...`}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t\t</div>\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"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","optional","error","default","EventSchema","union","handle","getSitemapEntries","Login","product","displayName","useWorkshopConfig","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","href","Form","method","Button","state","status"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.__remixManifest={"entry":{"module":"/assets/entry.client-CQusg5Iz.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-mo7iS2_8.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/pe-DXT2FOp1.js","/assets/error-boundary-DBVB3BBH.js","/assets/progress-bar-IswLOt8e.js","/assets/index-CB8bjE90.js","/assets/tooltip-CzrLrLJU.js","/assets/index-Ba7zHVvt.js","/assets/presence-BPdQqqxh.js","/assets/seo-pBpFCWsy.js","/assets/online-DZEJ9mQ4.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-BbjJ9R-5.js","imports":["/assets/index-CGzylDPY.js","/assets/error-boundary-DBVB3BBH.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-D7PSWvDV.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/pe-DXT2FOp1.js","/assets/product-DD8nUALO.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/tooltip-CzrLrLJU.js","/assets/index-CWadM2q_.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/online-DZEJ9mQ4.js","/assets/presence-BPdQqqxh.js","/assets/progress-CpALgZbi.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-C4MWGVQU.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.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+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-tUa_uzeh.js","imports":["/assets/discord-DsGCI_e6.js","/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-CwTidn3v.js","imports":["/assets/index-CGzylDPY.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-CTIMY8Ci.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/misc-D9k1wGip.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-CZKDy98j.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-DlnXUBRV.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/error-boundary-DBVB3BBH.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/set-playground-BoPKA2de.js","/assets/seo-pBpFCWsy.js","/assets/misc-D9k1wGip.js","/assets/epic-video-L4LF6R7z.js","/assets/tooltip-CzrLrLJU.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js","/assets/index-CWadM2q_.js","/assets/progress-bar-IswLOt8e.js","/assets/pe-DXT2FOp1.js","/assets/index-D7-ne3iG.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-srTG3_Hm.js","imports":["/assets/index-CGzylDPY.js","/assets/preview-BhbdVgz0.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/button-DhtjxLl5.js","/assets/loading-ZSC9wgHC.js","/assets/progress-bar-IswLOt8e.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-6Gv-N_Wf.js","imports":["/assets/index-CGzylDPY.js","/assets/tooltip-CzrLrLJU.js","/assets/index-D7-ne3iG.js","/assets/misc-D9k1wGip.js","/assets/diff-jFIPq4v4.js","/assets/error-boundary-DBVB3BBH.js","/assets/loading-ZSC9wgHC.js","/assets/discord-DsGCI_e6.js","/assets/online-DZEJ9mQ4.js","/assets/components-DrvY4pal.js","/assets/index-CB8bjE90.js","/assets/set-playground-BoPKA2de.js","/assets/tests-D7QIbhV1.js","/assets/preview-BhbdVgz0.js","/assets/index-CWadM2q_.js","/assets/accordion-BL_cX9y6.js","/assets/mdx-jUhWGrmr.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-DhtjxLl5.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-CeF623n1.js","imports":["/assets/index-CGzylDPY.js","/assets/tests-D7QIbhV1.js","/assets/components-DrvY4pal.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/accordion-BL_cX9y6.js","/assets/index-D7-ne3iG.js","/assets/index-CWadM2q_.js","/assets/use-event-source-AZJtQsFX.js","/assets/set-playground-BoPKA2de.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-3WI8ZY3p.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/misc-D9k1wGip.js","/assets/loading-ZSC9wgHC.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/online-DZEJ9mQ4.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-BvwOlSOW.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/misc-D9k1wGip.js","/assets/loading-ZSC9wgHC.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/online-DZEJ9mQ4.js","/assets/seo-pBpFCWsy.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.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-BD7kCZPp.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/error-boundary-DBVB3BBH.js","/assets/mdx-jUhWGrmr.js","/assets/misc-D9k1wGip.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.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-CJfcLXAB.js","imports":["/assets/index-CGzylDPY.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-DhtjxLl5.js","/assets/loading-ZSC9wgHC.js","/assets/product-DD8nUALO.js","/assets/workshop-config-oL_FWDKq.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/preferences-DhTuJwew.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/components-DrvY4pal.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-lgEG2piy.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-DV29dlKr.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.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/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-BH_SsYHe.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/version-D61Qvt0X.js","imports":["/assets/index-CGzylDPY.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.js"],"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-BN4_0e7y.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/diff-jFIPq4v4.js","/assets/nav-chevrons-CM-frhig.js","/assets/components-DrvY4pal.js","/assets/accordion-BL_cX9y6.js","/assets/tooltip-CzrLrLJU.js","/assets/index-D7-ne3iG.js","/assets/index-CWadM2q_.js","/assets/mdx-jUhWGrmr.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js","/assets/revalidation-ws-BIizeOeQ.js"],"css":["/assets/epic-video-DUnRvy1A.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-B_6pKDd8.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/epic-video-L4LF6R7z.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.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-DP2rzg_V.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-09f05ff8.js","version":"09f05ff8"};
|
|
1
|
+
window.__remixManifest={"entry":{"module":"/assets/entry.client-CQusg5Iz.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-mo7iS2_8.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/pe-DXT2FOp1.js","/assets/error-boundary-DBVB3BBH.js","/assets/progress-bar-IswLOt8e.js","/assets/index-CB8bjE90.js","/assets/tooltip-CzrLrLJU.js","/assets/index-Ba7zHVvt.js","/assets/presence-BPdQqqxh.js","/assets/seo-pBpFCWsy.js","/assets/online-DZEJ9mQ4.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-BbjJ9R-5.js","imports":["/assets/index-CGzylDPY.js","/assets/error-boundary-DBVB3BBH.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-D7PSWvDV.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/pe-DXT2FOp1.js","/assets/product-DD8nUALO.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/tooltip-CzrLrLJU.js","/assets/index-CWadM2q_.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/online-DZEJ9mQ4.js","/assets/presence-BPdQqqxh.js","/assets/progress-CpALgZbi.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-C4MWGVQU.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.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+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-tUa_uzeh.js","imports":["/assets/discord-DsGCI_e6.js","/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-CwTidn3v.js","imports":["/assets/index-CGzylDPY.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-CTIMY8Ci.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/misc-D9k1wGip.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-CZKDy98j.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-DlnXUBRV.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/error-boundary-DBVB3BBH.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/set-playground-BoPKA2de.js","/assets/seo-pBpFCWsy.js","/assets/misc-D9k1wGip.js","/assets/epic-video-L4LF6R7z.js","/assets/tooltip-CzrLrLJU.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js","/assets/index-CWadM2q_.js","/assets/progress-bar-IswLOt8e.js","/assets/pe-DXT2FOp1.js","/assets/index-D7-ne3iG.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-srTG3_Hm.js","imports":["/assets/index-CGzylDPY.js","/assets/preview-BhbdVgz0.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/button-DhtjxLl5.js","/assets/loading-ZSC9wgHC.js","/assets/progress-bar-IswLOt8e.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-6Gv-N_Wf.js","imports":["/assets/index-CGzylDPY.js","/assets/tooltip-CzrLrLJU.js","/assets/index-D7-ne3iG.js","/assets/misc-D9k1wGip.js","/assets/diff-jFIPq4v4.js","/assets/error-boundary-DBVB3BBH.js","/assets/loading-ZSC9wgHC.js","/assets/discord-DsGCI_e6.js","/assets/online-DZEJ9mQ4.js","/assets/components-DrvY4pal.js","/assets/index-CB8bjE90.js","/assets/set-playground-BoPKA2de.js","/assets/tests-D7QIbhV1.js","/assets/preview-BhbdVgz0.js","/assets/index-CWadM2q_.js","/assets/accordion-BL_cX9y6.js","/assets/mdx-jUhWGrmr.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-DhtjxLl5.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-CeF623n1.js","imports":["/assets/index-CGzylDPY.js","/assets/tests-D7QIbhV1.js","/assets/components-DrvY4pal.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/accordion-BL_cX9y6.js","/assets/index-D7-ne3iG.js","/assets/index-CWadM2q_.js","/assets/use-event-source-AZJtQsFX.js","/assets/set-playground-BoPKA2de.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-3WI8ZY3p.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/misc-D9k1wGip.js","/assets/loading-ZSC9wgHC.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/progress-CpALgZbi.js","/assets/online-DZEJ9mQ4.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-BvwOlSOW.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/misc-D9k1wGip.js","/assets/loading-ZSC9wgHC.js","/assets/nav-chevrons-CM-frhig.js","/assets/revalidation-ws-BIizeOeQ.js","/assets/mdx-jUhWGrmr.js","/assets/online-DZEJ9mQ4.js","/assets/seo-pBpFCWsy.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.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-BD7kCZPp.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-L4LF6R7z.js","/assets/error-boundary-DBVB3BBH.js","/assets/mdx-jUhWGrmr.js","/assets/misc-D9k1wGip.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.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-DAM6vd88.js","imports":["/assets/index-CGzylDPY.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-DhtjxLl5.js","/assets/loading-ZSC9wgHC.js","/assets/product-DD8nUALO.js","/assets/workshop-config-oL_FWDKq.js","/assets/index-Ba7zHVvt.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/preferences-iiHyCxkL.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/components-DrvY4pal.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-lgEG2piy.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-DV29dlKr.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.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/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-BH_SsYHe.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/tooltip-CzrLrLJU.js","/assets/progress-CpALgZbi.js","/assets/components-DrvY4pal.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/version-D61Qvt0X.js","imports":["/assets/index-CGzylDPY.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.js"],"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-BN4_0e7y.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-D9k1wGip.js","/assets/diff-jFIPq4v4.js","/assets/nav-chevrons-CM-frhig.js","/assets/components-DrvY4pal.js","/assets/accordion-BL_cX9y6.js","/assets/tooltip-CzrLrLJU.js","/assets/index-D7-ne3iG.js","/assets/index-CWadM2q_.js","/assets/mdx-jUhWGrmr.js","/assets/epic-video-L4LF6R7z.js","/assets/index-Ba7zHVvt.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-IswLOt8e.js","/assets/revalidation-ws-BIizeOeQ.js"],"css":["/assets/epic-video-DUnRvy1A.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-B_6pKDd8.js","imports":["/assets/index-CGzylDPY.js","/assets/button-DhtjxLl5.js","/assets/epic-video-L4LF6R7z.js","/assets/components-DrvY4pal.js","/assets/misc-D9k1wGip.js","/assets/index-Ba7zHVvt.js","/assets/tooltip-CzrLrLJU.js","/assets/pe-DXT2FOp1.js","/assets/online-DZEJ9mQ4.js","/assets/loading-ZSC9wgHC.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.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-DP2rzg_V.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-7e8c39f1.js","version":"7e8c39f1"};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as u,j as e}from"./index-CGzylDPY.js";import{B as p}from"./button-DhtjxLl5.js";import{I as l}from"./misc-D9k1wGip.js";import{S as o}from"./tooltip-CzrLrLJU.js";import{b as h,F as j}from"./components-DrvY4pal.js";function P(){var r,c,d,x;const s=h("root"),n=(r=s==null?void 0:s.preferences)==null?void 0:r.player,m=(c=s==null?void 0:s.preferences)==null?void 0:c.fontSize,i=(d=s==null?void 0:s.preferences)==null?void 0:d.presence,t=(x=s==null?void 0:s.preferences)==null?void 0:x.playground,a=u().state==="submitting";return e.jsxs("main",{className:"container mt-12 flex h-full w-full max-w-3xl flex-grow flex-col gap-4",children:[e.jsx("h1",{className:"mb-4 text-h1",children:"Preferences"}),e.jsxs(j,{method:"post",className:"flex w-full max-w-sm flex-col gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"mb-2 text-body-xl",children:"Video Player Preferences"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("label",{htmlFor:"minResolution",children:"Minimum Resolution:"}),e.jsxs("select",{id:"minResolution",name:"minResolution",defaultValue:n==null?void 0:n.minResolution,children:[e.jsx("option",{value:"",children:"Auto"}),e.jsx("option",{value:"480",children:"480p"}),e.jsx("option",{value:"720",children:"720p"}),e.jsx("option",{value:"1080",children:"1080p"}),e.jsx("option",{value:"1440",children:"1440p"}),e.jsx("option",{value:"2160",children:"2160p (4K)"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("label",{htmlFor:"maxResolution",children:"Maximum Resolution:"}),e.jsxs("select",{id:"maxResolution",name:"maxResolution",defaultValue:n==null?void 0:n.maxResolution,children:[e.jsx("option",{value:"",children:"Auto"}),e.jsx("option",{value:"720",children:"720p"}),e.jsx("option",{value:"1080",children:"1080p"}),e.jsx("option",{value:"1440",children:"1440p"}),e.jsx("option",{value:"2160",children:"2160p (4K)"})]})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx("h2",{className:"text-body-xl",children:"Font Size Preference"}),e.jsx(o,{content:"Defaults to 16px",children:e.jsx(l,{name:"Question",tabIndex:0})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("label",{htmlFor:"fontSize",children:"Font Size"}),e.jsx("input",{type:"number",id:"fontSize",name:"fontSize",defaultValue:m??16,step:"1",min:"12",max:"26"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx("h2",{className:"text-body-xl",children:"Presence Preference"}),e.jsx(o,{content:"This controls whether your name and avatar are displayed in the pile of faces in navigation",children:e.jsx(l,{name:"Question",tabIndex:0})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"optOutPresence",name:"optOutPresence",defaultChecked:i==null?void 0:i.optOut}),e.jsx("label",{htmlFor:"optOutPresence",children:"Opt out of presence features"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx("h2",{className:"text-body-xl",children:"Persist Playground"}),e.jsx(o,{content:'When enabled, clicking "Set to Playground" will save the current playground in the "saved-playgrounds" directory.',children:e.jsx(l,{name:"Question",tabIndex:0})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"persistPlayground",name:"persistPlayground",defaultChecked:t==null?void 0:t.persist}),e.jsx("label",{htmlFor:"persistPlayground",children:"Enable saving playground"})]})]}),e.jsx("div",{className:"h-4"}),e.jsx(p,{varient:"primary",type:"submit",name:"intent",value:"update-preferences",disabled:a,children:a?"Updating...":"Update Preferences"})]})]})}export{P as default};
|
|
2
|
+
//# sourceMappingURL=preferences-iiHyCxkL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences-iiHyCxkL.js","sources":["../../../app/routes/_app+/preferences.tsx"],"sourcesContent":["import {\n\tgetPreferences,\n\tsetPreferences,\n} from '@epic-web/workshop-utils/db.server'\nimport { Form, useNavigation, useRouteLoaderData } 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.tsx'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { redirectWithToast } from '#app/utils/toast.server.ts'\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst preferences = await getPreferences()\n\treturn { preferences }\n}\n\nexport async function action({ request }: { request: Request }) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\n\tconst minResolution = formData.get('minResolution')\n\tconst maxResolution = formData.get('maxResolution')\n\tconst fontSize = formData.get('fontSize')\n\tconst optOutPresence = formData.get('optOutPresence') === 'on'\n\tconst persistPlayground = formData.get('persistPlayground') === 'on'\n\n\tawait setPreferences({\n\t\tplayer: {\n\t\t\tminResolution: minResolution ? Number(minResolution) : undefined,\n\t\t\tmaxResolution: maxResolution ? Number(maxResolution) : undefined,\n\t\t},\n\t\tfontSize: fontSize ? Number(fontSize) : undefined,\n\t\tpresence: { optOut: optOutPresence },\n\t\tplayground: { persist: persistPlayground },\n\t})\n\n\treturn redirectWithToast('/preferences', {\n\t\ttitle: 'Preferences updated',\n\t\tdescription: 'Your preferences have been updated.',\n\t\ttype: 'success',\n\t})\n}\n\nexport default function AccountSettings() {\n\tconst data = useRouteLoaderData<typeof rootLoader>('root')\n\tconst playerPreferences = data?.preferences?.player\n\tconst fontSizePreference = data?.preferences?.fontSize\n\tconst presencePreferences = data?.preferences?.presence\n\tconst playgroundPreferences = data?.preferences?.playground\n\tconst navigation = useNavigation()\n\n\tconst isSubmitting = navigation.state === 'submitting'\n\n\treturn (\n\t\t<main className=\"container mt-12 flex h-full w-full max-w-3xl flex-grow flex-col gap-4\">\n\t\t\t<h1 className=\"mb-4 text-h1\">Preferences</h1>\n\t\t\t<Form method=\"post\" className=\"flex w-full max-w-sm flex-col gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<h2 className=\"mb-2 text-body-xl\">Video Player Preferences</h2>\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<label htmlFor=\"minResolution\">Minimum Resolution:</label>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tid=\"minResolution\"\n\t\t\t\t\t\t\tname=\"minResolution\"\n\t\t\t\t\t\t\tdefaultValue={playerPreferences?.minResolution}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"\">Auto</option>\n\t\t\t\t\t\t\t<option value=\"480\">480p</option>\n\t\t\t\t\t\t\t<option value=\"720\">720p</option>\n\t\t\t\t\t\t\t<option value=\"1080\">1080p</option>\n\t\t\t\t\t\t\t<option value=\"1440\">1440p</option>\n\t\t\t\t\t\t\t<option value=\"2160\">2160p (4K)</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<label htmlFor=\"maxResolution\">Maximum Resolution:</label>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tid=\"maxResolution\"\n\t\t\t\t\t\t\tname=\"maxResolution\"\n\t\t\t\t\t\t\tdefaultValue={playerPreferences?.maxResolution}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"\">Auto</option>\n\t\t\t\t\t\t\t<option value=\"720\">720p</option>\n\t\t\t\t\t\t\t<option value=\"1080\">1080p</option>\n\t\t\t\t\t\t\t<option value=\"1440\">1440p</option>\n\t\t\t\t\t\t\t<option value=\"2160\">2160p (4K)</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<div className=\"mb-2 flex items-center gap-2\">\n\t\t\t\t\t\t<h2 className=\"text-body-xl\">Font Size Preference</h2>\n\t\t\t\t\t\t<SimpleTooltip content=\"Defaults to 16px\">\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\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<label htmlFor=\"fontSize\">Font Size</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"fontSize\"\n\t\t\t\t\t\t\tname=\"fontSize\"\n\t\t\t\t\t\t\tdefaultValue={fontSizePreference ?? 16}\n\t\t\t\t\t\t\tstep=\"1\"\n\t\t\t\t\t\t\tmin=\"12\"\n\t\t\t\t\t\t\tmax=\"26\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<div className=\"mb-2 flex items-center gap-2\">\n\t\t\t\t\t\t<h2 className=\"text-body-xl\">Presence Preference</h2>\n\n\t\t\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\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\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tid=\"optOutPresence\"\n\t\t\t\t\t\t\tname=\"optOutPresence\"\n\t\t\t\t\t\t\tdefaultChecked={presencePreferences?.optOut}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<label htmlFor=\"optOutPresence\">Opt out of presence features</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<div className=\"mb-2 flex items-center gap-2\">\n\t\t\t\t\t\t<h2 className=\"text-body-xl\">Persist Playground</h2>\n\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tcontent={`When enabled, clicking \"Set to Playground\" will save the current playground in the \"saved-playgrounds\" directory.`}\n\t\t\t\t\t\t>\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\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tid=\"persistPlayground\"\n\t\t\t\t\t\t\tname=\"persistPlayground\"\n\t\t\t\t\t\t\tdefaultChecked={playgroundPreferences?.persist}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<label htmlFor=\"persistPlayground\">Enable saving playground</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"h-4\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"update-preferences\"\n\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t>\n\t\t\t\t\t{isSubmitting ? 'Updating...' : 'Update Preferences'}\n\t\t\t\t</Button>\n\t\t\t</Form>\n\t\t</main>\n\t)\n}\n"],"names":["AccountSettings","data","useRouteLoaderData","playerPreferences","preferences","player","fontSizePreference","fontSize","presencePreferences","presence","playgroundPreferences","playground","isSubmitting","useNavigation","state","jsxs","className","children","jsx","Form","method","htmlFor","id","name","defaultValue","minResolution","value","maxResolution","SimpleTooltip","content","Icon","tabIndex","type","step","min","max","defaultChecked","optOut","persist","Button","varient","disabled"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-D61Qvt0X.js","sources":["../../../app/routes/admin+/version.tsx"],"sourcesContent":["import {\n\tgetCommitInfo,\n\tgetLatestWorkshopAppVersion,\n} from '@epic-web/workshop-utils/git.server'\nimport {\n\tcombineServerTimings,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { type HeadersFunction } from '@remix-run/node'\nimport { useLoaderData, unstable_data as data } from '@remix-run/react'\nimport { useWorkshopConfig } from '#app/components/workshop-config.tsx'\nimport {
|
|
1
|
+
{"version":3,"file":"version-D61Qvt0X.js","sources":["../../../app/routes/admin+/version.tsx"],"sourcesContent":["import {\n\tgetCommitInfo,\n\tgetLatestWorkshopAppVersion,\n} from '@epic-web/workshop-utils/git.server'\nimport {\n\tcombineServerTimings,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { dayjs } from '@epic-web/workshop-utils/utils.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { type HeadersFunction } from '@remix-run/node'\nimport { useLoaderData, unstable_data as data } from '@remix-run/react'\nimport { useWorkshopConfig } from '#app/components/workshop-config.tsx'\nimport { getErrorMessage } from '#app/utils/misc.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tconst timings = makeTimings('versionLoader')\n\tconst [commitInfo, latestVersion] = await Promise.all([\n\t\ttime(() => getCommitInfo(), { timings, type: 'getCommitInfo' }),\n\t\ttime(() => getLatestWorkshopAppVersion().catch((e) => getErrorMessage(e)), {\n\t\t\ttimings,\n\t\t\ttype: 'getLatestWorkshopAppVersion',\n\t\t}),\n\t])\n\n\tconst uptime = process.uptime() * 1000\n\tconst startDate = new Date(Date.now() - uptime)\n\n\treturn data(\n\t\t{\n\t\t\tworkshopCommit: commitInfo\n\t\t\t\t? {\n\t\t\t\t\t\t...commitInfo,\n\t\t\t\t\t\tdateFormatted: dayjs(commitInfo.date).format('YYYY-MM-DD HH:mm:ss'),\n\t\t\t\t\t\tdateFromNow: dayjs(commitInfo.date).fromNow(),\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\tlatestWorkshopAppVersion: latestVersion,\n\t\t\tstartTime: startDate.toISOString(),\n\t\t\tstartTimeFormatted: dayjs(startDate).format('YYYY-MM-DD HH:mm:ss'),\n\t\t\tstartTimeFromNow: dayjs(startDate).fromNow(),\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': timings.toString(),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ parentHeaders, loaderHeaders }) => {\n\treturn {\n\t\t'Server-Timing': combineServerTimings(parentHeaders, loaderHeaders),\n\t}\n}\n\nexport default function Version() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst workshopConfig = useWorkshopConfig()\n\n\treturn (\n\t\t<div>\n\t\t\t<h2 className=\"text-lg font-bold\">Workshop Version Information</h2>\n\t\t\t<h3 className=\"text-md font-bold\">Workshop Commit</h3>\n\t\t\t{data.workshopCommit ? (\n\t\t\t\t<>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tHash:{' '}\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={`${workshopConfig.githubRepo}/commit/${data.workshopCommit.hash}`}\n\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{data.workshopCommit.hash}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p>Message: {data.workshopCommit.message}</p>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tDate: {data.workshopCommit.dateFormatted} (\n\t\t\t\t\t\t{data.workshopCommit.dateFromNow})\n\t\t\t\t\t</p>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<p>No commit information available</p>\n\t\t\t)}\n\t\t\t<h3 className=\"text-md font-bold\">Workshop App</h3>\n\t\t\t<p>\n\t\t\t\t{'Current Version: '}\n\t\t\t\t{ENV.EPICSHOP_APP_VERSION ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={`https://github.com/epicweb-dev/epicshop/releases/tag/v${ENV.EPICSHOP_APP_VERSION}`}\n\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ENV.EPICSHOP_APP_VERSION}\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\t'Unknown'\n\t\t\t\t)}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{'Latest Version: '}\n\t\t\t\t<a\n\t\t\t\t\thref={`https://github.com/epicweb-dev/epicshop/releases/tag/v${data.latestWorkshopAppVersion}`}\n\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t>\n\t\t\t\t\t{data.latestWorkshopAppVersion}\n\t\t\t\t</a>\n\t\t\t</p>\n\t\t\t<h3 className=\"text-md font-bold\">App Start Time</h3>\n\t\t\t<p>\n\t\t\t\t{data.startTimeFormatted} ({data.startTimeFromNow})\n\t\t\t</p>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","Version","data","useLoaderData","workshopConfig","useWorkshopConfig","children","jsx","className","workshopCommit","jsxs","Fragment","href","githubRepo","hash","message","dateFormatted","dateFromNow","ENV","EPICSHOP_APP_VERSION","latestWorkshopAppVersion","startTimeFormatted","startTimeFromNow"],"mappings":"uIAgBO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,IAC1B,EA2CA,SAAwBC,GAAU,CACjC,MAAMC,EAAOC,IACPC,EAAiBC,IAEvB,cACE,MACA,CAAAC,SAAA,CAACC,EAAA,IAAA,KAAA,CAAGC,UAAU,oBAAoBF,SAA4B,8BAAA,CAAA,EAC7DC,EAAA,IAAA,KAAA,CAAGC,UAAU,oBAAoBF,SAAe,iBAAA,CAAA,EAChDJ,EAAKO,eAEJC,EAAAA,KAAAC,EAAAA,SAAA,CAAAL,SAAA,CAAAI,EAAA,KAAC,IAAE,CAAAJ,SAAA,CAAA,QACI,IACNC,EAAAA,IAAC,IAAA,CACAK,KAAM,GAAGR,EAAeS,UAAU,WAAWX,EAAKO,eAAeK,IAAI,GACrEN,UAAU,YAETF,SAAAJ,EAAKO,eAAeK,IAAA,CACtB,CAAA,CACD,CAAA,SACC,IAAE,CAAAR,SAAA,CAAA,YAAUJ,EAAKO,eAAeM,OAAA,CAAQ,CAAA,SACxC,IAAE,CAAAT,SAAA,CAAA,SACKJ,EAAKO,eAAeO,cAAc,KACxCd,EAAKO,eAAeQ,YAAY,GAAA,CAClC,CAAA,CAAA,CACD,CAAA,EAECV,EAAA,IAAA,IAAA,CAAED,SAA+B,iCAAA,CAAA,EAElCC,EAAA,IAAA,KAAA,CAAGC,UAAU,oBAAoBF,SAAY,cAAA,CAAA,SAC7C,IACC,CAAAA,SAAA,CAAA,oBACAY,IAAIC,qBACJZ,EAAAA,IAAC,IAAA,CACAK,KAAM,yDAAyDM,IAAIC,oBAAoB,GACvFX,UAAU,YAETF,SAAIY,IAAAC,oBACN,CAAA,EAEA,SAAA,CAEF,CAAA,SACC,IACC,CAAAb,SAAA,CAAA,mBACDC,EAAA,IAAC,IAAA,CACAK,KAAM,yDAAyDV,EAAKkB,wBAAwB,GAC5FZ,UAAU,YAETF,SAAAJ,EAAKkB,wBAAA,CACP,CAAA,CACD,CAAA,EACCb,EAAA,IAAA,KAAA,CAAGC,UAAU,oBAAoBF,SAAc,gBAAA,CAAA,SAC/C,IACC,CAAAA,SAAA,CAAAJ,EAAKmB,mBAAmB,KAAGnB,EAAKoB,iBAAiB,GAAA,CACnD,CAAA,CAAA,CACD,CAAA,CAEF"}
|