@epic-web/workshop-app 5.12.2 → 5.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_exerciseNumber-B5x3u5o0.js → _exerciseNumber-Bd4c2v-C.js} +2 -2
- package/build/client/assets/{_exerciseNumber-B5x3u5o0.js.map → _exerciseNumber-Bd4c2v-C.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-CWHBWFYP.js → _exerciseNumber_.finished-LvfViAKb.js} +2 -2
- package/build/client/assets/{_exerciseNumber_.finished-CWHBWFYP.js.map → _exerciseNumber_.finished-LvfViAKb.js.map} +1 -1
- package/build/client/assets/{_layout-D7PSWvDV.js → _layout-DhhhwkhJ.js} +2 -2
- package/build/client/assets/{_layout-D7PSWvDV.js.map → _layout-DhhhwkhJ.js.map} +1 -1
- package/build/client/assets/{_layout-B5GBAg5P.js → _layout-cO4Dvl1j.js} +2 -2
- package/build/client/assets/_layout-cO4Dvl1j.js.map +1 -0
- package/build/client/assets/{app-C2OvdXoM.js → app-DK_pEo6e.js} +2 -2
- package/build/client/assets/{app-C2OvdXoM.js.map → app-DK_pEo6e.js.map} +1 -1
- package/build/client/assets/{diff-BIJG7lM0.js → diff-BrUTVi14.js} +2 -2
- package/build/client/assets/diff-BrUTVi14.js.map +1 -0
- package/build/client/assets/{diff-BLwCINNG.js → diff-DI-wBaTF.js} +2 -2
- package/build/client/assets/{diff-BLwCINNG.js.map → diff-DI-wBaTF.js.map} +1 -1
- package/build/client/assets/{epic-video-BN9tH2d3.js → epic-video-DoUlMEIW.js} +2 -2
- package/build/client/assets/{epic-video-BN9tH2d3.js.map → epic-video-DoUlMEIW.js.map} +1 -1
- package/build/client/assets/{finished-DCXZj8Z6.js → finished-y90Pn48k.js} +2 -2
- package/build/client/assets/{finished-DCXZj8Z6.js.map → finished-y90Pn48k.js.map} +1 -1
- package/build/client/assets/index-BOO5UotZ.js +36 -0
- package/build/client/assets/index-BOO5UotZ.js.map +1 -0
- package/build/client/assets/{index-URcvFBYJ.js → index-CxEnb-w2.js} +2 -2
- package/build/client/assets/index-CxEnb-w2.js.map +1 -0
- package/build/client/assets/{index-I2Jm_PoG.js → index-De6oiBJI.js} +2 -2
- package/build/client/assets/{index-I2Jm_PoG.js.map → index-De6oiBJI.js.map} +1 -1
- package/build/client/assets/{loading-ZSC9wgHC.js → loading-D4V_nJZr.js} +2 -2
- package/build/client/assets/{loading-ZSC9wgHC.js.map → loading-D4V_nJZr.js.map} +1 -1
- package/build/client/assets/{login-RlImW-EE.js → login-DiEHnGfv.js} +2 -2
- package/build/client/assets/{login-RlImW-EE.js.map → login-DiEHnGfv.js.map} +1 -1
- package/build/client/assets/{manifest-022c9919.js → manifest-44a29362.js} +1 -1
- package/build/client/assets/{mdx-wFsONSmT.js → mdx-Ce3knRHx.js} +2 -2
- package/build/client/assets/{mdx-wFsONSmT.js.map → mdx-Ce3knRHx.js.map} +1 -1
- package/build/client/assets/{onboarding-y1OmFtYT.js → onboarding-Dnb9KzTs.js} +2 -2
- package/build/client/assets/{onboarding-y1OmFtYT.js.map → onboarding-Dnb9KzTs.js.map} +1 -1
- package/build/client/assets/{online-DZEJ9mQ4.js → online-BrcRwzQC.js} +2 -2
- package/build/client/assets/{online-DZEJ9mQ4.js.map → online-BrcRwzQC.js.map} +1 -1
- package/build/client/assets/{presence-BPdQqqxh.js → presence-Dmt5LCeW.js} +2 -2
- package/build/client/assets/{presence-BPdQqqxh.js.map → presence-Dmt5LCeW.js.map} +1 -1
- package/build/client/assets/{preview-DwJJV8IU.js → preview-BUkOZv9x.js} +2 -2
- package/build/client/assets/{preview-DwJJV8IU.js.map → preview-BUkOZv9x.js.map} +1 -1
- package/build/client/assets/{product-DD8nUALO.js → product-CleOH5Nn.js} +2 -2
- package/build/client/assets/{product-DD8nUALO.js.map → product-CleOH5Nn.js.map} +1 -1
- package/build/client/assets/{revalidation-ws-BIizeOeQ.js → revalidation-ws-CibzUlFP.js} +2 -2
- package/build/client/assets/{revalidation-ws-BIizeOeQ.js.map → revalidation-ws-CibzUlFP.js.map} +1 -1
- package/build/client/assets/{root-D2jqGwJl.js → root-BOerY_70.js} +3 -3
- package/build/client/assets/{root-D2jqGwJl.js.map → root-BOerY_70.js.map} +1 -1
- package/build/client/assets/{set-playground-BoPKA2de.js → set-playground-DBPp1Pek.js} +2 -2
- package/build/client/assets/set-playground-DBPp1Pek.js.map +1 -0
- package/build/client/assets/tailwind-Bcxzac75.css +1 -0
- package/build/client/assets/{test-BqhhxMae.js → test-DGBB06nI.js} +2 -2
- package/build/client/assets/{test-BqhhxMae.js.map → test-DGBB06nI.js.map} +1 -1
- package/build/client/assets/{tests-9K325XZ-.js → tests-B6AwzXv3.js} +2 -2
- package/build/client/assets/{tests-9K325XZ-.js.map → tests-B6AwzXv3.js.map} +1 -1
- package/build/server/index.js +8 -409
- package/build/server/index.js.map +1 -1
- package/package.json +3 -6
- package/build/client/assets/_layout-B5GBAg5P.js.map +0 -1
- package/build/client/assets/diff-BIJG7lM0.js.map +0 -1
- package/build/client/assets/index-Ba7zHVvt.js +0 -36
- package/build/client/assets/index-Ba7zHVvt.js.map +0 -1
- package/build/client/assets/index-URcvFBYJ.js.map +0 -1
- package/build/client/assets/set-playground-BoPKA2de.js.map +0 -1
- package/build/client/assets/tailwind-4klXLdJc.css +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epic-web/workshop-app",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.13.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"@epic-web/invariant": "^1.0.0",
|
|
45
45
|
"@epic-web/remember": "^1.1.0",
|
|
46
46
|
"@epic-web/restore-scroll": "^1.1.1",
|
|
47
|
-
"@epic-web/workshop-presence": "5.
|
|
48
|
-
"@epic-web/workshop-utils": "5.
|
|
47
|
+
"@epic-web/workshop-presence": "5.13.1",
|
|
48
|
+
"@epic-web/workshop-utils": "5.13.1",
|
|
49
49
|
"@mdx-js/mdx": "^3.0.1",
|
|
50
50
|
"@mux/mux-player-react": "^3.0.0",
|
|
51
51
|
"@nasa-gcn/remix-seo": "^2.0.1",
|
|
@@ -84,7 +84,6 @@
|
|
|
84
84
|
"fs-extra": "^11.2.0",
|
|
85
85
|
"get-port": "^7.1.0",
|
|
86
86
|
"glob": "^11.0.0",
|
|
87
|
-
"ignore": "^6.0.2",
|
|
88
87
|
"isbot": "^5.1.17",
|
|
89
88
|
"lru-cache": "^11.0.1",
|
|
90
89
|
"md5-hex": "^5.0.0",
|
|
@@ -94,7 +93,6 @@
|
|
|
94
93
|
"msw": "^2.4.9",
|
|
95
94
|
"openid-client": "^6.1.7",
|
|
96
95
|
"p-queue": "^8.0.1",
|
|
97
|
-
"parse-git-diff": "^0.0.16",
|
|
98
96
|
"partysocket": "^1.0.2",
|
|
99
97
|
"react": "19.0.0-rc-1460d67c-20241003",
|
|
100
98
|
"react-dom": "19.0.0-rc-1460d67c-20241003",
|
|
@@ -105,7 +103,6 @@
|
|
|
105
103
|
"remix-utils": "^7.7.0",
|
|
106
104
|
"satori": "^0.11.2",
|
|
107
105
|
"shell-quote": "^1.8.1",
|
|
108
|
-
"shiki": "^1.22.0",
|
|
109
106
|
"sonner": "^1.5.0",
|
|
110
107
|
"source-map-support": "^0.5.21",
|
|
111
108
|
"spin-delay": "^2.0.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_layout-B5GBAg5P.js","sources":["../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/step-mdx.tsx","../../../../../node_modules/@radix-ui/react-popover/dist/index.mjs","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/touched-files.tsx","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout.tsx"],"sourcesContent":["import {\n\tLink,\n\tuseLoaderData,\n\tuseSearchParams,\n\ttype LinkProps,\n} from '@remix-run/react'\nimport * as React from 'react'\nimport { type PropsWithChildren } from 'react'\nimport iconsSvg from '#app/assets/icons.svg'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { type InBrowserBrowserRef } from '#app/components/in-browser-browser.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport { LaunchEditor } from '#app/routes/launch-editor.tsx'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn, getBaseUrl } from '#app/utils/misc.tsx'\nimport { useRequestInfo } from '#app/utils/request-info.ts'\nimport { type loader } from '../_layout.tsx'\n\ntype StepContextType = {\n\tinBrowserBrowserRef: React.RefObject<InBrowserBrowserRef | null>\n}\nconst StepContext = React.createContext<StepContextType | null>(null)\n\nfunction useStepContext() {\n\tconst context = React.useContext(StepContext)\n\tif (!context) {\n\t\tthrow new Error('useStepContext must be used within a StepContext.Provider')\n\t}\n\treturn context\n}\n\nfunction StepContextProvider({\n\tchildren,\n\tinBrowserBrowserRef,\n}: {\n\tchildren: React.ReactNode\n\tinBrowserBrowserRef: React.RefObject<InBrowserBrowserRef | null>\n}) {\n\treturn (\n\t\t<StepContext.Provider value={{ inBrowserBrowserRef }}>\n\t\t\t{children}\n\t\t</StepContext.Provider>\n\t)\n}\n\nconst stepMdxComponents = {\n\tDiffLink,\n\tPrevDiffLink,\n\tNextDiffLink,\n\tInlineFile,\n\tLinkToApp,\n}\n\nexport function StepMdx({\n\tinBrowserBrowserRef,\n}: {\n\tinBrowserBrowserRef: React.RefObject<InBrowserBrowserRef | null>\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tif (!data.exerciseStepApp.instructionsCode) return null\n\treturn (\n\t\t<StepContextProvider inBrowserBrowserRef={inBrowserBrowserRef}>\n\t\t\t<EpicVideoInfoProvider epicVideoInfosPromise={data.epicVideoInfosPromise}>\n\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t<Mdx\n\t\t\t\t\t\tcode={data.exerciseStepApp.instructionsCode}\n\t\t\t\t\t\tcomponents={stepMdxComponents}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</EpicVideoInfoProvider>\n\t\t</StepContextProvider>\n\t)\n}\n\nfunction withParam(\n\tsearchParams: URLSearchParams,\n\tkey: string,\n\tvalue: string | null,\n) {\n\tconst newSearchParams = new URLSearchParams(searchParams)\n\tif (value === null) {\n\t\tnewSearchParams.delete(key)\n\t} else {\n\t\tnewSearchParams.set(key, value)\n\t}\n\treturn newSearchParams\n}\n\nfunction NextDiffLink({\n\tapp = 0,\n\tfullPage = false,\n\tchildren,\n}: {\n\tapp: number\n\tfullPage?: boolean\n\tchildren?: React.ReactNode\n}) {\n\treturn (\n\t\t<DiffLink app1={app} app2={app + 1} fullPage={fullPage}>\n\t\t\t{children}\n\t\t</DiffLink>\n\t)\n}\n\nfunction PrevDiffLink({\n\tapp = -1,\n\tfullPage = false,\n\tchildren,\n}: {\n\tapp: number\n\tfullPage?: boolean\n\tchildren?: React.ReactNode\n}) {\n\treturn (\n\t\t<DiffLink app1={app} app2={app + 1} fullPage={fullPage}>\n\t\t\t{children}\n\t\t</DiffLink>\n\t)\n}\n\nfunction DiffLink({\n\tapp1 = 0,\n\tapp2 = 1,\n\tchildren,\n\tfullPage = false,\n\tto,\n}: {\n\tapp1?: string | number | null\n\tapp2?: string | number | null\n\tto?: string\n\tfullPage?: boolean\n\tchildren?: React.ReactNode\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tif (!to && !app1 && !app2) {\n\t\treturn (\n\t\t\t// @ts-expect-error 🤷♂️\n\t\t\t<callout-danger className=\"notification\">\n\t\t\t\t<div className=\"title\">DiffLink Error: invalid input</div>\n\t\t\t\t{/* @ts-expect-error 🤷♂️ */}\n\t\t\t</callout-danger>\n\t\t)\n\t}\n\n\tfunction getAppName(input: typeof app1) {\n\t\tif (typeof input === 'number') {\n\t\t\tconst stepIndex = data.exerciseIndex + input\n\t\t\treturn data.allApps[stepIndex]?.name\n\t\t}\n\t\tif (!input) return null\n\t\tfor (const { name, stepName } of data.allApps) {\n\t\t\tif (input === name || input === stepName) {\n\t\t\t\treturn name\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tif (to) {\n\t\tconst params = new URLSearchParams(to)\n\t\tapp1 = params.get('app1')\n\t\tapp2 = params.get('app2')\n\t}\n\tconst app1Name = getAppName(app1)\n\tconst app2Name = getAppName(app2)\n\tif (!app1Name || !app2Name) {\n\t\treturn (\n\t\t\t// @ts-expect-error 🤷♂️\n\t\t\t<callout-danger className=\"notification\">\n\t\t\t\t<div className=\"title\">DiffLink Error: invalid input</div>\n\t\t\t\t{!app1Name && <div>app1: \"{app1}\" is not a valid app name</div>}\n\t\t\t\t{!app2Name && <div>app2: \"{app2}\" is not a valid app name</div>}\n\t\t\t\t{/* @ts-expect-error 🤷♂️ */}\n\t\t\t</callout-danger>\n\t\t)\n\t}\n\n\tif (!to) {\n\t\tto = `app1=${app1Name}&app2=${app2Name}`\n\t}\n\tconst pathToDiff = fullPage\n\t\t? `/diff?${to}`\n\t\t: `?${decodeURIComponent(\n\t\t\t\twithParam(new URLSearchParams(), 'preview', `diff&${to}`).toString(),\n\t\t\t)}`\n\n\tif (!children) {\n\t\tchildren = (\n\t\t\t<span>\n\t\t\t\tGo to Diff {fullPage ? '' : 'Preview'} from: <code>{app1Name}</code> to:{' '}\n\t\t\t\t<code>{app2Name}</code>\n\t\t\t</span>\n\t\t)\n\t}\n\n\treturn <Link to={pathToDiff}>{children}</Link>\n}\n\nfunction InlineFile({\n\tfile,\n\ttype = 'playground',\n\tchildren = <code>{file}</code>,\n\t...props\n}: Omit<PropsWithChildren<typeof LaunchEditor>, 'appName'> & {\n\tfile: string\n\ttype?: 'playground' | 'solution' | 'problem'\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tconst app = data[type] || data[data.type]\n\n\tconst info = (\n\t\t<div className=\"launch-editor-button-wrapper flex underline underline-offset-4\">\n\t\t\t{children}{' '}\n\t\t\t<svg height={24} width={24}>\n\t\t\t\t<use href={`${iconsSvg}#Keyboard`} />\n\t\t\t</svg>\n\t\t</div>\n\t)\n\n\treturn ENV.EPICSHOP_DEPLOYED && app ? (\n\t\t<div className=\"inline-block grow\">\n\t\t\t<LaunchEditor appFile={file} appName={app.name} {...props}>\n\t\t\t\t{info}\n\t\t\t</LaunchEditor>\n\t\t</div>\n\t) : app ? (\n\t\t<div className=\"inline-block grow\">\n\t\t\t<LaunchEditor appFile={file} appName={app.name} {...props}>\n\t\t\t\t{info}\n\t\t\t</LaunchEditor>\n\t\t</div>\n\t) : type === 'playground' ? (\n\t\t// playground does not exist yet\n\t\t<SimpleTooltip content=\"You must 'Set to Playground' before opening a file\">\n\t\t\t<div className=\"inline-block grow cursor-not-allowed\">{info}</div>\n\t\t</SimpleTooltip>\n\t) : (\n\t\t<>children</>\n\t)\n}\n\nfunction getPreviewType(\n\tpreview: string | null,\n): 'playground' | 'problem' | 'solution' {\n\tif (preview === 'problem') return 'problem'\n\tif (preview === 'solution') return 'solution'\n\treturn 'playground'\n}\n\nfunction LinkToApp({\n\tto: appTo,\n\tchildren = <code>{appTo.toString()}</code>,\n\t...props\n}: LinkProps) {\n\tconst [searchParams] = useSearchParams()\n\tconst to = `?${withParam(\n\t\tsearchParams,\n\t\t'pathname',\n\t\tappTo.toString(),\n\t).toString()}`\n\tconst data = useLoaderData<typeof loader>()\n\tconst type = getPreviewType(searchParams.get('preview'))\n\tconst requestInfo = useRequestInfo()\n\tconst app = data[type]\n\tconst previewAppUrl =\n\t\tapp?.dev.type === 'script'\n\t\t\t? getBaseUrl({\n\t\t\t\t\tdomain: requestInfo.domain,\n\t\t\t\t\tport: app.dev.portNumber,\n\t\t\t\t})\n\t\t\t: data.playground?.dev.type === 'browser'\n\t\t\t\t? data.playground.dev.pathname\n\t\t\t\t: null\n\tconst { inBrowserBrowserRef } = useStepContext()\n\tconst href = previewAppUrl\n\t\t? previewAppUrl.slice(0, -1) + appTo.toString()\n\t\t: null\n\treturn (\n\t\t<div className=\"inline-flex items-center justify-between gap-1\">\n\t\t\t<Link\n\t\t\t\tto={to}\n\t\t\t\t{...props}\n\t\t\t\tclassName={cn(props.className, {\n\t\t\t\t\t'cursor-not-allowed': ENV.EPICSHOP_DEPLOYED,\n\t\t\t\t})}\n\t\t\t\ttitle={\n\t\t\t\t\tENV.EPICSHOP_DEPLOYED\n\t\t\t\t\t\t? 'Cannot link to app in deployed version'\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tif (ENV.EPICSHOP_DEPLOYED) event.preventDefault()\n\n\t\t\t\t\tprops.onClick?.(event)\n\t\t\t\t\tinBrowserBrowserRef.current?.handleExtrnalNavigation(appTo.toString())\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Link>\n\t\t\t{href ? (\n\t\t\t\t<SimpleTooltip content=\"Open in new tab\">\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={href}\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\tclassName={cn('flex aspect-square items-center justify-center', {\n\t\t\t\t\t\t\t'cursor-not-allowed': ENV.EPICSHOP_DEPLOYED,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tENV.EPICSHOP_DEPLOYED\n\t\t\t\t\t\t\t\t? 'Cannot link to app in deployed version'\n\t\t\t\t\t\t\t\t: 'Open in new tab'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\tif (ENV.EPICSHOP_DEPLOYED) event.preventDefault()\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon name=\"ExternalLink\" />\n\t\t\t\t\t</a>\n\t\t\t\t</SimpleTooltip>\n\t\t\t) : null}\n\t\t</div>\n\t)\n}\n","\"use client\";\n\n// packages/react/popover/src/Popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as Popover from '@radix-ui/react-popover'\nimport { type SerializeFrom } from '@remix-run/node'\nimport { Await, useLoaderData } from '@remix-run/react'\nimport * as React from 'react'\nimport { Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport { LaunchEditor } from '#app/routes/launch-editor.tsx'\nimport { SetAppToPlayground } from '#app/routes/set-playground.tsx'\nimport { type loader } from '../_layout.tsx'\n\nfunction TouchedFiles({\n\tdiffFilesPromise,\n}: {\n\tdiffFilesPromise: SerializeFrom<typeof loader>['diffFiles']\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\n\tconst [open, setOpen] = React.useState(false)\n\tconst contentRef = React.useRef<HTMLDivElement>(null)\n\n\tfunction handleLaunchUpdate() {\n\t\tsetOpen(false)\n\t}\n\n\tconst appName = data.playground?.appName\n\n\treturn (\n\t\t<>\n\t\t\t<Popover.Root open={open} onOpenChange={setOpen}>\n\t\t\t\t<Popover.Trigger asChild>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"flex h-full items-center gap-1 border-r px-6 py-3 font-mono text-sm uppercase\"\n\t\t\t\t\t\taria-label=\"Relevant Files\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon name=\"Files\" />\n\t\t\t\t\t\tFiles\n\t\t\t\t\t</button>\n\t\t\t\t</Popover.Trigger>\n\t\t\t\t<Popover.Portal>\n\t\t\t\t\t<Popover.Content\n\t\t\t\t\t\tref={contentRef}\n\t\t\t\t\t\tclassName=\"slideRightContent lg:slideUpContent invert-theme z-10 select-none rounded bg-background px-9 py-8 text-foreground\"\n\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\tsideOffset={5}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"launch-editor-wrapper\">\n\t\t\t\t\t\t\t<strong className=\"inline-block px-2 pb-4 font-semibold uppercase\">\n\t\t\t\t\t\t\t\tRelevant Files\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t{data.problem &&\n\t\t\t\t\t\t\tdata.playground?.appName !== data.problem.name ? (\n\t\t\t\t\t\t\t\t<div className=\"mb-2 rounded p-1 font-mono font-medium\">\n\t\t\t\t\t\t\t\t\t<SetAppToPlayground appName={data.problem.name} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t<div id=\"files\">\n\t\t\t\t\t\t\t\t<React.Suspense\n\t\t\t\t\t\t\t\t\tfallback={\n\t\t\t\t\t\t\t\t\t\t<SimpleTooltip content=\"Loading diff\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex justify-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Refresh\" className=\"h-8 w-8 animate-spin\" />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Await\n\t\t\t\t\t\t\t\t\t\tresolve={diffFilesPromise}\n\t\t\t\t\t\t\t\t\t\terrorElement={\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"text-foreground-destructive\">\n\t\t\t\t\t\t\t\t\t\t\t\tSomething went wrong.\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{(diffFiles) => {\n\t\t\t\t\t\t\t\t\t\t\tif (!diffFiles) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-foreground-destructive\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tUnable to determine diff\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (typeof diffFiles === 'string') {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-foreground-destructive\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{diffFiles}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (!diffFiles.length) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn <p>No files changed</p>\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tconst props =\n\t\t\t\t\t\t\t\t\t\t\t\tappName || ENV.EPICSHOP_GITHUB_ROOT\n\t\t\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"You must 'Set to Playground' before opening a file\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName: 'not-allowed',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<ul {...props}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{diffFiles.length > 1 && !ENV.EPICSHOP_DEPLOYED ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mb-2 border-b border-b-gray-50 border-opacity-50 pb-2 font-sans\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LaunchEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappFile={diffFiles.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(file) => `${file.path},${file.line},1`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappName=\"playground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUpdate={handleLaunchUpdate}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Open All Files</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</LaunchEditor>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{diffFiles.map((file) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li key={file.path} data-state={file.status}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LaunchEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappFile={`${file.path},${file.line},1`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappName={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tENV.EPICSHOP_DEPLOYED\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? (data.problem?.name ?? 'playground')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'playground'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUpdate={handleLaunchUpdate}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<code>{file.path}</code>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</LaunchEditor>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t</Await>\n\t\t\t\t\t\t\t\t</React.Suspense>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popover.Content>\n\t\t\t\t</Popover.Portal>\n\t\t\t</Popover.Root>\n\t\t</>\n\t)\n}\n\nexport default TouchedFiles\n","import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetAppDisplayName,\n\tgetAppPageRoute,\n\tgetApps,\n\tgetExerciseApp,\n\tgetNextExerciseApp,\n\tgetPrevExerciseApp,\n\tisExerciseStepApp,\n\tisPlaygroundApp,\n\trequireExercise,\n\trequireExerciseApp,\n\ttype App,\n\ttype ExerciseStepApp,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport { getEpicVideoInfos } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\tunstable_data as data,\n\tredirect,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n\ttype SerializeFrom,\n} from '@remix-run/node'\nimport { Link, Outlet, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport { useRef } from 'react'\nimport { GeneralErrorBoundary } from '#app/components/error-boundary.tsx'\nimport { type InBrowserBrowserRef } from '#app/components/in-browser-browser.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { useRevalidationWS } from '#app/components/revalidation-ws.js'\nimport { type loader as rootLoader } from '#app/root.tsx'\nimport { EditFileOnGitHub } from '#app/routes/launch-editor.tsx'\nimport { ProgressToggle } from '#app/routes/progress.tsx'\nimport { SetAppToPlayground } from '#app/routes/set-playground.tsx'\nimport { getDiffFiles } from '#app/utils/diff.server.js'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { StepMdx } from './__shared/step-mdx.tsx'\nimport TouchedFiles from './__shared/touched-files.tsx'\n\nfunction pageTitle(\n\tdata: SerializeFrom<typeof loader> | undefined,\n\tworkshopTitle?: string,\n) {\n\tconst exerciseNumber =\n\t\tdata?.exerciseStepApp.exerciseNumber.toString().padStart(2, '0') ?? '00'\n\tconst stepNumber =\n\t\tdata?.exerciseStepApp.stepNumber.toString().padStart(2, '0') ?? '00'\n\tconst emoji = (\n\t\t{\n\t\t\tproblem: '💪',\n\t\t\tsolution: '🏁',\n\t\t} as const\n\t)[data?.type ?? 'problem']\n\tconst title = data?.[data.type]?.title ?? 'N/A'\n\treturn {\n\t\temoji,\n\t\tstepNumber,\n\t\ttitle,\n\t\texerciseNumber,\n\t\texerciseTitle: data?.exerciseTitle ?? 'Unknown exercise',\n\t\tworkshopTitle,\n\t\ttype: data?.type ?? 'problem',\n\t}\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tdata,\n\tmatches,\n\tparams,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!data || !rootData) return [{ title: '🦉 | Error' }]\n\tconst { emoji, stepNumber, title, exerciseNumber, exerciseTitle } =\n\t\tpageTitle(data)\n\n\treturn getSeoMetaTags({\n\t\ttitle: `${emoji} | ${stepNumber}. ${title} | ${exerciseNumber}. ${exerciseTitle} | ${rootData.workshopTitle}`,\n\t\tdescription: `${params.type} step for exercise ${exerciseNumber}. ${exerciseTitle}`,\n\t\togTitle: title,\n\t\togDescription: `${exerciseTitle} step ${Number(stepNumber)} ${params.type}`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request, params }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('exerciseStepTypeLayoutLoader')\n\tconst url = new URL(request.url)\n\tconst { title: workshopTitle } = getWorkshopConfig()\n\tconst cacheOptions = { request, timings }\n\tconst exerciseStepApp = await requireExerciseApp(params, cacheOptions)\n\tconst exercise = await requireExercise(\n\t\texerciseStepApp.exerciseNumber,\n\t\tcacheOptions,\n\t)\n\tconst reqUrl = new URL(request.url)\n\n\tconst pathnameParam = reqUrl.searchParams.get('pathname')\n\tif (pathnameParam === '' || pathnameParam === '/') {\n\t\treqUrl.searchParams.delete('pathname')\n\t\tthrow redirect(reqUrl.toString())\n\t}\n\n\tconst problemApp = await getExerciseApp(\n\t\t{ ...params, type: 'problem' },\n\t\tcacheOptions,\n\t)\n\tconst solutionApp = await getExerciseApp(\n\t\t{ ...params, type: 'solution' },\n\t\tcacheOptions,\n\t)\n\n\tif (!problemApp && !solutionApp) {\n\t\tthrow new Response('Not found', { status: 404 })\n\t}\n\n\tconst allAppsFull = await getApps(cacheOptions)\n\tconst playgroundApp = allAppsFull.find(isPlaygroundApp)\n\n\tfunction getStepId(a: ExerciseStepApp) {\n\t\treturn (\n\t\t\ta.exerciseNumber * 1000 +\n\t\t\ta.stepNumber * 10 +\n\t\t\t(a.type === 'problem' ? 0 : 1)\n\t\t)\n\t}\n\n\tfunction getStepNameAndId(a: App) {\n\t\tif (isExerciseStepApp(a)) {\n\t\t\tconst exerciseNumberStr = String(a.exerciseNumber).padStart(2, '0')\n\t\t\tconst stepNumberStr = String(a.stepNumber).padStart(2, '0')\n\n\t\t\treturn {\n\t\t\t\tstepName: `${exerciseNumberStr}/${stepNumberStr}.${a.type}`,\n\t\t\t\tstepId: getStepId(a),\n\t\t\t}\n\t\t}\n\t\treturn { stepName: '', stepId: -1 }\n\t}\n\n\tconst allApps = allAppsFull\n\t\t.filter((a, i, ar) => ar.findIndex((b) => a.name === b.name) === i)\n\t\t.map((a) => ({\n\t\t\tdisplayName: getAppDisplayName(a, allAppsFull),\n\t\t\tname: a.name,\n\t\t\ttitle: a.title,\n\t\t\ttype: a.type,\n\t\t\t...getStepNameAndId(a),\n\t\t}))\n\n\tallApps.sort((a, b) => {\n\t\t// order them by their stepId\n\t\tif (a.stepId > 0 && b.stepId > 0) return a.stepId - b.stepId\n\n\t\t// non-step apps should come after step apps\n\t\tif (a.stepId > 0) return -1\n\t\tif (b.stepId > 0) return 1\n\n\t\treturn 0\n\t})\n\tconst exerciseId = getStepId(exerciseStepApp)\n\tconst exerciseIndex = allApps.findIndex((step) => step.stepId === exerciseId)\n\n\tconst exerciseApps = allAppsFull\n\t\t.filter(isExerciseStepApp)\n\t\t.filter((app) => app.exerciseNumber === exerciseStepApp.exerciseNumber)\n\tconst isLastStep =\n\t\texerciseApps[exerciseApps.length - 1]?.name === exerciseStepApp.name\n\tconst isFirstStep = exerciseApps[0]?.name === exerciseStepApp.name\n\n\tconst nextApp = await getNextExerciseApp(exerciseStepApp, cacheOptions)\n\tconst prevApp = await getPrevExerciseApp(exerciseStepApp, cacheOptions)\n\n\tconst articleId = `workshop-${slugify(workshopTitle)}-${\n\t\texercise.exerciseNumber\n\t}-${exerciseStepApp.stepNumber}-${exerciseStepApp.type}`\n\n\tconst subroute = url.pathname.split(\n\t\t`/exercise/${params.exerciseNumber}/${params.stepNumber}/${params.type}/`,\n\t)[1]\n\treturn data(\n\t\t{\n\t\t\tarticleId,\n\t\t\ttype: params.type as 'problem' | 'solution',\n\t\t\texerciseStepApp,\n\t\t\texerciseTitle: exercise.title,\n\t\t\tepicVideoInfosPromise: getEpicVideoInfos(exerciseStepApp.epicVideoEmbeds),\n\t\t\texerciseIndex,\n\t\t\tallApps,\n\t\t\tprevStepLink: isFirstStep\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/exercise/${exerciseStepApp.exerciseNumber\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.padStart(2, '0')}`,\n\t\t\t\t\t}\n\t\t\t\t: prevApp\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tto: getAppPageRoute(prevApp, {\n\t\t\t\t\t\t\t\tsubroute,\n\t\t\t\t\t\t\t\tsearchParams: url.searchParams,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t: null,\n\t\t\tnextStepLink: isLastStep\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/exercise/${exerciseStepApp.exerciseNumber\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.padStart(2, '0')}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: nextApp\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tto: getAppPageRoute(nextApp, {\n\t\t\t\t\t\t\t\tsubroute,\n\t\t\t\t\t\t\t\tsearchParams: url.searchParams,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t: null,\n\t\t\tplayground: playgroundApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'playground',\n\t\t\t\t\t\tappName: playgroundApp.appName,\n\t\t\t\t\t\tname: playgroundApp.name,\n\t\t\t\t\t\tfullPath: playgroundApp.fullPath,\n\t\t\t\t\t\tdev: playgroundApp.dev,\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tproblem: problemApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'problem',\n\t\t\t\t\t\ttitle: problemApp.title,\n\t\t\t\t\t\tname: problemApp.name,\n\t\t\t\t\t\tfullPath: problemApp.fullPath,\n\t\t\t\t\t\tdev: problemApp.dev,\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tsolution: solutionApp\n\t\t\t\t? ({\n\t\t\t\t\t\ttype: 'solution',\n\t\t\t\t\t\ttitle: solutionApp.title,\n\t\t\t\t\t\tname: solutionApp.name,\n\t\t\t\t\t\tfullPath: solutionApp.fullPath,\n\t\t\t\t\t\tdev: solutionApp.dev,\n\t\t\t\t\t} as const)\n\t\t\t\t: null,\n\t\t\tdiffFiles:\n\t\t\t\tproblemApp && solutionApp\n\t\t\t\t\t? getDiffFiles(problemApp, solutionApp, {\n\t\t\t\t\t\t\t...cacheOptions,\n\t\t\t\t\t\t\tforceFresh: url.searchParams.get('forceFresh') === 'diff',\n\t\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn 'There was a problem generating the diff (check the terminal output)'\n\t\t\t\t\t\t})\n\t\t\t\t\t: 'No diff available',\n\t\t} as const,\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'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nexport default function ExercisePartRoute() {\n\tconst data = useLoaderData<typeof loader>()\n\n\tconst inBrowserBrowserRef = useRef<InBrowserBrowserRef>(null)\n\n\tconst titleBits = pageTitle(data)\n\n\tuseRevalidationWS({\n\t\twatchPaths: [`${data.exerciseStepApp.relativePath}/README.mdx`],\n\t})\n\n\treturn (\n\t\t<div className=\"flex max-w-full flex-grow flex-col\">\n\t\t\t<main className=\"flex flex-grow flex-col sm:grid sm:h-full sm:min-h-[800px] sm:grid-cols-1 sm:grid-rows-2 md:min-h-[unset] lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative flex flex-col sm:col-span-1 sm:row-span-1 sm:h-full lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium leading-tight\">\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 uppercase\">\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tto={`/${titleBits.exerciseNumber}`}\n\t\t\t\t\t\t\t\t\tclassName=\"hover:underline\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{titleBits.exerciseNumber}. {titleBits.exerciseTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t{'/'}\n\t\t\t\t\t\t\t\t<Link to=\".\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{titleBits.stepNumber}. {titleBits.title}\n\t\t\t\t\t\t\t\t\t{' ('}\n\t\t\t\t\t\t\t\t\t{titleBits.emoji} {titleBits.type}\n\t\t\t\t\t\t\t\t\t{')'}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{data.problem &&\n\t\t\t\t\t\t\tdata.playground?.appName !== data.problem.name ? (\n\t\t\t\t\t\t\t\t<div className=\"hidden md:block\">\n\t\t\t\t\t\t\t\t\t<SetAppToPlayground appName={data.problem.name} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t\tkey={data.articleId}\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox flex h-full w-full max-w-none flex-1 scroll-pt-6 flex-col justify-between 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>\n\t\t\t\t\t\t{data.exerciseStepApp.instructionsCode ? (\n\t\t\t\t\t\t\t<StepMdx inBrowserBrowserRef={inBrowserBrowserRef} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"flex h-full items-center justify-center text-lg\">\n\t\t\t\t\t\t\t\t<p>No instructions yet...</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className=\"mt-auto flex justify-between\">\n\t\t\t\t\t\t\t{data.prevStepLink ? (\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tto={data.prevStepLink.to}\n\t\t\t\t\t\t\t\t\taria-label=\"Previous Step\"\n\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t← Previous\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{data.nextStepLink ? (\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tto={data.nextStepLink.to}\n\t\t\t\t\t\t\t\t\taria-label=\"Next Step\"\n\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tNext →\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration\n\t\t\t\t\t\telementQuery={`#${data.articleId}`}\n\t\t\t\t\t\tkey={`scroll-${data.articleId}`}\n\t\t\t\t\t/>\n\t\t\t\t\t{data.type === 'solution' ? (\n\t\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\t\ttype=\"step\"\n\t\t\t\t\t\t\texerciseNumber={data.exerciseStepApp.exerciseNumber}\n\t\t\t\t\t\t\tstepNumber={data.exerciseStepApp.stepNumber}\n\t\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\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\t<div className=\"h-full\">\n\t\t\t\t\t\t\t\t<TouchedFiles diffFilesPromise={data.diffFiles} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\tappName={data.exerciseStepApp.name}\n\t\t\t\t\t\t\trelativePath={data.exerciseStepApp.relativePath}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<NavChevrons\n\t\t\t\t\t\t\tprev={\n\t\t\t\t\t\t\t\tdata.prevStepLink\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tto: data.prevStepLink.to,\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': 'Previous Step',\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnext={\n\t\t\t\t\t\t\t\tdata.nextStepLink\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tto: data.nextStepLink.to,\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': 'Next Step',\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Outlet />\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nexport function ErrorBoundary() {\n\treturn (\n\t\t<GeneralErrorBoundary\n\t\t\tstatusHandlers={{\n\t\t\t\t404: () => <p>Sorry, we couldn't find an app here.</p>,\n\t\t\t}}\n\t\t/>\n\t)\n}\n"],"names":["StepContext","React.createContext","useStepContext","context","React.useContext","StepContextProvider","children","inBrowserBrowserRef","jsx","stepMdxComponents","DiffLink","PrevDiffLink","NextDiffLink","InlineFile","LinkToApp","StepMdx","data","useLoaderData","EpicVideoInfoProvider","Mdx","withParam","searchParams","key","value","newSearchParams","app","fullPage","app1","app2","to","getAppName","input","stepIndex","_a","name","stepName","params","app1Name","app2Name","jsxs","pathToDiff","Link","file","type","props","info","iconsSvg","LaunchEditor","SimpleTooltip","getPreviewType","preview","appTo","useSearchParams","requestInfo","useRequestInfo","previewAppUrl","getBaseUrl","href","cn","event","_b","Icon","POPOVER_NAME","createPopoverContext","createPopoverScope","createContextScope","createPopperScope","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","React.useRef","hasCustomAnchor","setHasCustomAnchor","React.useState","open","setOpen","useControllableState","PopperPrimitive.Root","useId","React.useCallback","prevOpen","ANCHOR_NAME","PopoverAnchor","React.forwardRef","forwardedRef","anchorProps","onCustomAnchorAdd","onCustomAnchorRemove","React.useEffect","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","useComposedRefs","trigger","Primitive","getState","composeEventHandlers","PORTAL_NAME","PortalProvider","usePortalContext","PopoverPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","PopoverContent","portalContext","contentProps","PopoverContentModal","PopoverContentNonModal","contentRef","composedRefs","isRightClickOutsideRef","content","hideOthers","RemoveScroll","Slot","PopoverContentImpl","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","target","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","useFocusGuards","FocusScope","DismissableLayer","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","ARROW_NAME","PopoverArrow","arrowProps","PopperPrimitive.Arrow","Root2","Trigger","Portal","Content2","TouchedFiles","diffFilesPromise","handleLaunchUpdate","appName","Popover.Root","Popover.Trigger","Popover.Portal","Popover.Content","SetAppToPlayground","React.Suspense","Await","diffFiles","pageTitle","workshopTitle","exerciseNumber","exerciseStepApp","toString","padStart","stepNumber","emoji","problem","solution","title","exerciseTitle","meta","matches","rootData","find","m","id","getSeoMetaTags","description","ogTitle","ogDescription","Number","instructor","ExercisePartRoute","useRef","titleBits","useRevalidationWS","watchPaths","relativePath","className","playground","articleId","instructionsCode","prevStepLink","prefetch","nextStepLink","ElementScrollRestoration","elementQuery","ProgressToggle","EditFileOnGitHub","NavChevrons","prev","next","Outlet","ErrorBoundary","GeneralErrorBoundary","statusHandlers"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff-BIJG7lM0.js","sources":["../../../app/routes/diff.tsx"],"sourcesContent":["import {\n\tgetAppByName,\n\tgetAppDisplayName,\n\tgetApps,\n\tisExerciseStepApp,\n} from '@epic-web/workshop-utils/apps.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport { type LoaderFunctionArgs } from '@remix-run/node'\nimport { useLoaderData, useNavigation, useSearchParams } from '@remix-run/react'\nimport { useSpinDelay } from 'spin-delay'\nimport { Diff } from '#app/components/diff.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { getDiffCode } from '#app/utils/diff.server.ts'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst reqUrl = new URL(request.url)\n\tconst searchParams = reqUrl.searchParams\n\tconst timings = makeTimings('diffLoader')\n\tconst cacheOptions = { request, timings }\n\tconst allAppsFull = await getApps()\n\tconst app1Name = reqUrl.searchParams.get('app1')\n\tconst app2Name = reqUrl.searchParams.get('app2')\n\n\tconst usingDefaultApp1 = !app1Name\n\n\t// defaults to first problem app\n\tconst app1 = app1Name\n\t\t? await getAppByName(app1Name)\n\t\t: allAppsFull.filter(isExerciseStepApp).at(0)\n\n\t// defaults to last exercise step app\n\tconst app2 = app2Name\n\t\t? await getAppByName(app2Name)\n\t\t: allAppsFull.filter(isExerciseStepApp).at(-1)\n\n\tasync function getDiffProp() {\n\t\tif (!app1 || !app2) {\n\t\t\treturn {\n\t\t\t\tapp1: app1?.name,\n\t\t\t\tapp2: app2?.name,\n\t\t\t\tdiffCode: null,\n\t\t\t}\n\t\t}\n\t\tconst diffCode = await getDiffCode(app1, app2, {\n\t\t\t...cacheOptions,\n\t\t\tforceFresh: searchParams.get('forceFresh') === 'diff',\n\t\t}).catch((e) => {\n\t\t\tconsole.error(e)\n\t\t\treturn null\n\t\t})\n\t\treturn {\n\t\t\tapp1: app1.name,\n\t\t\tapp2: app2.name,\n\t\t\tdiffCode,\n\t\t}\n\t}\n\n\tconst allApps = allAppsFull\n\t\t.filter((a, i, ar) => ar.findIndex((b) => a.name === b.name) === i)\n\t\t.map((a) => ({\n\t\t\tdisplayName: getAppDisplayName(a, allAppsFull),\n\t\t\tname: a.name,\n\t\t\ttitle: a.title,\n\t\t\ttype: a.type,\n\t\t}))\n\n\tconst diff = getDiffProp()\n\tconst app1Index = allApps.findIndex((a) => a.name === app1?.name)\n\tconst prevApp1Index = usingDefaultApp1\n\t\t? allApps.length - 2\n\t\t: app1Index === 0\n\t\t\t? -2\n\t\t\t: app1Index - 1\n\tconst prevApp2Index = prevApp1Index + 1\n\tconst nextApp1Index = usingDefaultApp1\n\t\t? 0\n\t\t: app1Index + 1 < allApps.length\n\t\t\t? app1Index + 1\n\t\t\t: -2\n\tconst nextApp2Index = nextApp1Index + 1\n\tconst prevApp1 = allAppsFull[prevApp1Index]?.name\n\tconst prevApp2 = allAppsFull[prevApp2Index]?.name\n\tconst nextApp1 = allAppsFull[nextApp1Index]?.name\n\tconst nextApp2 = allAppsFull[nextApp2Index]?.name\n\tconst prevSearchParams = new URLSearchParams(reqUrl.searchParams)\n\tprevSearchParams.set('app1', prevApp1 ?? '')\n\tprevSearchParams.set('app2', prevApp2 ?? '')\n\tconst nextSearchParams = new URLSearchParams(reqUrl.searchParams)\n\tnextSearchParams.set('app1', nextApp1 ?? '')\n\tnextSearchParams.set('app2', nextApp2 ?? '')\n\treturn {\n\t\tallApps,\n\t\tdiff,\n\t\tprevLink:\n\t\t\tprevApp1 && prevApp2\n\t\t\t\t? { to: `/diff?${prevSearchParams}`, 'aria-label': 'Previous App' }\n\t\t\t\t: { to: '/diff' },\n\t\tnextLink:\n\t\t\tnextApp1 && nextApp2\n\t\t\t\t? { to: `/diff?${nextSearchParams}`, 'aria-label': 'Next App' }\n\t\t\t\t: { to: '/diff' },\n\t}\n}\n\nexport default function DiffViewer() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst [params] = useSearchParams()\n\tconst paramsWithForcedRefresh = new URLSearchParams(params)\n\tparamsWithForcedRefresh.set('forceFresh', 'diff')\n\tconst navigation = useNavigation()\n\tconst isNavigating = useSpinDelay(navigation.state !== 'idle', {\n\t\tdelay: 200,\n\t\tminDuration: 200,\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('grid h-full grid-rows-[1fr,auto]', {\n\t\t\t\t'cursor-wait opacity-30': isNavigating,\n\t\t\t})}\n\t\t>\n\t\t\t<div className=\"overflow-y-auto\">\n\t\t\t\t<Diff diff={data.diff} allApps={data.allApps} />\n\t\t\t</div>\n\t\t\t<div className=\"flex h-16 items-center justify-end border-t\">\n\t\t\t\t<NavChevrons prev={data.prevLink} next={data.nextLink} />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],"names":["DiffViewer","data","useLoaderData","params","useSearchParams","URLSearchParams","set","navigation","useNavigation","isNavigating","useSpinDelay","state","delay","minDuration","jsxs","className","cn","children","jsx","Diff","diff","allApps","NavChevrons","prev","prevLink","next","nextLink"],"mappings":"kpBAyGA,SAAwBA,GAAa,CACpC,MAAMC,EAAOC,IACP,CAACC,CAAM,EAAIC,IACe,IAAIC,gBAAgBF,CAAM,EAClCG,IAAI,aAAc,MAAM,EAChD,MAAMC,EAAaC,IACbC,EAAeC,EAAA,aAAaH,EAAWI,QAAU,OAAQ,CAC9DC,MAAO,IACPC,YAAa,GACd,CAAC,EAGA,OAAAC,EAAAA,KAAC,MAAA,CACAC,UAAWC,EAAG,mCAAoC,CACjD,yBAA0BP,CAC3B,CAAC,EAEDQ,SAAA,CAACC,EAAA,IAAA,MAAA,CAAIH,UAAU,kBACdE,SAACC,EAAA,IAAAC,EAAA,CAAKC,KAAMnB,EAAKmB,KAAMC,QAASpB,EAAKoB,QAAS,CAC/C,CAAA,EACCH,EAAA,IAAA,MAAA,CAAIH,UAAU,8CACdE,SAACC,EAAA,IAAAI,EAAA,CAAYC,KAAMtB,EAAKuB,SAAUC,KAAMxB,EAAKyB,SAAU,CACxD,CAAA,CAAA,CAAA,CACD,CAEF"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import{r as W,d as fr,j as D}from"./index-CGzylDPY.js";import{I as ut}from"./misc-D9k1wGip.js";import{S as pr}from"./tooltip-CzrLrLJU.js";import{b as hr,a as mr,c as vr}from"./components-DrvY4pal.js";import{u as yr}from"./pe-DXT2FOp1.js";function Nt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function S(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Nt(Object(r),!0).forEach(function(n){gr(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Nt(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function gr(t,e,r){return e=br(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _r(t,e){if(typeof t!="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function br(t){var e=_r(t,"string");return typeof e=="symbol"?e:String(e)}function kr(t,e){var r=new FormData(t,e);if(e&&e.type==="submit"&&e.name!==""){var n=r.getAll(e.name);n.includes(e.value)||r.append(e.name,e.value)}return r}function G(t){return t?t.split(/\.|(\[\d*\])/).reduce((e,r)=>{if(typeof r<"u"&&r!==""&&r!=="__proto__"&&r!=="constructor"&&r!=="prototype")if(r.startsWith("[")&&r.endsWith("]")){var n=r.slice(1,-1);e.push(Number(n))}else e.push(r);return e},[]):[]}function de(t){return t.reduce((e,r)=>typeof r=="number"?"".concat(e,"[").concat(Number.isNaN(r)?"":r,"]"):e===""||r===""?[e,r].join(""):[e,r].join("."),"")}function Pe(t,e){return typeof e<"u"?de([...G(t),e]):t??""}function We(t,e){var r=G(t),n=G(e);return r.length>=n.length&&n.every((a,i)=>r[i]===a)}function re(t,e,r){for(var n=G(e),a=n.length,i=a-1,o=-1,s=t;s!=null&&++o<a;){var u=n[o],d=n[o+1],f=o!=i?Object.prototype.hasOwnProperty.call(s,u)&&s[u]!==null?s[u]:typeof d=="number"?[]:{}:r(s[u]);s[u]=f,s=s[u]}}function it(t,e){var r=t;for(var n of G(e)){if(typeof r>"u"||r==null)break;if(!Object.prototype.hasOwnProperty.call(r,n))return;if(ne(r)&&typeof n=="string")r=r[n];else if(Array.isArray(r)&&typeof n=="number")r=r[n];else return}return r}function ne(t){return!!t&&t.constructor===Object&&Object.getPrototypeOf(t)===Object.prototype}function wr(t){return typeof File>"u"?!1:t instanceof File}function ge(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(ne(t)){var r=Object.keys(t).sort().reduce((n,a)=>{var i=ge(t[a],e);return typeof i<"u"&&(n[a]=i),n},{});return Object.keys(r).length===0?void 0:r}if(Array.isArray(t))return t.length===0?void 0:t.map(n=>ge(n,e));if(!(typeof t=="string"&&t===""||t===null||wr(t)&&(!e||t.size===0)))return t}function bt(t){var e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={},a=(e=r.resolve)!==null&&e!==void 0?e:s=>s;function i(s,u){var d=ge(a(s));if(typeof d<"u"&&(n[u]=d),Array.isArray(s))for(var f=0;f<s.length;f++)i(s[f],"".concat(u,"[").concat(f,"]"));else if(ne(s))for(var[w,R]of Object.entries(s))i(R,u?"".concat(u,".").concat(w):w)}if(t){var o;i(t,(o=r.prefix)!==null&&o!==void 0?o:"")}return n}function st(t,e){if(!t)throw new Error(e)}function _e(){return(Date.now()*Math.random()).toString(36)}function Ze(t){return JSON.parse(JSON.stringify(t))}function xr(t){return t instanceof Element&&(t.tagName==="INPUT"||t.tagName==="SELECT"||t.tagName==="TEXTAREA"||t.tagName==="BUTTON")}function dt(t){return xr(t)&&t.type!=="submit"&&t.type!=="button"&&t.type!=="reset"}function Tr(t){var e,r,n=t.target,a=t.submitter;return(e=(r=a==null?void 0:a.getAttribute("formaction"))!==null&&r!==void 0?r:n.getAttribute("action"))!==null&&e!==void 0?e:"".concat(location.pathname).concat(location.search)}function Or(t){var e,r=t.target,n=t.submitter,a=(e=n==null?void 0:n.getAttribute("formenctype"))!==null&&e!==void 0?e:r.enctype;return a==="multipart/form-data"?a:"application/x-www-form-urlencoded"}function Sr(t){var e,r,n=t.target,a=t.submitter,i=(e=(r=a==null?void 0:a.getAttribute("formmethod"))!==null&&r!==void 0?r:n.getAttribute("method"))===null||e===void 0?void 0:e.toUpperCase();switch(i){case"POST":case"PUT":case"PATCH":case"DELETE":return i}return"GET"}function Nr(t,e){if(st(!!t,"Failed to submit the form. The element provided is null or undefined."),typeof t.requestSubmit=="function")t.requestSubmit(e);else{var r=new SubmitEvent("submit",{bubbles:!0,cancelable:!0,submitter:e});t.dispatchEvent(r)}}var je="__intent__",ct="__state__";function Dt(t){var e=t.get(je),r=t.get(ct);st((typeof e=="string"||e===null)&&(typeof r=="string"||r===null),'The input name "'.concat(je,'" and "').concat(ct,'" are reserved by Conform. Please use another name for your input.'));var n={payload:{},fields:new Set,intent:Ir(e)};r&&(n.state=JSON.parse(r));var a=function(u){if(i===je||i===ct)return 1;n.fields.add(i),re(n.payload,i,d=>d?Array.isArray(d)?d.concat(u):[d,u]:u)};for(var[i,o]of t.entries())a(o);return n}function Er(t,e){var r=Dt(t),n=r.intent;if(n)switch(n.type){case"update":{var a=Pe(n.payload.name,n.payload.index),i=n.payload.value;typeof n.payload.value<"u"&&(a?re(r.payload,a,()=>i):r.payload=i);break}case"reset":{var o=Pe(n.payload.name,n.payload.index);o?re(r.payload,o,()=>{}):r.payload={};break}case"insert":case"remove":case"reorder":{Lt(r.payload,n);break}}var s=e.resolve(r.payload,n),u=d=>Cr(S(S({},r),{},{value:d.value,error:d.error}));return s instanceof Promise?s.then(u):u(s)}function Cr(t){return t.intent||!t.value||t.error?{status:t.intent?void 0:"error",payload:t.payload,error:typeof t.error<"u"?t.error:{},reply(e){return Et(t,e)}}:{status:"success",payload:t.payload,value:t.value,reply(e){return Et(t,e)}}}function Et(t){var e,r,n,a,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if("resetForm"in i&&i.resetForm||((e=t.intent)===null||e===void 0?void 0:e.type)==="reset"&&((r=t.intent.payload.name)!==null&&r!==void 0?r:"")==="")return{initialValue:null};if("hideFields"in i&&i.hideFields)for(var o of i.hideFields){var s=it(t.payload,o);typeof s<"u"&&re(t.payload,o,()=>{})}var u="formErrors"in i||"fieldErrors"in i?ge(S({"":(n=i.formErrors)!==null&&n!==void 0?n:null},i.fieldErrors)):null,d=t.error||u?S(S({},t.error),u):void 0,f=(a=ge(t.payload,typeof document<"u"))!==null&&a!==void 0?a:{};return{status:t.intent?void 0:d?"error":"success",intent:t.intent?t.intent:void 0,initialValue:f,error:d,state:t.state,fields:Array.from(t.fields)}}function Ir(t){if(!t)return null;var e=JSON.parse(t);if(typeof e.type!="string"||typeof e.payload>"u")throw new Error("Unknown form control intent");return e}function Zr(t){switch(t.type){case"insert":return JSON.stringify({type:t.type,payload:S(S({},t.payload),{},{defaultValue:Ae(t.payload.defaultValue)})});case"update":return JSON.stringify({type:t.type,payload:S(S({},t.payload),{},{value:Ae(t.payload.value)})});default:return JSON.stringify(t)}}function pt(t,e){var r;switch(st(Array.isArray(t),"Failed to update list. The value is not an array."),e.type){case"insert":t.splice((r=e.payload.index)!==null&&r!==void 0?r:t.length,0,e.payload.defaultValue);break;case"remove":t.splice(e.payload.index,1);break;case"reorder":t.splice(e.payload.to,0,...t.splice(e.payload.from,1));break;default:throw new Error("Unknown list intent received")}}function Lt(t,e){re(t,e.payload.name,r=>{var n=r??[];return pt(n,e),n})}var ht=Symbol.for("root");function Ge(t,e,r){var n=Object.keys(t).sort((u,d)=>d.localeCompare(u)),a={},i=function(){var d=t[o];We(o,e)&&o!==e&&(re(a,o,f=>typeof f>"u"?d:(f[ht]=d,f)),delete t[o])};for(var o of n)i();var s=r(it(a,e));Object.assign(t,bt(s,{resolve(u){if(ne(u)||Array.isArray(u)){var d;return(d=u[ht])!==null&&d!==void 0?d:null}return u},prefix:e}))}function Ct(t,e,r){Ge(t,e.payload.name,n=>{var a=n??[];switch(e.type){case"insert":pt(a,{type:e.type,payload:S(S({},e.payload),{},{defaultValue:r==null?void 0:r(e.payload.defaultValue)})});break;default:pt(a,e);break}return a})}function Ae(t){return ne(t)?Object.entries(t).reduce((e,r)=>{var[n,a]=r;return e[n]=Ae(a),e},{}):Array.isArray(t)?t.map(Ae):t instanceof Date?t.toISOString():typeof t=="boolean"?t?"on":void 0:typeof t=="number"||typeof t=="bigint"?t.toString():t??void 0}function It(t,e){var r,n,a,i,o,s=e?void 0:t.lastResult,u=t.defaultValue?Ae(t.defaultValue):{},d=(r=s==null?void 0:s.initialValue)!==null&&r!==void 0?r:u,f={formId:t.formId,isValueUpdated:!1,submissionStatus:s==null?void 0:s.status,defaultValue:u,initialValue:d,value:d,constraint:(n=t.constraint)!==null&&n!==void 0?n:{},validated:(a=s==null||(i=s.state)===null||i===void 0?void 0:i.validated)!==null&&a!==void 0?a:{},key:e?S({"":_e()},Re(u)):Re(u),error:(o=s==null?void 0:s.error)!==null&&o!==void 0?o:{}};return Ut(f,s==null?void 0:s.intent,s==null?void 0:s.fields),f}function Re(t,e){return Object.entries(bt(t,{prefix:e})).reduce((r,n)=>{var[a,i]=n;if(Array.isArray(i))for(var o=0;o<i.length;o++)r[Pe(a,o)]=_e();return r},{})}function Zt(t,e){for(var r of Object.keys(t.error).concat(e??[]))t.validated[r]=!0}function Ut(t,e,r,n){var a;if(!e){Zt(t,r);return}switch(e.type){case"validate":{e.payload.name?t.validated[e.payload.name]=!0:Zt(t,r);break}case"update":{var{validated:i,value:o}=e.payload,s=Pe(e.payload.name,e.payload.index);typeof o<"u"&&jt(t,s??"",o),typeof i<"u"&&(s?Ge(t.validated,s,()=>{}):t.validated={},i?((ne(o)||Array.isArray(o))&&Object.assign(t.validated,bt(o,{resolve(){return!0},prefix:s})),t.validated[s??""]=!0):s&&delete t.validated[s]);break}case"reset":{var u=Pe(e.payload.name,e.payload.index),d=it(t.defaultValue,u);jt(t,u,d),u?(Ge(t.validated,u,()=>{}),delete t.validated[u]):t.validated={};break}case"insert":case"remove":case"reorder":{n&&(t.initialValue=Ze(t.initialValue),t.key=Ze(t.key),Ct(t.key,e,w=>!Array.isArray(w)&&!ne(w)?_e():Object.assign(Re(w),{[ht]:_e()})),Lt(t.initialValue,e)),Ct(t.validated,e),t.validated[e.payload.name]=!0;break}}var f=(a=r==null?void 0:r.filter(w=>t.validated[w]))!==null&&a!==void 0?a:[];t.error=Object.entries(t.error).reduce((w,R)=>{var[j,M]=R;return(t.validated[j]||f.some(J=>We(j,J)))&&(w[j]=M),w},{})}function jt(t,e,r){if(e===""){t.initialValue=r,t.value=r,t.key=S(S({},Re(r)),{},{"":_e()});return}t.initialValue=Ze(t.initialValue),t.value=Ze(t.value),t.key=Ze(t.key),re(t.initialValue,e,()=>r),re(t.value,e,()=>r),(ne(r)||Array.isArray(r))&&(Ge(t.key,e,()=>{}),Object.assign(t.key,Re(r,e))),t.key[e]=_e()}function qe(t){var e={};return new Proxy(e,{get(r,n,a){var i;if(typeof n=="string")return(i=e[n])!==null&&i!==void 0?i:e[n]=t(n,a)}})}function lt(t){var e=ge(t);return qe((r,n)=>{if(r==="")return e;var a=G(r),i=de(a.slice(0,-1)),o=de(a.slice(-1)),s=n[i];return it(s,o)})}function jr(t){return qe((e,r)=>{var n,a=t[e];if(!a){for(var i=G(e),o=i.length-1;o>=0;o--){var s=i[o];if(typeof s=="number"&&!Number.isNaN(s)){i[o]=Number.NaN;break}}var u=de(i);e!==u&&(a=r[u])}return(n=a)!==null&&n!==void 0?n:{}})}function Pr(t){return qe((e,r)=>{var n=t[e],a=G(e);if(a.length===0)return n;var i=r[de(a.slice(0,-1))];return typeof i>"u"?n:"".concat(i,"/").concat(n??a.at(-1))})}function Ar(t){return qe(e=>{var r=Object.keys(t);if(e==="")return r.length===0;for(var n of r)if(We(n,e)&&typeof t[n]<"u")return!1;return!0})}function Rr(t,e,r){return qe(n=>JSON.stringify(t[n])!==JSON.stringify(e[n],(a,i)=>n===""&&a===""&&i?Object.entries(i).reduce((o,s)=>{var[u,d]=s;return r(u)?Object.assign(o??{},{[u]:d}):o},void 0):i))}function pe(t,e,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:(j,M)=>JSON.stringify(j)!==JSON.stringify(M);if(n&&t!==e){var i,o,s=(i=n.prefix)!==null&&i!==void 0?i:[],u=(o=n.name)!==null&&o!==void 0?o:[],d=s.length===0?u:Array.from(new Set([...Object.keys(t),...Object.keys(e)])),f=function(M){if(s.length===0||u.includes(M)||s.some(Ee=>We(M,Ee))){var J;if((J=r[M])!==null&&J!==void 0||(r[M]=a(t[M],e[M])),r[M])return{v:!0}}},w;for(var R of d)if(w=f(R),w)return w.v}return!1}function Vr(t){var e=[],r=t,n=It(t),a=o(n);function i(){return document.forms.namedItem(r.formId)}function o(l){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l,m=arguments.length>2?arguments[2]:void 0,T=!m||v.defaultValue!==l.defaultValue?lt(l.defaultValue):m.defaultValue,C=l.initialValue===l.defaultValue?T:!m||v.initialValue!==l.initialValue?lt(l.initialValue):m.initialValue,E=l.value===l.initialValue?C:!m||v.value!==l.value?lt(l.value):m.value;return{submissionStatus:l.submissionStatus,defaultValue:T,initialValue:C,value:E,error:!m||v.error!==l.error?l.error:m.error,validated:l.validated,constraint:!m||v.constraint!==l.constraint?jr(l.constraint):m.constraint,key:!m||v.key!==l.key?Pr(l.key):m.key,valid:!m||v.error!==l.error?Ar(l.error):m.valid,dirty:!m||v.defaultValue!==l.defaultValue||v.value!==l.value?Rr(T,E,I=>{var P,oe;return(P=(oe=r.shouldDirtyConsider)===null||oe===void 0?void 0:oe.call(r,I))!==null&&P!==void 0?P:!0}):m.dirty}}function s(l){var v=n,m=a,T=o(l,v,m);n=l,a=T;var C={value:{},error:{},initialValue:{},key:{},valid:{},dirty:{}};for(var E of e){var I,P=(I=E.getSubject)===null||I===void 0?void 0:I.call(E);(!P||P.formId&&v.formId!==l.formId||P.status&&m.submissionStatus!==T.submissionStatus||pe(m.error,T.error,C.error,P.error)||pe(m.initialValue,T.initialValue,C.initialValue,P.initialValue)||pe(m.key,T.key,C.key,P.key,(oe,Ke)=>oe!==Ke)||pe(m.valid,T.valid,C.valid,P.valid,u)||pe(m.dirty,T.dirty,C.dirty,P.dirty,u)||pe(m.value,T.value,C.value,P.value))&&E.callback()}}function u(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return l!==v}function d(){return JSON.stringify({validated:n.validated})}function f(l){var v=l.target,m=l.submitter;st(v===i(),"The submit event is dispatched by form#".concat(v.id," instead of form#").concat(r.formId));var T=kr(v,m),C={formData:T,action:Tr(l),encType:Or(l),method:Sr(l)};if(typeof(r==null?void 0:r.onValidate)>"u")return C;var E=r.onValidate({form:v,formData:T,submitter:m});if(E.status==="success"||E.error!==null){var I=E.reply();xt(S(S({},I),{},{status:I.status!=="success"?I.status:void 0}))}return S(S({},C),{},{submission:E})}function w(l){var v=i(),m=l.target;return!v||!dt(m)||m.form!==v||!m.form.isConnected||m.name===""?null:m}function R(l,v){var{shouldValidate:m="onSubmit",shouldRevalidate:T=m}=r,C=n.validated[l.name];return C?T===v&&(v==="onInput"||n.isValueUpdated):m===v}function j(l){var v=new FormData(l),m=Dt(v);s(S(S({},n),{},{isValueUpdated:!0,value:m.payload}))}function M(l){var v=w(l);!v||!v.form||(l.defaultPrevented||!R(v,"onInput")?j(v.form):ot({type:"validate",payload:{name:v.name}}))}function J(l){var v=w(l);!v||l.defaultPrevented||!R(v,"onBlur")||ot({type:"validate",payload:{name:v.name}})}function Ee(){s(It(r,!0))}function or(l){var v=i();l.type!=="reset"||l.target!==v||l.defaultPrevented||Ee()}function xt(l){var v,m,T=i();if(!l.initialValue){Ee();return}var C=Object.entries((v=l.error)!==null&&v!==void 0?v:{}).reduce((P,oe)=>{var[Ke,Ot]=oe,St=Ot===null?n.error[Ke]:Ot;return St&&(P[Ke]=St),P},{}),E=S(S({},n),{},{isValueUpdated:!1,submissionStatus:l.status,value:l.initialValue,validated:S(S({},n.validated),(m=l.state)===null||m===void 0?void 0:m.validated),error:C});if(Ut(E,l.intent,l.fields,!0),s(E),T&&l.status==="error"){for(var I of T.elements)if(dt(I)&&n.error[I.name]){I.focus();break}}}function ur(l){var v=r.formId,m=r.lastResult;Object.assign(r,l),r.formId!==v?Ee():l.lastResult&&l.lastResult!==m&&xt(l.lastResult)}function dr(l,v){var m={callback:l,getSubject:v};return e.push(m),()=>{e=e.filter(T=>T!==m)}}function cr(){return a}function ot(l){var v=i(),m=document.createElement("button"),T=Tt(l);m.name=T.name,m.value=T.value,m.hidden=!0,m.formNoValidate=!0,v==null||v.appendChild(m),Nr(v,m),v==null||v.removeChild(m)}function Tt(l){return{name:je,value:Zr(l),form:r.formId,formNoValidate:!0}}function fe(l){var v=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ot({type:l,payload:T})};return Object.assign(v,{getButtonProps(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Tt({type:l,payload:m})}})}function lr(){var l=new MutationObserver(v=>{var m=i();if(m)for(var T of v){var C=T.type==="childList"?[...T.addedNodes,...T.removedNodes]:[T.target];for(var E of C){var I=dt(E)?E:E instanceof HTMLElement?E.querySelector("input,select,textarea"):null;if((I==null?void 0:I.form)===m){j(m);return}}}});return l.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["form","name"]}),()=>{l.disconnect()}}return{getFormId(){return n.formId},submit:f,onReset:or,onInput:M,onBlur:J,onUpdate:ur,validate:fe("validate"),reset:fe("reset"),update:fe("update"),insert:fe("insert"),remove:fe("remove"),reorder:fe("reorder"),subscribe:dr,getState:cr,getSerializedState:d,observe:lr}}function Pt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function Y(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Pt(Object(r),!0).forEach(function(n){Mr(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Pt(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Mr(t,e,r){return e=Ur(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function $r(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function Dr(t,e){if(t==null)return{};var r=$r(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Lr(t,e){if(typeof t!="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Ur(t){var e=Lr(t,"string");return typeof e=="symbol"?e:String(e)}var zr=Symbol("wrapped");function Fr(t,e){var r=W.useCallback(n=>t.subscribe(n,()=>e==null?void 0:e.current),[t,e]);return W.useSyncExternalStore(r,t.getState,t.getState)}function Br(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=W.useRef(t);return e.current=t,e}function ve(t,e,r,n){if(e==="status"||e==="formId")t.current[e]=!0;else if(typeof r<"u"&&typeof n<"u"){var a,i;t.current[e]=Y(Y({},t.current[e]),{},{[r]:((a=(i=t.current[e])===null||i===void 0?void 0:i[r])!==null&&a!==void 0?a:[]).concat(n)})}}function zt(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"",a=n?"".concat(t.getFormId(),"-").concat(n):t.getFormId(),i=t.getState();return new Proxy({id:a,name:n,errorId:"".concat(a,"-error"),descriptionId:"".concat(a,"-description"),get initialValue(){return i.initialValue[n]},get value(){return i.value[n]},get errors(){return i.error[n]},get key(){return i.key[n]},get valid(){return i.valid[n]},get dirty(){return i.dirty[n]},get allErrors(){if(n==="")return i.error;var o={};for(var[s,u]of Object.entries(i.error))We(s,n)&&(o[s]=u);return o},get getFieldset(){return()=>new Proxy({},{get(o,s,u){return typeof s=="string"?Ft(t,e,r,n,s):Reflect.get(o,s,u)}})}},{get(o,s,u){if(i===r)switch(s){case"id":case"errorId":case"descriptionId":ve(e,"formId");break;case"key":case"initialValue":case"value":case"valid":case"dirty":ve(e,s,"name",n);break;case"errors":case"allErrors":ve(e,"error",s==="errors"?"name":"prefix",n);break}return Reflect.get(o,s,u)}})}function Ft(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"",a=arguments.length>4?arguments[4]:void 0,i=typeof a>"u"?n:de([...G(n),a]);return new Proxy({},{get(o,s,u){var d,f=zt(t,e,r,i),w=t.getState();switch(s){case"formId":return w===r&&ve(e,"formId"),t.getFormId();case"required":case"minLength":case"maxLength":case"min":case"max":case"pattern":case"step":case"multiple":return(d=w.constraint[i])===null||d===void 0?void 0:d[s];case"getFieldList":return()=>{var R,j=(R=w.initialValue[i])!==null&&R!==void 0?R:[];if(w===r&&ve(e,"initialValue","name",i),!Array.isArray(j))throw new Error("The initial value at the given name is not a list");return Array(j.length).fill(0).map((M,J)=>Ft(t,e,r,i,J))}}return Reflect.get(f,s,u)}})}function Hr(t,e,r,n){return new Proxy({},{get(a,i,o){var s=zt(t,e,r),u=t.getState();switch(i){case"context":return{[zr]:t};case"status":return u===r&&ve(e,"status"),u.submissionStatus;case"validate":case"update":case"reset":case"insert":case"remove":case"reorder":return t[i];case"onSubmit":return t.submit;case"noValidate":return n}return Reflect.get(s,i,o)}})}function Wr(t){var{onSubmit:e}=t,r=Vr(t);return Y(Y({},r),{},{submit(n){var a=n.nativeEvent,i=r.submit(a);if(!i.submission||i.submission.status==="success"||i.submission.error===null){if(!i.formData.has(je)){var o;(o=e)===null||o===void 0||o(n,i)}}else n.preventDefault()},onUpdate(n){e=n.onSubmit,r.onUpdate(n)}})}var qr=["id"],mt=typeof document>"u"?W.useEffect:W.useLayoutEffect;function Jr(t){var e=W.useId();return t??e}function Kr(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,[e,r]=W.useState(t);return mt(()=>{e||r(!0)},[e]),e}function Yr(t){var{id:e}=t,r=Dr(t,qr),n=Jr(e),[a]=W.useState(()=>Wr(Y(Y({},r),{},{formId:n})));mt(()=>{var d=a.observe();return document.addEventListener("input",a.onInput),document.addEventListener("focusout",a.onBlur),document.addEventListener("reset",a.onReset),()=>{d(),document.removeEventListener("input",a.onInput),document.removeEventListener("focusout",a.onBlur),document.removeEventListener("reset",a.onReset)}},[a]),mt(()=>{a.onUpdate(Y(Y({},r),{},{formId:n}))});var i=Br(),o=Fr(a,i),s=Kr(t.defaultNoValidate),u=Hr(a,i,o,s);return[u,u.getFieldset()]}function Bt(t){for(var e in t)t[e]===void 0&&delete t[e];return t}function Gr(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof e.ariaAttributes<"u"&&!e.ariaAttributes)return{};var r=e.ariaInvalid==="allErrors"?!t.valid:typeof t.errors<"u",n=e.ariaDescribedBy;return Bt({"aria-invalid":r||void 0,"aria-describedby":r?"".concat(t.errorId," ").concat(n??"").trim():n})}function Xr(t,e){return Bt(Y({id:t.id,onSubmit:t.onSubmit,noValidate:t.noValidate},Gr(t,e)))}function At(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function O(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?At(Object(r),!0).forEach(function(n){Qr(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):At(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Qr(t,e,r){return e=tn(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function en(t,e){if(typeof t!="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function tn(t){var e=en(t,"string");return typeof e=="symbol"?e:String(e)}var x;(function(t){t.assertEqual=a=>a;function e(a){}t.assertIs=e;function r(a){throw new Error}t.assertNever=r,t.arrayToEnum=a=>{const i={};for(const o of a)i[o]=o;return i},t.getValidEnumValues=a=>{const i=t.objectKeys(a).filter(s=>typeof a[a[s]]!="number"),o={};for(const s of i)o[s]=a[s];return t.objectValues(o)},t.objectValues=a=>t.objectKeys(a).map(function(i){return a[i]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const i=[];for(const o in a)Object.prototype.hasOwnProperty.call(a,o)&&i.push(o);return i},t.find=(a,i)=>{for(const o of a)if(i(o))return o},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&isFinite(a)&&Math.floor(a)===a;function n(a,i=" | "){return a.map(o=>typeof o=="string"?`'${o}'`:o).join(i)}t.joinValues=n,t.jsonStringifyReplacer=(a,i)=>typeof i=="bigint"?i.toString():i})(x||(x={}));var vt;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(vt||(vt={}));const h=x.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),te=t=>{switch(typeof t){case"undefined":return h.undefined;case"string":return h.string;case"number":return isNaN(t)?h.nan:h.number;case"boolean":return h.boolean;case"function":return h.function;case"bigint":return h.bigint;case"symbol":return h.symbol;case"object":return Array.isArray(t)?h.array:t===null?h.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?h.promise:typeof Map<"u"&&t instanceof Map?h.map:typeof Set<"u"&&t instanceof Set?h.set:typeof Date<"u"&&t instanceof Date?h.date:h.object;default:return h.unknown}},c=x.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),rn=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:");class $ extends Error{constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const r=e||function(i){return i.message},n={_errors:[]},a=i=>{for(const o of i.issues)if(o.code==="invalid_union")o.unionErrors.map(a);else if(o.code==="invalid_return_type")a(o.returnTypeError);else if(o.code==="invalid_arguments")a(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let s=n,u=0;for(;u<o.path.length;){const d=o.path[u];u===o.path.length-1?(s[d]=s[d]||{_errors:[]},s[d]._errors.push(r(o))):s[d]=s[d]||{_errors:[]},s=s[d],u++}}};return a(this),n}static assert(e){if(!(e instanceof $))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,x.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=r=>r.message){const r={},n=[];for(const a of this.issues)a.path.length>0?(r[a.path[0]]=r[a.path[0]]||[],r[a.path[0]].push(e(a))):n.push(e(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}}$.create=t=>new $(t);const be=(t,e)=>{let r;switch(t.code){case c.invalid_type:t.received===h.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case c.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,x.jsonStringifyReplacer)}`;break;case c.unrecognized_keys:r=`Unrecognized key(s) in object: ${x.joinValues(t.keys,", ")}`;break;case c.invalid_union:r="Invalid input";break;case c.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${x.joinValues(t.options)}`;break;case c.invalid_enum_value:r=`Invalid enum value. Expected ${x.joinValues(t.options)}, received '${t.received}'`;break;case c.invalid_arguments:r="Invalid function arguments";break;case c.invalid_return_type:r="Invalid function return type";break;case c.invalid_date:r="Invalid date";break;case c.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:x.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case c.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case c.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case c.custom:r="Invalid input";break;case c.invalid_intersection_types:r="Intersection results could not be merged";break;case c.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case c.not_finite:r="Number must be finite";break;default:r=e.defaultError,x.assertNever(t)}return{message:r}};let Ht=be;function nn(t){Ht=t}function Xe(){return Ht}const Qe=t=>{const{data:e,path:r,errorMaps:n,issueData:a}=t,i=[...r,...a.path||[]],o={...a,path:i};if(a.message!==void 0)return{...a,path:i,message:a.message};let s="";const u=n.filter(d=>!!d).slice().reverse();for(const d of u)s=d(o,{data:e,defaultError:s}).message;return{...a,path:i,message:s}},an=[];function p(t,e){const r=Xe(),n=Qe({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===be?void 0:be].filter(a=>!!a)});t.common.issues.push(n)}class A{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){const n=[];for(const a of r){if(a.status==="aborted")return _;a.status==="dirty"&&e.dirty(),n.push(a.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){const n=[];for(const a of r){const i=await a.key,o=await a.value;n.push({key:i,value:o})}return A.mergeObjectSync(e,n)}static mergeObjectSync(e,r){const n={};for(const a of r){const{key:i,value:o}=a;if(i.status==="aborted"||o.status==="aborted")return _;i.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof o.value<"u"||a.alwaysSet)&&(n[i.value]=o.value)}return{status:e.value,value:n}}}const _=Object.freeze({status:"aborted"}),me=t=>({status:"dirty",value:t}),V=t=>({status:"valid",value:t}),yt=t=>t.status==="aborted",gt=t=>t.status==="dirty",Ve=t=>t.status==="valid",Me=t=>typeof Promise<"u"&&t instanceof Promise;function et(t,e,r,n){if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e.get(t)}function Wt(t,e,r,n,a){if(typeof e=="function"?t!==e||!a:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,r),r}var y;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(y||(y={}));var Ce,Ie;class q{constructor(e,r,n,a){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Rt=(t,e)=>{if(Ve(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const r=new $(t.common.issues);return this._error=r,this._error}}};function b(t){if(!t)return{};const{errorMap:e,invalid_type_error:r,required_error:n,description:a}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(o,s)=>{var u,d;const{message:f}=t;return o.code==="invalid_enum_value"?{message:f??s.defaultError}:typeof s.data>"u"?{message:(u=f??n)!==null&&u!==void 0?u:s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:(d=f??r)!==null&&d!==void 0?d:s.defaultError}},description:a}}class k{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return te(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:te(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new A,ctx:{common:e.parent.common,data:e.data,parsedType:te(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const r=this._parse(e);if(Me(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){const r=this._parse(e);return Promise.resolve(r)}parse(e,r){const n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){var n;const a={common:{issues:[],async:(n=r==null?void 0:r.async)!==null&&n!==void 0?n:!1,contextualErrorMap:r==null?void 0:r.errorMap},path:(r==null?void 0:r.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:te(e)},i=this._parseSync({data:e,path:a.path,parent:a});return Rt(a,i)}async parseAsync(e,r){const n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){const n={common:{issues:[],contextualErrorMap:r==null?void 0:r.errorMap,async:!0},path:(r==null?void 0:r.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:te(e)},a=this._parse({data:e,path:n.path,parent:n}),i=await(Me(a)?a:Promise.resolve(a));return Rt(n,i)}refine(e,r){const n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,i)=>{const o=e(a),s=()=>i.addIssue({code:c.custom,...n(a)});return typeof Promise<"u"&&o instanceof Promise?o.then(u=>u?!0:(s(),!1)):o?!0:(s(),!1)})}refinement(e,r){return this._refinement((n,a)=>e(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(e){return new U({schema:this,typeName:g.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return B.create(this,this._def)}nullable(){return Q.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return L.create(this,this._def)}promise(){return Te.create(this,this._def)}or(e){return we.create([this,e],this._def)}and(e){return xe.create(this,e,this._def)}transform(e){return new U({...b(this._def),schema:this,typeName:g.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const r=typeof e=="function"?e:()=>e;return new Oe({...b(this._def),innerType:this,defaultValue:r,typeName:g.ZodDefault})}brand(){return new kt({typeName:g.ZodBranded,type:this,...b(this._def)})}catch(e){const r=typeof e=="function"?e:()=>e;return new Se({...b(this._def),innerType:this,catchValue:r,typeName:g.ZodCatch})}describe(e){const r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Ne.create(this,e)}readonly(){return He.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const sn=/^c[^\s-]{8,}$/i,on=/^[0-9a-z]+$/,un=/^[0-9A-HJKMNP-TV-Z]{26}$/,dn=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,cn=/^[a-z0-9_-]{21}$/i,ln=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,fn=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,pn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let ft;const hn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,mn=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,vn=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,qt="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",yn=new RegExp(`^${qt}$`);function Jt(t){let e="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`),e}function gn(t){return new RegExp(`^${Jt(t)}$`)}function Kt(t){let e=`${qt}T${Jt(t)}`;const r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function _n(t,e){return!!((e==="v4"||!e)&&hn.test(t)||(e==="v6"||!e)&&mn.test(t))}class F extends k{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==h.string){const i=this._getOrReturnCtx(e);return p(i,{code:c.invalid_type,expected:h.string,received:i.parsedType}),_}const n=new A;let a;for(const i of this._def.checks)if(i.kind==="min")e.data.length<i.value&&(a=this._getOrReturnCtx(e,a),p(a,{code:c.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="max")e.data.length>i.value&&(a=this._getOrReturnCtx(e,a),p(a,{code:c.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="length"){const o=e.data.length>i.value,s=e.data.length<i.value;(o||s)&&(a=this._getOrReturnCtx(e,a),o?p(a,{code:c.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):s&&p(a,{code:c.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),n.dirty())}else if(i.kind==="email")fn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"email",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="emoji")ft||(ft=new RegExp(pn,"u")),ft.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"emoji",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="uuid")dn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"uuid",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="nanoid")cn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"nanoid",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid")sn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"cuid",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid2")on.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"cuid2",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="ulid")un.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"ulid",code:c.invalid_string,message:i.message}),n.dirty());else if(i.kind==="url")try{new URL(e.data)}catch{a=this._getOrReturnCtx(e,a),p(a,{validation:"url",code:c.invalid_string,message:i.message}),n.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"regex",code:c.invalid_string,message:i.message}),n.dirty())):i.kind==="trim"?e.data=e.data.trim():i.kind==="includes"?e.data.includes(i.value,i.position)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),n.dirty()):i.kind==="toLowerCase"?e.data=e.data.toLowerCase():i.kind==="toUpperCase"?e.data=e.data.toUpperCase():i.kind==="startsWith"?e.data.startsWith(i.value)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:{startsWith:i.value},message:i.message}),n.dirty()):i.kind==="endsWith"?e.data.endsWith(i.value)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:{endsWith:i.value},message:i.message}),n.dirty()):i.kind==="datetime"?Kt(i).test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:"datetime",message:i.message}),n.dirty()):i.kind==="date"?yn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:"date",message:i.message}),n.dirty()):i.kind==="time"?gn(i).test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{code:c.invalid_string,validation:"time",message:i.message}),n.dirty()):i.kind==="duration"?ln.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"duration",code:c.invalid_string,message:i.message}),n.dirty()):i.kind==="ip"?_n(e.data,i.version)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"ip",code:c.invalid_string,message:i.message}),n.dirty()):i.kind==="base64"?vn.test(e.data)||(a=this._getOrReturnCtx(e,a),p(a,{validation:"base64",code:c.invalid_string,message:i.message}),n.dirty()):x.assertNever(i);return{status:n.value,value:e.data}}_regex(e,r,n){return this.refinement(a=>e.test(a),{validation:r,code:c.invalid_string,...y.errToObj(n)})}_addCheck(e){return new F({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...y.errToObj(e)})}url(e){return this._addCheck({kind:"url",...y.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...y.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...y.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...y.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...y.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...y.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...y.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...y.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...y.errToObj(e)})}datetime(e){var r,n;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(r=e==null?void 0:e.offset)!==null&&r!==void 0?r:!1,local:(n=e==null?void 0:e.local)!==null&&n!==void 0?n:!1,...y.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...y.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...y.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...y.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r==null?void 0:r.position,...y.errToObj(r==null?void 0:r.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...y.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...y.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...y.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...y.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...y.errToObj(r)})}nonempty(e){return this.min(1,y.errToObj(e))}trim(){return new F({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new F({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new F({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get minLength(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}}F.create=t=>{var e;return new F({checks:[],typeName:g.ZodString,coerce:(e=t==null?void 0:t.coerce)!==null&&e!==void 0?e:!1,...b(t)})};function bn(t,e){const r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,i=parseInt(t.toFixed(a).replace(".","")),o=parseInt(e.toFixed(a).replace(".",""));return i%o/Math.pow(10,a)}class ae extends k{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==h.number){const i=this._getOrReturnCtx(e);return p(i,{code:c.invalid_type,expected:h.number,received:i.parsedType}),_}let n;const a=new A;for(const i of this._def.checks)i.kind==="int"?x.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{code:c.invalid_type,expected:"integer",received:"float",message:i.message}),a.dirty()):i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="multipleOf"?bn(e.data,i.value)!==0&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{code:c.not_finite,message:i.message}),a.dirty()):x.assertNever(i);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,y.toString(r))}gt(e,r){return this.setLimit("min",e,!1,y.toString(r))}lte(e,r){return this.setLimit("max",e,!0,y.toString(r))}lt(e,r){return this.setLimit("max",e,!1,y.toString(r))}setLimit(e,r,n,a){return new ae({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:y.toString(a)}]})}_addCheck(e){return new ae({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:y.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:y.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:y.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:y.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:y.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:y.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:y.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:y.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:y.toString(e)})}get minValue(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&x.isInteger(e.value))}get isFinite(){let e=null,r=null;for(const n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.value<e)&&(e=n.value)}return Number.isFinite(r)&&Number.isFinite(e)}}ae.create=t=>new ae({checks:[],typeName:g.ZodNumber,coerce:(t==null?void 0:t.coerce)||!1,...b(t)});class ie extends k{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==h.bigint){const i=this._getOrReturnCtx(e);return p(i,{code:c.invalid_type,expected:h.bigint,received:i.parsedType}),_}let n;const a=new A;for(const i of this._def.checks)i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),p(n,{code:c.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):x.assertNever(i);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,y.toString(r))}gt(e,r){return this.setLimit("min",e,!1,y.toString(r))}lte(e,r){return this.setLimit("max",e,!0,y.toString(r))}lt(e,r){return this.setLimit("max",e,!1,y.toString(r))}setLimit(e,r,n,a){return new ie({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:y.toString(a)}]})}_addCheck(e){return new ie({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:y.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:y.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:y.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:y.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:y.toString(r)})}get minValue(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}}ie.create=t=>{var e;return new ie({checks:[],typeName:g.ZodBigInt,coerce:(e=t==null?void 0:t.coerce)!==null&&e!==void 0?e:!1,...b(t)})};class $e extends k{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==h.boolean){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.boolean,received:n.parsedType}),_}return V(e.data)}}$e.create=t=>new $e({typeName:g.ZodBoolean,coerce:(t==null?void 0:t.coerce)||!1,...b(t)});class ce extends k{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==h.date){const i=this._getOrReturnCtx(e);return p(i,{code:c.invalid_type,expected:h.date,received:i.parsedType}),_}if(isNaN(e.data.getTime())){const i=this._getOrReturnCtx(e);return p(i,{code:c.invalid_date}),_}const n=new A;let a;for(const i of this._def.checks)i.kind==="min"?e.data.getTime()<i.value&&(a=this._getOrReturnCtx(e,a),p(a,{code:c.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),n.dirty()):i.kind==="max"?e.data.getTime()>i.value&&(a=this._getOrReturnCtx(e,a),p(a,{code:c.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),n.dirty()):x.assertNever(i);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new ce({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:y.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:y.toString(r)})}get minDate(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e!=null?new Date(e):null}}ce.create=t=>new ce({checks:[],coerce:(t==null?void 0:t.coerce)||!1,typeName:g.ZodDate,...b(t)});class tt extends k{_parse(e){if(this._getType(e)!==h.symbol){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.symbol,received:n.parsedType}),_}return V(e.data)}}tt.create=t=>new tt({typeName:g.ZodSymbol,...b(t)});class De extends k{_parse(e){if(this._getType(e)!==h.undefined){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.undefined,received:n.parsedType}),_}return V(e.data)}}De.create=t=>new De({typeName:g.ZodUndefined,...b(t)});class Le extends k{_parse(e){if(this._getType(e)!==h.null){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.null,received:n.parsedType}),_}return V(e.data)}}Le.create=t=>new Le({typeName:g.ZodNull,...b(t)});class ke extends k{constructor(){super(...arguments),this._any=!0}_parse(e){return V(e.data)}}ke.create=t=>new ke({typeName:g.ZodAny,...b(t)});class ue extends k{constructor(){super(...arguments),this._unknown=!0}_parse(e){return V(e.data)}}ue.create=t=>new ue({typeName:g.ZodUnknown,...b(t)});class X extends k{_parse(e){const r=this._getOrReturnCtx(e);return p(r,{code:c.invalid_type,expected:h.never,received:r.parsedType}),_}}X.create=t=>new X({typeName:g.ZodNever,...b(t)});class rt extends k{_parse(e){if(this._getType(e)!==h.undefined){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.void,received:n.parsedType}),_}return V(e.data)}}rt.create=t=>new rt({typeName:g.ZodVoid,...b(t)});class L extends k{_parse(e){const{ctx:r,status:n}=this._processInputParams(e),a=this._def;if(r.parsedType!==h.array)return p(r,{code:c.invalid_type,expected:h.array,received:r.parsedType}),_;if(a.exactLength!==null){const o=r.data.length>a.exactLength.value,s=r.data.length<a.exactLength.value;(o||s)&&(p(r,{code:o?c.too_big:c.too_small,minimum:s?a.exactLength.value:void 0,maximum:o?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),n.dirty())}if(a.minLength!==null&&r.data.length<a.minLength.value&&(p(r,{code:c.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),n.dirty()),a.maxLength!==null&&r.data.length>a.maxLength.value&&(p(r,{code:c.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,s)=>a.type._parseAsync(new q(r,o,r.path,s)))).then(o=>A.mergeArray(n,o));const i=[...r.data].map((o,s)=>a.type._parseSync(new q(r,o,r.path,s)));return A.mergeArray(n,i)}get element(){return this._def.type}min(e,r){return new L({...this._def,minLength:{value:e,message:y.toString(r)}})}max(e,r){return new L({...this._def,maxLength:{value:e,message:y.toString(r)}})}length(e,r){return new L({...this._def,exactLength:{value:e,message:y.toString(r)}})}nonempty(e){return this.min(1,e)}}L.create=(t,e)=>new L({type:t,minLength:null,maxLength:null,exactLength:null,typeName:g.ZodArray,...b(e)});function he(t){if(t instanceof N){const e={};for(const r in t.shape){const n=t.shape[r];e[r]=B.create(he(n))}return new N({...t._def,shape:()=>e})}else return t instanceof L?new L({...t._def,type:he(t.element)}):t instanceof B?B.create(he(t.unwrap())):t instanceof Q?Q.create(he(t.unwrap())):t instanceof H?H.create(t.items.map(e=>he(e))):t}class N extends k{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),r=x.objectKeys(e);return this._cached={shape:e,keys:r}}_parse(e){if(this._getType(e)!==h.object){const d=this._getOrReturnCtx(e);return p(d,{code:c.invalid_type,expected:h.object,received:d.parsedType}),_}const{status:n,ctx:a}=this._processInputParams(e),{shape:i,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof X&&this._def.unknownKeys==="strip"))for(const d in a.data)o.includes(d)||s.push(d);const u=[];for(const d of o){const f=i[d],w=a.data[d];u.push({key:{status:"valid",value:d},value:f._parse(new q(a,w,a.path,d)),alwaysSet:d in a.data})}if(this._def.catchall instanceof X){const d=this._def.unknownKeys;if(d==="passthrough")for(const f of s)u.push({key:{status:"valid",value:f},value:{status:"valid",value:a.data[f]}});else if(d==="strict")s.length>0&&(p(a,{code:c.unrecognized_keys,keys:s}),n.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const d=this._def.catchall;for(const f of s){const w=a.data[f];u.push({key:{status:"valid",value:f},value:d._parse(new q(a,w,a.path,f)),alwaysSet:f in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const d=[];for(const f of u){const w=await f.key,R=await f.value;d.push({key:w,value:R,alwaysSet:f.alwaysSet})}return d}).then(d=>A.mergeObjectSync(n,d)):A.mergeObjectSync(n,u)}get shape(){return this._def.shape()}strict(e){return y.errToObj,new N({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{var a,i,o,s;const u=(o=(i=(a=this._def).errorMap)===null||i===void 0?void 0:i.call(a,r,n).message)!==null&&o!==void 0?o:n.defaultError;return r.code==="unrecognized_keys"?{message:(s=y.errToObj(e).message)!==null&&s!==void 0?s:u}:{message:u}}}:{}})}strip(){return new N({...this._def,unknownKeys:"strip"})}passthrough(){return new N({...this._def,unknownKeys:"passthrough"})}extend(e){return new N({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new N({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:g.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new N({...this._def,catchall:e})}pick(e){const r={};return x.objectKeys(e).forEach(n=>{e[n]&&this.shape[n]&&(r[n]=this.shape[n])}),new N({...this._def,shape:()=>r})}omit(e){const r={};return x.objectKeys(this.shape).forEach(n=>{e[n]||(r[n]=this.shape[n])}),new N({...this._def,shape:()=>r})}deepPartial(){return he(this)}partial(e){const r={};return x.objectKeys(this.shape).forEach(n=>{const a=this.shape[n];e&&!e[n]?r[n]=a:r[n]=a.optional()}),new N({...this._def,shape:()=>r})}required(e){const r={};return x.objectKeys(this.shape).forEach(n=>{if(e&&!e[n])r[n]=this.shape[n];else{let i=this.shape[n];for(;i instanceof B;)i=i._def.innerType;r[n]=i}}),new N({...this._def,shape:()=>r})}keyof(){return Yt(x.objectKeys(this.shape))}}N.create=(t,e)=>new N({shape:()=>t,unknownKeys:"strip",catchall:X.create(),typeName:g.ZodObject,...b(e)});N.strictCreate=(t,e)=>new N({shape:()=>t,unknownKeys:"strict",catchall:X.create(),typeName:g.ZodObject,...b(e)});N.lazycreate=(t,e)=>new N({shape:t,unknownKeys:"strip",catchall:X.create(),typeName:g.ZodObject,...b(e)});class we extends k{_parse(e){const{ctx:r}=this._processInputParams(e),n=this._def.options;function a(i){for(const s of i)if(s.result.status==="valid")return s.result;for(const s of i)if(s.result.status==="dirty")return r.common.issues.push(...s.ctx.common.issues),s.result;const o=i.map(s=>new $(s.ctx.common.issues));return p(r,{code:c.invalid_union,unionErrors:o}),_}if(r.common.async)return Promise.all(n.map(async i=>{const o={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(a);{let i;const o=[];for(const u of n){const d={...r,common:{...r.common,issues:[]},parent:null},f=u._parseSync({data:r.data,path:r.path,parent:d});if(f.status==="valid")return f;f.status==="dirty"&&!i&&(i={result:f,ctx:d}),d.common.issues.length&&o.push(d.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;const s=o.map(u=>new $(u));return p(r,{code:c.invalid_union,unionErrors:s}),_}}get options(){return this._def.options}}we.create=(t,e)=>new we({options:t,typeName:g.ZodUnion,...b(e)});const K=t=>t instanceof ze?K(t.schema):t instanceof U?K(t.innerType()):t instanceof Fe?[t.value]:t instanceof se?t.options:t instanceof Be?x.objectValues(t.enum):t instanceof Oe?K(t._def.innerType):t instanceof De?[void 0]:t instanceof Le?[null]:t instanceof B?[void 0,...K(t.unwrap())]:t instanceof Q?[null,...K(t.unwrap())]:t instanceof kt||t instanceof He?K(t.unwrap()):t instanceof Se?K(t._def.innerType):[];class Je extends k{_parse(e){const{ctx:r}=this._processInputParams(e);if(r.parsedType!==h.object)return p(r,{code:c.invalid_type,expected:h.object,received:r.parsedType}),_;const n=this.discriminator,a=r.data[n],i=this.optionsMap.get(a);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(p(r,{code:c.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){const a=new Map;for(const i of r){const o=K(i.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const s of o){if(a.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);a.set(s,i)}}return new Je({typeName:g.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:a,...b(n)})}}function _t(t,e){const r=te(t),n=te(e);if(t===e)return{valid:!0,data:t};if(r===h.object&&n===h.object){const a=x.objectKeys(e),i=x.objectKeys(t).filter(s=>a.indexOf(s)!==-1),o={...t,...e};for(const s of i){const u=_t(t[s],e[s]);if(!u.valid)return{valid:!1};o[s]=u.data}return{valid:!0,data:o}}else if(r===h.array&&n===h.array){if(t.length!==e.length)return{valid:!1};const a=[];for(let i=0;i<t.length;i++){const o=t[i],s=e[i],u=_t(o,s);if(!u.valid)return{valid:!1};a.push(u.data)}return{valid:!0,data:a}}else return r===h.date&&n===h.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class xe extends k{_parse(e){const{status:r,ctx:n}=this._processInputParams(e),a=(i,o)=>{if(yt(i)||yt(o))return _;const s=_t(i.value,o.value);return s.valid?((gt(i)||gt(o))&&r.dirty(),{status:r.value,value:s.data}):(p(n,{code:c.invalid_intersection_types}),_)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([i,o])=>a(i,o)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}xe.create=(t,e,r)=>new xe({left:t,right:e,typeName:g.ZodIntersection,...b(r)});class H extends k{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==h.array)return p(n,{code:c.invalid_type,expected:h.array,received:n.parsedType}),_;if(n.data.length<this._def.items.length)return p(n,{code:c.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),_;!this._def.rest&&n.data.length>this._def.items.length&&(p(n,{code:c.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());const i=[...n.data].map((o,s)=>{const u=this._def.items[s]||this._def.rest;return u?u._parse(new q(n,o,n.path,s)):null}).filter(o=>!!o);return n.common.async?Promise.all(i).then(o=>A.mergeArray(r,o)):A.mergeArray(r,i)}get items(){return this._def.items}rest(e){return new H({...this._def,rest:e})}}H.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new H({items:t,typeName:g.ZodTuple,rest:null,...b(e)})};class Ue extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==h.object)return p(n,{code:c.invalid_type,expected:h.object,received:n.parsedType}),_;const a=[],i=this._def.keyType,o=this._def.valueType;for(const s in n.data)a.push({key:i._parse(new q(n,s,n.path,s)),value:o._parse(new q(n,n.data[s],n.path,s)),alwaysSet:s in n.data});return n.common.async?A.mergeObjectAsync(r,a):A.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof k?new Ue({keyType:e,valueType:r,typeName:g.ZodRecord,...b(n)}):new Ue({keyType:F.create(),valueType:e,typeName:g.ZodRecord,...b(r)})}}class nt extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==h.map)return p(n,{code:c.invalid_type,expected:h.map,received:n.parsedType}),_;const a=this._def.keyType,i=this._def.valueType,o=[...n.data.entries()].map(([s,u],d)=>({key:a._parse(new q(n,s,n.path,[d,"key"])),value:i._parse(new q(n,u,n.path,[d,"value"]))}));if(n.common.async){const s=new Map;return Promise.resolve().then(async()=>{for(const u of o){const d=await u.key,f=await u.value;if(d.status==="aborted"||f.status==="aborted")return _;(d.status==="dirty"||f.status==="dirty")&&r.dirty(),s.set(d.value,f.value)}return{status:r.value,value:s}})}else{const s=new Map;for(const u of o){const d=u.key,f=u.value;if(d.status==="aborted"||f.status==="aborted")return _;(d.status==="dirty"||f.status==="dirty")&&r.dirty(),s.set(d.value,f.value)}return{status:r.value,value:s}}}}nt.create=(t,e,r)=>new nt({valueType:e,keyType:t,typeName:g.ZodMap,...b(r)});class le extends k{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==h.set)return p(n,{code:c.invalid_type,expected:h.set,received:n.parsedType}),_;const a=this._def;a.minSize!==null&&n.data.size<a.minSize.value&&(p(n,{code:c.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),r.dirty()),a.maxSize!==null&&n.data.size>a.maxSize.value&&(p(n,{code:c.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());const i=this._def.valueType;function o(u){const d=new Set;for(const f of u){if(f.status==="aborted")return _;f.status==="dirty"&&r.dirty(),d.add(f.value)}return{status:r.value,value:d}}const s=[...n.data.values()].map((u,d)=>i._parse(new q(n,u,n.path,d)));return n.common.async?Promise.all(s).then(u=>o(u)):o(s)}min(e,r){return new le({...this._def,minSize:{value:e,message:y.toString(r)}})}max(e,r){return new le({...this._def,maxSize:{value:e,message:y.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}}le.create=(t,e)=>new le({valueType:t,minSize:null,maxSize:null,typeName:g.ZodSet,...b(e)});class ye extends k{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:r}=this._processInputParams(e);if(r.parsedType!==h.function)return p(r,{code:c.invalid_type,expected:h.function,received:r.parsedType}),_;function n(s,u){return Qe({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Xe(),be].filter(d=>!!d),issueData:{code:c.invalid_arguments,argumentsError:u}})}function a(s,u){return Qe({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Xe(),be].filter(d=>!!d),issueData:{code:c.invalid_return_type,returnTypeError:u}})}const i={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof Te){const s=this;return V(async function(...u){const d=new $([]),f=await s._def.args.parseAsync(u,i).catch(j=>{throw d.addIssue(n(u,j)),d}),w=await Reflect.apply(o,this,f);return await s._def.returns._def.type.parseAsync(w,i).catch(j=>{throw d.addIssue(a(w,j)),d})})}else{const s=this;return V(function(...u){const d=s._def.args.safeParse(u,i);if(!d.success)throw new $([n(u,d.error)]);const f=Reflect.apply(o,this,d.data),w=s._def.returns.safeParse(f,i);if(!w.success)throw new $([a(f,w.error)]);return w.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new ye({...this._def,args:H.create(e).rest(ue.create())})}returns(e){return new ye({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new ye({args:e||H.create([]).rest(ue.create()),returns:r||ue.create(),typeName:g.ZodFunction,...b(n)})}}class ze extends k{get schema(){return this._def.getter()}_parse(e){const{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}ze.create=(t,e)=>new ze({getter:t,typeName:g.ZodLazy,...b(e)});class Fe extends k{_parse(e){if(e.data!==this._def.value){const r=this._getOrReturnCtx(e);return p(r,{received:r.data,code:c.invalid_literal,expected:this._def.value}),_}return{status:"valid",value:e.data}}get value(){return this._def.value}}Fe.create=(t,e)=>new Fe({value:t,typeName:g.ZodLiteral,...b(e)});function Yt(t,e){return new se({values:t,typeName:g.ZodEnum,...b(e)})}class se extends k{constructor(){super(...arguments),Ce.set(this,void 0)}_parse(e){if(typeof e.data!="string"){const r=this._getOrReturnCtx(e),n=this._def.values;return p(r,{expected:x.joinValues(n),received:r.parsedType,code:c.invalid_type}),_}if(et(this,Ce)||Wt(this,Ce,new Set(this._def.values)),!et(this,Ce).has(e.data)){const r=this._getOrReturnCtx(e),n=this._def.values;return p(r,{received:r.data,code:c.invalid_enum_value,options:n}),_}return V(e.data)}get options(){return this._def.values}get enum(){const e={};for(const r of this._def.values)e[r]=r;return e}get Values(){const e={};for(const r of this._def.values)e[r]=r;return e}get Enum(){const e={};for(const r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return se.create(e,{...this._def,...r})}exclude(e,r=this._def){return se.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}}Ce=new WeakMap;se.create=Yt;class Be extends k{constructor(){super(...arguments),Ie.set(this,void 0)}_parse(e){const r=x.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==h.string&&n.parsedType!==h.number){const a=x.objectValues(r);return p(n,{expected:x.joinValues(a),received:n.parsedType,code:c.invalid_type}),_}if(et(this,Ie)||Wt(this,Ie,new Set(x.getValidEnumValues(this._def.values))),!et(this,Ie).has(e.data)){const a=x.objectValues(r);return p(n,{received:n.data,code:c.invalid_enum_value,options:a}),_}return V(e.data)}get enum(){return this._def.values}}Ie=new WeakMap;Be.create=(t,e)=>new Be({values:t,typeName:g.ZodNativeEnum,...b(e)});class Te extends k{unwrap(){return this._def.type}_parse(e){const{ctx:r}=this._processInputParams(e);if(r.parsedType!==h.promise&&r.common.async===!1)return p(r,{code:c.invalid_type,expected:h.promise,received:r.parsedType}),_;const n=r.parsedType===h.promise?r.data:Promise.resolve(r.data);return V(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}}Te.create=(t,e)=>new Te({type:t,typeName:g.ZodPromise,...b(e)});class U extends k{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===g.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:r,ctx:n}=this._processInputParams(e),a=this._def.effect||null,i={addIssue:o=>{p(n,o),o.fatal?r.abort():r.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),a.type==="preprocess"){const o=a.transform(n.data,i);if(n.common.async)return Promise.resolve(o).then(async s=>{if(r.value==="aborted")return _;const u=await this._def.schema._parseAsync({data:s,path:n.path,parent:n});return u.status==="aborted"?_:u.status==="dirty"||r.value==="dirty"?me(u.value):u});{if(r.value==="aborted")return _;const s=this._def.schema._parseSync({data:o,path:n.path,parent:n});return s.status==="aborted"?_:s.status==="dirty"||r.value==="dirty"?me(s.value):s}}if(a.type==="refinement"){const o=s=>{const u=a.refinement(s,i);if(n.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(n.common.async===!1){const s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?_:(s.status==="dirty"&&r.dirty(),o(s.value),{status:r.value,value:s.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(s=>s.status==="aborted"?_:(s.status==="dirty"&&r.dirty(),o(s.value).then(()=>({status:r.value,value:s.value}))))}if(a.type==="transform")if(n.common.async===!1){const o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Ve(o))return o;const s=a.transform(o.value,i);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:s}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>Ve(o)?Promise.resolve(a.transform(o.value,i)).then(s=>({status:r.value,value:s})):o);x.assertNever(a)}}U.create=(t,e,r)=>new U({schema:t,typeName:g.ZodEffects,effect:e,...b(r)});U.createWithPreprocess=(t,e,r)=>new U({schema:e,effect:{type:"preprocess",transform:t},typeName:g.ZodEffects,...b(r)});class B extends k{_parse(e){return this._getType(e)===h.undefined?V(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}B.create=(t,e)=>new B({innerType:t,typeName:g.ZodOptional,...b(e)});class Q extends k{_parse(e){return this._getType(e)===h.null?V(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Q.create=(t,e)=>new Q({innerType:t,typeName:g.ZodNullable,...b(e)});class Oe extends k{_parse(e){const{ctx:r}=this._processInputParams(e);let n=r.data;return r.parsedType===h.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Oe.create=(t,e)=>new Oe({innerType:t,typeName:g.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...b(e)});class Se extends k{_parse(e){const{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Me(a)?a.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new $(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new $(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}Se.create=(t,e)=>new Se({innerType:t,typeName:g.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...b(e)});class at extends k{_parse(e){if(this._getType(e)!==h.nan){const n=this._getOrReturnCtx(e);return p(n,{code:c.invalid_type,expected:h.nan,received:n.parsedType}),_}return{status:"valid",value:e.data}}}at.create=t=>new at({typeName:g.ZodNaN,...b(t)});const kn=Symbol("zod_brand");class kt extends k{_parse(e){const{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}}class Ne extends k{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{const i=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?_:i.status==="dirty"?(r.dirty(),me(i.value)):this._def.out._parseAsync({data:i.value,path:n.path,parent:n})})();{const a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?_:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(e,r){return new Ne({in:e,out:r,typeName:g.ZodPipeline})}}class He extends k{_parse(e){const r=this._def.innerType._parse(e),n=a=>(Ve(a)&&(a.value=Object.freeze(a.value)),a);return Me(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}}He.create=(t,e)=>new He({innerType:t,typeName:g.ZodReadonly,...b(e)});function Gt(t,e={},r){return t?ke.create().superRefine((n,a)=>{var i,o;if(!t(n)){const s=typeof e=="function"?e(n):typeof e=="string"?{message:e}:e,u=(o=(i=s.fatal)!==null&&i!==void 0?i:r)!==null&&o!==void 0?o:!0,d=typeof s=="string"?{message:s}:s;a.addIssue({code:"custom",...d,fatal:u})}}):ke.create()}const wn={object:N.lazycreate};var g;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(g||(g={}));const xn=(t,e={message:`Input not instance of ${t.name}`})=>Gt(r=>r instanceof t,e),Xt=F.create,Qt=ae.create,Tn=at.create,On=ie.create,er=$e.create,Sn=ce.create,Nn=tt.create,En=De.create,Cn=Le.create,z=ke.create,In=ue.create,Zn=X.create,jn=rt.create,Pn=L.create,An=N.create,Rn=N.strictCreate,Vn=we.create,Mn=Je.create,$n=xe.create,Dn=H.create,Ln=Ue.create,Un=nt.create,zn=le.create,Fn=ye.create,tr=ze.create,Bn=Fe.create,Hn=se.create,Wn=Be.create,qn=Te.create,Vt=U.create,Jn=B.create,Kn=Q.create,Yn=U.createWithPreprocess,Gn=Ne.create,Xn=()=>Xt().optional(),Qn=()=>Qt().optional(),ea=()=>er().optional(),ta={string:t=>F.create({...t,coerce:!0}),number:t=>ae.create({...t,coerce:!0}),boolean:t=>$e.create({...t,coerce:!0}),bigint:t=>ie.create({...t,coerce:!0}),date:t=>ce.create({...t,coerce:!0})},ra=_;var Mt=Object.freeze({__proto__:null,defaultErrorMap:be,setErrorMap:nn,getErrorMap:Xe,makeIssue:Qe,EMPTY_PATH:an,addIssueToContext:p,ParseStatus:A,INVALID:_,DIRTY:me,OK:V,isAborted:yt,isDirty:gt,isValid:Ve,isAsync:Me,get util(){return x},get objectUtil(){return vt},ZodParsedType:h,getParsedType:te,ZodType:k,datetimeRegex:Kt,ZodString:F,ZodNumber:ae,ZodBigInt:ie,ZodBoolean:$e,ZodDate:ce,ZodSymbol:tt,ZodUndefined:De,ZodNull:Le,ZodAny:ke,ZodUnknown:ue,ZodNever:X,ZodVoid:rt,ZodArray:L,ZodObject:N,ZodUnion:we,ZodDiscriminatedUnion:Je,ZodIntersection:xe,ZodTuple:H,ZodRecord:Ue,ZodMap:nt,ZodSet:le,ZodFunction:ye,ZodLazy:ze,ZodLiteral:Fe,ZodEnum:se,ZodNativeEnum:Be,ZodPromise:Te,ZodEffects:U,ZodTransformer:U,ZodOptional:B,ZodNullable:Q,ZodDefault:Oe,ZodCatch:Se,ZodNaN:at,BRAND:kn,ZodBranded:kt,ZodPipeline:Ne,ZodReadonly:He,custom:Gt,Schema:k,ZodSchema:k,late:wn,get ZodFirstPartyTypeKind(){return g},coerce:ta,any:z,array:Pn,bigint:On,boolean:er,date:Sn,discriminatedUnion:Mn,effect:Vt,enum:Hn,function:Fn,instanceof:xn,intersection:$n,lazy:tr,literal:Bn,map:Un,nan:Tn,nativeEnum:Wn,never:Zn,null:Cn,nullable:Kn,number:Qt,object:An,oboolean:ea,onumber:Qn,optional:Jn,ostring:Xn,pipeline:Gn,preprocess:Yn,promise:qn,record:Ln,set:zn,strictObject:Rn,string:Xt,symbol:Nn,transformer:Vt,tuple:Dn,undefined:En,union:Vn,unknown:In,void:jn,NEVER:ra,ZodIssueCode:c,quotelessJson:rn,ZodError:$}),rr="__EMPTY_STRING__";function ee(t,e){if(typeof t!="string")return t;if(t!=="")return t===rr?"":typeof e!="function"?t:e(t)}function Ye(t){if(!(typeof File<"u"&&t instanceof File&&t.name===""&&t.size===0))return t}function na(t){return typeof File>"u"?!1:t._def.effect.type==="refinement"&&t.innerType()._def.typeName==="ZodAny"&&t.safeParse(new File([],"")).success&&!t.safeParse("").success}function Z(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Map,r=e.get(t);if(r)return r;var n=t,a=t._def;if(a.typeName==="ZodString"||a.typeName==="ZodLiteral"||a.typeName==="ZodEnum"||a.typeName==="ZodNativeEnum")n=z().transform(o=>ee(o)).pipe(t);else if(a.typeName==="ZodNumber")n=z().transform(o=>ee(o,s=>s.trim()===""?s:Number(s))).pipe(t);else if(a.typeName==="ZodBoolean")n=z().transform(o=>ee(o,s=>s==="on"?!0:s)).pipe(t);else if(a.typeName==="ZodDate")n=z().transform(o=>ee(o,s=>{var u=new Date(s);return isNaN(u.getTime())?s:u})).pipe(t);else if(a.typeName==="ZodBigInt")n=z().transform(o=>ee(o,s=>{if(s.trim()==="")return s;try{return BigInt(s)}catch{return s}})).pipe(t);else if(a.typeName==="ZodArray")n=z().transform(o=>Array.isArray(o)?o:typeof o>"u"||typeof Ye(ee(o))>"u"?[]:[o]).pipe(new L(O(O({},a),{},{type:Z(a.type,e)})));else if(a.typeName==="ZodObject")n=z().transform(o=>typeof o>"u"?{}:o).pipe(new N(O(O({},a),{},{shape:()=>Object.fromEntries(Object.entries(a.shape()).map(o=>{var[s,u]=o;return[s,Z(u,e)]}))})));else if(a.typeName==="ZodEffects")na(t)?n=z().transform(o=>Ye(o)).pipe(t):n=new U(O(O({},a),{},{schema:Z(a.schema,e)}));else if(a.typeName==="ZodOptional")n=z().transform(o=>Ye(ee(o))).pipe(new B(O(O({},a),{},{innerType:Z(a.innerType,e)})));else if(a.typeName==="ZodDefault")n=z().transform(o=>Ye(ee(o))).pipe(new Oe(O(O({},a),{},{defaultValue:()=>{var o=a.defaultValue();return o===""?rr:o},innerType:Z(a.innerType,e)})));else if(a.typeName==="ZodCatch")n=new Se(O(O({},a),{},{innerType:Z(a.innerType,e)}));else if(a.typeName==="ZodIntersection")n=new xe(O(O({},a),{},{left:Z(a.left,e),right:Z(a.right,e)}));else if(a.typeName==="ZodUnion")n=new we(O(O({},a),{},{options:a.options.map(o=>Z(o,e))}));else if(a.typeName==="ZodDiscriminatedUnion")n=new Je(O(O({},a),{},{options:a.options.map(o=>Z(o,e)),optionsMap:new Map(Array.from(a.optionsMap.entries()).map(o=>{var[s,u]=o;return[s,Z(u,e)]}))}));else if(a.typeName==="ZodTuple")n=new H(O(O({},a),{},{items:a.items.map(o=>Z(o,e))}));else if(a.typeName==="ZodNullable")n=new Q(O(O({},a),{},{innerType:Z(a.innerType,e)}));else if(a.typeName==="ZodPipeline")n=new Ne(O(O({},a),{},{in:Z(a.in,e),out:Z(a.out,e)}));else if(a.typeName==="ZodLazy"){var i=a.getter();n=tr(()=>Z(i,e))}return t!==n&&e.set(t,n),n}function aa(t,e){var r={};for(var n of t.errors){var a=de(n.path);switch(n.message){case $t.VALIDATION_UNDEFINED:return null;case $t.VALIDATION_SKIPPED:r[a]=null;break;default:{var i=r[a];i!==null&&(i?r[a]=i.concat(n):r[a]=[n]);break}}}return Object.entries(r).reduce((o,s)=>{var[u,d]=s;return o[u]=d?e(d):null,o},{})}function ia(t,e){return Er(t,{resolve(r,n){var a=e.errorMap,i=Z(typeof e.schema=="function"?e.schema(n):e.schema),o=s=>{var u;return{value:s.success?s.data:void 0,error:s.success?void 0:aa(s.error,(u=e.formatError)!==null&&u!==void 0?u:d=>d.map(f=>f.message))}};return e.async?i.safeParseAsync(r,{errorMap:a}).then(s=>o(s)):o(i.safeParse(r,{errorMap:a}))}})}var $t={VALIDATION_SKIPPED:"__skipped__",VALIDATION_UNDEFINED:"__undefined__"};function sa(t){function e(a,i){var u;const o=t[i];if(!o)throw new Error(`Unknown client hint: ${typeof i=="string"?i:"Unknown"}`);const s=(u=a.split(";").map(d=>d.trim()).find(d=>d.startsWith(o.cookieName+"=")))==null?void 0:u.split("=")[1];return s?decodeURIComponent(s):null}function r(a){const i=typeof document<"u"?document.cookie:typeof a<"u"?a.headers.get("Cookie")??"":"";return Object.entries(t).reduce((o,[s,u])=>{const d=s;return"transform"in u?o[d]=u.transform(e(i,d)??u.fallback):o[d]=e(i,d)??u.fallback,o},{})}function n(){return`
|
|
2
|
-
// This block of code allows us to check if the client hints have changed and
|
|
3
|
-
// force a reload of the page with updated hints if they have so you don't get
|
|
4
|
-
// a flash of incorrect content.
|
|
5
|
-
function checkClientHints() {
|
|
6
|
-
if (!navigator.cookieEnabled) return;
|
|
7
|
-
|
|
8
|
-
// set a short-lived cookie to make sure we can set cookies
|
|
9
|
-
document.cookie = "canSetCookies=1; Max-Age=60; SameSite=Lax; path=/";
|
|
10
|
-
const canSetCookies = document.cookie.includes("canSetCookies=1");
|
|
11
|
-
document.cookie = "canSetCookies=; Max-Age=-1; path=/";
|
|
12
|
-
if (!canSetCookies) return;
|
|
13
|
-
|
|
14
|
-
const cookies = document.cookie.split(';').map(c => c.trim()).reduce((acc, cur) => {
|
|
15
|
-
const [key, value] = cur.split('=');
|
|
16
|
-
acc[key] = value;
|
|
17
|
-
return acc;
|
|
18
|
-
}, {});
|
|
19
|
-
|
|
20
|
-
let cookieChanged = false;
|
|
21
|
-
const hints = [
|
|
22
|
-
${Object.values(t).map(a=>{const i=JSON.stringify(a.cookieName);return`{ name: ${i}, actual: String(${a.getValueCode}), value: cookies[${i}] != null ? cookies[${i}] : encodeURIComponent("${a.fallback}") }`}).join(`,
|
|
23
|
-
`)}
|
|
24
|
-
];
|
|
25
|
-
for (const hint of hints) {
|
|
26
|
-
document.cookie = encodeURIComponent(hint.name) + '=' + encodeURIComponent(hint.actual) + '; Max-Age=31536000; path=/';
|
|
27
|
-
if (decodeURIComponent(hint.value) !== hint.actual) {
|
|
28
|
-
cookieChanged = true;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (cookieChanged) window.location.reload();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
checkClientHints();
|
|
35
|
-
`}return{getHints:r,getClientHintCheckScript:n}}const nr={cookieName:"CH-prefers-color-scheme",getValueCode:"window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'",fallback:"light",transform(t){return t==="dark"?"dark":"light"}};function oa(t,e=nr.cookieName){const r=window.matchMedia("(prefers-color-scheme: dark)");function n(){const a=r.matches?"dark":"light";document.cookie=`${e}=${a}; Max-Age=31536000; Path=/`,t(a)}return r.addEventListener("change",n),function(){r.removeEventListener("change",n)}}const ar={cookieName:"CH-reduced-motion",getValueCode:"window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'reduce' : 'no-preference'",fallback:"no-preference",transform(t){return t==="reduce"?"reduce":"no-preference"}};function ua(t,e=ar.cookieName){const r=window.matchMedia("(prefers-reduced-motion: reduce)");function n(){const a=r.matches?"reduce":"no-preference";document.cookie=`${e}=${a}; Max-Age=31536000; Path=/`,t(a)}return r.addEventListener("change",n),function(){r.removeEventListener("change",n)}}const da={cookieName:"CH-time-zone",getValueCode:"Intl.DateTimeFormat().resolvedOptions().timeZone",fallback:"UTC"};function wt(){return hr("root").requestInfo}const ir="EpicShop_CH-prefers-color-scheme",sr="EpicShop_CH-reduced-motion",ca=sa({theme:{...nr,cookieName:ir},timeZone:{...da,cookieName:"EpicShop_CH-time-zone"},reducedMotion:{...ar,cookieName:sr}});function la(){return wt().hints}function ba(){const{revalidate:t}=fr();return W.useEffect(()=>oa(()=>t(),ir),[t]),W.useEffect(()=>ua(()=>t(),sr),[t]),D.jsx("script",{dangerouslySetInnerHTML:{__html:ca.getClientHintCheckScript()}})}function fa({id:t,errors:e}){const r=e==null?void 0:e.filter(Boolean);return r!=null&&r.length?D.jsx("ul",{id:t,className:"space-y-1",children:r.map(n=>D.jsx("li",{className:"text-foreground-destructive text-[10px]",children:n},n))}):null}const pa="/theme",ha=Mt.object({theme:Mt.enum(["system","light","dark"])});function ka(){const t=wt(),e=yr(),r=mr(),[n]=Yr({lastResult:r.data,onValidate({formData:s}){return ia(s,{schema:ha})}}),a=t.session.theme??"system",i=a==="system"?"light":a==="light"?"dark":"system",o={light:D.jsx(ut,{size:"md",name:"Sun",title:"Light mode"}),dark:D.jsx(ut,{size:"md",name:"Moon",title:"Dark mode"}),system:D.jsx(ut,{size:"md",name:"Laptop",title:"System mode"})};return D.jsxs(r.Form,{method:"POST",action:pa,...Xr(n),children:[D.jsxs("div",{className:"flex gap-2",children:[e,D.jsx("input",{type:"hidden",name:"theme",value:i}),D.jsx(pr,{content:`Change theme from ${a} mode`,children:D.jsx("button",{type:"submit",name:"intent",value:"update-theme",className:"flex h-8 w-8 cursor-pointer items-center justify-center",children:o[a]})})]}),D.jsx(fa,{errors:n.errors,id:n.errorId})]})}function wa(){var i;const t=la(),e=wt(),n=vr().find(o=>{var s;return((s=o.formData)==null?void 0:s.get("intent"))==="update-theme"}),a=(i=n==null?void 0:n.formData)==null?void 0:i.get("theme");return a==="system"?t.theme:a==="light"||a==="dark"?a:e.session.theme??t.theme}export{ba as C,ka as T,wt as a,la as b,wa as u,Mt as z};
|
|
36
|
-
//# sourceMappingURL=index-Ba7zHVvt.js.map
|