@epic-web/workshop-app 4.22.4 → 4.23.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/_-Cv8HqtE8.js +2 -0
- package/build/client/assets/{_-DbrWZazo.js.map → _-Cv8HqtE8.js.map} +1 -1
- package/build/client/assets/_exerciseNumber-D2tXimAK.js +2 -0
- package/build/client/assets/{_exerciseNumber-CpcJsfoV.js.map → _exerciseNumber-D2tXimAK.js.map} +1 -1
- package/build/client/assets/_exerciseNumber_._stepNumber-CquNe5XV.js +2 -0
- package/build/client/assets/{_exerciseNumber_._stepNumber-B5pmJ29o.js.map → _exerciseNumber_._stepNumber-CquNe5XV.js.map} +1 -1
- package/build/client/assets/_exerciseNumber_.finished-B-sqDk3j.js +2 -0
- package/build/client/assets/{_exerciseNumber_.finished-Ddb3J5ls.js.map → _exerciseNumber_.finished-B-sqDk3j.js.map} +1 -1
- package/build/client/assets/_layout-C7yUCsjZ.js +2 -0
- package/build/client/assets/{_layout-DVR5FOsb.js.map → _layout-C7yUCsjZ.js.map} +1 -1
- package/build/client/assets/_layout-C9AozQxr.js +6 -0
- package/build/client/assets/_layout-C9AozQxr.js.map +1 -0
- package/build/client/assets/{_layout-BUs3av-e.js → _layout-CRkVkufr.js} +2 -2
- package/build/client/assets/{_layout-BUs3av-e.js.map → _layout-CRkVkufr.js.map} +1 -1
- package/build/client/assets/_layout-Ciyqvptc.js +2 -0
- package/build/client/assets/{_layout-CGLKLU3y.js.map → _layout-Ciyqvptc.js.map} +1 -1
- package/build/client/assets/accordion-B-gQ5Whz.js +2 -0
- package/build/client/assets/{accordion-BroSqIct.js.map → accordion-B-gQ5Whz.js.map} +1 -1
- package/build/client/assets/account-B-3k5HDM.js +2 -0
- package/build/client/assets/{account-7o6O4ruO.js.map → account-B-3k5HDM.js.map} +1 -1
- package/build/client/assets/app-DAWCzuDw.js +2 -0
- package/build/client/assets/{app-BhrXo-z3.js.map → app-DAWCzuDw.js.map} +1 -1
- package/build/client/assets/{button-BklqyTPS.js → button-DataaIpW.js} +2 -2
- package/build/client/assets/{button-BklqyTPS.js.map → button-DataaIpW.js.map} +1 -1
- package/build/client/assets/{components-CME-nGId.js → components-BQB6wEvm.js} +18 -18
- package/build/client/assets/{components-CME-nGId.js.map → components-BQB6wEvm.js.map} +1 -1
- package/build/client/assets/diff-BWSOt7tL.js +2 -0
- package/build/client/assets/{diff-Cr4LLBag.js.map → diff-BWSOt7tL.js.map} +1 -1
- package/build/client/assets/diff-JWdZCc2F.js +2 -0
- package/build/client/assets/{diff-BNr0PhFR.js.map → diff-JWdZCc2F.js.map} +1 -1
- package/build/client/assets/{discord-Dq4e30wV.js → discord-BfUTLoVF.js} +2 -2
- package/build/client/assets/{discord-Dq4e30wV.js.map → discord-BfUTLoVF.js.map} +1 -1
- package/build/client/assets/discord-BqGuuhG3.js +2 -0
- package/build/client/assets/discord-BqGuuhG3.js.map +1 -0
- package/build/client/assets/{entry.client-3M2p-8I3.js → entry.client-7AjQ7fYK.js} +9 -9
- package/build/client/assets/{entry.client-3M2p-8I3.js.map → entry.client-7AjQ7fYK.js.map} +1 -1
- package/build/client/assets/{epic-video-CxZy3iqK.js → epic-video-D8tfMIv8.js} +96 -96
- package/build/client/assets/{epic-video-CxZy3iqK.js.map → epic-video-D8tfMIv8.js.map} +1 -1
- package/build/client/assets/{error-boundary-DDTvdkB4.js → error-boundary-Bx1mDmB-.js} +2 -2
- package/build/client/assets/{error-boundary-DDTvdkB4.js.map → error-boundary-Bx1mDmB-.js.map} +1 -1
- package/build/client/assets/finished-DvXH6L-Q.js +2 -0
- package/build/client/assets/{finished-CU8QBU41.js.map → finished-DvXH6L-Q.js.map} +1 -1
- package/build/client/assets/index-2WpY3jqc.js +37 -0
- package/build/client/assets/{index-1cKOJFpX.js.map → index-2WpY3jqc.js.map} +1 -1
- package/build/client/assets/{index-B-hHvmeV.js → index-Bt0Fs1uZ.js} +2 -2
- package/build/client/assets/{index-B-hHvmeV.js.map → index-Bt0Fs1uZ.js.map} +1 -1
- package/build/client/assets/{index-Dx5GmdYq.js → index-DGsreVfh.js} +2 -2
- package/build/client/assets/{index-Dx5GmdYq.js.map → index-DGsreVfh.js.map} +1 -1
- package/build/client/assets/index-DmASob5Y.js +2 -0
- package/build/client/assets/{index-BotyhhDm.js.map → index-DmASob5Y.js.map} +1 -1
- package/build/client/assets/index-TIHEbU65.js +36 -0
- package/build/client/assets/index-TIHEbU65.js.map +1 -0
- package/build/client/assets/{index-hogig2HK.js → index-aPMCrDDW.js} +2 -2
- package/build/client/assets/{index-hogig2HK.js.map → index-aPMCrDDW.js.map} +1 -1
- package/build/client/assets/{index-BXWoOGxB.js → index-bM_TIo_p.js} +2 -2
- package/build/client/assets/{index-BXWoOGxB.js.map → index-bM_TIo_p.js.map} +1 -1
- package/build/client/assets/index-kXas9qNh.js +2 -0
- package/build/client/assets/{index-c5oITeyN.js.map → index-kXas9qNh.js.map} +1 -1
- package/build/client/assets/loading-DXKqMYHW.js +2 -0
- package/build/client/assets/{loading-C5uX0jJw.js.map → loading-DXKqMYHW.js.map} +1 -1
- package/build/client/assets/login-WXKB-OYe.js +2 -0
- package/build/client/assets/login-WXKB-OYe.js.map +1 -0
- package/build/client/assets/manifest-5edda375.js +1 -0
- package/build/client/assets/mdx-D0cZm8uP.js +2 -0
- package/build/client/assets/{mdx-D7ttfz2V.js.map → mdx-D0cZm8uP.js.map} +1 -1
- package/build/client/assets/misc-LevbAJZ6.js +2 -0
- package/build/client/assets/misc-LevbAJZ6.js.map +1 -0
- package/build/client/assets/{nav-chevrons-B82nbdyj.js → nav-chevrons-BB1CK34B.js} +2 -2
- package/build/client/assets/{nav-chevrons-B82nbdyj.js.map → nav-chevrons-BB1CK34B.js.map} +1 -1
- package/build/client/assets/onboarding-CK8-hFDT.js +2 -0
- package/build/client/assets/{onboarding-Co4cldZ0.js.map → onboarding-CK8-hFDT.js.map} +1 -1
- package/build/client/assets/{pe-CUZaIcdt.js → pe-BmTNRcy_.js} +2 -2
- package/build/client/assets/{pe-CUZaIcdt.js.map → pe-BmTNRcy_.js.map} +1 -1
- package/build/client/assets/{presence-Cr--lRCr.js → presence-CmTnJPJh.js} +2 -2
- package/build/client/assets/{presence-Cr--lRCr.js.map → presence-CmTnJPJh.js.map} +1 -1
- package/build/client/assets/preview-BbJZ7UrX.js +2 -0
- package/build/client/assets/{preview-CdiZ0d0L.js.map → preview-BbJZ7UrX.js.map} +1 -1
- package/build/client/assets/product-Bi2uble-.js +2 -0
- package/build/client/assets/product-Bi2uble-.js.map +1 -0
- package/build/client/assets/{progress-bar-CSvo1ZXP.js → progress-bar-HYCoNAkN.js} +2 -2
- package/build/client/assets/{progress-bar-CSvo1ZXP.js.map → progress-bar-HYCoNAkN.js.map} +1 -1
- package/build/client/assets/{progress-Biq-ngNF.js → progress-fFpCuCyE.js} +2 -2
- package/build/client/assets/{progress-Biq-ngNF.js.map → progress-fFpCuCyE.js.map} +1 -1
- package/build/client/assets/{request-info-CEhUGODY.js → request-info-D6MPpnDd.js} +2 -2
- package/build/client/assets/{request-info-CEhUGODY.js.map → request-info-D6MPpnDd.js.map} +1 -1
- package/build/client/assets/{root-D_FY953d.js → root-CY8QRU4e.js} +6 -6
- package/build/client/assets/{root-D_FY953d.js.map → root-CY8QRU4e.js.map} +1 -1
- package/build/client/assets/set-playground-8-BH15HT.js +2 -0
- package/build/client/assets/{set-playground-BXHckvUG.js.map → set-playground-8-BH15HT.js.map} +1 -1
- package/build/client/assets/{support-hcqGIpir.js → support-l4EbxG8X.js} +2 -2
- package/build/client/assets/{support-hcqGIpir.js.map → support-l4EbxG8X.js.map} +1 -1
- package/build/client/assets/test--z-MS4Cz.js +2 -0
- package/build/client/assets/{test-BRkbo9G9.js.map → test--z-MS4Cz.js.map} +1 -1
- package/build/client/assets/{tests-DQuoxpDA.js → tests-CNclXTWp.js} +2 -2
- package/build/client/assets/{tests-DQuoxpDA.js.map → tests-CNclXTWp.js.map} +1 -1
- package/build/client/assets/{tooltip-BiHTe_7F.js → tooltip-Blm9zu1K.js} +2 -2
- package/build/client/assets/{tooltip-BiHTe_7F.js.map → tooltip-Blm9zu1K.js.map} +1 -1
- package/build/client/assets/{use-event-source-A_0lEOPX.js → use-event-source-C81lzj_8.js} +2 -2
- package/build/client/assets/{use-event-source-A_0lEOPX.js.map → use-event-source-C81lzj_8.js.map} +1 -1
- package/build/client/assets/{user-D6tTg1yS.js → user-2ca9K5af.js} +2 -2
- package/build/client/assets/{user-D6tTg1yS.js.map → user-2ca9K5af.js.map} +1 -1
- package/build/client/assets/workshop-config-COvWTBns.js +2 -0
- package/build/client/assets/workshop-config-COvWTBns.js.map +1 -0
- package/build/client/icons.svg +541 -526
- package/build/client/logo.svg +48 -0
- package/build/server/index.js +155 -80
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/_-DbrWZazo.js +0 -2
- package/build/client/assets/_exerciseNumber-CpcJsfoV.js +0 -2
- package/build/client/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js +0 -2
- package/build/client/assets/_exerciseNumber_.finished-Ddb3J5ls.js +0 -2
- package/build/client/assets/_layout-BLsKV5zF.js +0 -6
- package/build/client/assets/_layout-BLsKV5zF.js.map +0 -1
- package/build/client/assets/_layout-CGLKLU3y.js +0 -2
- package/build/client/assets/_layout-DVR5FOsb.js +0 -2
- package/build/client/assets/accordion-BroSqIct.js +0 -2
- package/build/client/assets/account-7o6O4ruO.js +0 -2
- package/build/client/assets/app-BhrXo-z3.js +0 -2
- package/build/client/assets/client-hints-DNUUFGmB.js +0 -36
- package/build/client/assets/client-hints-DNUUFGmB.js.map +0 -1
- package/build/client/assets/clsx-B-dksMZM.js +0 -2
- package/build/client/assets/clsx-B-dksMZM.js.map +0 -1
- package/build/client/assets/diff-BNr0PhFR.js +0 -2
- package/build/client/assets/diff-Cr4LLBag.js +0 -2
- package/build/client/assets/discord-CHP4_JLJ.js +0 -2
- package/build/client/assets/discord-CHP4_JLJ.js.map +0 -1
- package/build/client/assets/finished-CU8QBU41.js +0 -2
- package/build/client/assets/index-1cKOJFpX.js +0 -37
- package/build/client/assets/index-6GyYWV9G.js +0 -2
- package/build/client/assets/index-6GyYWV9G.js.map +0 -1
- package/build/client/assets/index-BotyhhDm.js +0 -2
- package/build/client/assets/index-c5oITeyN.js +0 -2
- package/build/client/assets/loading-C5uX0jJw.js +0 -2
- package/build/client/assets/login-4cvVFzF8.js +0 -2
- package/build/client/assets/login-4cvVFzF8.js.map +0 -1
- package/build/client/assets/manifest-da85ee1f.js +0 -1
- package/build/client/assets/mdx-D7ttfz2V.js +0 -2
- package/build/client/assets/misc-ENVX3CWf.js +0 -2
- package/build/client/assets/misc-ENVX3CWf.js.map +0 -1
- package/build/client/assets/onboarding-Co4cldZ0.js +0 -2
- package/build/client/assets/preview-CdiZ0d0L.js +0 -2
- package/build/client/assets/set-playground-BXHckvUG.js +0 -2
- package/build/client/assets/test-BRkbo9G9.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./index-2WpY3jqc.js";import{B as a}from"./button-DataaIpW.js";import{I as i}from"./misc-LevbAJZ6.js";import{S as o}from"./tooltip-Blm9zu1K.js";import{u as m,a as u}from"./user-2ca9K5af.js";import{u as x}from"./presence-CmTnJPJh.js";import{u as h,a as p,L as r,F as c}from"./components-BQB6wEvm.js";import"./request-info-D6MPpnDd.js";const D={getSitemapEntries:()=>null};function O(){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{O as default,D as handle};
|
|
2
|
+
//# sourceMappingURL=account-B-3k5HDM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-
|
|
1
|
+
{"version":3,"file":"account-B-3k5HDM.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":"gWAmBO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,IAC1B,EAwCA,SAAwBC,GAAU,CACjC,MAAMC,EAAOC,IACPC,EAAoBC,IACpBC,EAAOC,IACPC,EAAgBC,IAChBC,EAAsBC,IAE3B,OAAAC,EAAAA,KAAC,OAAK,CAAAC,UAAU,8FACfC,SAAA,CAAAC,EAAA,IAAC,MAAA,CACAF,UAAU,yBACVG,KAAKR,GAAAA,YAAAA,EAAeS,cAAeX,EAAKY,MAAQZ,EAAKa,MACrDC,IAAKd,EAAKe,SAAA,CACX,EACCN,EAAA,IAAA,KAAA,CAAGF,UAAU,gBAAgBC,SAAY,cAAA,CAAA,QACzC,IAAE,CAAAD,UAAU,+CACXC,SAAKR,EAAAY,KACH,OACAV,GAAAA,YAAAA,EAAeS,cAAeX,EAAKY,IACpC,mCAAmCZ,EAAKa,KAAK,IAC5C,iCAAiCb,EAAKa,KAAK,IAC/C,EACCX,EAECI,EAAA,KAAAU,WAAA,CAAAR,SAAA,CAACF,EAAA,KAAA,IAAA,CAAEC,UAAU,+CAA+CC,SAAA,CAAA,uCACtBN,EAAcS,YAAY,KAC9DT,EAAce,GAAG,IAAA,CACnB,CAAA,EACAX,EAAA,KAAC,MAAI,CAAAC,UAAU,4BACdC,SAAA,CAAAC,EAAAA,IAACX,EAAkBoB,KAAlB,CAAuBC,OAAO,OAC9BX,SAACC,EAAA,IAAAW,EAAA,CAAOC,QAAQ,OAAOT,KAAK,SAASU,MAAM,qBAAqBd,8BAEhE,CACD,CAAA,EACAC,EAAA,IAACc,EAAc,CAAAC,QAAQ,0FACtBhB,SAAAC,EAAA,IAACgB,GAAKb,KAAK,WAAWc,SAAU,EAAG,CACpC,CAAA,CAAA,CACD,CAAA,CAAA,CAAA,CACD,EAEApB,EAAA,KAAC,MAAI,CAAAC,UAAU,0BACdC,SAAA,CAAAF,EAAA,KAACqB,EAAA,CACAC,GAAIhC,EAAKiC,eACTtB,UAAU,2CAEVC,SAAA,CAAAC,EAAA,IAACgB,EAAK,CAAAb,KAAK,UAAUkB,KAAK,IAAK,CAAA,EAAE,iBAAA,CAAA,CAElC,EACArB,EAAA,IAACc,EAAc,CAAAC,QAAQ,2EACtBhB,SAAAC,EAAA,IAACgB,GAAKb,KAAK,WAAWc,SAAU,EAAG,CACpC,CAAA,CAAA,CACD,CAAA,EAEDpB,EAAA,KAAC,MAAI,CAAAC,UAAU,0BACdC,SAAA,CAACF,EAAA,KAAAY,EAAA,CAAKC,OAAO,OACZX,SAAA,CAAAC,EAAA,IAAC,QAAA,CACAG,KAAK,SACLmB,KAAK,SACLT,MAAOlB,GAAAA,MAAAA,EAAqB4B,OAAS,QAAU,MAAA,CAChD,SACCZ,EAAO,CAAAC,QAAQ,OAAOT,KAAK,SAASU,MAAM,mBACzCd,SAAA,CAAAJ,GAAAA,MAAAA,EAAqB4B,OAAS,YAAc,aAAa,WAAA,CAC3D,CAAA,CAAA,CACD,CAAA,EACAvB,EAAA,IAACc,EAAc,CAAAC,QAAQ,8FACtBhB,SAAAC,EAAA,IAACgB,GAAKb,KAAK,WAAWc,SAAU,EAAG,CACpC,CAAA,CAAA,CACD,CAAA,EACApB,EAAA,KAAC,MAAI,CAAAC,UAAU,0BACdC,SAAA,CAAAC,EAAA,IAACS,EAAK,CAAAC,OAAO,OACZX,SAAAC,EAAA,IAACW,EAAO,CAAAC,QAAQ,OAAOT,KAAK,SAASU,MAAM,SAASd,SAAA,iBAEpD,CACD,CAAA,EACAC,EAAA,IAACc,EAAA,CACAC,eACE,MAAI,CAAAhB,SAAA,CAAA,oBACcC,EAAA,IAAA,IAAA,CAAEF,UAAU,SAASC,SAAM,QAAA,CAAA,EAAI,6CAEhD,KAAG,CAAA,CAAA,EAAE,wFAAA,CAGP,CAAA,EAGDA,SAACC,EAAA,IAAAgB,EAAA,CAAKb,KAAK,WAAWc,SAAU,EAAG,CAAA,CACpC,CAAA,CACD,CAAA,SACC,IAAE,CAAAlB,SAAA,CAAA,QACI,UACLmB,EAAK,CAAAC,GAAG,cAAcrB,UAAU,YAAYC,SAE7C,aAAA,CAAA,EAAQ,IAAI,2CAAA,CAEb,CAAA,SACC,IAAE,CAAAA,SAAA,CAAA,QACI,UACLmB,EAAK,CAAAC,GAAG,WAAWrB,UAAU,YAAYC,SAE1C,UAAA,CAAA,EAAQ,IAAI,sBAAA,CAEb,CAAA,CAAA,CACD,CAAA,CAEF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,j as s}from"./index-2WpY3jqc.js";import{P as e}from"./preview-BbJZ7UrX.js";import{u as i}from"./components-BQB6wEvm.js";import"./misc-LevbAJZ6.js";import"./request-info-D6MPpnDd.js";import"./button-DataaIpW.js";import"./loading-DXKqMYHW.js";import"./index-TIHEbU65.js";import"./tooltip-Blm9zu1K.js";import"./pe-BmTNRcy_.js";import"./progress-bar-HYCoNAkN.js";function R(){const{appInfo:r}=i(),o=t.useRef(null);return s.jsx(e,{appInfo:r,inBrowserBrowserRef:o})}export{R as default};
|
|
2
|
+
//# sourceMappingURL=app-DAWCzuDw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-
|
|
1
|
+
{"version":3,"file":"app-DAWCzuDw.js","sources":["../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app.tsx"],"sourcesContent":["import { requireExerciseApp } from '@epic-web/workshop-utils/apps.server'\nimport {\n\tcombineServerTimings,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\ttype HeadersFunction,\n\tjson,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport { useLoaderData } from '@remix-run/react'\nimport { useRef } from 'react'\nimport { type InBrowserBrowserRef } from '#app/components/in-browser-browser.js'\nimport { Preview } from './__shared/preview.tsx'\nimport { getAppRunningState } from './__shared/utils.tsx'\n\nexport async function loader({ request, params }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('exercise-step-test')\n\tconst exerciseStepApp = await requireExerciseApp(params, { request, timings })\n\tconst { isRunning, portIsAvailable } =\n\t\tawait getAppRunningState(exerciseStepApp)\n\n\treturn json({\n\t\tappInfo: {\n\t\t\tisRunning,\n\t\t\tname: exerciseStepApp.name,\n\t\t\ttitle: exerciseStepApp.title,\n\t\t\tportIsAvailable,\n\t\t\ttype: exerciseStepApp.type,\n\t\t\tfullPath: exerciseStepApp.fullPath,\n\t\t\tdev: exerciseStepApp.dev,\n\t\t\ttest: exerciseStepApp.test,\n\t\t\tstackBlitzUrl: exerciseStepApp.stackBlitzUrl,\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\nexport default function TestsList() {\n\tconst { appInfo } = useLoaderData<typeof loader>()\n\tconst ref = useRef<InBrowserBrowserRef>(null)\n\n\treturn <Preview appInfo={appInfo} inBrowserBrowserRef={ref} />\n}\n"],"names":["TestsList","appInfo","useLoaderData","ref","useRef","jsx","Preview","inBrowserBrowserRef"],"mappings":"qXA6CA,SAAwBA,GAAY,CAC7B,KAAA,CAAEC,QAAAA,CAAQ,EAAIC,EAA6B,EAC3CC,EAAMC,SAA4B,IAAI,EAE5C,OAAQC,EAAAA,IAAAC,EAAA,CAAQL,QAAAA,EAAkBM,oBAAqBJ,CAAK,CAAA,CAC7D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as n}from"./index-
|
|
2
|
-
//# sourceMappingURL=button-
|
|
1
|
+
import{j as n}from"./index-2WpY3jqc.js";import{c as r}from"./misc-LevbAJZ6.js";import{L as u}from"./components-BQB6wEvm.js";function l(){return n.jsx("span",{className:"inline-block animate-spin",children:"🌀"})}function d(){return n.jsx("span",{children:"✅"})}function m(){return n.jsx("span",{children:"❌"})}function a({varient:e,clip:o=!0}){const t="inline-flex bg-foreground text-background outline-none hover:bg-background hover:text-foreground focus:bg-background focus:text-foreground",s="px-8 py-4 font-bold",c="px-8 py-4 text-xl font-bold",i="px-8 py-4 font-mono text-sm uppercase";return r(t,{"clip-path-button":o,[s]:e==="primary",[c]:e==="big",[i]:e==="mono"})}function g({varient:e,status:o="idle",...t}){const s={pending:n.jsx(l,{}),success:n.jsx(d,{}),error:n.jsx(m,{}),idle:null}[o];return n.jsx("div",{className:"clip-path-button-outer w-fit border-2 border-foreground bg-foreground",children:n.jsxs("button",{...t,className:r(t.className,a({varient:e}),"flex justify-center gap-4"),children:[n.jsx("div",{children:t.children}),s]})})}function j({varient:e,...o}){return n.jsx("div",{className:"clip-path-button-outer w-fit border-2 border-foreground bg-foreground",children:n.jsx(u,{...o,className:r(o.className,a({varient:e}))})})}export{g as B,j as a};
|
|
2
|
+
//# sourceMappingURL=button-DataaIpW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
1
|
+
{"version":3,"file":"button-DataaIpW.js","sources":["../../../app/components/button.tsx"],"sourcesContent":["import { Link } from '@remix-run/react'\nimport { clsx } from 'clsx'\n\nfunction PendingState() {\n\treturn <span className=\"inline-block animate-spin\">🌀</span>\n}\n\nfunction SuccessState() {\n\treturn <span>✅</span>\n}\n\nfunction ErrorState() {\n\treturn <span>❌</span>\n}\n\nexport function getButtonClassName({\n\tvarient,\n\tclip = true,\n}: {\n\tvarient: 'primary' | 'big' | 'mono'\n\tclip?: boolean\n}) {\n\tconst baseClassName =\n\t\t'inline-flex bg-foreground text-background outline-none hover:bg-background hover:text-foreground focus:bg-background focus:text-foreground'\n\tconst primaryClassName = 'px-8 py-4 font-bold'\n\tconst bigClassName = 'px-8 py-4 text-xl font-bold'\n\tconst monoClassName = 'px-8 py-4 font-mono text-sm uppercase'\n\tconst className = clsx(baseClassName, {\n\t\t'clip-path-button': clip,\n\t\t[primaryClassName]: varient === 'primary',\n\t\t[bigClassName]: varient === 'big',\n\t\t[monoClassName]: varient === 'mono',\n\t})\n\treturn className\n}\n\nexport function Button({\n\tvarient,\n\tstatus = 'idle',\n\t...props\n}: React.ComponentPropsWithoutRef<'button'> &\n\tParameters<typeof getButtonClassName>[0] & {\n\t\tstatus?: 'pending' | 'success' | 'error' | 'idle'\n\t}) {\n\tconst companion = {\n\t\tpending: <PendingState />,\n\t\tsuccess: <SuccessState />,\n\t\terror: <ErrorState />,\n\t\tidle: null,\n\t}[status]\n\treturn (\n\t\t<div className=\"clip-path-button-outer w-fit border-2 border-foreground bg-foreground\">\n\t\t\t<button\n\t\t\t\t{...props}\n\t\t\t\tclassName={clsx(\n\t\t\t\t\tprops.className,\n\t\t\t\t\tgetButtonClassName({ varient }),\n\t\t\t\t\t'flex justify-center gap-4',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div>{props.children}</div>\n\t\t\t\t{companion}\n\t\t\t</button>\n\t\t</div>\n\t)\n}\n\nexport function ButtonLink({\n\tvarient,\n\t...props\n}: React.ComponentPropsWithoutRef<typeof Link> &\n\tParameters<typeof getButtonClassName>[0]) {\n\treturn (\n\t\t<div className=\"clip-path-button-outer w-fit border-2 border-foreground bg-foreground\">\n\t\t\t<Link\n\t\t\t\t{...props}\n\t\t\t\tclassName={clsx(props.className, getButtonClassName({ varient }))}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["PendingState","jsx","SuccessState","ErrorState","getButtonClassName","varient","clip","baseClassName","primaryClassName","bigClassName","monoClassName","clsx","Button","status","props","companion","jsxs","ButtonLink","Link"],"mappings":"4HAGA,SAASA,GAAe,CACvB,OAAQC,EAAAA,IAAA,OAAA,CAAK,UAAU,4BAA4B,SAAE,IAAA,CAAA,CACtD,CAEA,SAASC,GAAe,CAChB,OAAAD,EAAA,IAAC,QAAK,SAAC,GAAA,CAAA,CACf,CAEA,SAASE,GAAa,CACd,OAAAF,EAAA,IAAC,QAAK,SAAC,GAAA,CAAA,CACf,CAEO,SAASG,EAAmB,CAClC,QAAAC,EACA,KAAAC,EAAO,EACR,EAGG,CACF,MAAMC,EACL,6IACKC,EAAmB,sBACnBC,EAAe,8BACfC,EAAgB,wCAOf,OANWC,EAAKJ,EAAe,CACrC,mBAAoBD,EACpB,CAACE,CAAgB,EAAGH,IAAY,UAChC,CAACI,CAAY,EAAGJ,IAAY,MAC5B,CAACK,CAAa,EAAGL,IAAY,MAAA,CAC7B,CAEF,CAEO,SAASO,EAAO,CACtB,QAAAP,EACA,OAAAQ,EAAS,OACT,GAAGC,CACJ,EAGI,CACH,MAAMC,EAAY,CACjB,cAAUf,EAAa,EAAA,EACvB,cAAUE,EAAa,EAAA,EACvB,YAAQC,EAAW,EAAA,EACnB,KAAM,MACLU,CAAM,EAEP,OAAAZ,EAAAA,IAAC,MAAI,CAAA,UAAU,wEACd,SAAAe,EAAA,KAAC,SAAA,CACC,GAAGF,EACJ,UAAWH,EACVG,EAAM,UACNV,EAAmB,CAAE,QAAAC,EAAS,EAC9B,2BACD,EAEA,SAAA,CAACJ,EAAAA,IAAA,MAAA,CAAK,WAAM,QAAS,CAAA,EACpBc,CAAA,CAAA,CAEH,CAAA,CAAA,CAEF,CAEO,SAASE,EAAW,CAC1B,QAAAZ,EACA,GAAGS,CACJ,EAC2C,CAEzC,OAAAb,EAAAA,IAAC,MAAI,CAAA,UAAU,wEACd,SAAAA,EAAA,IAACiB,EAAA,CACC,GAAGJ,EACJ,UAAWH,EAAKG,EAAM,UAAWV,EAAmB,CAAE,QAAAC,CAAA,CAAS,CAAC,CAAA,CAElE,CAAA,CAAA,CAEF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var G=(e,t,r)=>Tt(e,typeof t!="symbol"?t+"":t,r);import{
|
|
1
|
+
var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var G=(e,t,r)=>Tt(e,typeof t!="symbol"?t+"":t,r);import{f as Pt,n as Ot,r as l,u as B,d as Ye,N as X,p as Ct,q as We,s as j,t as ie,v as kt,w as ge,x as M,D as be,y as oe,z as At,A as Dt,B as _e,I as Nt,C as Ve,F as Ne,l as Ft,c as It,G as $t,H as jt,J as Ut,K as Ke,E as ae,i as Mt,a as Ht,m as Xe,L as Bt,M as Jt,P as zt,Q as Yt}from"./index-2WpY3jqc.js";function Wt(e,t){for(var r=0;r<t.length;r++){const n=t[r];if(typeof n!="string"&&!Array.isArray(n)){for(const a in n)if(a!=="default"&&!(a in e)){const i=Object.getOwnPropertyDescriptor(n,a);i&&Object.defineProperty(e,a,i.get?i:{enumerable:!0,get:()=>n[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ge={exports:{}},C={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-dom.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/function Ze(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var V=
|
|
9
|
+
*/function Ze(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var V=Pt().__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function $(){}var O={d:{f:$,r:function(){throw Error(Ze(522))},D:$,C:$,L:$,m:$,X:$,S:$,M:$},p:0,findDOMNode:null},Vt=Symbol.for("react.portal");function Kt(e,t,r){var n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Vt,key:n==null?null:""+n,children:e,containerInfo:t,implementation:r}}function le(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}C.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=O;C.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(Ze(299));return Kt(e,t,null,r)};C.flushSync=function(e){var t=V.T,r=O.p;try{if(V.T=null,O.p=2,e)return e()}finally{V.T=t,O.p=r,O.d.f()}};C.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,O.d.C(e,t))};C.prefetchDNS=function(e){typeof e=="string"&&O.d.D(e)};C.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var r=t.as,n=le(r,t.crossOrigin),a=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;r==="style"?O.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:n,integrity:a,fetchPriority:i}):r==="script"&&O.d.X(e,{crossOrigin:n,integrity:a,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};C.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var r=le(t.as,t.crossOrigin);O.d.M(e,{crossOrigin:r,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&O.d.M(e)};C.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var r=t.as,n=le(r,t.crossOrigin);O.d.L(e,r,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};C.preloadModule=function(e,t){if(typeof e=="string")if(t){var r=le(t.as,t.crossOrigin);O.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:r,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else O.d.m(e)};C.requestFormReset=function(e){O.d.r(e)};C.unstable_batchedUpdates=function(e,t){return e(t)};C.useFormState=function(e,t,r){return V.H.useFormState(e,t,r)};C.useFormStatus=function(){return V.H.useHostTransitionStatus()};C.version="19.0.0-rc-f994737d14-20240522";function Qe(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Qe)}catch(e){console.error(e)}}Qe(),Ge.exports=C;var qe=Ge.exports;const Xt=Ot(qe),Gt=Wt({__proto__:null,default:Xt},[qe]);/**
|
|
10
10
|
* React Router DOM v6.24.0
|
|
11
11
|
*
|
|
12
12
|
* Copyright (c) Remix Software Inc.
|
|
@@ -15,8 +15,8 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
15
15
|
* LICENSE.md file in the root directory of this source tree.
|
|
16
16
|
*
|
|
17
17
|
* @license MIT
|
|
18
|
-
*/function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},D.apply(this,arguments)}function xe(e,t){if(e==null)return{};var r={},n=Object.keys(e),a,i;for(i=0;i<n.length;i++)a=n[i],!(t.indexOf(a)>=0)&&(r[a]=e[a]);return r}const re="get",he="application/x-www-form-urlencoded";function se(e){return e!=null&&typeof e.tagName=="string"}function Gt(e){return se(e)&&e.tagName.toLowerCase()==="button"}function Zt(e){return se(e)&&e.tagName.toLowerCase()==="form"}function Qt(e){return se(e)&&e.tagName.toLowerCase()==="input"}function qt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function er(e,t){return e.button===0&&(!t||t==="_self")&&!qt(e)}function ve(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map(a=>[r,a]):[[r,n]])},[]))}function tr(e,t){let r=ve(e);return t&&t.forEach((n,a)=>{r.has(a)||t.getAll(a).forEach(i=>{r.append(a,i)})}),r}let Z=null;function rr(){if(Z===null)try{new FormData(document.createElement("form"),0),Z=!1}catch{Z=!0}return Z}const nr=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function me(e){return e!=null&&!nr.has(e)?null:e}function ar(e,t){let r,n,a,i,s;if(Zt(e)){let o=e.getAttribute("action");n=o?M(o,t):null,r=e.getAttribute("method")||re,a=me(e.getAttribute("enctype"))||he,i=new FormData(e)}else if(Gt(e)||Qt(e)&&(e.type==="submit"||e.type==="image")){let o=e.form;if(o==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let u=e.getAttribute("formaction")||o.getAttribute("action");if(n=u?M(u,t):null,r=e.getAttribute("formmethod")||o.getAttribute("method")||re,a=me(e.getAttribute("formenctype"))||me(o.getAttribute("enctype"))||he,i=new FormData(o,e),!rr()){let{name:c,type:f,value:d}=e;if(f==="image"){let h=c?c+".":"";i.append(h+"x","0"),i.append(h+"y","0")}else c&&i.append(c,d)}}else{if(se(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');r=re,n=null,a=he,s=e}return i&&a==="text/plain"&&(s=i,i=void 0),{action:n,method:r.toLowerCase(),encType:a,formData:i,body:s}}const ir=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],or=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],lr=["fetcherKey","navigate","reloadDocument","replace","state","method","action","onSubmit","relative","preventScrollReset","unstable_viewTransition"],sr="6";try{window.__reactRouterVersion=sr}catch{}const et=l.createContext({isTransitioning:!1}),tt=l.createContext(new Map),ur="startTransition",Fe=Ve[ur],cr="flushSync",Ie=Xt[cr],fr="useId",$e=Ve[fr];function dr(e){Fe?Fe(e):e()}function Y(e){Ie?Ie(e):e()}let hr=class{constructor(){this.status="pending",this.promise=new Promise((t,r)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",r(n))}})}};function Mn(e){let{fallbackElement:t,router:r,future:n}=e,[a,i]=l.useState(r.state),[s,o]=l.useState(),[u,c]=l.useState({isTransitioning:!1}),[f,d]=l.useState(),[h,y]=l.useState(),[m,v]=l.useState(),R=l.useRef(new Map),{v7_startTransition:b}=n||{},p=l.useCallback(E=>{b?dr(E):E()},[b]),w=l.useCallback((E,_)=>{let{deletedFetchers:L,unstable_flushSync:k,unstable_viewTransitionOpts:T}=_;L.forEach(F=>R.current.delete(F)),E.fetchers.forEach((F,fe)=>{F.data!==void 0&&R.current.set(fe,F.data)});let N=r.window==null||r.window.document==null||typeof r.window.document.startViewTransition!="function";if(!T||N){k?Y(()=>i(E)):p(()=>i(E));return}if(k){Y(()=>{h&&(f&&f.resolve(),h.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:T.currentLocation,nextLocation:T.nextLocation})});let F=r.window.document.startViewTransition(()=>{Y(()=>i(E))});F.finished.finally(()=>{Y(()=>{d(void 0),y(void 0),o(void 0),c({isTransitioning:!1})})}),Y(()=>y(F));return}h?(f&&f.resolve(),h.skipTransition(),v({state:E,currentLocation:T.currentLocation,nextLocation:T.nextLocation})):(o(E),c({isTransitioning:!0,flushSync:!1,currentLocation:T.currentLocation,nextLocation:T.nextLocation}))},[r.window,h,f,R,p]);l.useLayoutEffect(()=>r.subscribe(w),[r,w]),l.useEffect(()=>{u.isTransitioning&&!u.flushSync&&d(new hr)},[u]),l.useEffect(()=>{if(f&&s&&r.window){let E=s,_=f.promise,L=r.window.document.startViewTransition(async()=>{p(()=>i(E)),await _});L.finished.finally(()=>{d(void 0),y(void 0),o(void 0),c({isTransitioning:!1})}),y(L)}},[p,s,f,r.window]),l.useEffect(()=>{f&&s&&a.location.key===s.location.key&&f.resolve()},[f,h,a.location,s]),l.useEffect(()=>{!u.isTransitioning&&m&&(o(m.state),c({isTransitioning:!0,flushSync:!1,currentLocation:m.currentLocation,nextLocation:m.nextLocation}),v(void 0))},[u.isTransitioning,m]),l.useEffect(()=>{},[]);let g=l.useMemo(()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:E=>r.navigate(E),push:(E,_,L)=>r.navigate(E,{state:_,preventScrollReset:L==null?void 0:L.preventScrollReset}),replace:(E,_,L)=>r.navigate(E,{replace:!0,state:_,preventScrollReset:L==null?void 0:L.preventScrollReset})}),[r]),x=r.basename||"/",S=l.useMemo(()=>({router:r,navigator:g,static:!1,basename:x}),[r,g,x]);return l.createElement(l.Fragment,null,l.createElement(be.Provider,{value:S},l.createElement(oe.Provider,{value:a},l.createElement(tt.Provider,{value:R.current},l.createElement(et.Provider,{value:u},l.createElement(kt,{basename:x,location:a.location,navigationType:a.historyAction,navigator:g,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},a.initialized||r.future.v7_partialHydration?l.createElement(mr,{routes:r.routes,future:r.future,state:a}):t))))),null)}function mr(e){let{routes:t,future:r,state:n}=e;return At(t,void 0,n,r)}const yr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",pr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,rt=l.forwardRef(function(t,r){let{onClick:n,relative:a,reloadDocument:i,replace:s,state:o,target:u,to:c,preventScrollReset:f,unstable_viewTransition:d}=t,h=xe(t,ir),{basename:y}=l.useContext(X),m,v=!1;if(typeof c=="string"&&pr.test(c)&&(m=c,yr))try{let w=new URL(window.location.href),g=c.startsWith("//")?new URL(w.protocol+c):new URL(c),x=M(g.pathname,y);g.origin===w.origin&&x!=null?c=x+g.search+g.hash:v=!0}catch{}let R=_e(c,{relative:a}),b=wr(c,{replace:s,state:o,target:u,preventScrollReset:f,relative:a,unstable_viewTransition:d});function p(w){n&&n(w),w.defaultPrevented||b(w)}return l.createElement("a",D({},h,{href:m||R,onClick:v||i?n:p,ref:r,target:u}))}),gr=l.forwardRef(function(t,r){let{"aria-current":n="page",caseSensitive:a=!1,className:i="",end:s=!1,style:o,to:u,unstable_viewTransition:c,children:f}=t,d=xe(t,or),h=ie(u,{relative:d.relative}),y=B(),m=l.useContext(oe),{navigator:v,basename:R}=l.useContext(X),b=m!=null&&xr(h)&&c===!0,p=v.encodeLocation?v.encodeLocation(h).pathname:h.pathname,w=y.pathname,g=m&&m.navigation&&m.navigation.location?m.navigation.location.pathname:null;a||(w=w.toLowerCase(),g=g?g.toLowerCase():null,p=p.toLowerCase()),g&&R&&(g=M(g,R)||g);const x=p!=="/"&&p.endsWith("/")?p.length-1:p.length;let S=w===p||!s&&w.startsWith(p)&&w.charAt(x)==="/",E=g!=null&&(g===p||!s&&g.startsWith(p)&&g.charAt(p.length)==="/"),_={isActive:S,isPending:E,isTransitioning:b},L=S?n:void 0,k;typeof i=="function"?k=i(_):k=[i,S?"active":null,E?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let T=typeof o=="function"?o(_):o;return l.createElement(rt,D({},d,{"aria-current":L,className:k,ref:r,style:T,to:u,unstable_viewTransition:c}),typeof f=="function"?f(_):f)}),vr=l.forwardRef((e,t)=>{let{fetcherKey:r,navigate:n,reloadDocument:a,replace:i,state:s,method:o=re,action:u,onSubmit:c,relative:f,preventScrollReset:d,unstable_viewTransition:h}=e,y=xe(e,lr),m=at(),v=Rr(u,{relative:f}),R=o.toLowerCase()==="get"?"get":"post",b=p=>{if(c&&c(p),p.defaultPrevented)return;p.preventDefault();let w=p.nativeEvent.submitter,g=(w==null?void 0:w.getAttribute("formmethod"))||o;m(w||p.currentTarget,{fetcherKey:r,method:g,navigate:n,replace:i,state:s,relative:f,preventScrollReset:d,unstable_viewTransition:h})};return l.createElement("form",D({ref:t,method:R,action:v,onSubmit:a?c:b},y))});var J;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(J||(J={}));var K;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(K||(K={}));function ue(e){let t=l.useContext(be);return t||j(!1),t}function Le(e){let t=l.useContext(oe);return t||j(!1),t}function wr(e,t){let{target:r,replace:n,state:a,preventScrollReset:i,relative:s,unstable_viewTransition:o}=t===void 0?{}:t,u=Ye(),c=B(),f=ie(e,{relative:s});return l.useCallback(d=>{if(er(d,r)){d.preventDefault();let h=n!==void 0?n:ge(c)===ge(f);u(e,{replace:h,state:a,preventScrollReset:i,relative:s,unstable_viewTransition:o})}},[c,u,f,n,a,r,e,i,s,o])}function Hn(e){let t=l.useRef(ve(e)),r=l.useRef(!1),n=B(),a=l.useMemo(()=>tr(n.search,r.current?null:t.current),[n.search]),i=Ye(),s=l.useCallback((o,u)=>{const c=ve(typeof o=="function"?o(a):o);r.current=!0,i("?"+c,u)},[i,a]);return[a,s]}function Er(){if(typeof document>"u")throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.")}let Sr=0,nt=()=>"__"+String(++Sr)+"__";function at(){let{router:e}=ue(J.UseSubmit),{basename:t}=l.useContext(X),r=Ot();return l.useCallback(function(n,a){a===void 0&&(a={}),Er();let{action:i,method:s,encType:o,formData:u,body:c}=ar(n,t);if(a.navigate===!1){let f=a.fetcherKey||nt();e.fetch(f,r,a.action||i,{preventScrollReset:a.preventScrollReset,formData:u,body:c,formMethod:a.method||s,formEncType:a.encType||o,unstable_flushSync:a.unstable_flushSync})}else e.navigate(a.action||i,{preventScrollReset:a.preventScrollReset,formData:u,body:c,formMethod:a.method||s,formEncType:a.encType||o,replace:a.replace,state:a.state,fromRouteId:r,unstable_flushSync:a.unstable_flushSync,unstable_viewTransition:a.unstable_viewTransition})},[e,t,r])}function Rr(e,t){let{relative:r}=t===void 0?{}:t,{basename:n}=l.useContext(X),a=l.useContext(We);a||j(!1);let[i]=a.matches.slice(-1),s=D({},ie(e||".",{relative:r})),o=B();if(e==null){s.search=o.search;let u=new URLSearchParams(s.search);u.has("index")&&u.get("index")===""&&(u.delete("index"),s.search=u.toString()?"?"+u.toString():"")}return(!e||e===".")&&i.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:Ct([n,s.pathname])),ge(s)}function br(e){var t;let{key:r}=e===void 0?{}:e,{router:n}=ue(J.UseFetcher),a=Le(K.UseFetcher),i=l.useContext(tt),s=l.useContext(We),o=(t=s.matches[s.matches.length-1])==null?void 0:t.route.id;i||j(!1),s||j(!1),o==null&&j(!1);let u=$e?$e():"",[c,f]=l.useState(r||u);r&&r!==c?f(r):c||f(nt()),l.useEffect(()=>(n.getFetcher(c),()=>{n.deleteFetcher(c)}),[n,c]);let d=l.useCallback((p,w)=>{o||j(!1),n.fetch(c,o,p,w)},[c,o,n]),h=at(),y=l.useCallback((p,w)=>{h(p,D({},w,{navigate:!1,fetcherKey:c}))},[c,h]),m=l.useMemo(()=>l.forwardRef((w,g)=>l.createElement(vr,D({},w,{navigate:!1,fetcherKey:c,ref:g}))),[c]),v=a.fetchers.get(c)||Dt,R=i.get(c);return l.useMemo(()=>D({Form:m,submit:y,load:d},v,{data:R}),[m,y,d,v,R])}function Bn(){let e=Le(K.UseFetchers);return Array.from(e.fetchers.entries()).map(t=>{let[r,n]=t;return D({},n,{key:r})})}const je="react-router-scroll-positions";let Q={};function Jn(e){let{getKey:t,storageKey:r}=e===void 0?{}:e,{router:n}=ue(J.UseScrollRestoration),{restoreScrollPosition:a,preventScrollReset:i}=Le(K.UseScrollRestoration),{basename:s}=l.useContext(X),o=B(),u=Nt(),c=Ft();l.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),_r(l.useCallback(()=>{if(c.state==="idle"){let f=(t?t(o,u):null)||o.key;Q[f]=window.scrollY}try{sessionStorage.setItem(r||je,JSON.stringify(Q))}catch{}window.history.scrollRestoration="auto"},[r,t,c.state,o,u])),typeof document<"u"&&(l.useLayoutEffect(()=>{try{let f=sessionStorage.getItem(r||je);f&&(Q=JSON.parse(f))}catch{}},[r]),l.useLayoutEffect(()=>{let f=t&&s!=="/"?(h,y)=>t(D({},h,{pathname:M(h.pathname,s)||h.pathname}),y):t,d=n==null?void 0:n.enableScrollRestoration(Q,()=>window.scrollY,f);return()=>d&&d()},[n,s,t]),l.useLayoutEffect(()=>{if(a!==!1){if(typeof a=="number"){window.scrollTo(0,a);return}if(o.hash){let f=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(f){f.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[o,a,i]))}function _r(e,t){let{capture:r}={};l.useEffect(()=>{let n=r!=null?{capture:r}:void 0;return window.addEventListener("pagehide",e,n),()=>{window.removeEventListener("pagehide",e,n)}},[e,r])}function xr(e,t){t===void 0&&(t={});let r=l.useContext(et);r==null&&j(!1);let{basename:n}=ue(J.useViewTransitionState),a=ie(e,{relative:t.relative});if(!r.isTransitioning)return!1;let i=M(r.currentLocation.pathname,n)||r.currentLocation.pathname,s=M(r.nextLocation.pathname,n)||r.nextLocation.pathname;return Ne(a.pathname,s)!=null||Ne(a.pathname,i)!=null}var Lr=-1,Tr=-2,Pr=-3,Or=-4,Cr=-5,kr=-6,Ar=-7,Dr="B",Nr="D",it="E",Fr="M",Ir="N",ot="P",$r="R",jr="S",Ur="Y",Mr="U",Hr="Z",lt=class{constructor(){G(this,"promise");G(this,"resolve");G(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function Br(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),i=(t+a).split(`
|
|
19
|
-
`);t=i.pop()||"";for(const s of i)n.enqueue(s)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var ye=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function we(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return A.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;return r.push(...e),t.length=r.length,A.call(this,n)}function A(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;switch(e){case
|
|
18
|
+
*/function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},D.apply(this,arguments)}function xe(e,t){if(e==null)return{};var r={},n=Object.keys(e),a,i;for(i=0;i<n.length;i++)a=n[i],!(t.indexOf(a)>=0)&&(r[a]=e[a]);return r}const re="get",he="application/x-www-form-urlencoded";function se(e){return e!=null&&typeof e.tagName=="string"}function Zt(e){return se(e)&&e.tagName.toLowerCase()==="button"}function Qt(e){return se(e)&&e.tagName.toLowerCase()==="form"}function qt(e){return se(e)&&e.tagName.toLowerCase()==="input"}function er(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function tr(e,t){return e.button===0&&(!t||t==="_self")&&!er(e)}function ve(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map(a=>[r,a]):[[r,n]])},[]))}function rr(e,t){let r=ve(e);return t&&t.forEach((n,a)=>{r.has(a)||t.getAll(a).forEach(i=>{r.append(a,i)})}),r}let Z=null;function nr(){if(Z===null)try{new FormData(document.createElement("form"),0),Z=!1}catch{Z=!0}return Z}const ar=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function me(e){return e!=null&&!ar.has(e)?null:e}function ir(e,t){let r,n,a,i,s;if(Qt(e)){let o=e.getAttribute("action");n=o?M(o,t):null,r=e.getAttribute("method")||re,a=me(e.getAttribute("enctype"))||he,i=new FormData(e)}else if(Zt(e)||qt(e)&&(e.type==="submit"||e.type==="image")){let o=e.form;if(o==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let u=e.getAttribute("formaction")||o.getAttribute("action");if(n=u?M(u,t):null,r=e.getAttribute("formmethod")||o.getAttribute("method")||re,a=me(e.getAttribute("formenctype"))||me(o.getAttribute("enctype"))||he,i=new FormData(o,e),!nr()){let{name:c,type:f,value:d}=e;if(f==="image"){let h=c?c+".":"";i.append(h+"x","0"),i.append(h+"y","0")}else c&&i.append(c,d)}}else{if(se(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');r=re,n=null,a=he,s=e}return i&&a==="text/plain"&&(s=i,i=void 0),{action:n,method:r.toLowerCase(),encType:a,formData:i,body:s}}const or=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],lr=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],sr=["fetcherKey","navigate","reloadDocument","replace","state","method","action","onSubmit","relative","preventScrollReset","unstable_viewTransition"],ur="6";try{window.__reactRouterVersion=ur}catch{}const et=l.createContext({isTransitioning:!1}),tt=l.createContext(new Map),cr="startTransition",Fe=Ve[cr],fr="flushSync",Ie=Gt[fr],dr="useId",$e=Ve[dr];function hr(e){Fe?Fe(e):e()}function Y(e){Ie?Ie(e):e()}let mr=class{constructor(){this.status="pending",this.promise=new Promise((t,r)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",r(n))}})}};function Hn(e){let{fallbackElement:t,router:r,future:n}=e,[a,i]=l.useState(r.state),[s,o]=l.useState(),[u,c]=l.useState({isTransitioning:!1}),[f,d]=l.useState(),[h,y]=l.useState(),[m,v]=l.useState(),R=l.useRef(new Map),{v7_startTransition:b}=n||{},p=l.useCallback(E=>{b?hr(E):E()},[b]),w=l.useCallback((E,_)=>{let{deletedFetchers:L,unstable_flushSync:k,unstable_viewTransitionOpts:T}=_;L.forEach(F=>R.current.delete(F)),E.fetchers.forEach((F,fe)=>{F.data!==void 0&&R.current.set(fe,F.data)});let N=r.window==null||r.window.document==null||typeof r.window.document.startViewTransition!="function";if(!T||N){k?Y(()=>i(E)):p(()=>i(E));return}if(k){Y(()=>{h&&(f&&f.resolve(),h.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:T.currentLocation,nextLocation:T.nextLocation})});let F=r.window.document.startViewTransition(()=>{Y(()=>i(E))});F.finished.finally(()=>{Y(()=>{d(void 0),y(void 0),o(void 0),c({isTransitioning:!1})})}),Y(()=>y(F));return}h?(f&&f.resolve(),h.skipTransition(),v({state:E,currentLocation:T.currentLocation,nextLocation:T.nextLocation})):(o(E),c({isTransitioning:!0,flushSync:!1,currentLocation:T.currentLocation,nextLocation:T.nextLocation}))},[r.window,h,f,R,p]);l.useLayoutEffect(()=>r.subscribe(w),[r,w]),l.useEffect(()=>{u.isTransitioning&&!u.flushSync&&d(new mr)},[u]),l.useEffect(()=>{if(f&&s&&r.window){let E=s,_=f.promise,L=r.window.document.startViewTransition(async()=>{p(()=>i(E)),await _});L.finished.finally(()=>{d(void 0),y(void 0),o(void 0),c({isTransitioning:!1})}),y(L)}},[p,s,f,r.window]),l.useEffect(()=>{f&&s&&a.location.key===s.location.key&&f.resolve()},[f,h,a.location,s]),l.useEffect(()=>{!u.isTransitioning&&m&&(o(m.state),c({isTransitioning:!0,flushSync:!1,currentLocation:m.currentLocation,nextLocation:m.nextLocation}),v(void 0))},[u.isTransitioning,m]),l.useEffect(()=>{},[]);let g=l.useMemo(()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:E=>r.navigate(E),push:(E,_,L)=>r.navigate(E,{state:_,preventScrollReset:L==null?void 0:L.preventScrollReset}),replace:(E,_,L)=>r.navigate(E,{replace:!0,state:_,preventScrollReset:L==null?void 0:L.preventScrollReset})}),[r]),x=r.basename||"/",S=l.useMemo(()=>({router:r,navigator:g,static:!1,basename:x}),[r,g,x]);return l.createElement(l.Fragment,null,l.createElement(be.Provider,{value:S},l.createElement(oe.Provider,{value:a},l.createElement(tt.Provider,{value:R.current},l.createElement(et.Provider,{value:u},l.createElement(At,{basename:x,location:a.location,navigationType:a.historyAction,navigator:g,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},a.initialized||r.future.v7_partialHydration?l.createElement(yr,{routes:r.routes,future:r.future,state:a}):t))))),null)}function yr(e){let{routes:t,future:r,state:n}=e;return Dt(t,void 0,n,r)}const pr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",gr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,rt=l.forwardRef(function(t,r){let{onClick:n,relative:a,reloadDocument:i,replace:s,state:o,target:u,to:c,preventScrollReset:f,unstable_viewTransition:d}=t,h=xe(t,or),{basename:y}=l.useContext(X),m,v=!1;if(typeof c=="string"&&gr.test(c)&&(m=c,pr))try{let w=new URL(window.location.href),g=c.startsWith("//")?new URL(w.protocol+c):new URL(c),x=M(g.pathname,y);g.origin===w.origin&&x!=null?c=x+g.search+g.hash:v=!0}catch{}let R=_e(c,{relative:a}),b=Er(c,{replace:s,state:o,target:u,preventScrollReset:f,relative:a,unstable_viewTransition:d});function p(w){n&&n(w),w.defaultPrevented||b(w)}return l.createElement("a",D({},h,{href:m||R,onClick:v||i?n:p,ref:r,target:u}))}),vr=l.forwardRef(function(t,r){let{"aria-current":n="page",caseSensitive:a=!1,className:i="",end:s=!1,style:o,to:u,unstable_viewTransition:c,children:f}=t,d=xe(t,lr),h=ie(u,{relative:d.relative}),y=B(),m=l.useContext(oe),{navigator:v,basename:R}=l.useContext(X),b=m!=null&&Lr(h)&&c===!0,p=v.encodeLocation?v.encodeLocation(h).pathname:h.pathname,w=y.pathname,g=m&&m.navigation&&m.navigation.location?m.navigation.location.pathname:null;a||(w=w.toLowerCase(),g=g?g.toLowerCase():null,p=p.toLowerCase()),g&&R&&(g=M(g,R)||g);const x=p!=="/"&&p.endsWith("/")?p.length-1:p.length;let S=w===p||!s&&w.startsWith(p)&&w.charAt(x)==="/",E=g!=null&&(g===p||!s&&g.startsWith(p)&&g.charAt(p.length)==="/"),_={isActive:S,isPending:E,isTransitioning:b},L=S?n:void 0,k;typeof i=="function"?k=i(_):k=[i,S?"active":null,E?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let T=typeof o=="function"?o(_):o;return l.createElement(rt,D({},d,{"aria-current":L,className:k,ref:r,style:T,to:u,unstable_viewTransition:c}),typeof f=="function"?f(_):f)}),wr=l.forwardRef((e,t)=>{let{fetcherKey:r,navigate:n,reloadDocument:a,replace:i,state:s,method:o=re,action:u,onSubmit:c,relative:f,preventScrollReset:d,unstable_viewTransition:h}=e,y=xe(e,sr),m=at(),v=br(u,{relative:f}),R=o.toLowerCase()==="get"?"get":"post",b=p=>{if(c&&c(p),p.defaultPrevented)return;p.preventDefault();let w=p.nativeEvent.submitter,g=(w==null?void 0:w.getAttribute("formmethod"))||o;m(w||p.currentTarget,{fetcherKey:r,method:g,navigate:n,replace:i,state:s,relative:f,preventScrollReset:d,unstable_viewTransition:h})};return l.createElement("form",D({ref:t,method:R,action:v,onSubmit:a?c:b},y))});var J;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(J||(J={}));var K;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(K||(K={}));function ue(e){let t=l.useContext(be);return t||j(!1),t}function Le(e){let t=l.useContext(oe);return t||j(!1),t}function Er(e,t){let{target:r,replace:n,state:a,preventScrollReset:i,relative:s,unstable_viewTransition:o}=t===void 0?{}:t,u=Ye(),c=B(),f=ie(e,{relative:s});return l.useCallback(d=>{if(tr(d,r)){d.preventDefault();let h=n!==void 0?n:ge(c)===ge(f);u(e,{replace:h,state:a,preventScrollReset:i,relative:s,unstable_viewTransition:o})}},[c,u,f,n,a,r,e,i,s,o])}function Bn(e){let t=l.useRef(ve(e)),r=l.useRef(!1),n=B(),a=l.useMemo(()=>rr(n.search,r.current?null:t.current),[n.search]),i=Ye(),s=l.useCallback((o,u)=>{const c=ve(typeof o=="function"?o(a):o);r.current=!0,i("?"+c,u)},[i,a]);return[a,s]}function Sr(){if(typeof document>"u")throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.")}let Rr=0,nt=()=>"__"+String(++Rr)+"__";function at(){let{router:e}=ue(J.UseSubmit),{basename:t}=l.useContext(X),r=Ct();return l.useCallback(function(n,a){a===void 0&&(a={}),Sr();let{action:i,method:s,encType:o,formData:u,body:c}=ir(n,t);if(a.navigate===!1){let f=a.fetcherKey||nt();e.fetch(f,r,a.action||i,{preventScrollReset:a.preventScrollReset,formData:u,body:c,formMethod:a.method||s,formEncType:a.encType||o,unstable_flushSync:a.unstable_flushSync})}else e.navigate(a.action||i,{preventScrollReset:a.preventScrollReset,formData:u,body:c,formMethod:a.method||s,formEncType:a.encType||o,replace:a.replace,state:a.state,fromRouteId:r,unstable_flushSync:a.unstable_flushSync,unstable_viewTransition:a.unstable_viewTransition})},[e,t,r])}function br(e,t){let{relative:r}=t===void 0?{}:t,{basename:n}=l.useContext(X),a=l.useContext(We);a||j(!1);let[i]=a.matches.slice(-1),s=D({},ie(e||".",{relative:r})),o=B();if(e==null){s.search=o.search;let u=new URLSearchParams(s.search);u.has("index")&&u.get("index")===""&&(u.delete("index"),s.search=u.toString()?"?"+u.toString():"")}return(!e||e===".")&&i.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:kt([n,s.pathname])),ge(s)}function _r(e){var t;let{key:r}=e===void 0?{}:e,{router:n}=ue(J.UseFetcher),a=Le(K.UseFetcher),i=l.useContext(tt),s=l.useContext(We),o=(t=s.matches[s.matches.length-1])==null?void 0:t.route.id;i||j(!1),s||j(!1),o==null&&j(!1);let u=$e?$e():"",[c,f]=l.useState(r||u);r&&r!==c?f(r):c||f(nt()),l.useEffect(()=>(n.getFetcher(c),()=>{n.deleteFetcher(c)}),[n,c]);let d=l.useCallback((p,w)=>{o||j(!1),n.fetch(c,o,p,w)},[c,o,n]),h=at(),y=l.useCallback((p,w)=>{h(p,D({},w,{navigate:!1,fetcherKey:c}))},[c,h]),m=l.useMemo(()=>l.forwardRef((w,g)=>l.createElement(wr,D({},w,{navigate:!1,fetcherKey:c,ref:g}))),[c]),v=a.fetchers.get(c)||Nt,R=i.get(c);return l.useMemo(()=>D({Form:m,submit:y,load:d},v,{data:R}),[m,y,d,v,R])}function Jn(){let e=Le(K.UseFetchers);return Array.from(e.fetchers.entries()).map(t=>{let[r,n]=t;return D({},n,{key:r})})}const je="react-router-scroll-positions";let Q={};function zn(e){let{getKey:t,storageKey:r}=e===void 0?{}:e,{router:n}=ue(J.UseScrollRestoration),{restoreScrollPosition:a,preventScrollReset:i}=Le(K.UseScrollRestoration),{basename:s}=l.useContext(X),o=B(),u=Ft(),c=It();l.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),xr(l.useCallback(()=>{if(c.state==="idle"){let f=(t?t(o,u):null)||o.key;Q[f]=window.scrollY}try{sessionStorage.setItem(r||je,JSON.stringify(Q))}catch{}window.history.scrollRestoration="auto"},[r,t,c.state,o,u])),typeof document<"u"&&(l.useLayoutEffect(()=>{try{let f=sessionStorage.getItem(r||je);f&&(Q=JSON.parse(f))}catch{}},[r]),l.useLayoutEffect(()=>{let f=t&&s!=="/"?(h,y)=>t(D({},h,{pathname:M(h.pathname,s)||h.pathname}),y):t,d=n==null?void 0:n.enableScrollRestoration(Q,()=>window.scrollY,f);return()=>d&&d()},[n,s,t]),l.useLayoutEffect(()=>{if(a!==!1){if(typeof a=="number"){window.scrollTo(0,a);return}if(o.hash){let f=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(f){f.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[o,a,i]))}function xr(e,t){let{capture:r}={};l.useEffect(()=>{let n=r!=null?{capture:r}:void 0;return window.addEventListener("pagehide",e,n),()=>{window.removeEventListener("pagehide",e,n)}},[e,r])}function Lr(e,t){t===void 0&&(t={});let r=l.useContext(et);r==null&&j(!1);let{basename:n}=ue(J.useViewTransitionState),a=ie(e,{relative:t.relative});if(!r.isTransitioning)return!1;let i=M(r.currentLocation.pathname,n)||r.currentLocation.pathname,s=M(r.nextLocation.pathname,n)||r.nextLocation.pathname;return Ne(a.pathname,s)!=null||Ne(a.pathname,i)!=null}var Tr=-1,Pr=-2,Or=-3,Cr=-4,kr=-5,Ar=-6,Dr=-7,Nr="B",Fr="D",it="E",Ir="M",$r="N",ot="P",jr="R",Ur="S",Mr="Y",Hr="U",Br="Z",lt=class{constructor(){G(this,"promise");G(this,"resolve");G(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function Jr(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),i=(t+a).split(`
|
|
19
|
+
`);t=i.pop()||"";for(const s of i)n.enqueue(s)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var ye=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function we(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return A.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;return r.push(...e),t.length=r.length,A.call(this,n)}function A(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;switch(e){case Dr:return;case kr:return null;case Pr:return NaN;case Ar:return 1/0;case Or:return-1/0;case Cr:return-0}if(t[e])return t[e];const i=r[e];if(!i||typeof i!="object")return t[e]=i;if(Array.isArray(i))if(typeof i[0]=="string"){const[s,o,u]=i;switch(s){case Fr:return t[e]=new Date(o);case Hr:return t[e]=new URL(o);case Nr:return t[e]=BigInt(o);case jr:return t[e]=new RegExp(o,u);case Mr:return t[e]=Symbol.for(o);case Ur:const c=new Set;t[e]=c;for(let v=1;v<i.length;v++)c.add(A.call(this,i[v]));return c;case Ir:const f=new Map;t[e]=f;for(let v=1;v<i.length;v+=2)f.set(A.call(this,i[v]),A.call(this,i[v+1]));return f;case $r:const d=Object.create(null);t[e]=d;for(const v in o)d[A.call(this,Number(v))]=A.call(this,o[v]);return d;case ot:if(t[o])return t[e]=t[o];{const v=new lt;return n[o]=v,t[e]=v.promise}case it:const[,h,y]=i;let m=y&&ye&&ye[y]?new ye[y](h):new Error(h);return t[e]=m,m;case Br:return A.call(this,o);default:if(Array.isArray(a)){const v=i.slice(1).map(R=>A.call(this,R));for(const R of a){const b=R(i[0],...v);if(b)return t[e]=b.value}}throw new SyntaxError}}else{const s=[];t[e]=s;for(let o=0;o<i.length;o++){const u=i[o];u!==Tr&&(s[o]=A.call(this,u))}return s}else{const s={};t[e]=s;for(const o in i)s[A.call(this,Number(o))]=A.call(this,i[o]);return s}}async function zr(e,t){const{plugins:r}=t??{},n=new lt,a=e.pipeThrough(Jr()).getReader(),i={values:[],hydrated:[],deferred:{},plugins:r},s=await Yr.call(i,a);let o=n.promise;return s.done?n.resolve():o=Wr.call(i,a).then(n.resolve).catch(u=>{for(const c of Object.values(i.deferred))c.reject(u);n.reject(u)}),{done:o.then(()=>a.closed),value:s.value}}async function Yr(e){const t=await e.read();if(!t.value)throw new SyntaxError;let r;try{r=JSON.parse(t.value)}catch{throw new SyntaxError}return{done:t.done,value:we.call(this,r)}}async function Wr(e){let t=await e.read();for(;!t.done;){if(!t.value)continue;const r=t.value;switch(r[0]){case ot:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let o;try{o=JSON.parse(s)}catch{throw new SyntaxError}const u=we.call(this,o);i.resolve(u);break}case it:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let o;try{o=JSON.parse(s)}catch{throw new SyntaxError}const u=we.call(this,o);i.reject(u);break}default:throw new SyntaxError}t=await e.read()}}/**
|
|
20
20
|
* @remix-run/server-runtime v2.10.0
|
|
21
21
|
*
|
|
22
22
|
* Copyright (c) Remix Software Inc.
|
|
@@ -61,7 +61,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
61
61
|
* LICENSE.md file in the root directory of this source tree.
|
|
62
62
|
*
|
|
63
63
|
* @license MIT
|
|
64
|
-
*/function
|
|
64
|
+
*/function Vr(e,t,r){let n=e.map(i=>{var s;let o=t[i.route.id],u=r.routes[i.route.id];return[u.css?u.css.map(c=>({rel:"stylesheet",href:c})):[],(o==null||(s=o.links)===null||s===void 0?void 0:s.call(o))||[]]}).flat(2),a=qr(e,r);return ft(n,a)}async function ct(e,t){var r,n;if(!e.css&&!t.links||!tn())return;let a=[((r=e.css)===null||r===void 0?void 0:r.map(o=>({rel:"stylesheet",href:o})))??[],((n=t.links)===null||n===void 0?void 0:n.call(t))??[]].flat(1);if(a.length===0)return;let i=[];for(let o of a)!Te(o)&&o.rel==="stylesheet"&&i.push({...o,rel:"preload",as:"style"});let s=i.filter(o=>(!o.media||window.matchMedia(o.media).matches)&&!document.querySelector(`link[rel="stylesheet"][href="${o.href}"]`));await Promise.all(s.map(Kr))}async function Kr(e){return new Promise(t=>{let r=document.createElement("link");Object.assign(r,e);function n(){document.head.contains(r)&&document.head.removeChild(r)}r.onload=()=>{n(),t()},r.onerror=()=>{n(),t()},document.head.appendChild(r)})}function Te(e){return e!=null&&typeof e.page=="string"}function Xr(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Gr(e,t,r){let n=await Promise.all(e.map(async a=>{let i=await ut(t.routes[a.route.id],r);return i.links?i.links():[]}));return ft(n.flat(1).filter(Xr).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function Ue(e,t,r,n,a,i){let s=dt(e),o=(f,d)=>r[d]?f.route.id!==r[d].route.id:!0,u=(f,d)=>{var h;return r[d].pathname!==f.pathname||((h=r[d].route.path)===null||h===void 0?void 0:h.endsWith("*"))&&r[d].params["*"]!==f.params["*"]};return i==="data"&&a.search!==s.search?t.filter((f,d)=>{if(!n.routes[f.route.id].hasLoader)return!1;if(o(f,d)||u(f,d))return!0;if(f.route.shouldRevalidate){var y;let m=f.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((y=r[0])===null||y===void 0?void 0:y.params)||{},nextUrl:new URL(e,window.origin),nextParams:f.params,defaultShouldRevalidate:!0});if(typeof m=="boolean")return m}return!0}):t.filter((f,d)=>{let h=n.routes[f.route.id];return(i==="assets"||h.hasLoader)&&(o(f,d)||u(f,d))})}function Zr(e,t,r){let n=dt(e);return Pe(t.filter(a=>r.routes[a.route.id].hasLoader&&!r.routes[a.route.id].hasClientLoader).map(a=>{let{pathname:i,search:s}=n,o=new URLSearchParams(s);return o.set("_data",a.route.id),`${i}?${o}`}))}function Qr(e,t){return Pe(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function qr(e,t){return Pe(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function Pe(e){return[...new Set(e)]}function en(e){let t={},r=Object.keys(e).sort();for(let n of r)t[n]=e[n];return t}function ft(e,t){let r=new Set,n=new Set(t);return e.reduce((a,i)=>{if(t&&!Te(i)&&i.as==="script"&&i.href&&n.has(i.href))return a;let o=JSON.stringify(en(i));return r.has(o)||(r.add(o),a.push({key:o,link:i})),a},[])}function dt(e){let t=$t(e);return t.search===void 0&&(t.search=""),t}let q;function tn(){if(q!==void 0)return q;let e=document.createElement("link");return q=e.relList.supports("preload"),e=null,q}/**
|
|
65
65
|
* @remix-run/react v2.10.0
|
|
66
66
|
*
|
|
67
67
|
* Copyright (c) Remix Software Inc.
|
|
@@ -70,7 +70,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
70
70
|
* LICENSE.md file in the root directory of this source tree.
|
|
71
71
|
*
|
|
72
72
|
* @license MIT
|
|
73
|
-
*/const
|
|
73
|
+
*/const rn={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},nn=/[&><\u2028\u2029]/g;function ee(e){return e.replace(nn,t=>rn[t])}function Me(e){return{__html:e}}/**
|
|
74
74
|
* @remix-run/react v2.10.0
|
|
75
75
|
*
|
|
76
76
|
* Copyright (c) Remix Software Inc.
|
|
@@ -79,7 +79,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
79
79
|
* LICENSE.md file in the root directory of this source tree.
|
|
80
80
|
*
|
|
81
81
|
* @license MIT
|
|
82
|
-
*/function
|
|
82
|
+
*/function an(e){return e.headers.get("X-Remix-Catch")!=null}function on(e){return e.headers.get("X-Remix-Error")!=null}function ln(e){return ht(e)&&e.status>=400&&e.headers.get("X-Remix-Error")==null&&e.headers.get("X-Remix-Catch")==null&&e.headers.get("X-Remix-Response")==null}function sn(e){return e.headers.get("X-Remix-Redirect")!=null}function un(e){var t;return!!((t=e.headers.get("Content-Type"))!==null&&t!==void 0&&t.match(/text\/remix-deferred/))}function ht(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function cn(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}async function mt(e,t,r=0){let n=new URL(e.url);n.searchParams.set("_data",t),r>0&&await new Promise(o=>setTimeout(o,5**r*10));let a=await yt(e),i=window.__remixRevalidation,s=await fetch(n.href,a).catch(o=>{if(typeof i=="number"&&i===window.__remixRevalidation&&(o==null?void 0:o.name)==="TypeError"&&r<3)return mt(e,t,r+1);throw o});if(on(s)){let o=await s.json(),u=new Error(o.message);return u.stack=o.stack,u}if(ln(s)){let o=await s.text(),u=new Error(o);return u.stack=void 0,u}return s}async function yt(e){let t={signal:e.signal};if(e.method!=="GET"){t.method=e.method;let r=e.headers.get("Content-Type");r&&/\bapplication\/json\b/.test(r)?(t.headers={"Content-Type":r},t.body=JSON.stringify(await e.json())):r&&/\btext\/plain\b/.test(r)?(t.headers={"Content-Type":r},t.body=await e.text()):r&&/\bapplication\/x-www-form-urlencoded\b/.test(r)?t.body=new URLSearchParams(await e.text()):t.body=await e.formData()}return t}const fn="__deferred_promise:";async function dn(e){if(!e)throw new Error("parseDeferredReadableStream requires stream argument");let t,r={};try{let n=hn(e),i=(await n.next()).value;if(!i)throw new Error("no critical data");let s=JSON.parse(i);if(typeof s=="object"&&s!==null)for(let[o,u]of Object.entries(s))typeof u!="string"||!u.startsWith(fn)||(t=t||{},t[o]=new Promise((c,f)=>{r[o]={resolve:d=>{c(d),delete r[o]},reject:d=>{f(d),delete r[o]}}}));return(async()=>{try{for await(let o of n){let[u,...c]=o.split(":"),f=c.join(":"),d=JSON.parse(f);if(u==="data")for(let[h,y]of Object.entries(d))r[h]&&r[h].resolve(y);else if(u==="error")for(let[h,y]of Object.entries(d)){let m=new Error(y.message);m.stack=y.stack,r[h]&&r[h].reject(m)}}for(let[o,u]of Object.entries(r))u.reject(new jt(`Deferred ${o} will never be resolved`))}catch(o){for(let u of Object.values(r))u.reject(o)}})(),new Ut({...s,...t})}catch(n){for(let a of Object.values(r))a.reject(n);throw n}}async function*hn(e){let t=e.getReader(),r=[],n=[],a=!1,i=new TextEncoder,s=new TextDecoder,o=async()=>{if(n.length>0)return n.shift();for(;!a&&n.length===0;){let c=await t.read();if(c.done){a=!0;break}r.push(c.value);try{let d=s.decode(He(...r)).split(`
|
|
83
83
|
|
|
84
84
|
`);if(d.length>=2&&(n.push(...d.slice(0,-1)),r=[i.encode(d.slice(-1).join(`
|
|
85
85
|
|
|
@@ -94,7 +94,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
94
94
|
* LICENSE.md file in the root directory of this source tree.
|
|
95
95
|
*
|
|
96
96
|
* @license MIT
|
|
97
|
-
*/function
|
|
97
|
+
*/function Yn(e,t){return async({request:r,matches:n})=>r.method!=="GET"?mn(r,n):yn(e,t,r,n)}function mn(e,t){return Promise.all(t.map(async r=>{let n;return{...await r.resolve(async i=>({type:"data",result:await i(async()=>{let o=Oe(e.url),u=await yt(e),{data:c,status:f}=await Ee(o,u);return n=f,Se(c,r.route.id)}),status:n})),status:n}}))}function yn(e,t,r,n){let a;return Promise.all(n.map(async i=>i.resolve(async s=>{let o,u=pn(Oe(r.url));return e.routes[i.route.id].hasClientLoader?o=await s(async()=>{u.searchParams.set("_routes",i.route.id);let{data:c}=await Ee(u);return Be(c,i.route.id)}):o=await s(async()=>{a||(u=pt(e,t,n.map(f=>f.route),n.filter(f=>f.shouldLoad).map(f=>f.route),u),a=Ee(u).then(({data:f})=>f));let c=await a;return Be(c,i.route.id)}),{type:"data",result:o}})))}function pn(e){let t=e.searchParams.getAll("index");e.searchParams.delete("index");let r=[];for(let n of t)n&&r.push(n);for(let n of r)e.searchParams.append("index",n);return e}function pt(e,t,r,n,a){let i=c=>c.filter(f=>e.routes[f].hasLoader).join(",");if(!r.some(c=>{var f,d;return((f=t[c.id])===null||f===void 0?void 0:f.shouldRevalidate)||((d=e.routes[c.id])===null||d===void 0?void 0:d.hasClientLoader)}))return a;let o=i(r.map(c=>c.id)),u=i(n.filter(c=>{var f;return!((f=e.routes[c.id])!==null&&f!==void 0&&f.hasClientLoader)}).map(c=>c.id));return o!==u&&a.searchParams.set("_routes",u),a}function Oe(e){let t=typeof e=="string"?new URL(e,window.location.origin):e;return t.pathname=`${t.pathname==="/"?"_root":t.pathname}.data`,t}async function Ee(e,t){let r=await fetch(e,t);H(r.body,"No response body to decode");try{let n=await gn(r.body,window);return{status:r.status,data:n.value}}catch(n){throw console.error(n),new Error(`Unable to decode turbo-stream response from URL: ${e.toString()}`)}}function gn(e,t){return zr(e,{plugins:[(r,...n)=>{if(r==="SanitizedError"){let[a,i,s]=n,o=Error;a&&a in t&&typeof t[a]=="function"&&(o=t[a]);let u=new o(i);return u.stack=s,{value:u}}if(r==="ErrorResponse"){let[a,i,s]=n;return{value:new ae(i,s,a)}}if(r==="SingleFetchRedirect")return{value:{[st]:n[0]}}}]})}function Be(e,t){let r=e[st];return r?Se(r,t):e[t]!==void 0?Se(e[t],t):null}function Se(e,t){if("error"in e)throw e.error;if("redirect"in e){let r={};return e.revalidate&&(r["X-Remix-Revalidate"]="yes"),e.reload&&(r["X-Remix-Reload-Document"]="yes"),Ke(e.redirect,{status:e.status,headers:r})}else{if("data"in e)return e.data;throw new Error(`No response found for routeId "${t}"`)}}/**
|
|
98
98
|
* @remix-run/react v2.10.0
|
|
99
99
|
*
|
|
100
100
|
* Copyright (c) Remix Software Inc.
|
|
@@ -103,11 +103,11 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
103
103
|
* LICENSE.md file in the root directory of this source tree.
|
|
104
104
|
*
|
|
105
105
|
* @license MIT
|
|
106
|
-
*/class
|
|
106
|
+
*/class Wn extends l.Component{constructor(t){super(t),this.state={error:t.error||null,location:t.location}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location?{error:t.error||null,location:t.location}:{error:t.error||r.error,location:r.location}}render(){return this.state.error?l.createElement(gt,{error:this.state.error,isOutsideRemixApp:!0}):this.props.children}}function gt({error:e,isOutsideRemixApp:t}){console.error(e);let r=l.createElement("script",{dangerouslySetInnerHTML:{__html:`
|
|
107
107
|
console.log(
|
|
108
108
|
"💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information."
|
|
109
109
|
);
|
|
110
|
-
`}});if(
|
|
110
|
+
`}});if(Mt(e))return l.createElement(Re,{title:"Unhandled Thrown Response!"},l.createElement("h1",{style:{fontSize:"24px"}},e.status," ",e.statusText),r);let n;if(e instanceof Error)n=e;else{let a=e==null?"Unknown Error":typeof e=="object"&&"toString"in e?e.toString():JSON.stringify(e);n=new Error(a)}return l.createElement(Re,{title:"Application Error!",isOutsideRemixApp:t},l.createElement("h1",{style:{fontSize:"24px"}},"Application Error"),l.createElement("pre",{style:{padding:"2rem",background:"hsla(10, 50%, 50%, 0.1)",color:"red",overflow:"auto"}},n.stack),r)}function Re({title:e,renderScripts:t,isOutsideRemixApp:r,children:n}){var a;let{routeModules:i}=z();return(a=i.root)!==null&&a!==void 0&&a.Layout&&!r?n:l.createElement("html",{lang:"en"},l.createElement("head",null,l.createElement("meta",{charSet:"utf-8"}),l.createElement("meta",{name:"viewport",content:"width=device-width,initial-scale=1,viewport-fit=cover"}),l.createElement("title",null,e)),l.createElement("body",null,l.createElement("main",{style:{fontFamily:"system-ui, sans-serif",padding:"2rem"}},n,t?l.createElement(Fn,null):null)))}/**
|
|
111
111
|
* @remix-run/react v2.10.0
|
|
112
112
|
*
|
|
113
113
|
* Copyright (c) Remix Software Inc.
|
|
@@ -116,7 +116,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
116
116
|
* LICENSE.md file in the root directory of this source tree.
|
|
117
117
|
*
|
|
118
118
|
* @license MIT
|
|
119
|
-
*/function
|
|
119
|
+
*/function vn(){return l.createElement(Re,{title:"Loading...",renderScripts:!0},l.createElement("script",{dangerouslySetInnerHTML:{__html:`
|
|
120
120
|
console.log(
|
|
121
121
|
"💿 Hey developer 👋. You can provide a way better UX than this " +
|
|
122
122
|
"when your app is running \`clientLoader\` functions on hydration. " +
|
|
@@ -131,7 +131,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
131
131
|
* LICENSE.md file in the root directory of this source tree.
|
|
132
132
|
*
|
|
133
133
|
* @license MIT
|
|
134
|
-
*/function vt(e){let t={};return Object.values(e).forEach(r=>{let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}),t}function
|
|
134
|
+
*/function vt(e){let t={};return Object.values(e).forEach(r=>{let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}),t}function wn(e,t,r){let n=wt(t),a=t.HydrateFallback&&(!r||e.id==="root")?t.HydrateFallback:e.id==="root"?vn:void 0,i=t.ErrorBoundary?t.ErrorBoundary:e.id==="root"?()=>l.createElement(gt,{error:Ht()}):void 0;return e.id==="root"&&t.Layout?{...n?{element:l.createElement(t.Layout,null,l.createElement(n,null))}:{Component:n},...i?{errorElement:l.createElement(t.Layout,null,l.createElement(i,null))}:{ErrorBoundary:i},...a?{hydrateFallbackElement:l.createElement(t.Layout,null,l.createElement(a,null))}:{HydrateFallback:a}}:{Component:n,ErrorBoundary:i,HydrateFallback:a}}function Vn(e,t,r,n,a,i){return Ce(t,r,n,a,i,"",vt(t),e)}function te(e,t,r){if(r){let s=`You cannot call ${e==="action"?"serverAction()":"serverLoader()"} in SPA Mode (routeId: "${t.id}")`;throw console.error(s),new ae(400,"Bad Request",new Error(s),!0)}let a=`You are trying to call ${e==="action"?"serverAction()":"serverLoader()"} on a route that does not have a server ${e} (routeId: "${t.id}")`;if(e==="loader"&&!t.hasLoader||e==="action"&&!t.hasAction)throw console.error(a),new ae(400,"Bad Request",new Error(a),!0)}function pe(e,t){let r=e==="clientAction"?"a":"an",n=`Route "${t}" does not have ${r} ${e}, but you are trying to submit to it. To fix this, please add ${r} \`${e}\` function to the route`;throw console.error(n),new ae(405,"Method Not Allowed",new Error(n),!0)}function Ce(e,t,r,n,a,i="",s=vt(e),o){return(s[i]||[]).map(u=>{let c=t[u.id];async function f(w,g,x){if(typeof x=="function")return await x();let S=await Sn(w,u);return g?Rn(S):S}function d(w,g,x){return u.hasLoader?f(w,g,x):Promise.resolve(null)}function h(w,g,x){if(!u.hasAction)throw pe("action",u.id);return f(w,g,x)}async function y(w){let g=t[u.id],x=g?ct(u,g):Promise.resolve();try{return w()}finally{await x}}let m={id:u.id,index:u.index,path:u.path};if(c){var v,R,b;Object.assign(m,{...m,...wn(u,c,a),handle:c.handle,shouldRevalidate:o?Je(u.id,c.shouldRevalidate,o):c.shouldRevalidate});let w=r==null||(v=r.loaderData)===null||v===void 0?void 0:v[u.id],g=r==null||(R=r.errors)===null||R===void 0?void 0:R[u.id],x=o==null&&(((b=c.clientLoader)===null||b===void 0?void 0:b.hydrate)===!0||!u.hasLoader);m.loader=async({request:S,params:E},_)=>{try{return await y(async()=>(H(c,"No `routeModule` available for critical-route loader"),c.clientLoader?c.clientLoader({request:S,params:E,async serverLoader(){if(te("loader",u,a),x){if(g!==void 0)throw g;return w}return d(S,!0,_)}}):a?null:d(S,!1,_)))}finally{x=!1}},m.loader.hydrate=_n(u,c,a),m.action=({request:S,params:E},_)=>y(async()=>{if(H(c,"No `routeModule` available for critical-route action"),!c.clientAction){if(a)throw pe("clientAction",u.id);return h(S,!1,_)}return c.clientAction({request:S,params:E,async serverAction(){return te("action",u,a),h(S,!0,_)}})})}else u.hasClientLoader||(m.loader=({request:w},g)=>y(()=>a?Promise.resolve(null):d(w,!1,g))),u.hasClientAction||(m.action=({request:w},g)=>y(()=>{if(a)throw pe("clientAction",u.id);return h(w,!1,g)})),m.lazy=async()=>{let w=await En(u,t),g={...w};if(w.clientLoader){let x=w.clientLoader;g.loader=(S,E)=>x({...S,async serverLoader(){return te("loader",u,a),d(S.request,!0,E)}})}if(w.clientAction){let x=w.clientAction;g.action=(S,E)=>x({...S,async serverAction(){return te("action",u,a),h(S.request,!0,E)}})}return o&&(g.shouldRevalidate=Je(u.id,w.shouldRevalidate,o)),{...g.loader?{loader:g.loader}:{},...g.action?{action:g.action}:{},hasErrorBoundary:g.hasErrorBoundary,shouldRevalidate:g.shouldRevalidate,handle:g.handle,Component:g.Component,ErrorBoundary:g.ErrorBoundary}};let p=Ce(e,t,r,n,a,u.id,s,o);return p.length>0&&(m.children=p),m})}function Je(e,t,r){let n=!1;return a=>n?t?t(a):a.defaultShouldRevalidate:(n=!0,r.has(e))}async function En(e,t){let r=await ut(e,t);return await ct(e,r),{Component:wt(r),ErrorBoundary:r.ErrorBoundary,clientAction:r.clientAction,clientLoader:r.clientLoader,handle:r.handle,links:r.links,meta:r.meta,shouldRevalidate:r.shouldRevalidate}}async function Sn(e,t){let r=await mt(e,t.id);if(r instanceof Error)throw r;if(sn(r))throw bn(r);if(an(r))throw r;return un(r)&&r.body?await dn(r.body):r}function Rn(e){if(cn(e))return e.data;if(ht(e)){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.json():e.text()}return e}function bn(e){let t=parseInt(e.headers.get("X-Remix-Status"),10)||302,r=e.headers.get("X-Remix-Redirect"),n={},a=e.headers.get("X-Remix-Revalidate");a&&(n["X-Remix-Revalidate"]=a);let i=e.headers.get("X-Remix-Reload-Document");return i&&(n["X-Remix-Reload-Document"]=i),Ke(r,{status:t,headers:n})}function wt(e){if(e.default==null)return;if(!(typeof e.default=="object"&&Object.keys(e.default).length===0))return e.default}function _n(e,t,r){return r&&e.id!=="root"||t.clientLoader!=null&&(t.clientLoader.hydrate===!0||e.hasLoader!==!0)}/**
|
|
135
135
|
* @remix-run/react v2.10.0
|
|
136
136
|
*
|
|
137
137
|
* Copyright (c) Remix Software Inc.
|
|
@@ -140,7 +140,7 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
140
140
|
* LICENSE.md file in the root directory of this source tree.
|
|
141
141
|
*
|
|
142
142
|
* @license MIT
|
|
143
|
-
*/const
|
|
143
|
+
*/const xn=7680;let U=null;function ke(e,t){return e.unstable_fogOfWar===!0&&!t}function Ln(e,t){let r=new Set(t.state.matches.map(s=>s.route.id)),n=t.state.location.pathname.split("/").filter(Boolean),a=["/"];for(n.pop();n.length>0;)a.push(`/${n.join("/")}`),n.pop();a.forEach(s=>{let o=Xe(t.routes,s,t.basename);o&&o.forEach(u=>r.add(u.route.id))});let i=[...r].reduce((s,o)=>Object.assign(s,{[o]:e.routes[o]}),{});return{...e,routes:i}}function Kn(e,t,r,n,a){return ke(r,n)?(U={nextPaths:new Set,knownGoodPaths:new Set,known404Paths:new Set},{enabled:!0,patchRoutesOnMiss:async({path:i,patch:s})=>{U.known404Paths.has(i)||U.knownGoodPaths.has(i)||await Et([i],U,e,t,r,n,a,s)}}):{enabled:!1}}function Xn(e,t,r,n,a){l.useEffect(()=>{var i;if(!ke(n,a)||((i=navigator.connection)===null||i===void 0?void 0:i.saveData)===!0)return;function s(d){if(!d)return;let h=new URL(d,window.location.origin),{knownGoodPaths:y,known404Paths:m,nextPaths:v}=U;y.has(h.pathname)||m.has(h.pathname)||v.add(h.pathname)}async function o(){let d=Tn(U);if(d.length!==0)try{await Et(d,U,t,r,n,a,e.basename,e.patchRoutes)}catch(h){console.error("Failed to fetch manifest patches",h)}}document.body.querySelectorAll("a[data-discover]").forEach(d=>s(d.getAttribute("href"))),o();let u=Pn(o,100);function c(d){return d.nodeType===Node.ELEMENT_NODE}let f=new MutationObserver(d=>{let h=new Set;d.forEach(y=>{[y.target,...y.addedNodes].forEach(m=>{c(m)&&(m.tagName==="A"&&m.getAttribute("data-discover")?h.add(m):m.tagName!=="A"&&m.querySelectorAll("a[data-discover]").forEach(v=>h.add(v)))})}),h.forEach(y=>s(y.getAttribute("href"))),u()});return f.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["data-discover","href"]}),()=>f.disconnect()},[n,a,t,r,e])}function Tn(e,t){let{knownGoodPaths:r,known404Paths:n,nextPaths:a}=e;return Array.from(a.keys()).filter(i=>r.has(i)||n.has(i)?(a.delete(i),!1):!0)}async function Et(e,t,r,n,a,i,s,o){let{nextPaths:u,knownGoodPaths:c,known404Paths:f}=t,d=`${s??"/"}/__manifest`.replace(/\/+/g,"/"),h=new URL(d,window.location.origin);if(h.searchParams.set("version",r.version),e.forEach(p=>h.searchParams.append("p",p)),h.toString().length>xn){u.clear();return}let y=await fetch(h);if(y.ok){if(y.status>=400)throw new Error(await y.text())}else throw new Error(`${y.status} ${y.statusText}`);let m=await y.json(),v=new Set(Object.keys(r.routes)),R=Object.values(m.patches).reduce((p,w)=>v.has(w.id)?p:Object.assign(p,{[w.id]:w}),{});Object.assign(r.routes,R),m.notFoundPaths.forEach(p=>f.add(p)),e.forEach(p=>c.add(p));let b=new Set;Object.values(R).forEach(p=>{(!p.parentId||!R[p.parentId])&&b.add(p.parentId)}),b.forEach(p=>o(p||null,Ce(R,n,null,a,i,p)))}function Pn(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}/**
|
|
144
144
|
* @remix-run/react v2.10.0
|
|
145
145
|
*
|
|
146
146
|
* Copyright (c) Remix Software Inc.
|
|
@@ -149,9 +149,9 @@ var Lt=Object.defineProperty;var Tt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,config
|
|
|
149
149
|
* LICENSE.md file in the root directory of this source tree.
|
|
150
150
|
*
|
|
151
151
|
* @license MIT
|
|
152
|
-
*/function St(){let e=l.useContext(be);return H(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function ce(){let e=l.useContext(oe);return H(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}const Rt=l.createContext(void 0);Rt.displayName="Remix";function z(){let e=l.useContext(Rt);return H(e,"You must render this element inside a <Remix> element"),e}function bt(e,t){let[r,n]=l.useState(!1),[a,i]=l.useState(!1),{onFocus:s,onBlur:o,onMouseEnter:u,onMouseLeave:c,onTouchStart:f}=t,d=l.useRef(null);l.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let m=R=>{R.forEach(b=>{i(b.isIntersecting)})},v=new IntersectionObserver(m,{threshold:.5});return d.current&&v.observe(d.current),()=>{v.disconnect()}}},[e]);let h=()=>{e==="intent"&&n(!0)},y=()=>{e==="intent"&&(n(!1),i(!1))};return l.useEffect(()=>{if(r){let m=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(m)}}},[r]),[a,d,{onFocus:W(s,h),onBlur:W(o,y),onMouseEnter:W(u,h),onMouseLeave:W(c,y),onTouchStart:W(f,h)}]}const _t=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;let
|
|
152
|
+
*/function St(){let e=l.useContext(be);return H(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function ce(){let e=l.useContext(oe);return H(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}const Rt=l.createContext(void 0);Rt.displayName="Remix";function z(){let e=l.useContext(Rt);return H(e,"You must render this element inside a <Remix> element"),e}function bt(e,t){let[r,n]=l.useState(!1),[a,i]=l.useState(!1),{onFocus:s,onBlur:o,onMouseEnter:u,onMouseLeave:c,onTouchStart:f}=t,d=l.useRef(null);l.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let m=R=>{R.forEach(b=>{i(b.isIntersecting)})},v=new IntersectionObserver(m,{threshold:.5});return d.current&&v.observe(d.current),()=>{v.disconnect()}}},[e]);let h=()=>{e==="intent"&&n(!0)},y=()=>{e==="intent"&&(n(!1),i(!1))};return l.useEffect(()=>{if(r){let m=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(m)}}},[r]),[a,d,{onFocus:W(s,h),onBlur:W(o,y),onMouseEnter:W(u,h),onMouseLeave:W(c,y),onTouchStart:W(f,h)}]}const _t=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;let On=l.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&_t.test(e),s=_e(e),[o,u,c]=bt(t,n);return l.createElement(l.Fragment,null,l.createElement(vr,P({},n,c,{ref:xt(a,u),to:e,"data-discover":!i&&r==="render"?"true":void 0})),o&&!i?l.createElement(De,{page:s}):null)});On.displayName="NavLink";let Cn=l.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&_t.test(e),s=_e(e),[o,u,c]=bt(t,n);return l.createElement(l.Fragment,null,l.createElement(rt,P({},n,c,{ref:xt(a,u),to:e,"data-discover":!i&&r==="render"?"true":void 0})),o&&!i?l.createElement(De,{page:s}):null)});Cn.displayName="Link";function W(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function Ae(e,t,r){if(r&&!ne)return[e[0]];if(t){let n=e.findIndex(a=>t[a.route.id]!==void 0);return e.slice(0,n+1)}return e}function Gn(){let{isSpaMode:e,manifest:t,routeModules:r,criticalCss:n}=z(),{errors:a,matches:i}=ce(),s=Ae(i,a,e),o=l.useMemo(()=>Vr(s,r,t),[s,r,t]);return l.createElement(l.Fragment,null,n?l.createElement("style",{dangerouslySetInnerHTML:{__html:n}}):null,o.map(({key:u,link:c})=>Te(c)?l.createElement(De,P({key:u},c)):l.createElement("link",P({key:u},c))))}function De({page:e,...t}){let{router:r}=St(),n=l.useMemo(()=>Xe(r.routes,e,r.basename),[r.routes,e,r.basename]);return n?l.createElement(An,P({page:e,matches:n},t)):(console.warn(`Tried to prefetch ${e} but no routes matched.`),null)}function kn(e){let{manifest:t,routeModules:r}=z(),[n,a]=l.useState([]);return l.useEffect(()=>{let i=!1;return Gr(e,t,r).then(s=>{i||a(s)}),()=>{i=!0}},[e,t,r]),n}function An({page:e,matches:t,...r}){let n=B(),{future:a,manifest:i,routeModules:s}=z(),{matches:o}=ce(),u=l.useMemo(()=>Ue(e,t,o,i,n,"data"),[e,t,o,i,n]),c=l.useMemo(()=>Ue(e,t,o,i,n,"assets"),[e,t,o,i,n]),f=l.useMemo(()=>Zr(e,u,i),[u,e,i]),d=l.useMemo(()=>Qr(c,i),[c,i]),h=kn(c),y=null;if(!a.unstable_singleFetch)y=f.map(m=>l.createElement("link",P({key:m,rel:"prefetch",as:"fetch",href:m},r)));else if(u.length>0){let m=pt(i,s,t.map(v=>v.route),u.map(v=>v.route),Oe(e));m.searchParams.get("_routes")!==""&&(y=l.createElement("link",P({key:m.pathname+m.search,rel:"prefetch",as:"fetch",href:m.pathname+m.search},r)))}return l.createElement(l.Fragment,null,y,d.map(m=>l.createElement("link",P({key:m,rel:"modulepreload",href:m},r))),h.map(({key:m,link:v})=>l.createElement("link",P({key:m},v))))}function Zn(){let{isSpaMode:e,routeModules:t}=z(),{errors:r,matches:n,loaderData:a}=ce(),i=B(),s=Ae(n,r,e),o=null;r&&(o=r[s[s.length-1].route.id]);let u=[],c=null,f=[];for(let d=0;d<s.length;d++){let h=s[d],y=h.route.id,m=a[y],v=h.params,R=t[y],b=[],p={id:y,data:m,meta:[],params:h.params,pathname:h.pathname,handle:h.route.handle,error:o};if(f[d]=p,R!=null&&R.meta?b=typeof R.meta=="function"?R.meta({data:m,params:v,location:i,matches:f,error:o}):Array.isArray(R.meta)?[...R.meta]:R.meta:c&&(b=[...c]),b=b||[],!Array.isArray(b))throw new Error("The route at "+h.route.path+` returns an invalid value. All route meta functions must return an array of meta objects.
|
|
153
153
|
|
|
154
|
-
To reference the meta function API, see https://remix.run/route/meta`);p.meta=b,f[d]=p,u=[...b],c=u}return l.createElement(l.Fragment,null,u.flat().map(d=>{if(!d)return null;if("tagName"in d){let{tagName:h,...y}=d;if(!
|
|
154
|
+
To reference the meta function API, see https://remix.run/route/meta`);p.meta=b,f[d]=p,u=[...b],c=u}return l.createElement(l.Fragment,null,u.flat().map(d=>{if(!d)return null;if("tagName"in d){let{tagName:h,...y}=d;if(!Dn(h))return console.warn(`A meta object uses an invalid tagName: ${h}. Expected either 'link' or 'meta'`),null;let m=h;return l.createElement(m,P({key:JSON.stringify(y)},y))}if("title"in d)return l.createElement("title",{key:"title"},String(d.title));if("charset"in d&&(d.charSet??(d.charSet=d.charset),delete d.charset),"charSet"in d&&d.charSet!=null)return typeof d.charSet=="string"?l.createElement("meta",{key:"charSet",charSet:d.charSet}):null;if("script:ld+json"in d)try{let h=JSON.stringify(d["script:ld+json"]);return l.createElement("script",{key:`script:ld+json:${h}`,type:"application/ld+json",dangerouslySetInnerHTML:{__html:h}})}catch{return null}return l.createElement("meta",P({key:JSON.stringify(d)},d))}))}function Dn(e){return typeof e=="string"&&/^(meta|link)$/.test(e)}function Nn(e){return l.createElement(Jt,e)}let ne=!1;function Fn(e){let{manifest:t,serverHandoffString:r,abortDelay:n,serializeError:a,isSpaMode:i,future:s,renderMeta:o}=z(),{router:u,static:c,staticContext:f}=St(),{matches:d}=ce(),h=ke(s,i);o&&(o.didRenderScripts=!0);let y=Ae(d,null,i);l.useEffect(()=>{ne=!0},[]);let m=(S,E)=>{let _;return a&&E instanceof Error?_=a(E):_=E,`${JSON.stringify(S)}:__remixContext.p(!1, ${ee(JSON.stringify(_))})`},v=(S,E,_)=>{let L;try{L=JSON.stringify(_)}catch(k){return m(E,k)}return`${JSON.stringify(E)}:__remixContext.p(${ee(L)})`},R=(S,E,_)=>{let L;return a&&_ instanceof Error?L=a(_):L=_,`__remixContext.r(${JSON.stringify(S)}, ${JSON.stringify(E)}, !1, ${ee(JSON.stringify(L))})`},b=(S,E,_)=>{let L;try{L=JSON.stringify(_)}catch(k){return R(S,E,k)}return`__remixContext.r(${JSON.stringify(S)}, ${JSON.stringify(E)}, ${ee(L)})`},p=[],w=l.useMemo(()=>{var S;let E=s.unstable_singleFetch?"window.__remixContext.stream = new ReadableStream({start(controller){window.__remixContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());":"",_=f?`window.__remixContext = ${r};${E}`:" ",L=s.unstable_singleFetch||f==null?void 0:f.activeDeferreds;_+=L?["__remixContext.p = function(v,e,p,x) {"," if (typeof e !== 'undefined') {",` x=new Error("Unexpected Server Error");
|
|
155
155
|
x.stack=undefined;`," p=Promise.reject(x);"," } else {"," p=Promise.resolve(v);"," }"," return p;","};","__remixContext.n = function(i,k) {"," __remixContext.t = __remixContext.t || {};"," __remixContext.t[i] = __remixContext.t[i] || {};"," let p = new Promise((r, e) => {__remixContext.t[i][k] = {r:(v)=>{r(v);},e:(v)=>{e(v);}};});",typeof n=="number"?`setTimeout(() => {if(typeof p._error !== "undefined" || typeof p._data !== "undefined"){return;} __remixContext.t[i][k].e(new Error("Server timeout."))}, ${n});`:""," return p;","};","__remixContext.r = function(i,k,v,e,p,x) {"," p = __remixContext.t[i][k];"," if (typeof e !== 'undefined') {",` x=new Error("Unexpected Server Error");
|
|
156
156
|
x.stack=undefined;`," p.e(x);"," } else {"," p.r(v);"," }","};"].join(`
|
|
157
157
|
`)+Object.entries(L).map(([T,N])=>{let F=new Set(N.pendingKeys),fe=N.deferredKeys.map(I=>{if(F.has(I))return p.push(l.createElement(ze,{key:`${T} | ${I}`,deferredData:N,routeId:T,dataKey:I,scriptProps:e,serializeData:b,serializeError:R})),`${JSON.stringify(I)}:__remixContext.n(${JSON.stringify(T)}, ${JSON.stringify(I)})`;{let de=N.data[I];return typeof de._error<"u"?m(I,de._error):v(T,I,de._data)}}).join(`,
|
|
@@ -159,8 +159,8 @@ To reference the meta function API, see https://remix.run/route/meta`);p.meta=b,
|
|
|
159
159
|
`)+(p.length>0?`__remixContext.a=${p.length};`:""):"";let k=c?`${(S=t.hmr)!==null&&S!==void 0&&S.runtime?`import ${JSON.stringify(t.hmr.runtime)};`:""}${h?"":`import ${JSON.stringify(t.url)}`};
|
|
160
160
|
${y.map((T,N)=>`import * as route${N} from ${JSON.stringify(t.routes[T.route.id].module)};`).join(`
|
|
161
161
|
`)}
|
|
162
|
-
${h?`window.__remixManifest = ${JSON.stringify(
|
|
162
|
+
${h?`window.__remixManifest = ${JSON.stringify(Ln(t,u),null,2)};`:""}
|
|
163
163
|
window.__remixRouteModules = {${y.map((T,N)=>`${JSON.stringify(T.route.id)}:route${N}`).join(",")}};
|
|
164
164
|
|
|
165
|
-
import(${JSON.stringify(t.entry.module)});`:" ";return l.createElement(l.Fragment,null,l.createElement("script",P({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:Me(_),type:void 0})),l.createElement("script",P({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:Me(k),type:"module",async:!0})))},[]);if(!c&&typeof __remixContext=="object"&&__remixContext.a)for(let S=0;S<__remixContext.a;S++)p.push(l.createElement(ze,{key:S,scriptProps:e,serializeData:b,serializeError:R}));let g=y.map(S=>{let E=t.routes[S.route.id];return(E.imports||[]).concat([E.module])}).flat(1),x=ne?[]:t.entry.imports.concat(g);return ne?null:l.createElement(l.Fragment,null,h?null:l.createElement("link",{rel:"modulepreload",href:t.url,crossOrigin:e.crossOrigin}),l.createElement("link",{rel:"modulepreload",href:t.entry.module,crossOrigin:e.crossOrigin})
|
|
166
|
-
//# sourceMappingURL=components-
|
|
165
|
+
import(${JSON.stringify(t.entry.module)});`:" ";return l.createElement(l.Fragment,null,l.createElement("script",P({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:Me(_),type:void 0})),l.createElement("script",P({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:Me(k),type:"module",async:!0})))},[]);if(!c&&typeof __remixContext=="object"&&__remixContext.a)for(let S=0;S<__remixContext.a;S++)p.push(l.createElement(ze,{key:S,scriptProps:e,serializeData:b,serializeError:R}));let g=y.map(S=>{let E=t.routes[S.route.id];return(E.imports||[]).concat([E.module])}).flat(1),x=ne?[]:t.entry.imports.concat(g);return ne?null:l.createElement(l.Fragment,null,h?null:l.createElement("link",{rel:"modulepreload",href:t.url,crossOrigin:e.crossOrigin}),l.createElement("link",{rel:"modulepreload",href:t.entry.module,crossOrigin:e.crossOrigin}),$n(x).map(S=>l.createElement("link",{key:S,rel:"modulepreload",href:S,crossOrigin:e.crossOrigin})),w,p)}function ze({dataKey:e,deferredData:t,routeId:r,scriptProps:n,serializeData:a,serializeError:i}){return typeof document>"u"&&t&&e&&r&&H(t.pendingKeys.includes(e),`Deferred data for route ${r} with key ${e} was not pending but tried to render a script for it.`),l.createElement(l.Suspense,{fallback:typeof document>"u"&&t&&e&&r?null:l.createElement("script",P({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}}))},typeof document>"u"&&t&&e&&r?l.createElement(Nn,{resolve:t.data[e],errorElement:l.createElement(In,{dataKey:e,routeId:r,scriptProps:n,serializeError:i}),children:s=>l.createElement("script",P({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:a(r,e,s)}}))}):l.createElement("script",P({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}})))}function In({dataKey:e,routeId:t,scriptProps:r,serializeError:n}){let a=zt();return l.createElement("script",P({},r,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:n(t,e,a)}}))}function $n(e){return[...new Set(e)]}function Qn(){return Bt()}function qn(e){return Yt(e)}function ea(e={}){return _r(e)}function xt(...e){return t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}export{Nn as A,wr as F,Cn as L,Zn as M,On as N,Xt as R,Fn as S,P as _,ea as a,Bn as b,at as c,Jn as d,qn as e,Vn as f,gn as g,Ce as h,H as i,Kn as j,Yn as k,Xn as l,Rt as m,Wn as n,Hn as o,z as p,zn as q,qe as r,_n as s,Gn as t,Qn as u};
|
|
166
|
+
//# sourceMappingURL=components-BQB6wEvm.js.map
|