@epic-web/workshop-app 4.22.3 → 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 +157 -83
- 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-ab53352b.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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as i,b as a,j as o,i as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=error-boundary-
|
|
1
|
+
import{a as i,b as a,j as o,i as c}from"./index-2WpY3jqc.js";import{g as m}from"./misc-LevbAJZ6.js";function f({defaultStatusHandler:s=({error:r})=>o.jsxs("p",{children:[r.status," ",r.data]}),statusHandlers:e,unexpectedErrorHandler:t=r=>o.jsx("p",{children:m(r)})}){const r=i(),n=a();return typeof document<"u"&&console.error(r),o.jsx("div",{className:"container flex items-center justify-center p-20 text-h2",children:c(r)?((e==null?void 0:e[r.status])??s)({error:r,params:n}):t(r)})}export{f as G};
|
|
2
|
+
//# sourceMappingURL=error-boundary-Bx1mDmB-.js.map
|
package/build/client/assets/{error-boundary-DDTvdkB4.js.map → error-boundary-Bx1mDmB-.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary-
|
|
1
|
+
{"version":3,"file":"error-boundary-Bx1mDmB-.js","sources":["../../../app/components/error-boundary.tsx"],"sourcesContent":["import {\n\tisRouteErrorResponse,\n\tuseParams,\n\tuseRouteError,\n\ttype ErrorResponse,\n} from '@remix-run/react'\nimport { getErrorMessage } from '#app/utils/misc.tsx'\n\ntype StatusHandler = (info: {\n\terror: ErrorResponse\n\tparams: Record<string, string | undefined>\n}) => React.ReactNode | null\n\nexport function GeneralErrorBoundary({\n\tdefaultStatusHandler = ({ error }) => (\n\t\t<p>\n\t\t\t{error.status} {error.data}\n\t\t</p>\n\t),\n\tstatusHandlers,\n\tunexpectedErrorHandler = (error) => <p>{getErrorMessage(error)}</p>,\n}: {\n\tdefaultStatusHandler?: StatusHandler\n\tstatusHandlers?: Record<number, StatusHandler>\n\tunexpectedErrorHandler?: (error: unknown) => React.ReactNode | null\n}) {\n\tconst error = useRouteError()\n\tconst params = useParams()\n\n\tif (typeof document !== 'undefined') {\n\t\tconsole.error(error)\n\t}\n\n\treturn (\n\t\t<div className=\"container flex items-center justify-center p-20 text-h2\">\n\t\t\t{isRouteErrorResponse(error)\n\t\t\t\t? (statusHandlers?.[error.status] ?? defaultStatusHandler)({\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tparams,\n\t\t\t\t\t})\n\t\t\t\t: unexpectedErrorHandler(error)}\n\t\t</div>\n\t)\n}\n"],"names":["GeneralErrorBoundary","defaultStatusHandler","error","statusHandlers","unexpectedErrorHandler","getErrorMessage","useRouteError","params","useParams","jsx","isRouteErrorResponse"],"mappings":"oGAaO,SAASA,EAAqB,CACpC,qBAAAC,EAAuB,CAAC,CAAE,MAAAC,CAAM,WAC9B,IACC,CAAA,SAAA,CAAMA,EAAA,OAAO,IAAEA,EAAM,IAAA,EACvB,EAED,eAAAC,EACA,uBAAAC,EAA0BF,SAAW,IAAG,CAAA,SAAAG,EAAgBH,CAAK,EAAE,CAChE,EAIG,CACF,MAAMA,EAAQI,IACRC,EAASC,IAEX,OAAA,OAAO,SAAa,KACvB,QAAQ,MAAMN,CAAK,EAInBO,EAAA,IAAC,MAAI,CAAA,UAAU,0DACb,SAAAC,EAAqBR,CAAK,IACvBC,GAAA,YAAAA,EAAiBD,EAAM,UAAWD,GAAsB,CACzD,MAAAC,EACA,OAAAK,CACA,CAAA,EACAH,EAAuBF,CAAK,CAChC,CAAA,CAEF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,r as t}from"./index-2WpY3jqc.js";import{E as l}from"./index-DGsreVfh.js";import{E as n}from"./epic-video-D8tfMIv8.js";import{L as a}from"./loading-DXKqMYHW.js";import{N as d}from"./nav-chevrons-BB1CK34B.js";import{M as c,E as m}from"./mdx-D0cZm8uP.js";import{a as p}from"./misc-LevbAJZ6.js";import{g as f}from"./seo-pBpFCWsy.js";import{P as h}from"./progress-fFpCuCyE.js";import{u as x,L as u}from"./components-BQB6wEvm.js";import"./index-TIHEbU65.js";import"./request-info-D6MPpnDd.js";import"./tooltip-Blm9zu1K.js";import"./pe-BmTNRcy_.js";import"./user-2ca9K5af.js";import"./workshop-config-COvWTBns.js";import"./progress-bar-HYCoNAkN.js";const q={getSitemapEntries:()=>[{route:"/finished"}]},R=({matches:s})=>{var o;const r=(o=s.find(i=>i.id==="root"))==null?void 0:o.data;return r?f({title:`🎉 ${r==null?void 0:r.workshopTitle}`,description:`Elaboration for ${r==null?void 0:r.workshopTitle}`,ogTitle:`Finished ${r==null?void 0:r.workshopTitle}`,ogDescription:"You finished! Time to submit feedback.",instructor:r.instructor,requestInfo:r.requestInfo}):[]},j={h1:()=>null};function U(){const s=x();return e.jsx("div",{className:"flex h-full flex-grow flex-col",children:e.jsxs("main",{className:"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1",children:[e.jsxs("div",{className:"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r",children:[e.jsx("h1",{className:"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none",children:e.jsx("div",{className:"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2",children:e.jsxs("div",{className:"flex items-center justify-start gap-x-2",children:[e.jsx(u,{to:"/",className:"hover:underline",children:s.workshopTitle}),e.jsx("span",{children:"/"}),e.jsx("span",{children:"Elaboration"})]})})}),e.jsx("article",{className:"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",id:s.articleId,children:s.finishedCode?e.jsx(n,{epicVideoInfosPromise:s.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(c,{code:s.finishedCode,components:j})})}):"No finished instructions yet..."}),e.jsx(l,{elementQuery:`#${s.articleId}`}),e.jsx(h,{type:"workshop-finished",className:"h-14 border-t px-6"}),e.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[e.jsx("div",{}),s.workshopFinished.status==="success"?e.jsx(m,{file:s.workshopFinished.file,relativePath:s.workshopFinished.relativePath}):null,e.jsx(d,{prev:s.prevStepLink,next:{to:"/"}})]})]}),e.jsx(b,{workshopTitle:s.workshopTitle,workshopFormEmbedUrl:s.workshopFormEmbedUrl})]})})}function b({workshopTitle:s,workshopFormEmbedUrl:r}){const[o,i]=t.useState(!1);return e.jsxs("div",{className:"relative flex-shrink-0",children:[o?null:e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:e.jsx(a,{children:e.jsxs("span",{children:["Loading ",s," Elaboration form"]})})}),e.jsx("iframe",{onLoad:()=>i(!0),onError:()=>i(!0),title:"Elaboration",src:r,className:p("absolute inset-0 flex h-full w-full transition-opacity duration-300",o?"opacity-100":"opacity-0")})]})}export{U as default,q as handle,R as meta};
|
|
2
|
+
//# sourceMappingURL=finished-DvXH6L-Q.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finished-CU8QBU41.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tdefer,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport * as React from 'react'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport { getEpicVideoInfos } from '#app/utils/epic-api.ts'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { EditFileOnGitHub } from '../launch-editor.tsx'\nimport { ProgressToggle } from '../progress.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => [{ route: '/finished' }],\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!rootData) return []\n\n\treturn getSeoMetaTags({\n\t\ttitle: `🎉 ${rootData?.workshopTitle}`,\n\t\tdescription: `Elaboration for ${rootData?.workshopTitle}`,\n\t\togTitle: `Finished ${rootData?.workshopTitle}`,\n\t\togDescription: `You finished! Time to submit feedback.`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('finishedLoader')\n\tconst exercises = await getExercises({ request, timings })\n\tconst compiledFinished = await time(() => getWorkshopFinished({ request }), {\n\t\ttimings,\n\t\ttype: 'compileMdx',\n\t\tdesc: 'compileMdx in finished',\n\t})\n\n\tconst lastExercises = exercises[exercises.length - 1]\n\tconst workshopConfig = getWorkshopConfig()\n\tconst workshopTitle = workshopConfig.title\n\tconst workshopFormTemplate = workshopConfig.forms.workshop\n\tconst workshopFormEmbedUrl = workshopFormTemplate.replace(\n\t\t'{workshopTitle}',\n\t\tencodeURIComponent(workshopTitle),\n\t)\n\treturn defer(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-finished`,\n\t\t\tworkshopTitle,\n\t\t\tworkshopFormEmbedUrl,\n\t\t\tfinishedCode:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? compiledFinished.compiled.code\n\t\t\t\t\t: null,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(compiledFinished.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\tworkshopFinished: {\n\t\t\t\tstatus: compiledFinished.compiled.status,\n\t\t\t\tfile: compiledFinished.file,\n\t\t\t\trelativePath: compiledFinished.relativePath,\n\t\t\t},\n\t\t\tprevStepLink: lastExercises\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/${lastExercises.exerciseNumber}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExerciseFinished() {\n\tconst data = useLoaderData<typeof loader>()\n\treturn (\n\t\t<div className=\"flex h-full flex-grow flex-col\">\n\t\t\t<main className=\"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t<div className=\"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-start gap-x-2\">\n\t\t\t\t\t\t\t\t<Link to=\"/\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{data.workshopTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t<span>/</span>\n\t\t\t\t\t\t\t\t<span>Elaboration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8\"\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.finishedCode ? (\n\t\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t\t<Mdx code={data.finishedCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// TODO: render a random dad joke...\n\t\t\t\t\t\t\t'No finished instructions yet...'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\ttype=\"workshop-finished\"\n\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex h-16 justify-between border-b-4 border-t lg:border-b-0\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t{data.workshopFinished.status === 'success' ? (\n\t\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\t\tfile={data.workshopFinished.file}\n\t\t\t\t\t\t\t\trelativePath={data.workshopFinished.relativePath}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<NavChevrons prev={data.prevStepLink} next={{ to: '/' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Survey\n\t\t\t\t\tworkshopTitle={data.workshopTitle}\n\t\t\t\t\tworkshopFormEmbedUrl={data.workshopFormEmbedUrl}\n\t\t\t\t/>\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nfunction Survey({\n\tworkshopTitle,\n\tworkshopFormEmbedUrl,\n}: {\n\tworkshopTitle: string\n\tworkshopFormEmbedUrl: string\n}) {\n\tconst [iframeLoaded, setIframeLoaded] = React.useState(false)\n\treturn (\n\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t{!iframeLoaded ? (\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n\t\t\t\t\t<Loading>\n\t\t\t\t\t\t<span>Loading {workshopTitle} Elaboration form</span>\n\t\t\t\t\t</Loading>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<iframe\n\t\t\t\tonLoad={() => setIframeLoaded(true)}\n\t\t\t\t// show what would have shown if there is an error\n\t\t\t\tonError={() => setIframeLoaded(true)}\n\t\t\t\ttitle=\"Elaboration\"\n\t\t\t\tsrc={workshopFormEmbedUrl}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute inset-0 flex h-full w-full transition-opacity duration-300',\n\t\t\t\t\tiframeLoaded ? 'opacity-100' : 'opacity-0',\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","route","meta","matches","rootData","find","m","id","data","getSeoMetaTags","title","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","mdxComponents","h1","ExerciseFinished","useLoaderData","className","children","jsxs","jsx","Link","to","articleId","finishedCode","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","code","components","ElementScrollRestoration","elementQuery","ProgressToggle","type","workshopFinished","status","EditFileOnGitHub","file","relativePath","NavChevrons","prev","prevStepLink","next","Survey","workshopFormEmbedUrl","iframeLoaded","setIframeLoaded","React","Loading","onLoad","onError","src","cn"],"mappings":"wqBAiCO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,CAAC,CAAEC,MAAO,YAAa,CACjD,EAEaC,EAAiEA,CAAC,CAC9EC,QAAAA,CACD,IAAM,OACC,MAAAC,GAAWD,EAAAA,EAAQE,KAAMC,GAAMA,EAAEC,KAAO,MAAM,IAAnCJ,YAAAA,EAAsCK,KACnD,OAACJ,EAEEK,EAAe,CACrBC,MAAO,MAAMN,GAAAA,YAAAA,EAAUO,aAAa,GACpCC,YAAa,mBAAmBR,GAAAA,YAAAA,EAAUO,aAAa,GACvDE,QAAS,YAAYT,GAAAA,YAAAA,EAAUO,aAAa,GAC5CG,cAAe,yCACfC,WAAYX,EAASW,WACrBC,YAAaZ,EAASY,WACvB,CAAC,EATqB,EAUvB,EA6DMC,EAAgB,CAAEC,GAAIA,IAAM,IAAK,EAEvC,SAAwBC,GAAmB,CAC1C,MAAMX,EAAOY,IACb,aACE,MAAI,CAAAC,UAAU,iCACdC,SAACC,EAAA,KAAA,OAAA,CAAKF,UAAU,8EACfC,SAAA,CAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,kEACdC,SAAA,CAACE,EAAA,IAAA,KAAA,CAAGH,UAAU,sEACbC,SAACE,EAAA,IAAA,MAAA,CAAIH,UAAU,gEACdC,SAAAC,EAAA,KAAC,MAAI,CAAAF,UAAU,0CACdC,SAAA,CAAAE,EAAA,IAACC,GAAKC,GAAG,IAAIL,UAAU,kBACrBC,WAAKX,aACP,CAAA,EACAa,EAAA,IAAC,QAAKF,SAAC,GAAA,CAAA,EACPE,EAAA,IAAC,QAAKF,SAAW,aAAA,CAAA,CAAA,EAClB,EACD,CACD,CAAA,EACAE,EAAA,IAAC,UAAA,CACAH,UAAU,yJACVd,GAAIC,EAAKmB,UAERL,WAAKM,aACLJ,EAAAA,IAACK,EAAA,CACAC,sBAAuBtB,EAAKsB,sBAE5BR,SAAAE,EAAA,IAAC,MAAI,CAAAH,UAAU,sCACdC,SAAAE,EAAA,IAACO,EAAI,CAAAC,KAAMxB,EAAKoB,aAAcK,WAAYhB,EAAe,EAC1D,CAAA,CACD,EAGA,iCAAA,CAEF,QACCiB,EAAyB,CAAAC,aAAc,IAAI3B,EAAKmB,SAAS,EAAI,CAAA,EAC9DH,EAAA,IAACY,EAAA,CACAC,KAAK,oBACLhB,UAAU,oBAAA,CACX,EACAE,EAAA,KAAC,MAAI,CAAAF,UAAU,8DACdC,SAAA,CAAAE,EAAAA,IAAC,MAAI,EAAA,EACJhB,EAAK8B,iBAAiBC,SAAW,UACjCf,EAAAA,IAACgB,EAAA,CACAC,KAAMjC,EAAK8B,iBAAiBG,KAC5BC,aAAclC,EAAK8B,iBAAiBI,aACrC,EACG,KACJlB,EAAA,IAACmB,GAAYC,KAAMpC,EAAKqC,aAAcC,KAAM,CAAEpB,GAAI,GAAI,CAAG,CAAA,CAAA,CAC1D,CAAA,CAAA,CACD,CAAA,EACAF,EAAA,IAACuB,EAAA,CACApC,cAAeH,EAAKG,cACpBqC,qBAAsBxC,EAAKwC,oBAAA,CAC5B,CAAA,EACD,CACD,CAAA,CAEF,CAEA,SAASD,EAAO,CACfpC,cAAAA,EACAqC,qBAAAA,CACD,EAGG,CACF,KAAM,CAACC,EAAcC,CAAe,EAAIC,WAAe,EAAK,EAE3D,OAAA5B,EAAAA,KAAC,MAAI,CAAAF,UAAU,yBACbC,SAAA,CAAC2B,EAME,WALF,MAAI,CAAA5B,UAAU,yDACdC,SAACE,EAAA,IAAA4B,EAAA,CACA9B,gBAAC,OAAK,CAAAA,SAAA,CAAA,WAASX,EAAc,mBAAA,EAAiB,EAC/C,EACD,EAEDa,EAAA,IAAC,SAAA,CACA6B,OAAQA,IAAMH,EAAgB,EAAI,EAElCI,QAASA,IAAMJ,EAAgB,EAAI,EACnCxC,MAAM,cACN6C,IAAKP,EACL3B,UAAWmC,EACV,sEACAP,EAAe,cAAgB,WAChC,CAAA,CACD,CAAA,CACD,CAAA,CAEF"}
|
|
1
|
+
{"version":3,"file":"finished-DvXH6L-Q.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tdefer,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport * as React from 'react'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport { getEpicVideoInfos } from '#app/utils/epic-api.ts'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { EditFileOnGitHub } from '../launch-editor.tsx'\nimport { ProgressToggle } from '../progress.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => [{ route: '/finished' }],\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!rootData) return []\n\n\treturn getSeoMetaTags({\n\t\ttitle: `🎉 ${rootData?.workshopTitle}`,\n\t\tdescription: `Elaboration for ${rootData?.workshopTitle}`,\n\t\togTitle: `Finished ${rootData?.workshopTitle}`,\n\t\togDescription: `You finished! Time to submit feedback.`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('finishedLoader')\n\tconst exercises = await getExercises({ request, timings })\n\tconst compiledFinished = await time(() => getWorkshopFinished({ request }), {\n\t\ttimings,\n\t\ttype: 'compileMdx',\n\t\tdesc: 'compileMdx in finished',\n\t})\n\n\tconst lastExercises = exercises[exercises.length - 1]\n\tconst workshopConfig = getWorkshopConfig()\n\tconst workshopTitle = workshopConfig.title\n\tconst workshopFormTemplate = workshopConfig.forms.workshop\n\tconst workshopFormEmbedUrl = workshopFormTemplate.replace(\n\t\t'{workshopTitle}',\n\t\tencodeURIComponent(workshopTitle),\n\t)\n\treturn defer(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-finished`,\n\t\t\tworkshopTitle,\n\t\t\tworkshopFormEmbedUrl,\n\t\t\tfinishedCode:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? compiledFinished.compiled.code\n\t\t\t\t\t: null,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(compiledFinished.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\tworkshopFinished: {\n\t\t\t\tstatus: compiledFinished.compiled.status,\n\t\t\t\tfile: compiledFinished.file,\n\t\t\t\trelativePath: compiledFinished.relativePath,\n\t\t\t},\n\t\t\tprevStepLink: lastExercises\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/${lastExercises.exerciseNumber}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExerciseFinished() {\n\tconst data = useLoaderData<typeof loader>()\n\treturn (\n\t\t<div className=\"flex h-full flex-grow flex-col\">\n\t\t\t<main className=\"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t<div className=\"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-start gap-x-2\">\n\t\t\t\t\t\t\t\t<Link to=\"/\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{data.workshopTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t<span>/</span>\n\t\t\t\t\t\t\t\t<span>Elaboration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8\"\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.finishedCode ? (\n\t\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t\t<Mdx code={data.finishedCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// TODO: render a random dad joke...\n\t\t\t\t\t\t\t'No finished instructions yet...'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\ttype=\"workshop-finished\"\n\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex h-16 justify-between border-b-4 border-t lg:border-b-0\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t{data.workshopFinished.status === 'success' ? (\n\t\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\t\tfile={data.workshopFinished.file}\n\t\t\t\t\t\t\t\trelativePath={data.workshopFinished.relativePath}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<NavChevrons prev={data.prevStepLink} next={{ to: '/' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Survey\n\t\t\t\t\tworkshopTitle={data.workshopTitle}\n\t\t\t\t\tworkshopFormEmbedUrl={data.workshopFormEmbedUrl}\n\t\t\t\t/>\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nfunction Survey({\n\tworkshopTitle,\n\tworkshopFormEmbedUrl,\n}: {\n\tworkshopTitle: string\n\tworkshopFormEmbedUrl: string\n}) {\n\tconst [iframeLoaded, setIframeLoaded] = React.useState(false)\n\treturn (\n\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t{!iframeLoaded ? (\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n\t\t\t\t\t<Loading>\n\t\t\t\t\t\t<span>Loading {workshopTitle} Elaboration form</span>\n\t\t\t\t\t</Loading>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<iframe\n\t\t\t\tonLoad={() => setIframeLoaded(true)}\n\t\t\t\t// show what would have shown if there is an error\n\t\t\t\tonError={() => setIframeLoaded(true)}\n\t\t\t\ttitle=\"Elaboration\"\n\t\t\t\tsrc={workshopFormEmbedUrl}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute inset-0 flex h-full w-full transition-opacity duration-300',\n\t\t\t\t\tiframeLoaded ? 'opacity-100' : 'opacity-0',\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","route","meta","matches","rootData","find","m","id","data","getSeoMetaTags","title","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","mdxComponents","h1","ExerciseFinished","useLoaderData","className","children","jsxs","jsx","Link","to","articleId","finishedCode","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","code","components","ElementScrollRestoration","elementQuery","ProgressToggle","type","workshopFinished","status","EditFileOnGitHub","file","relativePath","NavChevrons","prev","prevStepLink","next","Survey","workshopFormEmbedUrl","iframeLoaded","setIframeLoaded","React","Loading","onLoad","onError","src","cn"],"mappings":"gpBAiCO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,CAAC,CAAEC,MAAO,YAAa,CACjD,EAEaC,EAAiEA,CAAC,CAC9EC,QAAAA,CACD,IAAM,OACC,MAAAC,GAAWD,EAAAA,EAAQE,KAAMC,GAAMA,EAAEC,KAAO,MAAM,IAAnCJ,YAAAA,EAAsCK,KACnD,OAACJ,EAEEK,EAAe,CACrBC,MAAO,MAAMN,GAAAA,YAAAA,EAAUO,aAAa,GACpCC,YAAa,mBAAmBR,GAAAA,YAAAA,EAAUO,aAAa,GACvDE,QAAS,YAAYT,GAAAA,YAAAA,EAAUO,aAAa,GAC5CG,cAAe,yCACfC,WAAYX,EAASW,WACrBC,YAAaZ,EAASY,WACvB,CAAC,EATqB,EAUvB,EA6DMC,EAAgB,CAAEC,GAAIA,IAAM,IAAK,EAEvC,SAAwBC,GAAmB,CAC1C,MAAMX,EAAOY,IACb,aACE,MAAI,CAAAC,UAAU,iCACdC,SAACC,EAAA,KAAA,OAAA,CAAKF,UAAU,8EACfC,SAAA,CAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,kEACdC,SAAA,CAACE,EAAA,IAAA,KAAA,CAAGH,UAAU,sEACbC,SAACE,EAAA,IAAA,MAAA,CAAIH,UAAU,gEACdC,SAAAC,EAAA,KAAC,MAAI,CAAAF,UAAU,0CACdC,SAAA,CAAAE,EAAA,IAACC,GAAKC,GAAG,IAAIL,UAAU,kBACrBC,WAAKX,aACP,CAAA,EACAa,EAAA,IAAC,QAAKF,SAAC,GAAA,CAAA,EACPE,EAAA,IAAC,QAAKF,SAAW,aAAA,CAAA,CAAA,EAClB,EACD,CACD,CAAA,EACAE,EAAA,IAAC,UAAA,CACAH,UAAU,yJACVd,GAAIC,EAAKmB,UAERL,WAAKM,aACLJ,EAAAA,IAACK,EAAA,CACAC,sBAAuBtB,EAAKsB,sBAE5BR,SAAAE,EAAA,IAAC,MAAI,CAAAH,UAAU,sCACdC,SAAAE,EAAA,IAACO,EAAI,CAAAC,KAAMxB,EAAKoB,aAAcK,WAAYhB,EAAe,EAC1D,CAAA,CACD,EAGA,iCAAA,CAEF,QACCiB,EAAyB,CAAAC,aAAc,IAAI3B,EAAKmB,SAAS,EAAI,CAAA,EAC9DH,EAAA,IAACY,EAAA,CACAC,KAAK,oBACLhB,UAAU,oBAAA,CACX,EACAE,EAAA,KAAC,MAAI,CAAAF,UAAU,8DACdC,SAAA,CAAAE,EAAAA,IAAC,MAAI,EAAA,EACJhB,EAAK8B,iBAAiBC,SAAW,UACjCf,EAAAA,IAACgB,EAAA,CACAC,KAAMjC,EAAK8B,iBAAiBG,KAC5BC,aAAclC,EAAK8B,iBAAiBI,aACrC,EACG,KACJlB,EAAA,IAACmB,GAAYC,KAAMpC,EAAKqC,aAAcC,KAAM,CAAEpB,GAAI,GAAI,CAAG,CAAA,CAAA,CAC1D,CAAA,CAAA,CACD,CAAA,EACAF,EAAA,IAACuB,EAAA,CACApC,cAAeH,EAAKG,cACpBqC,qBAAsBxC,EAAKwC,oBAAA,CAC5B,CAAA,EACD,CACD,CAAA,CAEF,CAEA,SAASD,EAAO,CACfpC,cAAAA,EACAqC,qBAAAA,CACD,EAGG,CACF,KAAM,CAACC,EAAcC,CAAe,EAAIC,WAAe,EAAK,EAE3D,OAAA5B,EAAAA,KAAC,MAAI,CAAAF,UAAU,yBACbC,SAAA,CAAC2B,EAME,WALF,MAAI,CAAA5B,UAAU,yDACdC,SAACE,EAAA,IAAA4B,EAAA,CACA9B,gBAAC,OAAK,CAAAA,SAAA,CAAA,WAASX,EAAc,mBAAA,EAAiB,EAC/C,EACD,EAEDa,EAAA,IAAC,SAAA,CACA6B,OAAQA,IAAMH,EAAgB,EAAI,EAElCI,QAASA,IAAMJ,EAAgB,EAAI,EACnCxC,MAAM,cACN6C,IAAKP,EACL3B,UAAWmC,EACV,sEACAP,EAAe,cAAgB,WAChC,CAAA,CACD,CAAA,CACD,CAAA,CAEF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
function Wr(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 u=Object.getOwnPropertyDescriptor(n,a);u&&Object.defineProperty(e,a,u.get?u:{enumerable:!0,get:()=>n[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var fa=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Jr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var pr={exports:{}},pt={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var Vr=Symbol.for("react.transitional.element"),Gr=Symbol.for("react.fragment");function mr(e,t,r){var n=null;if(r!==void 0&&(n=""+r),t.key!==void 0&&(n=""+t.key),"key"in t){r={};for(var a in t)a!=="key"&&(r[a]=t[a])}else r=t;return t=r.ref,{$$typeof:Vr,type:e,key:n,ref:t!==void 0?t:null,props:r}}pt.Fragment=Gr;pt.jsx=mr;pt.jsxs=mr;pr.exports=pt;var ha=pr.exports,Rt={exports:{}},U={};/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react.production.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var Gt;function qr(){if(Gt)return U;Gt=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),h=Symbol.iterator;function E(i){return i===null||typeof i!="object"?null:(i=h&&i[h]||i["@@iterator"],typeof i=="function"?i:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,x={};function D(i,v,M){this.props=i,this.context=v,this.refs=x,this.updater=M||N}D.prototype.isReactComponent={},D.prototype.setState=function(i,v){if(typeof i!="object"&&typeof i!="function"&&i!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,i,v,"setState")},D.prototype.forceUpdate=function(i){this.updater.enqueueForceUpdate(this,i,"forceUpdate")};function W(){}W.prototype=D.prototype;function k(i,v,M){this.props=i,this.context=v,this.refs=x,this.updater=M||N}var ee=k.prototype=new W;ee.constructor=k,C(ee,D.prototype),ee.isPureReactComponent=!0;var ae=Array.isArray,B={H:null,A:null,T:null},p=Object.prototype.hasOwnProperty;function le(i,v,M,j,T,Y,L){return M=L.ref,{$$typeof:e,type:i,key:v,ref:M!==void 0?M:null,props:L}}function ve(i,v){return le(i.type,v,null,void 0,void 0,void 0,i.props)}function z(i){return typeof i=="object"&&i!==null&&i.$$typeof===e}function se(i){var v={"=":"=0",":":"=2"};return"$"+i.replace(/[=:]/g,function(M){return v[M]})}var te=/\/+/g;function ce(i,v){return typeof i=="object"&&i!==null&&i.key!=null?se(""+i.key):v.toString(36)}function fe(){}function oe(i){switch(i.status){case"fulfilled":return i.value;case"rejected":throw i.reason;default:switch(typeof i.status=="string"?i.then(fe,fe):(i.status="pending",i.then(function(v){i.status==="pending"&&(i.status="fulfilled",i.value=v)},function(v){i.status==="pending"&&(i.status="rejected",i.reason=v)})),i.status){case"fulfilled":return i.value;case"rejected":throw i.reason}}throw i}function he(i,v,M,j,T){var Y=typeof i;(Y==="undefined"||Y==="boolean")&&(i=null);var L=!1;if(i===null)L=!0;else switch(Y){case"bigint":case"string":case"number":L=!0;break;case"object":switch(i.$$typeof){case e:case t:L=!0;break;case g:return L=i._init,he(L(i._payload),v,M,j,T)}}if(L)return T=T(i),L=j===""?"."+ce(i,0):j,ae(T)?(M="",L!=null&&(M=L.replace(te,"$&/")+"/"),he(T,v,M,"",function(gt){return gt})):T!=null&&(z(T)&&(T=ve(T,M+(!T.key||i&&i.key===T.key?"":(""+T.key).replace(te,"$&/")+"/")+L)),v.push(T)),1;L=0;var be=j===""?".":j+":";if(ae(i))for(var X=0;X<i.length;X++)j=i[X],Y=be+ce(j,X),L+=he(j,v,M,Y,T);else if(X=E(i),typeof X=="function")for(i=X.call(i),X=0;!(j=i.next()).done;)j=j.value,Y=be+ce(j,X++),L+=he(j,v,M,Y,T);else if(Y==="object"){if(typeof i.then=="function")return he(oe(i),v,M,j,T);throw v=String(i),Error("Objects are not valid as a React child (found: "+(v==="[object Object]"?"object with keys {"+Object.keys(i).join(", ")+"}":v)+"). If you meant to render a collection of children, use an array instead.")}return L}function we(i,v,M){if(i==null)return i;var j=[],T=0;return he(i,j,"","",function(Y){return v.call(M,Y,T++)}),j}function Q(i){if(i._status===-1){var v=i._result;v=v(),v.then(function(M){(i._status===0||i._status===-1)&&(i._status=1,i._result=M)},function(M){(i._status===0||i._status===-1)&&(i._status=2,i._result=M)}),i._status===-1&&(i._status=0,i._result=v)}if(i._status===1)return i._result.default;throw i._result}var je=typeof reportError=="function"?reportError:function(i){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var v=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof i=="object"&&i!==null&&typeof i.message=="string"?String(i.message):String(i),error:i});if(!window.dispatchEvent(v))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",i);return}console.error(i)};function Oe(){}return U.Children={map:we,forEach:function(i,v,M){we(i,function(){v.apply(this,arguments)},M)},count:function(i){var v=0;return we(i,function(){v++}),v},toArray:function(i){return we(i,function(v){return v})||[]},only:function(i){if(!z(i))throw Error("React.Children.only expected to receive a single React element child.");return i}},U.Component=D,U.Fragment=r,U.Profiler=a,U.PureComponent=k,U.StrictMode=n,U.Suspense=c,U.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=B,U.act=function(){throw Error("act(...) is not supported in production builds of React.")},U.cache=function(i){return function(){return i.apply(null,arguments)}},U.cloneElement=function(i,v,M){if(i==null)throw Error("The argument must be a React element, but you passed "+i+".");var j=C({},i.props),T=i.key,Y=void 0;if(v!=null)for(L in v.ref!==void 0&&(Y=void 0),v.key!==void 0&&(T=""+v.key),v)!p.call(v,L)||L==="key"||L==="__self"||L==="__source"||L==="ref"&&v.ref===void 0||(j[L]=v[L]);var L=arguments.length-2;if(L===1)j.children=M;else if(1<L){for(var be=Array(L),X=0;X<L;X++)be[X]=arguments[X+2];j.children=be}return le(i.type,T,null,void 0,void 0,Y,j)},U.createContext=function(i){return i={$$typeof:l,_currentValue:i,_currentValue2:i,_threadCount:0,Provider:null,Consumer:null},i.Provider=i,i.Consumer={$$typeof:u,_context:i},i},U.createElement=function(i,v,M){var j,T={},Y=null;if(v!=null)for(j in v.key!==void 0&&(Y=""+v.key),v)p.call(v,j)&&j!=="key"&&j!=="__self"&&j!=="__source"&&(T[j]=v[j]);var L=arguments.length-2;if(L===1)T.children=M;else if(1<L){for(var be=Array(L),X=0;X<L;X++)be[X]=arguments[X+2];T.children=be}if(i&&i.defaultProps)for(j in L=i.defaultProps,L)T[j]===void 0&&(T[j]=L[j]);return le(i,Y,null,void 0,void 0,null,T)},U.createRef=function(){return{current:null}},U.forwardRef=function(i){return{$$typeof:f,render:i}},U.isValidElement=z,U.lazy=function(i){return{$$typeof:g,_payload:{_status:-1,_result:i},_init:Q}},U.memo=function(i,v){return{$$typeof:y,type:i,compare:v===void 0?null:v}},U.startTransition=function(i){var v=B.T,M=new Set;B.T={_callbacks:M};var j=B.T;try{var T=i();typeof T=="object"&&T!==null&&typeof T.then=="function"&&(M.forEach(function(Y){return Y(j,T)}),T.then(Oe,je))}catch(Y){je(Y)}finally{B.T=v}},U.unstable_useCacheRefresh=function(){return B.H.useCacheRefresh()},U.use=function(i){return B.H.use(i)},U.useActionState=function(i,v,M){return B.H.useActionState(i,v,M)},U.useCallback=function(i,v){return B.H.useCallback(i,v)},U.useContext=function(i){return B.H.useContext(i)},U.useDebugValue=function(){},U.useDeferredValue=function(i,v){return B.H.useDeferredValue(i,v)},U.useEffect=function(i,v){return B.H.useEffect(i,v)},U.useId=function(){return B.H.useId()},U.useImperativeHandle=function(i,v,M){return B.H.useImperativeHandle(i,v,M)},U.useInsertionEffect=function(i,v){return B.H.useInsertionEffect(i,v)},U.useLayoutEffect=function(i,v){return B.H.useLayoutEffect(i,v)},U.useMemo=function(i,v){return B.H.useMemo(i,v)},U.useOptimistic=function(i,v){return B.H.useOptimistic(i,v)},U.useReducer=function(i,v,M){return B.H.useReducer(i,v,M)},U.useRef=function(i){return B.H.useRef(i)},U.useState=function(i){return B.H.useState(i)},U.useSyncExternalStore=function(i,v,M){return B.H.useSyncExternalStore(i,v,M)},U.useTransition=function(){return B.H.useTransition()},U.version="19.0.0-rc-f994737d14-20240522",U}var qt;function Xr(){return qt||(qt=1,Rt.exports=qr()),Rt.exports}var w=Xr();const Qr=Jr(w),pa=Wr({__proto__:null,default:Qr},[w]);/**
|
|
18
|
+
* @remix-run/router v1.17.0
|
|
19
|
+
*
|
|
20
|
+
* Copyright (c) Remix Software Inc.
|
|
21
|
+
*
|
|
22
|
+
* This source code is licensed under the MIT license found in the
|
|
23
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
24
|
+
*
|
|
25
|
+
* @license MIT
|
|
26
|
+
*/function q(){return q=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},q.apply(this,arguments)}var ne;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(ne||(ne={}));const Xt="popstate";function ma(e){e===void 0&&(e={});function t(n,a){let{pathname:u,search:l,hash:f}=n.location;return Ze("",{pathname:u,search:l,hash:f},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function r(n,a){return typeof a=="string"?a:tt(a)}return en(t,r,null,e)}function F(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function $e(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Zr(){return Math.random().toString(36).substr(2,8)}function Qt(e,t){return{usr:e.state,key:e.key,idx:t}}function Ze(e,t,r,n){return r===void 0&&(r=null),q({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Te(t):t,{state:r,key:t&&t.key||n||Zr()})}function tt(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Te(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function en(e,t,r,n){n===void 0&&(n={});let{window:a=document.defaultView,v5Compat:u=!1}=n,l=a.history,f=ne.Pop,c=null,y=g();y==null&&(y=0,l.replaceState(q({},l.state,{idx:y}),""));function g(){return(l.state||{idx:null}).idx}function h(){f=ne.Pop;let D=g(),W=D==null?null:D-y;y=D,c&&c({action:f,location:x.location,delta:W})}function E(D,W){f=ne.Push;let k=Ze(x.location,D,W);y=g()+1;let ee=Qt(k,y),ae=x.createHref(k);try{l.pushState(ee,"",ae)}catch(B){if(B instanceof DOMException&&B.name==="DataCloneError")throw B;a.location.assign(ae)}u&&c&&c({action:f,location:x.location,delta:1})}function N(D,W){f=ne.Replace;let k=Ze(x.location,D,W);y=g();let ee=Qt(k,y),ae=x.createHref(k);l.replaceState(ee,"",ae),u&&c&&c({action:f,location:x.location,delta:0})}function C(D){let W=a.location.origin!=="null"?a.location.origin:a.location.href,k=typeof D=="string"?D:tt(D);return k=k.replace(/ $/,"%20"),F(W,"No window.location.(origin|href) available to create URL for href: "+k),new URL(k,W)}let x={get action(){return f},get location(){return e(a,l)},listen(D){if(c)throw new Error("A history only accepts one active listener");return a.addEventListener(Xt,h),c=D,()=>{a.removeEventListener(Xt,h),c=null}},createHref(D){return t(a,D)},createURL:C,encodeLocation(D){let W=C(D);return{pathname:W.pathname,search:W.search,hash:W.hash}},push:E,replace:N,go(D){return l.go(D)}};return x}var G;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(G||(G={}));const tn=new Set(["lazy","caseSensitive","path","id","index","children"]);function rn(e){return e.index===!0}function et(e,t,r,n){return r===void 0&&(r=[]),n===void 0&&(n={}),e.map((a,u)=>{let l=[...r,String(u)],f=typeof a.id=="string"?a.id:l.join("-");if(F(a.index!==!0||!a.children,"Cannot specify children on an index route"),F(!n[f],'Found a route id collision on id "'+f+`". Route id's must be globally unique within Data Router usages`),rn(a)){let c=q({},a,t(a),{id:f});return n[f]=c,c}else{let c=q({},a,t(a),{id:f,children:void 0});return n[f]=c,a.children&&(c.children=et(a.children,t,l,n)),c}})}function Ue(e,t,r){return r===void 0&&(r="/"),dt(e,t,r,!1)}function dt(e,t,r,n){let a=typeof t=="string"?Te(t):t,u=rt(a.pathname||"/",r);if(u==null)return null;let l=gr(e);nn(l);let f=null;for(let c=0;f==null&&c<l.length;++c){let y=mn(u);f=hn(l[c],y,n)}return f}function vr(e,t){let{route:r,pathname:n,params:a}=e;return{id:r.id,pathname:n,params:a,data:t[r.id],handle:r.handle}}function gr(e,t,r,n){t===void 0&&(t=[]),r===void 0&&(r=[]),n===void 0&&(n="");let a=(u,l,f)=>{let c={relativePath:f===void 0?u.path||"":f,caseSensitive:u.caseSensitive===!0,childrenIndex:l,route:u};c.relativePath.startsWith("/")&&(F(c.relativePath.startsWith(n),'Absolute route path "'+c.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),c.relativePath=c.relativePath.slice(n.length));let y=Se([n,c.relativePath]),g=r.concat(c);u.children&&u.children.length>0&&(F(u.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+y+'".')),gr(u.children,t,g,y)),!(u.path==null&&!u.index)&&t.push({path:y,score:dn(y,u.index),routesMeta:g})};return e.forEach((u,l)=>{var f;if(u.path===""||!((f=u.path)!=null&&f.includes("?")))a(u,l);else for(let c of yr(u.path))a(u,l,c)}),t}function yr(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,a=r.endsWith("?"),u=r.replace(/\?$/,"");if(n.length===0)return a?[u,""]:[u];let l=yr(n.join("/")),f=[];return f.push(...l.map(c=>c===""?u:[u,c].join("/"))),a&&f.push(...l),f.map(c=>e.startsWith("/")&&c===""?"/":c)}function nn(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:fn(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const an=/^:[\w-]+$/,on=3,ln=2,sn=1,un=10,cn=-2,Zt=e=>e==="*";function dn(e,t){let r=e.split("/"),n=r.length;return r.some(Zt)&&(n+=cn),t&&(n+=ln),r.filter(a=>!Zt(a)).reduce((a,u)=>a+(an.test(u)?on:u===""?sn:un),n)}function fn(e,t){return e.length===t.length&&e.slice(0,-1).every((n,a)=>n===t[a])?e[e.length-1]-t[t.length-1]:0}function hn(e,t,r){r===void 0&&(r=!1);let{routesMeta:n}=e,a={},u="/",l=[];for(let f=0;f<n.length;++f){let c=n[f],y=f===n.length-1,g=u==="/"?t:t.slice(u.length)||"/",h=er({path:c.relativePath,caseSensitive:c.caseSensitive,end:y},g),E=c.route;if(!h&&y&&r&&!n[n.length-1].route.index&&(h=er({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},g)),!h)return null;Object.assign(a,h.params),l.push({params:a,pathname:Se([u,h.pathname]),pathnameBase:yn(Se([u,h.pathnameBase])),route:E}),h.pathnameBase!=="/"&&(u=Se([u,h.pathnameBase]))}return l}function er(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[r,n]=pn(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let u=a[0],l=u.replace(/(.)\/+$/,"$1"),f=a.slice(1);return{params:n.reduce((y,g,h)=>{let{paramName:E,isOptional:N}=g;if(E==="*"){let x=f[h]||"";l=u.slice(0,u.length-x.length).replace(/(.)\/+$/,"$1")}const C=f[h];return N&&!C?y[E]=void 0:y[E]=(C||"").replace(/%2F/g,"/"),y},{}),pathname:u,pathnameBase:l,pattern:e}}function pn(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),$e(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,f,c)=>(n.push({paramName:f,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(n.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),n]}function mn(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return $e(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function rt(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}function vn(e,t){t===void 0&&(t="/");let{pathname:r,search:n="",hash:a=""}=typeof e=="string"?Te(e):e;return{pathname:r?r.startsWith("/")?r:gn(r,t):t,search:En(n),hash:bn(a)}}function gn(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?r.length>1&&r.pop():a!=="."&&r.push(a)}),r.length>1?r.join("/"):"/"}function wt(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function Er(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function Dt(e,t){let r=Er(e);return t?r.map((n,a)=>a===e.length-1?n.pathname:n.pathnameBase):r.map(n=>n.pathnameBase)}function Mt(e,t,r,n){n===void 0&&(n=!1);let a;typeof e=="string"?a=Te(e):(a=q({},e),F(!a.pathname||!a.pathname.includes("?"),wt("?","pathname","search",a)),F(!a.pathname||!a.pathname.includes("#"),wt("#","pathname","hash",a)),F(!a.search||!a.search.includes("#"),wt("#","search","hash",a)));let u=e===""||a.pathname==="",l=u?"/":a.pathname,f;if(l==null)f=r;else{let h=t.length-1;if(!n&&l.startsWith("..")){let E=l.split("/");for(;E[0]==="..";)E.shift(),h-=1;a.pathname=E.join("/")}f=h>=0?t[h]:"/"}let c=vn(a,f),y=l&&l!=="/"&&l.endsWith("/"),g=(u||l===".")&&r.endsWith("/");return!c.pathname.endsWith("/")&&(y||g)&&(c.pathname+="/"),c}const Se=e=>e.join("/").replace(/\/\/+/g,"/"),yn=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),En=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,bn=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class St extends Error{}class va{constructor(t,r){this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],F(t&&typeof t=="object"&&!Array.isArray(t),"defer() only accepts plain objects");let n;this.abortPromise=new Promise((u,l)=>n=l),this.controller=new AbortController;let a=()=>n(new St("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",a),this.controller.signal.addEventListener("abort",a),this.data=Object.entries(t).reduce((u,l)=>{let[f,c]=l;return Object.assign(u,{[f]:this.trackPromise(f,c)})},{}),this.done&&this.unlistenAbortSignal(),this.init=r}trackPromise(t,r){if(!(r instanceof Promise))return r;this.deferredKeys.push(t),this.pendingKeysSet.add(t);let n=Promise.race([r,this.abortPromise]).then(a=>this.onSettle(n,t,void 0,a),a=>this.onSettle(n,t,a));return n.catch(()=>{}),Object.defineProperty(n,"_tracked",{get:()=>!0}),n}onSettle(t,r,n,a){if(this.controller.signal.aborted&&n instanceof St)return this.unlistenAbortSignal(),Object.defineProperty(t,"_error",{get:()=>n}),Promise.reject(n);if(this.pendingKeysSet.delete(r),this.done&&this.unlistenAbortSignal(),n===void 0&&a===void 0){let u=new Error('Deferred data for key "'+r+'" resolved/rejected with `undefined`, you must resolve/reject with a value or `null`.');return Object.defineProperty(t,"_error",{get:()=>u}),this.emit(!1,r),Promise.reject(u)}return a===void 0?(Object.defineProperty(t,"_error",{get:()=>n}),this.emit(!1,r),Promise.reject(n)):(Object.defineProperty(t,"_data",{get:()=>a}),this.emit(!1,r),a)}emit(t,r){this.subscribers.forEach(n=>n(t,r))}subscribe(t){return this.subscribers.add(t),()=>this.subscribers.delete(t)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach((t,r)=>this.pendingKeysSet.delete(r)),this.emit(!0)}async resolveData(t){let r=!1;if(!this.done){let n=()=>this.cancel();t.addEventListener("abort",n),r=await new Promise(a=>{this.subscribe(u=>{t.removeEventListener("abort",n),(u||this.done)&&a(u)})})}return r}get done(){return this.pendingKeysSet.size===0}get unwrappedData(){return F(this.data!==null&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce((t,r)=>{let[n,a]=r;return Object.assign(t,{[n]:wn(a)})},{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function Rn(e){return e instanceof Promise&&e._tracked===!0}function wn(e){if(!Rn(e))return e;if(e._error)throw e._error;return e._data}const ga=function(t,r){r===void 0&&(r=302);let n=r;typeof n=="number"?n={status:n}:typeof n.status>"u"&&(n.status=302);let a=new Headers(n.headers);return a.set("Location",t),new Response(null,q({},n,{headers:a}))};class br{constructor(t,r,n,a){a===void 0&&(a=!1),this.status=t,this.statusText=r||"",this.internal=a,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}}function mt(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Rr=["post","put","patch","delete"],xn=new Set(Rr),Pn=["get",...Rr],Sn=new Set(Pn),_n=new Set([301,302,303,307,308]),Cn=new Set([307,308]),xt={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Dn={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Ge={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Lt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Mn=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),wr="remix-router-transitions";function ya(e){const t=e.window?e.window:typeof window<"u"?window:void 0,r=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",n=!r;F(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let a;if(e.mapRouteProperties)a=e.mapRouteProperties;else if(e.detectErrorBoundary){let o=e.detectErrorBoundary;a=s=>({hasErrorBoundary:o(s)})}else a=Mn;let u={},l=et(e.routes,a,void 0,u),f,c=e.basename||"/",y=e.unstable_dataStrategy||An,g=e.unstable_patchRoutesOnMiss,h=q({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,unstable_skipActionErrorRevalidation:!1},e.future),E=null,N=new Set,C=null,x=null,D=null,W=e.hydrationData!=null,k=Ue(l,e.history.location,c),ee=null;if(k==null&&!g){let o=ue(404,{pathname:e.history.location.pathname}),{matches:s,route:d}=cr(l);k=s,ee={[d.id]:o}}let ae;if(!k)ae=!1,k=[];else if(k.some(o=>o.route.lazy))ae=!1;else if(!k.some(o=>o.route.loader))ae=!0;else if(h.v7_partialHydration){let o=e.hydrationData?e.hydrationData.loaderData:null,s=e.hydrationData?e.hydrationData.errors:null,d=m=>m.route.loader?typeof m.route.loader=="function"&&m.route.loader.hydrate===!0?!1:o&&o[m.route.id]!==void 0||s&&s[m.route.id]!==void 0:!0;if(s){let m=k.findIndex(R=>s[R.route.id]!==void 0);ae=k.slice(0,m+1).every(d)}else ae=k.every(d)}else ae=e.hydrationData!=null;let B,p={historyAction:e.history.action,location:e.history.location,matches:k,initialized:ae,navigation:xt,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||ee,fetchers:new Map,blockers:new Map},le=ne.Pop,ve=!1,z,se=!1,te=new Map,ce=null,fe=!1,oe=!1,he=[],we=[],Q=new Map,je=0,Oe=-1,i=new Map,v=new Set,M=new Map,j=new Map,T=new Set,Y=new Map,L=new Map,be=new Map,X=!1;function gt(){if(E=e.history.listen(o=>{let{action:s,location:d,delta:m}=o;if(X){X=!1;return}$e(L.size===0||m!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let R=Yt({currentLocation:p.location,nextLocation:d,historyAction:s});if(R&&m!=null){X=!0,e.history.go(m*-1),ot(R,{state:"blocked",location:d,proceed(){ot(R,{state:"proceeding",proceed:void 0,reset:void 0,location:d}),e.history.go(m)},reset(){let S=new Map(p.blockers);S.set(R,Ge),de({blockers:S})}});return}return Ae(s,d)}),r){Jn(t,te);let o=()=>Vn(t,te);t.addEventListener("pagehide",o),ce=()=>t.removeEventListener("pagehide",o)}return p.initialized||Ae(ne.Pop,p.location,{initialHydration:!0}),B}function Tr(){E&&E(),ce&&ce(),N.clear(),z&&z.abort(),p.fetchers.forEach((o,s)=>at(s)),p.blockers.forEach((o,s)=>$t(s))}function jr(o){return N.add(o),()=>N.delete(o)}function de(o,s){s===void 0&&(s={}),p=q({},p,o);let d=[],m=[];h.v7_fetcherPersist&&p.fetchers.forEach((R,S)=>{R.state==="idle"&&(T.has(S)?m.push(S):d.push(S))}),[...N].forEach(R=>R(p,{deletedFetchers:m,unstable_viewTransitionOpts:s.viewTransitionOpts,unstable_flushSync:s.flushSync===!0})),h.v7_fetcherPersist&&(d.forEach(R=>p.fetchers.delete(R)),m.forEach(R=>at(R)))}function Ie(o,s,d){var m,R;let{flushSync:S}=d===void 0?{}:d,_=p.actionData!=null&&p.navigation.formMethod!=null&&ye(p.navigation.formMethod)&&p.navigation.state==="loading"&&((m=o.state)==null?void 0:m._isRedirect)!==!0,b;s.actionData?Object.keys(s.actionData).length>0?b=s.actionData:b=null:_?b=p.actionData:b=null;let O=s.loaderData?sr(p.loaderData,s.loaderData,s.matches||[],s.errors):p.loaderData,P=p.blockers;P.size>0&&(P=new Map(P),P.forEach((H,J)=>P.set(J,Ge)));let A=ve===!0||p.navigation.formMethod!=null&&ye(p.navigation.formMethod)&&((R=o.state)==null?void 0:R._isRedirect)!==!0;f&&(l=f,f=void 0),fe||le===ne.Pop||(le===ne.Push?e.history.push(o,o.state):le===ne.Replace&&e.history.replace(o,o.state));let K;if(le===ne.Pop){let H=te.get(p.location.pathname);H&&H.has(o.pathname)?K={currentLocation:p.location,nextLocation:o}:te.has(o.pathname)&&(K={currentLocation:o,nextLocation:p.location})}else if(se){let H=te.get(p.location.pathname);H?H.add(o.pathname):(H=new Set([o.pathname]),te.set(p.location.pathname,H)),K={currentLocation:p.location,nextLocation:o}}de(q({},s,{actionData:b,loaderData:O,historyAction:le,location:o,initialized:!0,navigation:xt,revalidation:"idle",restoreScrollPosition:Wt(o,s.matches||p.matches),preventScrollReset:A,blockers:P}),{viewTransitionOpts:K,flushSync:S===!0}),le=ne.Pop,ve=!1,se=!1,fe=!1,oe=!1,he=[],we=[]}async function Ft(o,s){if(typeof o=="number"){e.history.go(o);return}let d=_t(p.location,p.matches,c,h.v7_prependBasename,o,h.v7_relativeSplatPath,s==null?void 0:s.fromRouteId,s==null?void 0:s.relative),{path:m,submission:R,error:S}=tr(h.v7_normalizeFormMethod,!1,d,s),_=p.location,b=Ze(p.location,m,s&&s.state);b=q({},b,e.history.encodeLocation(b));let O=s&&s.replace!=null?s.replace:void 0,P=ne.Push;O===!0?P=ne.Replace:O===!1||R!=null&&ye(R.formMethod)&&R.formAction===p.location.pathname+p.location.search&&(P=ne.Replace);let A=s&&"preventScrollReset"in s?s.preventScrollReset===!0:void 0,K=(s&&s.unstable_flushSync)===!0,H=Yt({currentLocation:_,nextLocation:b,historyAction:P});if(H){ot(H,{state:"blocked",location:b,proceed(){ot(H,{state:"proceeding",proceed:void 0,reset:void 0,location:b}),Ft(o,s)},reset(){let J=new Map(p.blockers);J.set(H,Ge),de({blockers:J})}});return}return await Ae(P,b,{submission:R,pendingError:S,preventScrollReset:A,replace:s&&s.replace,enableViewTransition:s&&s.unstable_viewTransition,flushSync:K})}function Or(){if(yt(),de({revalidation:"loading"}),p.navigation.state!=="submitting"){if(p.navigation.state==="idle"){Ae(p.historyAction,p.location,{startUninterruptedRevalidation:!0});return}Ae(le||p.historyAction,p.navigation.location,{overrideNavigation:p.navigation})}}async function Ae(o,s,d){z&&z.abort(),z=null,le=o,fe=(d&&d.startUninterruptedRevalidation)===!0,$r(p.location,p.matches),ve=(d&&d.preventScrollReset)===!0,se=(d&&d.enableViewTransition)===!0;let m=f||l,R=d&&d.overrideNavigation,S=Ue(m,s,c),_=(d&&d.flushSync)===!0,b=Jt(S,m,s.pathname);if(b.active&&b.matches&&(S=b.matches),!S){let{error:$,notFoundMatches:ie,route:re}=Et(s.pathname);Ie(s,{matches:ie,loaderData:{},errors:{[re.id]:$}},{flushSync:_});return}if(p.initialized&&!oe&&kn(p.location,s)&&!(d&&d.submission&&ye(d.submission.formMethod))){Ie(s,{matches:S},{flushSync:_});return}z=new AbortController;let O=He(e.history,s,z.signal,d&&d.submission),P;if(d&&d.pendingError)P=[Qe(S).route.id,{type:G.error,error:d.pendingError}];else if(d&&d.submission&&ye(d.submission.formMethod)){let $=await Ar(O,s,d.submission,S,b.active,{replace:d.replace,flushSync:_});if($.shortCircuited)return;if($.pendingActionResult){let[ie,re]=$.pendingActionResult;if(me(re)&&mt(re.error)&&re.error.status===404){z=null,Ie(s,{matches:$.matches,loaderData:{},errors:{[ie]:re.error}});return}}S=$.matches||S,P=$.pendingActionResult,R=Pt(s,d.submission),_=!1,b.active=!1,O=He(e.history,O.url,O.signal)}let{shortCircuited:A,matches:K,loaderData:H,errors:J}=await Ur(O,s,S,b.active,R,d&&d.submission,d&&d.fetcherSubmission,d&&d.replace,d&&d.initialHydration===!0,_,P);A||(z=null,Ie(s,q({matches:K||S},ur(P),{loaderData:H,errors:J})))}async function Ar(o,s,d,m,R,S){S===void 0&&(S={}),yt();let _=Kn(s,d);if(de({navigation:_},{flushSync:S.flushSync===!0}),R){let P=await lt(m,s.pathname,o.signal);if(P.type==="aborted")return{shortCircuited:!0};if(P.type==="error"){let{error:A,notFoundMatches:K,route:H}=it(s.pathname,P);return{matches:K,pendingActionResult:[H.id,{type:G.error,error:A}]}}else if(P.matches)m=P.matches;else{let{notFoundMatches:A,error:K,route:H}=Et(s.pathname);return{matches:A,pendingActionResult:[H.id,{type:G.error,error:K}]}}}let b,O=Xe(m,s);if(!O.route.action&&!O.route.lazy)b={type:G.error,error:ue(405,{method:o.method,pathname:s.pathname,routeId:O.route.id})};else if(b=(await Je("action",o,[O],m))[0],o.signal.aborted)return{shortCircuited:!0};if(Ne(b)){let P;return S&&S.replace!=null?P=S.replace:P=or(b.response.headers.get("Location"),new URL(o.url),c)===p.location.pathname+p.location.search,await We(o,b,{submission:d,replace:P}),{shortCircuited:!0}}if(Fe(b))throw ue(400,{type:"defer-action"});if(me(b)){let P=Qe(m,O.route.id);return(S&&S.replace)!==!0&&(le=ne.Push),{matches:m,pendingActionResult:[P.route.id,b]}}return{matches:m,pendingActionResult:[O.route.id,b]}}async function Ur(o,s,d,m,R,S,_,b,O,P,A){let K=R||Pt(s,S),H=S||_||hr(K),J=!fe&&(!h.v7_partialHydration||!O);if(m){if(J){let Z=Nt(A);de(q({navigation:K},Z!==void 0?{actionData:Z}:{}),{flushSync:P})}let I=await lt(d,s.pathname,o.signal);if(I.type==="aborted")return{shortCircuited:!0};if(I.type==="error"){let{error:Z,notFoundMatches:pe,route:V}=it(s.pathname,I);return{matches:pe,loaderData:{},errors:{[V.id]:Z}}}else if(I.matches)d=I.matches;else{let{error:Z,notFoundMatches:pe,route:V}=Et(s.pathname);return{matches:pe,loaderData:{},errors:{[V.id]:Z}}}}let $=f||l,[ie,re]=rr(e.history,p,d,H,s,h.v7_partialHydration&&O===!0,h.unstable_skipActionErrorRevalidation,oe,he,we,T,M,v,$,c,A);if(bt(I=>!(d&&d.some(Z=>Z.route.id===I))||ie&&ie.some(Z=>Z.route.id===I)),Oe=++je,ie.length===0&&re.length===0){let I=zt();return Ie(s,q({matches:d,loaderData:{},errors:A&&me(A[1])?{[A[0]]:A[1].error}:null},ur(A),I?{fetchers:new Map(p.fetchers)}:{}),{flushSync:P}),{shortCircuited:!0}}if(J){let I={};if(!m){I.navigation=K;let Z=Nt(A);Z!==void 0&&(I.actionData=Z)}re.length>0&&(I.fetchers=Fr(re)),de(I,{flushSync:P})}re.forEach(I=>{Q.has(I.key)&&De(I.key),I.controller&&Q.set(I.key,I.controller)});let Ve=()=>re.forEach(I=>De(I.key));z&&z.signal.addEventListener("abort",Ve);let{loaderResults:Me,fetcherResults:Be}=await It(p.matches,d,ie,re,o);if(o.signal.aborted)return{shortCircuited:!0};z&&z.signal.removeEventListener("abort",Ve),re.forEach(I=>Q.delete(I.key));let ke=dr([...Me,...Be]);if(ke){if(ke.idx>=ie.length){let I=re[ke.idx-ie.length].key;v.add(I)}return await We(o,ke.result,{replace:b}),{shortCircuited:!0}}let{loaderData:ze,errors:Re}=lr(p,d,ie,Me,A,re,Be,Y);Y.forEach((I,Z)=>{I.subscribe(pe=>{(pe||I.done)&&Y.delete(Z)})}),h.v7_partialHydration&&O&&p.errors&&Object.entries(p.errors).filter(I=>{let[Z]=I;return!ie.some(pe=>pe.route.id===Z)}).forEach(I=>{let[Z,pe]=I;Re=Object.assign(Re||{},{[Z]:pe})});let st=zt(),ut=Ht(Oe),ct=st||ut||re.length>0;return q({matches:d,loaderData:ze,errors:Re},ct?{fetchers:new Map(p.fetchers)}:{})}function Nt(o){if(o&&!me(o[1]))return{[o[0]]:o[1].data};if(p.actionData)return Object.keys(p.actionData).length===0?null:p.actionData}function Fr(o){return o.forEach(s=>{let d=p.fetchers.get(s.key),m=qe(void 0,d?d.data:void 0);p.fetchers.set(s.key,m)}),new Map(p.fetchers)}function Nr(o,s,d,m){if(n)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");Q.has(o)&&De(o);let R=(m&&m.unstable_flushSync)===!0,S=f||l,_=_t(p.location,p.matches,c,h.v7_prependBasename,d,h.v7_relativeSplatPath,s,m==null?void 0:m.relative),b=Ue(S,_,c),O=Jt(b,S,_);if(O.active&&O.matches&&(b=O.matches),!b){xe(o,s,ue(404,{pathname:_}),{flushSync:R});return}let{path:P,submission:A,error:K}=tr(h.v7_normalizeFormMethod,!0,_,m);if(K){xe(o,s,K,{flushSync:R});return}let H=Xe(b,P);if(ve=(m&&m.preventScrollReset)===!0,A&&ye(A.formMethod)){Ir(o,s,P,H,b,O.active,R,A);return}M.set(o,{routeId:s,path:P}),Br(o,s,P,H,b,O.active,R,A)}async function Ir(o,s,d,m,R,S,_,b){yt(),M.delete(o);function O(V){if(!V.route.action&&!V.route.lazy){let Pe=ue(405,{method:b.formMethod,pathname:d,routeId:s});return xe(o,s,Pe,{flushSync:_}),!0}return!1}if(!S&&O(m))return;let P=p.fetchers.get(o);Ce(o,Wn(b,P),{flushSync:_});let A=new AbortController,K=He(e.history,d,A.signal,b);if(S){let V=await lt(R,d,K.signal);if(V.type==="aborted")return;if(V.type==="error"){let{error:Pe}=it(d,V);xe(o,s,Pe,{flushSync:_});return}else if(V.matches){if(R=V.matches,m=Xe(R,d),O(m))return}else{xe(o,s,ue(404,{pathname:d}),{flushSync:_});return}}Q.set(o,A);let H=je,$=(await Je("action",K,[m],R))[0];if(K.signal.aborted){Q.get(o)===A&&Q.delete(o);return}if(h.v7_fetcherPersist&&T.has(o)){if(Ne($)||me($)){Ce(o,Le(void 0));return}}else{if(Ne($))if(Q.delete(o),Oe>H){Ce(o,Le(void 0));return}else return v.add(o),Ce(o,qe(b)),We(K,$,{fetcherSubmission:b});if(me($)){xe(o,s,$.error);return}}if(Fe($))throw ue(400,{type:"defer-action"});let ie=p.navigation.location||p.location,re=He(e.history,ie,A.signal),Ve=f||l,Me=p.navigation.state!=="idle"?Ue(Ve,p.navigation.location,c):p.matches;F(Me,"Didn't find any matches after fetcher action");let Be=++je;i.set(o,Be);let ke=qe(b,$.data);p.fetchers.set(o,ke);let[ze,Re]=rr(e.history,p,Me,b,ie,!1,h.unstable_skipActionErrorRevalidation,oe,he,we,T,M,v,Ve,c,[m.route.id,$]);Re.filter(V=>V.key!==o).forEach(V=>{let Pe=V.key,Vt=p.fetchers.get(Pe),Kr=qe(void 0,Vt?Vt.data:void 0);p.fetchers.set(Pe,Kr),Q.has(Pe)&&De(Pe),V.controller&&Q.set(Pe,V.controller)}),de({fetchers:new Map(p.fetchers)});let st=()=>Re.forEach(V=>De(V.key));A.signal.addEventListener("abort",st);let{loaderResults:ut,fetcherResults:ct}=await It(p.matches,Me,ze,Re,re);if(A.signal.aborted)return;A.signal.removeEventListener("abort",st),i.delete(o),Q.delete(o),Re.forEach(V=>Q.delete(V.key));let I=dr([...ut,...ct]);if(I){if(I.idx>=ze.length){let V=Re[I.idx-ze.length].key;v.add(V)}return We(re,I.result)}let{loaderData:Z,errors:pe}=lr(p,p.matches,ze,ut,void 0,Re,ct,Y);if(p.fetchers.has(o)){let V=Le($.data);p.fetchers.set(o,V)}Ht(Be),p.navigation.state==="loading"&&Be>Oe?(F(le,"Expected pending action"),z&&z.abort(),Ie(p.navigation.location,{matches:Me,loaderData:Z,errors:pe,fetchers:new Map(p.fetchers)})):(de({errors:pe,loaderData:sr(p.loaderData,Z,Me,pe),fetchers:new Map(p.fetchers)}),oe=!1)}async function Br(o,s,d,m,R,S,_,b){let O=p.fetchers.get(o);Ce(o,qe(b,O?O.data:void 0),{flushSync:_});let P=new AbortController,A=He(e.history,d,P.signal);if(S){let $=await lt(R,d,A.signal);if($.type==="aborted")return;if($.type==="error"){let{error:ie}=it(d,$);xe(o,s,ie,{flushSync:_});return}else if($.matches)R=$.matches,m=Xe(R,d);else{xe(o,s,ue(404,{pathname:d}),{flushSync:_});return}}Q.set(o,P);let K=je,J=(await Je("loader",A,[m],R))[0];if(Fe(J)&&(J=await Cr(J,A.signal,!0)||J),Q.get(o)===P&&Q.delete(o),!A.signal.aborted){if(T.has(o)){Ce(o,Le(void 0));return}if(Ne(J))if(Oe>K){Ce(o,Le(void 0));return}else{v.add(o),await We(A,J);return}if(me(J)){xe(o,s,J.error);return}F(!Fe(J),"Unhandled fetcher deferred data"),Ce(o,Le(J.data))}}async function We(o,s,d){let{submission:m,fetcherSubmission:R,replace:S}=d===void 0?{}:d;s.response.headers.has("X-Remix-Revalidate")&&(oe=!0);let _=s.response.headers.get("Location");F(_,"Expected a Location header on the redirect Response"),_=or(_,new URL(o.url),c);let b=Ze(p.location,_,{_isRedirect:!0});if(r){let J=!1;if(s.response.headers.has("X-Remix-Reload-Document"))J=!0;else if(Lt.test(_)){const $=e.history.createURL(_);J=$.origin!==t.location.origin||rt($.pathname,c)==null}if(J){S?t.location.replace(_):t.location.assign(_);return}}z=null;let O=S===!0?ne.Replace:ne.Push,{formMethod:P,formAction:A,formEncType:K}=p.navigation;!m&&!R&&P&&A&&K&&(m=hr(p.navigation));let H=m||R;if(Cn.has(s.response.status)&&H&&ye(H.formMethod))await Ae(O,b,{submission:q({},H,{formAction:_}),preventScrollReset:ve});else{let J=Pt(b,m);await Ae(O,b,{overrideNavigation:J,fetcherSubmission:R,preventScrollReset:ve})}}async function Je(o,s,d,m){try{let R=await Un(y,o,s,d,m,u,a);return await Promise.all(R.map((S,_)=>{if(Hn(S)){let b=S.result;return{type:G.redirect,response:In(b,s,d[_].route.id,m,c,h.v7_relativeSplatPath)}}return Nn(S)}))}catch(R){return d.map(()=>({type:G.error,error:R}))}}async function It(o,s,d,m,R){let[S,..._]=await Promise.all([d.length?Je("loader",R,d,s):[],...m.map(b=>{if(b.matches&&b.match&&b.controller){let O=He(e.history,b.path,b.controller.signal);return Je("loader",O,[b.match],b.matches).then(P=>P[0])}else return Promise.resolve({type:G.error,error:ue(404,{pathname:b.path})})})]);return await Promise.all([fr(o,d,S,S.map(()=>R.signal),!1,p.loaderData),fr(o,m.map(b=>b.match),_,m.map(b=>b.controller?b.controller.signal:null),!0)]),{loaderResults:S,fetcherResults:_}}function yt(){oe=!0,he.push(...bt()),M.forEach((o,s)=>{Q.has(s)&&(we.push(s),De(s))})}function Ce(o,s,d){d===void 0&&(d={}),p.fetchers.set(o,s),de({fetchers:new Map(p.fetchers)},{flushSync:(d&&d.flushSync)===!0})}function xe(o,s,d,m){m===void 0&&(m={});let R=Qe(p.matches,s);at(o),de({errors:{[R.route.id]:d},fetchers:new Map(p.fetchers)},{flushSync:(m&&m.flushSync)===!0})}function Bt(o){return h.v7_fetcherPersist&&(j.set(o,(j.get(o)||0)+1),T.has(o)&&T.delete(o)),p.fetchers.get(o)||Dn}function at(o){let s=p.fetchers.get(o);Q.has(o)&&!(s&&s.state==="loading"&&i.has(o))&&De(o),M.delete(o),i.delete(o),v.delete(o),T.delete(o),p.fetchers.delete(o)}function kr(o){if(h.v7_fetcherPersist){let s=(j.get(o)||0)-1;s<=0?(j.delete(o),T.add(o)):j.set(o,s)}else at(o);de({fetchers:new Map(p.fetchers)})}function De(o){let s=Q.get(o);F(s,"Expected fetch controller: "+o),s.abort(),Q.delete(o)}function kt(o){for(let s of o){let d=Bt(s),m=Le(d.data);p.fetchers.set(s,m)}}function zt(){let o=[],s=!1;for(let d of v){let m=p.fetchers.get(d);F(m,"Expected fetcher: "+d),m.state==="loading"&&(v.delete(d),o.push(d),s=!0)}return kt(o),s}function Ht(o){let s=[];for(let[d,m]of i)if(m<o){let R=p.fetchers.get(d);F(R,"Expected fetcher: "+d),R.state==="loading"&&(De(d),i.delete(d),s.push(d))}return kt(s),s.length>0}function zr(o,s){let d=p.blockers.get(o)||Ge;return L.get(o)!==s&&L.set(o,s),d}function $t(o){p.blockers.delete(o),L.delete(o)}function ot(o,s){let d=p.blockers.get(o)||Ge;F(d.state==="unblocked"&&s.state==="blocked"||d.state==="blocked"&&s.state==="blocked"||d.state==="blocked"&&s.state==="proceeding"||d.state==="blocked"&&s.state==="unblocked"||d.state==="proceeding"&&s.state==="unblocked","Invalid blocker state transition: "+d.state+" -> "+s.state);let m=new Map(p.blockers);m.set(o,s),de({blockers:m})}function Yt(o){let{currentLocation:s,nextLocation:d,historyAction:m}=o;if(L.size===0)return;L.size>1&&$e(!1,"A router only supports one blocker at a time");let R=Array.from(L.entries()),[S,_]=R[R.length-1],b=p.blockers.get(S);if(!(b&&b.state==="proceeding")&&_({currentLocation:s,nextLocation:d,historyAction:m}))return S}function Et(o){let s=ue(404,{pathname:o}),d=f||l,{matches:m,route:R}=cr(d);return bt(),{notFoundMatches:m,route:R,error:s}}function it(o,s){let d=s.partialMatches,m=d[d.length-1].route,R=ue(400,{type:"route-discovery",routeId:m.id,pathname:o,message:s.error!=null&&"message"in s.error?s.error:String(s.error)});return{notFoundMatches:d,route:m,error:R}}function bt(o){let s=[];return Y.forEach((d,m)=>{(!o||o(m))&&(d.cancel(),s.push(m),Y.delete(m))}),s}function Hr(o,s,d){if(C=o,D=s,x=d||null,!W&&p.navigation===xt){W=!0;let m=Wt(p.location,p.matches);m!=null&&de({restoreScrollPosition:m})}return()=>{C=null,D=null,x=null}}function Kt(o,s){return x&&x(o,s.map(m=>vr(m,p.loaderData)))||o.key}function $r(o,s){if(C&&D){let d=Kt(o,s);C[d]=D()}}function Wt(o,s){if(C){let d=Kt(o,s),m=C[d];if(typeof m=="number")return m}return null}function Jt(o,s,d){if(g)if(o){if(o[o.length-1].route.path==="*")return{active:!0,matches:dt(s,d,c,!0)}}else return{active:!0,matches:dt(s,d,c,!0)||[]};return{active:!1,matches:null}}async function lt(o,s,d){let m=o,R=m.length>0?m[m.length-1].route:null;for(;;){try{await On(g,s,m,l||f,u,a,be,d)}catch(P){return{type:"error",error:P,partialMatches:m}}if(d.aborted)return{type:"aborted"};let S=f||l,_=Ue(S,s,c),b=!1;if(_){let P=_[_.length-1].route;if(P.index)return{type:"success",matches:_};if(P.path&&P.path.length>0)if(P.path==="*")b=!0;else return{type:"success",matches:_}}let O=dt(S,s,c,!0);if(!O||m.map(P=>P.route.id).join("-")===O.map(P=>P.route.id).join("-"))return{type:"success",matches:b?_:null};if(m=O,R=m[m.length-1].route,R.path==="*")return{type:"success",matches:m}}}function Yr(o){u={},f=et(o,a,void 0,u)}return B={get basename(){return c},get future(){return h},get state(){return p},get routes(){return l},get window(){return t},initialize:gt,subscribe:jr,enableScrollRestoration:Hr,navigate:Ft,fetch:Nr,revalidate:Or,createHref:o=>e.history.createHref(o),encodeLocation:o=>e.history.encodeLocation(o),getFetcher:Bt,deleteFetcher:kr,dispose:Tr,getBlocker:zr,deleteBlocker:$t,patchRoutes(o,s){return Pr(o,s,l||f,u,a)},_internalFetchControllers:Q,_internalActiveDeferreds:Y,_internalSetRoutes:Yr},B}function Ln(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function _t(e,t,r,n,a,u,l,f){let c,y;if(l){c=[];for(let h of t)if(c.push(h),h.route.id===l){y=h;break}}else c=t,y=t[t.length-1];let g=Mt(a||".",Dt(c,u),rt(e.pathname,r)||e.pathname,f==="path");return a==null&&(g.search=e.search,g.hash=e.hash),(a==null||a===""||a===".")&&y&&y.route.index&&!Tt(g.search)&&(g.search=g.search?g.search.replace(/^\?/,"?index&"):"?index"),n&&r!=="/"&&(g.pathname=g.pathname==="/"?r:Se([r,g.pathname])),tt(g)}function tr(e,t,r,n){if(!n||!Ln(n))return{path:r};if(n.formMethod&&!Yn(n.formMethod))return{path:r,error:ue(405,{method:n.formMethod})};let a=()=>({path:r,error:ue(400,{type:"invalid-body"})}),u=n.formMethod||"get",l=e?u.toUpperCase():u.toLowerCase(),f=Sr(r);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!ye(l))return a();let E=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((N,C)=>{let[x,D]=C;return""+N+x+"="+D+`
|
|
27
|
+
`},""):String(n.body);return{path:r,submission:{formMethod:l,formAction:f,formEncType:n.formEncType,formData:void 0,json:void 0,text:E}}}else if(n.formEncType==="application/json"){if(!ye(l))return a();try{let E=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:l,formAction:f,formEncType:n.formEncType,formData:void 0,json:E,text:void 0}}}catch{return a()}}}F(typeof FormData=="function","FormData is not available in this environment");let c,y;if(n.formData)c=Ct(n.formData),y=n.formData;else if(n.body instanceof FormData)c=Ct(n.body),y=n.body;else if(n.body instanceof URLSearchParams)c=n.body,y=ir(c);else if(n.body==null)c=new URLSearchParams,y=new FormData;else try{c=new URLSearchParams(n.body),y=ir(c)}catch{return a()}let g={formMethod:l,formAction:f,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:y,json:void 0,text:void 0};if(ye(g.formMethod))return{path:r,submission:g};let h=Te(r);return t&&h.search&&Tt(h.search)&&c.append("index",""),h.search="?"+c,{path:tt(h),submission:g}}function Tn(e,t){let r=e;if(t){let n=e.findIndex(a=>a.route.id===t);n>=0&&(r=e.slice(0,n))}return r}function rr(e,t,r,n,a,u,l,f,c,y,g,h,E,N,C,x){let D=x?me(x[1])?x[1].error:x[1].data:void 0,W=e.createURL(t.location),k=e.createURL(a),ee=x&&me(x[1])?x[0]:void 0,ae=ee?Tn(r,ee):r,B=x?x[1].statusCode:void 0,p=l&&B&&B>=400,le=ae.filter((z,se)=>{let{route:te}=z;if(te.lazy)return!0;if(te.loader==null)return!1;if(u)return typeof te.loader!="function"||te.loader.hydrate?!0:t.loaderData[te.id]===void 0&&(!t.errors||t.errors[te.id]===void 0);if(jn(t.loaderData,t.matches[se],z)||c.some(oe=>oe===z.route.id))return!0;let ce=t.matches[se],fe=z;return nr(z,q({currentUrl:W,currentParams:ce.params,nextUrl:k,nextParams:fe.params},n,{actionResult:D,unstable_actionStatus:B,defaultShouldRevalidate:p?!1:f||W.pathname+W.search===k.pathname+k.search||W.search!==k.search||xr(ce,fe)}))}),ve=[];return h.forEach((z,se)=>{if(u||!r.some(he=>he.route.id===z.routeId)||g.has(se))return;let te=Ue(N,z.path,C);if(!te){ve.push({key:se,routeId:z.routeId,path:z.path,matches:null,match:null,controller:null});return}let ce=t.fetchers.get(se),fe=Xe(te,z.path),oe=!1;E.has(se)?oe=!1:y.includes(se)?oe=!0:ce&&ce.state!=="idle"&&ce.data===void 0?oe=f:oe=nr(fe,q({currentUrl:W,currentParams:t.matches[t.matches.length-1].params,nextUrl:k,nextParams:r[r.length-1].params},n,{actionResult:D,unstable_actionStatus:B,defaultShouldRevalidate:p?!1:f})),oe&&ve.push({key:se,routeId:z.routeId,path:z.path,matches:te,match:fe,controller:new AbortController})}),[le,ve]}function jn(e,t,r){let n=!t||r.route.id!==t.route.id,a=e[r.route.id]===void 0;return n||a}function xr(e,t){let r=e.route.path;return e.pathname!==t.pathname||r!=null&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function nr(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if(typeof r=="boolean")return r}return t.defaultShouldRevalidate}async function On(e,t,r,n,a,u,l,f){let c=[t,...r.map(y=>y.route.id)].join("-");try{let y=l.get(c);y||(y=e({path:t,matches:r,patch:(g,h)=>{f.aborted||Pr(g,h,n,a,u)}}),l.set(c,y)),y&&zn(y)&&await y}finally{l.delete(c)}}function Pr(e,t,r,n,a){if(e){var u;let l=n[e];F(l,"No route found to patch children into: routeId = "+e);let f=et(t,a,[e,"patch",String(((u=l.children)==null?void 0:u.length)||"0")],n);l.children?l.children.push(...f):l.children=f}else{let l=et(t,a,["patch",String(r.length||"0")],n);r.push(...l)}}async function ar(e,t,r){if(!e.lazy)return;let n=await e.lazy();if(!e.lazy)return;let a=r[e.id];F(a,"No route found in manifest");let u={};for(let l in n){let c=a[l]!==void 0&&l!=="hasErrorBoundary";$e(!c,'Route "'+a.id+'" has a static property "'+l+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+l+'" will be ignored.')),!c&&!tn.has(l)&&(u[l]=n[l])}Object.assign(a,u),Object.assign(a,q({},t(a),{lazy:void 0}))}function An(e){return Promise.all(e.matches.map(t=>t.resolve()))}async function Un(e,t,r,n,a,u,l,f){let c=n.reduce((h,E)=>h.add(E.route.id),new Set),y=new Set,g=await e({matches:a.map(h=>{let E=c.has(h.route.id);return q({},h,{shouldLoad:E,resolve:C=>(y.add(h.route.id),E?Fn(t,r,h,u,l,C,f):Promise.resolve({type:G.data,result:void 0}))})}),request:r,params:a[0].params,context:f});return a.forEach(h=>F(y.has(h.route.id),'`match.resolve()` was not called for route id "'+h.route.id+'". You must call `match.resolve()` on every match passed to `dataStrategy` to ensure all routes are properly loaded.')),g.filter((h,E)=>c.has(a[E].route.id))}async function Fn(e,t,r,n,a,u,l){let f,c,y=g=>{let h,E=new Promise((x,D)=>h=D);c=()=>h(),t.signal.addEventListener("abort",c);let N=x=>typeof g!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+r.route.id+"]"))):g({request:t,params:r.params,context:l},...x!==void 0?[x]:[]),C;return u?C=u(x=>N(x)):C=(async()=>{try{return{type:"data",result:await N()}}catch(x){return{type:"error",result:x}}})(),Promise.race([C,E])};try{let g=r.route[e];if(r.route.lazy)if(g){let h,[E]=await Promise.all([y(g).catch(N=>{h=N}),ar(r.route,a,n)]);if(h!==void 0)throw h;f=E}else if(await ar(r.route,a,n),g=r.route[e],g)f=await y(g);else if(e==="action"){let h=new URL(t.url),E=h.pathname+h.search;throw ue(405,{method:t.method,pathname:E,routeId:r.route.id})}else return{type:G.data,result:void 0};else if(g)f=await y(g);else{let h=new URL(t.url),E=h.pathname+h.search;throw ue(404,{pathname:E})}F(f.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+r.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(g){return{type:G.error,result:g}}finally{c&&t.signal.removeEventListener("abort",c)}return f}async function Nn(e){let{result:t,type:r,status:n}=e;if(_r(t)){let l;try{let f=t.headers.get("Content-Type");f&&/\bapplication\/json\b/.test(f)?t.body==null?l=null:l=await t.json():l=await t.text()}catch(f){return{type:G.error,error:f}}return r===G.error?{type:G.error,error:new br(t.status,t.statusText,l),statusCode:t.status,headers:t.headers}:{type:G.data,data:l,statusCode:t.status,headers:t.headers}}if(r===G.error)return{type:G.error,error:t,statusCode:mt(t)?t.status:n};if($n(t)){var a,u;return{type:G.deferred,deferredData:t,statusCode:(a=t.init)==null?void 0:a.status,headers:((u=t.init)==null?void 0:u.headers)&&new Headers(t.init.headers)}}return{type:G.data,data:t,statusCode:n}}function In(e,t,r,n,a,u){let l=e.headers.get("Location");if(F(l,"Redirects returned/thrown from loaders/actions must have a Location header"),!Lt.test(l)){let f=n.slice(0,n.findIndex(c=>c.route.id===r)+1);l=_t(new URL(t.url),f,a,!0,l,u),e.headers.set("Location",l)}return e}function or(e,t,r){if(Lt.test(e)){let n=e,a=n.startsWith("//")?new URL(t.protocol+n):new URL(n),u=rt(a.pathname,r)!=null;if(a.origin===t.origin&&u)return a.pathname+a.search+a.hash}return e}function He(e,t,r,n){let a=e.createURL(Sr(t)).toString(),u={signal:r};if(n&&ye(n.formMethod)){let{formMethod:l,formEncType:f}=n;u.method=l.toUpperCase(),f==="application/json"?(u.headers=new Headers({"Content-Type":f}),u.body=JSON.stringify(n.json)):f==="text/plain"?u.body=n.text:f==="application/x-www-form-urlencoded"&&n.formData?u.body=Ct(n.formData):u.body=n.formData}return new Request(a,u)}function Ct(e){let t=new URLSearchParams;for(let[r,n]of e.entries())t.append(r,typeof n=="string"?n:n.name);return t}function ir(e){let t=new FormData;for(let[r,n]of e.entries())t.append(r,n);return t}function Bn(e,t,r,n,a,u){let l={},f=null,c,y=!1,g={},h=n&&me(n[1])?n[1].error:void 0;return r.forEach((E,N)=>{let C=t[N].route.id;if(F(!Ne(E),"Cannot handle redirect results in processLoaderData"),me(E)){let x=E.error;h!==void 0&&(x=h,h=void 0),f=f||{};{let D=Qe(e,C);f[D.route.id]==null&&(f[D.route.id]=x)}l[C]=void 0,y||(y=!0,c=mt(E.error)?E.error.status:500),E.headers&&(g[C]=E.headers)}else Fe(E)?(a.set(C,E.deferredData),l[C]=E.deferredData.data,E.statusCode!=null&&E.statusCode!==200&&!y&&(c=E.statusCode),E.headers&&(g[C]=E.headers)):(l[C]=E.data,E.statusCode&&E.statusCode!==200&&!y&&(c=E.statusCode),E.headers&&(g[C]=E.headers))}),h!==void 0&&n&&(f={[n[0]]:h},l[n[0]]=void 0),{loaderData:l,errors:f,statusCode:c||200,loaderHeaders:g}}function lr(e,t,r,n,a,u,l,f){let{loaderData:c,errors:y}=Bn(t,r,n,a,f);for(let g=0;g<u.length;g++){let{key:h,match:E,controller:N}=u[g];F(l!==void 0&&l[g]!==void 0,"Did not find corresponding fetcher result");let C=l[g];if(!(N&&N.signal.aborted))if(me(C)){let x=Qe(e.matches,E==null?void 0:E.route.id);y&&y[x.route.id]||(y=q({},y,{[x.route.id]:C.error})),e.fetchers.delete(h)}else if(Ne(C))F(!1,"Unhandled fetcher revalidation redirect");else if(Fe(C))F(!1,"Unhandled fetcher deferred data");else{let x=Le(C.data);e.fetchers.set(h,x)}}return{loaderData:c,errors:y}}function sr(e,t,r,n){let a=q({},t);for(let u of r){let l=u.route.id;if(t.hasOwnProperty(l)?t[l]!==void 0&&(a[l]=t[l]):e[l]!==void 0&&u.route.loader&&(a[l]=e[l]),n&&n.hasOwnProperty(l))break}return a}function ur(e){return e?me(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Qe(e,t){return(t?e.slice(0,e.findIndex(n=>n.route.id===t)+1):[...e]).reverse().find(n=>n.route.hasErrorBoundary===!0)||e[0]}function cr(e){let t=e.length===1?e[0]:e.find(r=>r.index||!r.path||r.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function ue(e,t){let{pathname:r,routeId:n,method:a,type:u,message:l}=t===void 0?{}:t,f="Unknown Server Error",c="Unknown @remix-run/router error";return e===400?(f="Bad Request",u==="route-discovery"?c='Unable to match URL "'+r+'" - the `children()` function for '+("route `"+n+"` threw the following error:\n"+l):a&&r&&n?c="You made a "+a+' request to "'+r+'" but '+('did not provide a `loader` for route "'+n+'", ')+"so there is no way to handle the request.":u==="defer-action"?c="defer() is not supported in actions":u==="invalid-body"&&(c="Unable to encode submission body")):e===403?(f="Forbidden",c='Route "'+n+'" does not match URL "'+r+'"'):e===404?(f="Not Found",c='No route matches URL "'+r+'"'):e===405&&(f="Method Not Allowed",a&&r&&n?c="You made a "+a.toUpperCase()+' request to "'+r+'" but '+('did not provide an `action` for route "'+n+'", ')+"so there is no way to handle the request.":a&&(c='Invalid request method "'+a.toUpperCase()+'"')),new br(e||500,f,new Error(c),!0)}function dr(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(Ne(r))return{result:r,idx:t}}}function Sr(e){let t=typeof e=="string"?Te(e):e;return tt(q({},t,{hash:""}))}function kn(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function zn(e){return typeof e=="object"&&e!=null&&"then"in e}function Hn(e){return _r(e.result)&&_n.has(e.result.status)}function Fe(e){return e.type===G.deferred}function me(e){return e.type===G.error}function Ne(e){return(e&&e.type)===G.redirect}function $n(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"}function _r(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Yn(e){return Sn.has(e.toLowerCase())}function ye(e){return xn.has(e.toLowerCase())}async function fr(e,t,r,n,a,u){for(let l=0;l<r.length;l++){let f=r[l],c=t[l];if(!c)continue;let y=e.find(h=>h.route.id===c.route.id),g=y!=null&&!xr(y,c)&&(u&&u[c.route.id])!==void 0;if(Fe(f)&&(a||g)){let h=n[l];F(h,"Expected an AbortSignal for revalidating fetcher deferred result"),await Cr(f,h,a).then(E=>{E&&(r[l]=E||r[l])})}}}async function Cr(e,t,r){if(r===void 0&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:G.data,data:e.deferredData.unwrappedData}}catch(a){return{type:G.error,error:a}}return{type:G.data,data:e.deferredData.data}}}function Tt(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Xe(e,t){let r=typeof t=="string"?Te(t).search:t.search;if(e[e.length-1].route.index&&Tt(r||""))return e[e.length-1];let n=Er(e);return n[n.length-1]}function hr(e){let{formMethod:t,formAction:r,formEncType:n,text:a,formData:u,json:l}=e;if(!(!t||!r||!n)){if(a!=null)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a};if(u!=null)return{formMethod:t,formAction:r,formEncType:n,formData:u,json:void 0,text:void 0};if(l!==void 0)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:l,text:void 0}}}function Pt(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Kn(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function qe(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Wn(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Le(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Jn(e,t){try{let r=e.sessionStorage.getItem(wr);if(r){let n=JSON.parse(r);for(let[a,u]of Object.entries(n||{}))u&&Array.isArray(u)&&t.set(a,new Set(u||[]))}}catch{}}function Vn(e,t){if(t.size>0){let r={};for(let[n,a]of t)r[n]=[...a];try{e.sessionStorage.setItem(wr,JSON.stringify(r))}catch(n){$e(!1,"Failed to save applied view transitions in sessionStorage ("+n+").")}}}/**
|
|
28
|
+
* React Router v6.24.0
|
|
29
|
+
*
|
|
30
|
+
* Copyright (c) Remix Software Inc.
|
|
31
|
+
*
|
|
32
|
+
* This source code is licensed under the MIT license found in the
|
|
33
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
34
|
+
*
|
|
35
|
+
* @license MIT
|
|
36
|
+
*/function ft(){return ft=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},ft.apply(this,arguments)}const jt=w.createContext(null),Gn=w.createContext(null),ht=w.createContext(null),Ye=w.createContext(null),Ot=w.createContext(null),_e=w.createContext({outlet:null,matches:[],isDataRoute:!1}),Dr=w.createContext(null);function Ea(e,t){let{relative:r}=t===void 0?{}:t;nt()||F(!1);let{basename:n,navigator:a}=w.useContext(Ye),{hash:u,pathname:l,search:f}=Zn(e,{relative:r}),c=l;return n!=="/"&&(c=l==="/"?n:Se([n,l])),a.createHref({pathname:c,search:f,hash:u})}function nt(){return w.useContext(Ot)!=null}function At(){return nt()||F(!1),w.useContext(Ot).location}function Mr(e){w.useContext(Ye).static||w.useLayoutEffect(e)}function ba(){let{isDataRoute:e}=w.useContext(_e);return e?sa():qn()}function qn(){nt()||F(!1);let e=w.useContext(jt),{basename:t,future:r,navigator:n}=w.useContext(Ye),{matches:a}=w.useContext(_e),{pathname:u}=At(),l=JSON.stringify(Dt(a,r.v7_relativeSplatPath)),f=w.useRef(!1);return Mr(()=>{f.current=!0}),w.useCallback(function(y,g){if(g===void 0&&(g={}),!f.current)return;if(typeof y=="number"){n.go(y);return}let h=Mt(y,JSON.parse(l),u,g.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:Se([t,h.pathname])),(g.replace?n.replace:n.push)(h,g.state,g)},[t,n,l,u,e])}const Xn=w.createContext(null);function Qn(e){let t=w.useContext(_e).outlet;return t&&w.createElement(Xn.Provider,{value:e},t)}function Ra(){let{matches:e}=w.useContext(_e),t=e[e.length-1];return t?t.params:{}}function Zn(e,t){let{relative:r}=t===void 0?{}:t,{future:n}=w.useContext(Ye),{matches:a}=w.useContext(_e),{pathname:u}=At(),l=JSON.stringify(Dt(a,n.v7_relativeSplatPath));return w.useMemo(()=>Mt(e,JSON.parse(l),u,r==="path"),[e,l,u,r])}function wa(e,t,r,n){nt()||F(!1);let{navigator:a}=w.useContext(Ye),{matches:u}=w.useContext(_e),l=u[u.length-1],f=l?l.params:{};l&&l.pathname;let c=l?l.pathnameBase:"/";l&&l.route;let y=At(),g;g=y;let h=g.pathname||"/",E=h;if(c!=="/"){let x=c.replace(/^\//,"").split("/");E="/"+h.replace(/^\//,"").split("/").slice(x.length).join("/")}let N=Ue(e,{pathname:E});return aa(N&&N.map(x=>Object.assign({},x,{params:Object.assign({},f,x.params),pathname:Se([c,a.encodeLocation?a.encodeLocation(x.pathname).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?c:Se([c,a.encodeLocation?a.encodeLocation(x.pathnameBase).pathname:x.pathnameBase])})),u,r,n)}function ea(){let e=ia(),t=mt(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return w.createElement(w.Fragment,null,w.createElement("h2",null,"Unexpected Application Error!"),w.createElement("h3",{style:{fontStyle:"italic"}},t),r?w.createElement("pre",{style:a},r):null,null)}const ta=w.createElement(ea,null);class ra extends w.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?w.createElement(_e.Provider,{value:this.props.routeContext},w.createElement(Dr.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function na(e){let{routeContext:t,match:r,children:n}=e,a=w.useContext(jt);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),w.createElement(_e.Provider,{value:t},n)}function aa(e,t,r,n){var a;if(t===void 0&&(t=[]),r===void 0&&(r=null),n===void 0&&(n=null),e==null){var u;if((u=r)!=null&&u.errors)e=r.matches;else return null}let l=e,f=(a=r)==null?void 0:a.errors;if(f!=null){let g=l.findIndex(h=>h.route.id&&(f==null?void 0:f[h.route.id])!==void 0);g>=0||F(!1),l=l.slice(0,Math.min(l.length,g+1))}let c=!1,y=-1;if(r&&n&&n.v7_partialHydration)for(let g=0;g<l.length;g++){let h=l[g];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(y=g),h.route.id){let{loaderData:E,errors:N}=r,C=h.route.loader&&E[h.route.id]===void 0&&(!N||N[h.route.id]===void 0);if(h.route.lazy||C){c=!0,y>=0?l=l.slice(0,y+1):l=[l[0]];break}}}return l.reduceRight((g,h,E)=>{let N,C=!1,x=null,D=null;r&&(N=f&&h.route.id?f[h.route.id]:void 0,x=h.route.errorElement||ta,c&&(y<0&&E===0?(C=!0,D=null):y===E&&(C=!0,D=h.route.hydrateFallbackElement||null)));let W=t.concat(l.slice(0,E+1)),k=()=>{let ee;return N?ee=x:C?ee=D:h.route.Component?ee=w.createElement(h.route.Component,null):h.route.element?ee=h.route.element:ee=g,w.createElement(na,{match:h,routeContext:{outlet:g,matches:W,isDataRoute:r!=null},children:ee})};return r&&(h.route.ErrorBoundary||h.route.errorElement||E===0)?w.createElement(ra,{location:r.location,revalidation:r.revalidation,component:x,error:N,children:k(),routeContext:{outlet:null,matches:W,isDataRoute:!0}}):k()},null)}var Ut=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Ut||{}),Ee=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Ee||{});function Lr(e){let t=w.useContext(jt);return t||F(!1),t}function Ke(e){let t=w.useContext(Gn);return t||F(!1),t}function oa(e){let t=w.useContext(_e);return t||F(!1),t}function vt(e){let t=oa(),r=t.matches[t.matches.length-1];return r.route.id||F(!1),r.route.id}function xa(){return vt(Ee.UseRouteId)}function Pa(){return Ke(Ee.UseNavigation).navigation}function Sa(){let e=Lr(Ut.UseRevalidator),t=Ke(Ee.UseRevalidator);return w.useMemo(()=>({revalidate:e.router.revalidate,state:t.revalidation}),[e.router.revalidate,t.revalidation])}function _a(){let{matches:e,loaderData:t}=Ke(Ee.UseMatches);return w.useMemo(()=>e.map(r=>vr(r,t)),[e,t])}function Ca(){let e=Ke(Ee.UseLoaderData),t=vt(Ee.UseLoaderData);if(e.errors&&e.errors[t]!=null){console.error("You cannot `useLoaderData` in an errorElement (routeId: "+t+")");return}return e.loaderData[t]}function Da(e){return Ke(Ee.UseRouteLoaderData).loaderData[e]}function ia(){var e;let t=w.useContext(Dr),r=Ke(Ee.UseRouteError),n=vt(Ee.UseRouteError);return t!==void 0?t:(e=r.errors)==null?void 0:e[n]}function la(){let e=w.useContext(ht);return e==null?void 0:e._data}function Ma(){let e=w.useContext(ht);return e==null?void 0:e._error}function sa(){let{router:e}=Lr(Ut.UseNavigateStable),t=vt(Ee.UseNavigateStable),r=w.useRef(!1);return Mr(()=>{r.current=!0}),w.useCallback(function(a,u){u===void 0&&(u={}),r.current&&(typeof a=="number"?e.navigate(a):e.navigate(a,ft({fromRouteId:t},u)))},[e,t])}function La(e){return Qn(e.context)}function Ta(e){let{basename:t="/",children:r=null,location:n,navigationType:a=ne.Pop,navigator:u,static:l=!1,future:f}=e;nt()&&F(!1);let c=t.replace(/^\/*/,"/"),y=w.useMemo(()=>({basename:c,navigator:u,static:l,future:ft({v7_relativeSplatPath:!1},f)}),[c,f,u,l]);typeof n=="string"&&(n=Te(n));let{pathname:g="/",search:h="",hash:E="",state:N=null,key:C="default"}=n,x=w.useMemo(()=>{let D=rt(g,c);return D==null?null:{location:{pathname:D,search:h,hash:E,state:N,key:C},navigationType:a}},[c,g,h,E,N,C,a]);return x==null?null:w.createElement(Ye.Provider,{value:y},w.createElement(Ot.Provider,{children:r,value:x}))}function ja(e){let{children:t,errorElement:r,resolve:n}=e;return w.createElement(ca,{resolve:n,errorElement:r},w.createElement(da,null,t))}var ge=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(ge||{});const ua=new Promise(()=>{});class ca extends w.Component{constructor(t){super(t),this.state={error:null}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("<Await> caught the following error during render",t,r)}render(){let{children:t,errorElement:r,resolve:n}=this.props,a=null,u=ge.pending;if(!(n instanceof Promise))u=ge.success,a=Promise.resolve(),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_data",{get:()=>n});else if(this.state.error){u=ge.error;let l=this.state.error;a=Promise.reject().catch(()=>{}),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_error",{get:()=>l})}else n._tracked?(a=n,u="_error"in a?ge.error:"_data"in a?ge.success:ge.pending):(u=ge.pending,Object.defineProperty(n,"_tracked",{get:()=>!0}),a=n.then(l=>Object.defineProperty(n,"_data",{get:()=>l}),l=>Object.defineProperty(n,"_error",{get:()=>l})));if(u===ge.error&&a._error instanceof St)throw ua;if(u===ge.error&&!r)throw a._error;if(u===ge.error)return w.createElement(ht.Provider,{value:a,children:r});if(u===ge.success)return w.createElement(ht.Provider,{value:a,children:t});throw a}}function da(e){let{children:t}=e,r=la(),n=typeof t=="function"?t(r):t;return w.createElement(w.Fragment,null,n)}function Oa(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:w.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:w.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:w.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}export{wa as A,Ea as B,pa as C,jt as D,br as E,er as F,Te as G,St as H,Dn as I,va as J,ga as K,Ca as L,ja as M,Ye as N,La as O,Ma as P,Da as Q,Qr as R,ia as a,Ra as b,Pa as c,ba as d,Sa as e,Xr as f,ya as g,ma as h,mt as i,ha as j,Oa as k,_a as l,Ue as m,Jr as n,fa as o,xa as p,_e as q,w as r,F as s,Zn as t,At as u,Se as v,tt as w,rt as x,Gn as y,Ta as z};
|
|
37
|
+
//# sourceMappingURL=index-2WpY3jqc.js.map
|