@epic-web/workshop-app 5.16.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_-BbjJ9R-5.js → _-BDcQ_M2J.js} +2 -2
- package/build/client/assets/{_-BbjJ9R-5.js.map → _-BDcQ_M2J.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber-Bd4c2v-C.js → _exerciseNumber-CG2AFTtQ.js} +2 -2
- package/build/client/assets/{_exerciseNumber-Bd4c2v-C.js.map → _exerciseNumber-CG2AFTtQ.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_._stepNumber-CZKDy98j.js → _exerciseNumber_._stepNumber-COWC332q.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber-CZKDy98j.js.map → _exerciseNumber_._stepNumber-COWC332q.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-LvfViAKb.js → _exerciseNumber_.finished-BgGBYU74.js} +2 -2
- package/build/client/assets/{_exerciseNumber_.finished-LvfViAKb.js.map → _exerciseNumber_.finished-BgGBYU74.js.map} +1 -1
- package/build/client/assets/_layout-DKC1JUTc.js +2 -0
- package/build/client/assets/_layout-DKC1JUTc.js.map +1 -0
- package/build/client/assets/_layout-DuDUPWax.js +6 -0
- package/build/client/assets/_layout-DuDUPWax.js.map +1 -0
- package/build/client/assets/{accordion-BL_cX9y6.js → accordion-BPyhq471.js} +2 -2
- package/build/client/assets/{accordion-BL_cX9y6.js.map → accordion-BPyhq471.js.map} +1 -1
- package/build/client/assets/{account-C4MWGVQU.js → account-BwQvf4AS.js} +2 -2
- package/build/client/assets/{account-C4MWGVQU.js.map → account-BwQvf4AS.js.map} +1 -1
- package/build/client/assets/app-XHqxOZfy.js +2 -0
- package/build/client/assets/{app-DK_pEo6e.js.map → app-XHqxOZfy.js.map} +1 -1
- package/build/client/assets/button-DVPKzWkn.js +2 -0
- package/build/client/assets/{button-DhtjxLl5.js.map → button-DVPKzWkn.js.map} +1 -1
- package/build/client/assets/{diff-DI-wBaTF.js → diff-C7Zh3uuA.js} +2 -2
- package/build/client/assets/{diff-DI-wBaTF.js.map → diff-C7Zh3uuA.js.map} +1 -1
- package/build/client/assets/diff-DVOUmaq6.js +2 -0
- package/build/client/assets/{diff-BrUTVi14.js.map → diff-DVOUmaq6.js.map} +1 -1
- package/build/client/assets/discord-CFZUT74L.js +2 -0
- package/build/client/assets/discord-CFZUT74L.js.map +1 -0
- package/build/client/assets/{discord-DsGCI_e6.js → discord-CoBo5eVK.js} +2 -2
- package/build/client/assets/{discord-DsGCI_e6.js.map → discord-CoBo5eVK.js.map} +1 -1
- package/build/client/assets/{epic-video-DoUlMEIW.js → epic-video-DRZssA4U.js} +2 -2
- package/build/client/assets/{epic-video-DoUlMEIW.js.map → epic-video-DRZssA4U.js.map} +1 -1
- package/build/client/assets/{error-boundary-DBVB3BBH.js → error-boundary-De7jJlR5.js} +2 -2
- package/build/client/assets/{error-boundary-DBVB3BBH.js.map → error-boundary-De7jJlR5.js.map} +1 -1
- package/build/client/assets/{finished-y90Pn48k.js → finished-6JNE1a1E.js} +2 -2
- package/build/client/assets/{finished-y90Pn48k.js.map → finished-6JNE1a1E.js.map} +1 -1
- package/build/client/assets/{index-D7-ne3iG.js → index-6Hu4Lmzn.js} +2 -2
- package/build/client/assets/{index-D7-ne3iG.js.map → index-6Hu4Lmzn.js.map} +1 -1
- package/build/client/assets/{index-CWadM2q_.js → index-BE3KRz8n.js} +2 -2
- package/build/client/assets/{index-CWadM2q_.js.map → index-BE3KRz8n.js.map} +1 -1
- package/build/client/assets/{index-BOO5UotZ.js → index-BZWIdOoA.js} +2 -2
- package/build/client/assets/{index-BOO5UotZ.js.map → index-BZWIdOoA.js.map} +1 -1
- package/build/client/assets/{index-BH_SsYHe.js → index-Cnxrq9Ny.js} +2 -2
- package/build/client/assets/{index-BH_SsYHe.js.map → index-Cnxrq9Ny.js.map} +1 -1
- package/build/client/assets/{index-De6oiBJI.js → index-CyFsiCNp.js} +2 -2
- package/build/client/assets/{index-De6oiBJI.js.map → index-CyFsiCNp.js.map} +1 -1
- package/build/client/assets/{index-BpZ0TCe-.js → index-M647UyZv.js} +2 -2
- package/build/client/assets/{index-BpZ0TCe-.js.map → index-M647UyZv.js.map} +1 -1
- package/build/client/assets/{loading-D4V_nJZr.js → loading-ClL22bF9.js} +2 -2
- package/build/client/assets/{loading-D4V_nJZr.js.map → loading-ClL22bF9.js.map} +1 -1
- package/build/client/assets/{login-DiEHnGfv.js → login-C3I5NCrj.js} +2 -2
- package/build/client/assets/{login-DiEHnGfv.js.map → login-C3I5NCrj.js.map} +1 -1
- package/build/client/assets/{manifest-2ba0f4a0.js → manifest-a58be1e7.js} +1 -1
- package/build/client/assets/{mdx-Ce3knRHx.js → mdx-Z4bEoKXn.js} +2 -2
- package/build/client/assets/{mdx-Ce3knRHx.js.map → mdx-Z4bEoKXn.js.map} +1 -1
- package/build/client/assets/{misc-D9k1wGip.js → misc-BK2EiKtY.js} +2 -2
- package/build/client/assets/{misc-D9k1wGip.js.map → misc-BK2EiKtY.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-CM-frhig.js → nav-chevrons-DVD_0i2a.js} +2 -2
- package/build/client/assets/{nav-chevrons-CM-frhig.js.map → nav-chevrons-DVD_0i2a.js.map} +1 -1
- package/build/client/assets/{onboarding-Dnb9KzTs.js → onboarding-DjyKxkKx.js} +2 -2
- package/build/client/assets/{onboarding-Dnb9KzTs.js.map → onboarding-DjyKxkKx.js.map} +1 -1
- package/build/client/assets/{online-BrcRwzQC.js → online-CHlOuJG-.js} +2 -2
- package/build/client/assets/{online-BrcRwzQC.js.map → online-CHlOuJG-.js.map} +1 -1
- package/build/client/assets/{preferences-DZYeWTq7.js → preferences-BmwlU5EC.js} +2 -2
- package/build/client/assets/{preferences-DZYeWTq7.js.map → preferences-BmwlU5EC.js.map} +1 -1
- package/build/client/assets/{presence-Dmt5LCeW.js → presence-CPOTHCHm.js} +2 -2
- package/build/client/assets/{presence-Dmt5LCeW.js.map → presence-CPOTHCHm.js.map} +1 -1
- package/build/client/assets/preview-B2BxDDhi.js +2 -0
- package/build/client/assets/preview-B2BxDDhi.js.map +1 -0
- package/build/client/assets/{product-CleOH5Nn.js → product-BkDgAOLQ.js} +2 -2
- package/build/client/assets/{product-CleOH5Nn.js.map → product-BkDgAOLQ.js.map} +1 -1
- package/build/client/assets/{progress-CpALgZbi.js → progress-CnHFlUmF.js} +2 -2
- package/build/client/assets/{progress-CpALgZbi.js.map → progress-CnHFlUmF.js.map} +1 -1
- package/build/client/assets/{progress-bar-IswLOt8e.js → progress-bar-Q9l2dtTg.js} +2 -2
- package/build/client/assets/{progress-bar-IswLOt8e.js.map → progress-bar-Q9l2dtTg.js.map} +1 -1
- package/build/client/assets/{revalidation-ws-CibzUlFP.js → revalidation-ws-CLolY6Iu.js} +2 -2
- package/build/client/assets/{revalidation-ws-CibzUlFP.js.map → revalidation-ws-CLolY6Iu.js.map} +1 -1
- package/build/client/assets/{root-ZN-l7RsB.js → root-DF5m7yW1.js} +3 -3
- package/build/client/assets/{root-ZN-l7RsB.js.map → root-DF5m7yW1.js.map} +1 -1
- package/build/client/assets/{set-playground-DBPp1Pek.js → set-playground-ZcPraYj5.js} +2 -2
- package/build/client/assets/{set-playground-DBPp1Pek.js.map → set-playground-ZcPraYj5.js.map} +1 -1
- package/build/client/assets/tailwind-O9k3JIDs.css +1 -0
- package/build/client/assets/test-Bt9AuCey.js +2 -0
- package/build/client/assets/{test-DGBB06nI.js.map → test-Bt9AuCey.js.map} +1 -1
- package/build/client/assets/{tests-B6AwzXv3.js → tests-CmjMQrMj.js} +2 -2
- package/build/client/assets/{tests-B6AwzXv3.js.map → tests-CmjMQrMj.js.map} +1 -1
- package/build/client/assets/{tooltip-CzrLrLJU.js → tooltip-leWCE50J.js} +2 -2
- package/build/client/assets/{tooltip-CzrLrLJU.js.map → tooltip-leWCE50J.js.map} +1 -1
- package/build/server/index.js +259 -108
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/_layout-DhhhwkhJ.js +0 -6
- package/build/client/assets/_layout-DhhhwkhJ.js.map +0 -1
- package/build/client/assets/_layout-cO4Dvl1j.js +0 -2
- package/build/client/assets/_layout-cO4Dvl1j.js.map +0 -1
- package/build/client/assets/app-DK_pEo6e.js +0 -2
- package/build/client/assets/button-DhtjxLl5.js +0 -2
- package/build/client/assets/diff-BrUTVi14.js +0 -2
- package/build/client/assets/discord-tUa_uzeh.js +0 -2
- package/build/client/assets/discord-tUa_uzeh.js.map +0 -1
- package/build/client/assets/preview-BUkOZv9x.js +0 -2
- package/build/client/assets/preview-BUkOZv9x.js.map +0 -1
- package/build/client/assets/tailwind-4klXLdJc.css +0 -1
- package/build/client/assets/test-DGBB06nI.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as i,b as a,j as o,i as c}from"./index-CGzylDPY.js";import{g as m}from"./misc-
|
|
2
|
-
//# sourceMappingURL=error-boundary-
|
|
1
|
+
import{a as i,b as a,j as o,i as c}from"./index-CGzylDPY.js";import{g as m}from"./misc-BK2EiKtY.js";function f({defaultStatusHandler:s=({error:r})=>o.jsxs("p",{children:[r.status," ",r.data]}),statusHandlers:e,unexpectedErrorHandler:t=r=>o.jsx("p",{children:m(r)})}){const r=i(),n=a();return typeof document<"u"&&console.error(r),o.jsx("div",{className:"container flex items-center justify-center p-20 text-h2",children:c(r)?((e==null?void 0:e[r.status])??s)({error:r,params:n}):t(r)})}export{f as G};
|
|
2
|
+
//# sourceMappingURL=error-boundary-De7jJlR5.js.map
|
package/build/client/assets/{error-boundary-DBVB3BBH.js.map → error-boundary-De7jJlR5.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary-
|
|
1
|
+
{"version":3,"file":"error-boundary-De7jJlR5.js","sources":["../../../app/components/error-boundary.tsx"],"sourcesContent":["import {\n\tisRouteErrorResponse,\n\tuseParams,\n\tuseRouteError,\n\ttype ErrorResponse,\n} from '@remix-run/react'\nimport { getErrorMessage } from '#app/utils/misc.tsx'\n\ntype StatusHandler = (info: {\n\terror: ErrorResponse\n\tparams: Record<string, string | undefined>\n}) => React.ReactNode | null\n\nexport function GeneralErrorBoundary({\n\tdefaultStatusHandler = ({ error }) => (\n\t\t<p>\n\t\t\t{error.status} {error.data}\n\t\t</p>\n\t),\n\tstatusHandlers,\n\tunexpectedErrorHandler = (error) => <p>{getErrorMessage(error)}</p>,\n}: {\n\tdefaultStatusHandler?: StatusHandler\n\tstatusHandlers?: Record<number, StatusHandler>\n\tunexpectedErrorHandler?: (error: unknown) => React.ReactNode | null\n}) {\n\tconst error = useRouteError()\n\tconst params = useParams()\n\n\tif (typeof document !== 'undefined') {\n\t\tconsole.error(error)\n\t}\n\n\treturn (\n\t\t<div className=\"container flex items-center justify-center p-20 text-h2\">\n\t\t\t{isRouteErrorResponse(error)\n\t\t\t\t? (statusHandlers?.[error.status] ?? defaultStatusHandler)({\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tparams,\n\t\t\t\t\t})\n\t\t\t\t: unexpectedErrorHandler(error)}\n\t\t</div>\n\t)\n}\n"],"names":["GeneralErrorBoundary","defaultStatusHandler","error","statusHandlers","unexpectedErrorHandler","getErrorMessage","useRouteError","params","useParams","jsx","isRouteErrorResponse"],"mappings":"oGAaO,SAASA,EAAqB,CACpC,qBAAAC,EAAuB,CAAC,CAAE,MAAAC,CAAM,WAC9B,IACC,CAAA,SAAA,CAAMA,EAAA,OAAO,IAAEA,EAAM,IAAA,EACvB,EAED,eAAAC,EACA,uBAAAC,EAA0BF,SAAW,IAAG,CAAA,SAAAG,EAAgBH,CAAK,EAAE,CAChE,EAIG,CACF,MAAMA,EAAQI,IACRC,EAASC,IAEX,OAAA,OAAO,SAAa,KACvB,QAAQ,MAAMN,CAAK,EAInBO,EAAA,IAAC,MAAI,CAAA,UAAU,0DACb,SAAAC,EAAqBR,CAAK,IACvBC,GAAA,YAAAA,EAAiBD,EAAM,UAAWD,GAAsB,CACzD,MAAAC,EACA,OAAAK,CACA,CAAA,EACAH,EAAuBF,CAAK,CAChC,CAAA,CAEF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,r as l}from"./index-CGzylDPY.js";import{E as n}from"./index-egcHQOpF.js";import{E as a}from"./epic-video-
|
|
2
|
-
//# sourceMappingURL=finished-
|
|
1
|
+
import{j as e,r as l}from"./index-CGzylDPY.js";import{E as n}from"./index-egcHQOpF.js";import{E as a}from"./epic-video-DRZssA4U.js";import{I as c,a as d}from"./misc-BK2EiKtY.js";import{L as m}from"./loading-ClL22bF9.js";import{N as f}from"./nav-chevrons-DVD_0i2a.js";import{u as h}from"./revalidation-ws-CLolY6Iu.js";import{M as p,E as x}from"./mdx-Z4bEoKXn.js";import{u}from"./online-CHlOuJG-.js";import{g as j}from"./seo-pBpFCWsy.js";import{P as b}from"./progress-CnHFlUmF.js";import{u as g}from"./index-BZWIdOoA.js";import{u as v,L as w}from"./components-DrvY4pal.js";import"./user-C0j04V55.js";import"./workshop-config-oL_FWDKq.js";import"./progress-bar-Q9l2dtTg.js";import"./pe-DXT2FOp1.js";import"./tooltip-leWCE50J.js";const G={getSitemapEntries:()=>[{route:"/finished"}]},Q=({matches:s})=>{var i;const r=(i=s.find(o=>o.id==="root"))==null?void 0:i.data;return r?j({title:`🎉 ${r==null?void 0:r.workshopTitle}`,description:`Elaboration for ${r==null?void 0:r.workshopTitle}`,ogTitle:`Finished ${r==null?void 0:r.workshopTitle}`,ogDescription:"You finished! Time to submit feedback.",instructor:r.instructor,requestInfo:r.requestInfo}):[]},N={h1:()=>null};function Y(){const s=v();return h({watchPaths:["./exercises/FINISHED.mdx"]}),e.jsx("div",{className:"flex h-full flex-grow flex-col",children:e.jsxs("main",{className:"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1",children:[e.jsxs("div",{className:"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r",children:[e.jsx("h1",{className:"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none",children:e.jsx("div",{className:"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2",children:e.jsxs("div",{className:"flex items-center justify-start gap-x-2",children:[e.jsx(w,{to:"/",className:"hover:underline",children:s.workshopTitle}),e.jsx("span",{children:"/"}),e.jsx("span",{children:"Elaboration"})]})})}),e.jsx("article",{className:"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",id:s.articleId,children:s.finishedCode?e.jsx(a,{epicVideoInfosPromise:s.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(p,{code:s.finishedCode,components:N})})}):"No finished instructions yet..."}),e.jsx(n,{elementQuery:`#${s.articleId}`}),e.jsx(b,{type:"workshop-finished",className:"h-14 border-t px-6"}),e.jsxs("div",{className:"flex h-16 justify-between border-b-4 border-t lg:border-b-0",children:[e.jsx("div",{}),s.workshopFinished.status==="success"?e.jsx(x,{file:s.workshopFinished.file,relativePath:s.workshopFinished.relativePath}):null,e.jsx(f,{prev:s.prevStepLink,next:{to:"/"}})]})]}),e.jsx(k,{workshopTitle:s.workshopTitle,workshopFormEmbedUrl:s.workshopFormEmbedUrl})]})})}function k({workshopTitle:s,workshopFormEmbedUrl:r}){const i=g(),[o,t]=l.useState(!1);return u()?e.jsxs("div",{className:"relative flex-shrink-0",children:[o?null:e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:e.jsx(m,{children:e.jsxs("span",{children:["Loading ",s," Elaboration form"]})})}),e.jsx("iframe",{onLoad:()=>t(!0),onError:()=>t(!0),title:"Elaboration",src:r,className:d("absolute inset-0 flex h-full w-full transition-opacity duration-300",o?"opacity-100":"opacity-0"),style:{colorScheme:i}})]}):e.jsx("div",{className:"relative flex-shrink-0",children:e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center text-foreground-destructive",children:e.jsx(c,{name:"WifiNoConnection",size:"xl",children:e.jsxs("span",{children:["Unable to load the ",e.jsx("a",{href:r,className:"underline",children:`${s} feedback form`})," when offline"]})})})})}export{Y as default,G as handle,Q as meta};
|
|
2
|
+
//# sourceMappingURL=finished-6JNE1a1E.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finished-y90Pn48k.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport { getEpicVideoInfos } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tunstable_data as data,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport * as React from 'react'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { Loading } from '#app/components/loading.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 { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { useIsOnline } from '#app/utils/online.ts'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { EditFileOnGitHub } from '../launch-editor.tsx'\nimport { ProgressToggle } from '../progress.tsx'\nimport { useTheme } from '../theme/index.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => [{ route: '/finished' }],\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!rootData) return []\n\n\treturn getSeoMetaTags({\n\t\ttitle: `🎉 ${rootData?.workshopTitle}`,\n\t\tdescription: `Elaboration for ${rootData?.workshopTitle}`,\n\t\togTitle: `Finished ${rootData?.workshopTitle}`,\n\t\togDescription: `You finished! Time to submit feedback.`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('finishedLoader')\n\tconst exercises = await getExercises({ request, timings })\n\tconst compiledFinished = await time(() => getWorkshopFinished({ request }), {\n\t\ttimings,\n\t\ttype: 'compileMdx',\n\t\tdesc: 'compileMdx in finished',\n\t})\n\n\tconst lastExercises = exercises[exercises.length - 1]\n\tconst workshopConfig = getWorkshopConfig()\n\tconst workshopTitle = workshopConfig.title\n\tconst workshopFormTemplate = workshopConfig.forms.workshop\n\tconst workshopFormEmbedUrl = workshopFormTemplate.replace(\n\t\t'{workshopTitle}',\n\t\tencodeURIComponent(workshopTitle),\n\t)\n\treturn data(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-finished`,\n\t\t\tworkshopTitle,\n\t\t\tworkshopFormEmbedUrl,\n\t\t\tfinishedCode:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? compiledFinished.compiled.code\n\t\t\t\t\t: null,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(compiledFinished.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\tworkshopFinished: {\n\t\t\t\tstatus: compiledFinished.compiled.status,\n\t\t\t\tfile: compiledFinished.file,\n\t\t\t\trelativePath: compiledFinished.relativePath,\n\t\t\t},\n\t\t\tprevStepLink: lastExercises\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/${lastExercises.exerciseNumber}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExerciseFinished() {\n\tconst data = useLoaderData<typeof loader>()\n\tuseRevalidationWS({ watchPaths: ['./exercises/FINISHED.mdx'] })\n\treturn (\n\t\t<div className=\"flex h-full flex-grow flex-col\">\n\t\t\t<main className=\"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t<div className=\"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-start gap-x-2\">\n\t\t\t\t\t\t\t\t<Link to=\"/\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{data.workshopTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t<span>/</span>\n\t\t\t\t\t\t\t\t<span>Elaboration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8\"\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.finishedCode ? (\n\t\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t\t<Mdx code={data.finishedCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// TODO: render a random dad joke...\n\t\t\t\t\t\t\t'No finished instructions yet...'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\ttype=\"workshop-finished\"\n\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex h-16 justify-between border-b-4 border-t lg:border-b-0\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t{data.workshopFinished.status === 'success' ? (\n\t\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\t\tfile={data.workshopFinished.file}\n\t\t\t\t\t\t\t\trelativePath={data.workshopFinished.relativePath}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<NavChevrons prev={data.prevStepLink} next={{ to: '/' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Survey\n\t\t\t\t\tworkshopTitle={data.workshopTitle}\n\t\t\t\t\tworkshopFormEmbedUrl={data.workshopFormEmbedUrl}\n\t\t\t\t/>\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nfunction Survey({\n\tworkshopTitle,\n\tworkshopFormEmbedUrl,\n}: {\n\tworkshopTitle: string\n\tworkshopFormEmbedUrl: string\n}) {\n\tconst theme = useTheme()\n\tconst [iframeLoaded, setIframeLoaded] = React.useState(false)\n\tconst isOnline = useIsOnline()\n\tif (!isOnline) {\n\t\treturn (\n\t\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center text-foreground-destructive\">\n\t\t\t\t\t<Icon name=\"WifiNoConnection\" size=\"xl\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{'Unable to load the '}\n\t\t\t\t\t\t\t<a href={workshopFormEmbedUrl} className=\"underline\">\n\t\t\t\t\t\t\t\t{`${workshopTitle} feedback form`}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{' when offline'}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Icon>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\treturn (\n\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t{!iframeLoaded ? (\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n\t\t\t\t\t<Loading>\n\t\t\t\t\t\t<span>Loading {workshopTitle} Elaboration form</span>\n\t\t\t\t\t</Loading>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<iframe\n\t\t\t\tonLoad={() => setIframeLoaded(true)}\n\t\t\t\t// show what would have shown if there is an error\n\t\t\t\tonError={() => setIframeLoaded(true)}\n\t\t\t\ttitle=\"Elaboration\"\n\t\t\t\tsrc={workshopFormEmbedUrl}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute inset-0 flex h-full w-full transition-opacity duration-300',\n\t\t\t\t\tiframeLoaded ? 'opacity-100' : 'opacity-0',\n\t\t\t\t)}\n\t\t\t\tstyle={{ colorScheme: theme }}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","route","meta","matches","rootData","find","m","id","data","getSeoMetaTags","title","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","mdxComponents","h1","ExerciseFinished","useLoaderData","useRevalidationWS","watchPaths","className","children","jsxs","jsx","Link","to","articleId","finishedCode","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","code","components","ElementScrollRestoration","elementQuery","ProgressToggle","type","workshopFinished","status","EditFileOnGitHub","file","relativePath","NavChevrons","prev","prevStepLink","next","Survey","workshopFormEmbedUrl","theme","useTheme","iframeLoaded","setIframeLoaded","React","useIsOnline","Loading","onLoad","onError","src","cn","style","colorScheme","Icon","name","size","href"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"finished-6JNE1a1E.js","sources":["../../../app/routes/_app+/finished.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetExercises,\n\tgetWorkshopFinished,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport { getEpicVideoInfos } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport {\n\tunstable_data as data,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n} from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport slugify from '@sindresorhus/slugify'\nimport * as React from 'react'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { Loading } from '#app/components/loading.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 { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { useIsOnline } from '#app/utils/online.ts'\nimport { getSeoMetaTags } from '#app/utils/seo.js'\nimport { EditFileOnGitHub } from '../launch-editor.tsx'\nimport { ProgressToggle } from '../progress.tsx'\nimport { useTheme } from '../theme/index.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => [{ route: '/finished' }],\n}\n\nexport const meta: MetaFunction<typeof loader, { root: typeof rootLoader }> = ({\n\tmatches,\n}) => {\n\tconst rootData = matches.find((m) => m.id === 'root')?.data\n\tif (!rootData) return []\n\n\treturn getSeoMetaTags({\n\t\ttitle: `🎉 ${rootData?.workshopTitle}`,\n\t\tdescription: `Elaboration for ${rootData?.workshopTitle}`,\n\t\togTitle: `Finished ${rootData?.workshopTitle}`,\n\t\togDescription: `You finished! Time to submit feedback.`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('finishedLoader')\n\tconst exercises = await getExercises({ request, timings })\n\tconst compiledFinished = await time(() => getWorkshopFinished({ request }), {\n\t\ttimings,\n\t\ttype: 'compileMdx',\n\t\tdesc: 'compileMdx in finished',\n\t})\n\n\tconst lastExercises = exercises[exercises.length - 1]\n\tconst workshopConfig = getWorkshopConfig()\n\tconst workshopTitle = workshopConfig.title\n\tconst workshopFormTemplate = workshopConfig.forms.workshop\n\tconst workshopFormEmbedUrl = workshopFormTemplate.replace(\n\t\t'{workshopTitle}',\n\t\tencodeURIComponent(workshopTitle),\n\t)\n\treturn data(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-finished`,\n\t\t\tworkshopTitle,\n\t\t\tworkshopFormEmbedUrl,\n\t\t\tfinishedCode:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? compiledFinished.compiled.code\n\t\t\t\t\t: null,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\tcompiledFinished.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(compiledFinished.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\tworkshopFinished: {\n\t\t\t\tstatus: compiledFinished.compiled.status,\n\t\t\t\tfile: compiledFinished.file,\n\t\t\t\trelativePath: compiledFinished.relativePath,\n\t\t\t},\n\t\t\tprevStepLink: lastExercises\n\t\t\t\t? {\n\t\t\t\t\t\tto: `/${lastExercises.exerciseNumber}/finished`,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExerciseFinished() {\n\tconst data = useLoaderData<typeof loader>()\n\tuseRevalidationWS({ watchPaths: ['./exercises/FINISHED.mdx'] })\n\treturn (\n\t\t<div className=\"flex h-full flex-grow flex-col\">\n\t\t\t<main className=\"grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1\">\n\t\t\t\t<div className=\"relative col-span-1 row-span-1 flex h-full flex-col lg:border-r\">\n\t\t\t\t\t<h1 className=\"h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t<div className=\"flex h-14 flex-wrap items-center justify-between gap-x-2 py-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-start gap-x-2\">\n\t\t\t\t\t\t\t\t<Link to=\"/\" className=\"hover:underline\">\n\t\t\t\t\t\t\t\t\t{data.workshopTitle}\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t<span>/</span>\n\t\t\t\t\t\t\t\t<span>Elaboration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<article\n\t\t\t\t\t\tclassName=\"shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8\"\n\t\t\t\t\t\tid={data.articleId}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.finishedCode ? (\n\t\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t\t<Mdx code={data.finishedCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// TODO: render a random dad joke...\n\t\t\t\t\t\t\t'No finished instructions yet...'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</article>\n\t\t\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t\t\t<ProgressToggle\n\t\t\t\t\t\ttype=\"workshop-finished\"\n\t\t\t\t\t\tclassName=\"h-14 border-t px-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex h-16 justify-between border-b-4 border-t lg:border-b-0\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t{data.workshopFinished.status === 'success' ? (\n\t\t\t\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\t\t\t\tfile={data.workshopFinished.file}\n\t\t\t\t\t\t\t\trelativePath={data.workshopFinished.relativePath}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<NavChevrons prev={data.prevStepLink} next={{ to: '/' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Survey\n\t\t\t\t\tworkshopTitle={data.workshopTitle}\n\t\t\t\t\tworkshopFormEmbedUrl={data.workshopFormEmbedUrl}\n\t\t\t\t/>\n\t\t\t</main>\n\t\t</div>\n\t)\n}\n\nfunction Survey({\n\tworkshopTitle,\n\tworkshopFormEmbedUrl,\n}: {\n\tworkshopTitle: string\n\tworkshopFormEmbedUrl: string\n}) {\n\tconst theme = useTheme()\n\tconst [iframeLoaded, setIframeLoaded] = React.useState(false)\n\tconst isOnline = useIsOnline()\n\tif (!isOnline) {\n\t\treturn (\n\t\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center text-foreground-destructive\">\n\t\t\t\t\t<Icon name=\"WifiNoConnection\" size=\"xl\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{'Unable to load the '}\n\t\t\t\t\t\t\t<a href={workshopFormEmbedUrl} className=\"underline\">\n\t\t\t\t\t\t\t\t{`${workshopTitle} feedback form`}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{' when offline'}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Icon>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\treturn (\n\t\t<div className=\"relative flex-shrink-0\">\n\t\t\t{!iframeLoaded ? (\n\t\t\t\t<div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n\t\t\t\t\t<Loading>\n\t\t\t\t\t\t<span>Loading {workshopTitle} Elaboration form</span>\n\t\t\t\t\t</Loading>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<iframe\n\t\t\t\tonLoad={() => setIframeLoaded(true)}\n\t\t\t\t// show what would have shown if there is an error\n\t\t\t\tonError={() => setIframeLoaded(true)}\n\t\t\t\ttitle=\"Elaboration\"\n\t\t\t\tsrc={workshopFormEmbedUrl}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute inset-0 flex h-full w-full transition-opacity duration-300',\n\t\t\t\t\tiframeLoaded ? 'opacity-100' : 'opacity-0',\n\t\t\t\t)}\n\t\t\t\tstyle={{ colorScheme: theme }}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","route","meta","matches","rootData","find","m","id","data","getSeoMetaTags","title","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","mdxComponents","h1","ExerciseFinished","useLoaderData","useRevalidationWS","watchPaths","className","children","jsxs","jsx","Link","to","articleId","finishedCode","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","code","components","ElementScrollRestoration","elementQuery","ProgressToggle","type","workshopFinished","status","EditFileOnGitHub","file","relativePath","NavChevrons","prev","prevStepLink","next","Survey","workshopFormEmbedUrl","theme","useTheme","iframeLoaded","setIframeLoaded","React","useIsOnline","Loading","onLoad","onError","src","cn","style","colorScheme","Icon","name","size","href"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as o,j as f,R as J}from"./index-CGzylDPY.js";import{r as be}from"./components-DrvY4pal.js";import{h as O,k as Se,d as rt,j as _e,A as st,P as D,f as E,i as $,D as ct,C as lt,e as Te,l as it,V as at,n as dt,u as Re,R as ut}from"./tooltip-CzrLrLJU.js";import{h as pt,u as ft,R as mt,F as ht,P as vt}from"./index-CWadM2q_.js";function Ee(t,[c,e]){return Math.min(e,Math.max(c,t))}function gt(t,c=[]){let e=[];function i(d,n){const r=o.createContext(n),s=e.length;e=[...e,n];function p(x){const{scope:y,children:C,...g}=x,a=(y==null?void 0:y[t][s])||r,m=o.useMemo(()=>g,Object.values(g));return f.jsx(a.Provider,{value:m,children:C})}function S(x,y){const C=(y==null?void 0:y[t][s])||r,g=o.useContext(C);if(g)return g;if(n!==void 0)return n;throw new Error(`\`${x}\` must be used within \`${d}\``)}return p.displayName=d+"Provider",[p,S]}const l=()=>{const d=e.map(n=>o.createContext(n));return function(r){const s=(r==null?void 0:r[t])||d;return o.useMemo(()=>({[`__scope${t}`]:{...r,[t]:s}}),[r,s])}};return l.scopeName=t,[i,St(l,...c)]}function St(...t){const c=t[0];if(t.length===1)return c;const e=()=>{const i=t.map(l=>({useScope:l(),scopeName:l.scopeName}));return function(d){const n=i.reduce((r,{useScope:s,scopeName:p})=>{const x=s(d)[`__scope${p}`];return{...r,...x}},{});return o.useMemo(()=>({[`__scope${c.scopeName}`]:n}),[n])}};return e.scopeName=c.scopeName,e}function xt(t){const c=t+"CollectionProvider",[e,i]=gt(c),[l,d]=e(c,{collectionRef:{current:null},itemMap:new Map}),n=C=>{const{scope:g,children:a}=C,m=J.useRef(null),w=J.useRef(new Map).current;return f.jsx(l,{scope:g,itemMap:w,collectionRef:m,children:a})};n.displayName=c;const r=t+"CollectionSlot",s=J.forwardRef((C,g)=>{const{scope:a,children:m}=C,w=d(r,a),u=O(g,w.collectionRef);return f.jsx(Se,{ref:u,children:m})});s.displayName=r;const p=t+"CollectionItemSlot",S="data-radix-collection-item",x=J.forwardRef((C,g)=>{const{scope:a,children:m,...w}=C,u=J.useRef(null),h=O(g,u),b=d(p,a);return J.useEffect(()=>(b.itemMap.set(u,{ref:u,...w}),()=>void b.itemMap.delete(u))),f.jsx(Se,{[S]:"",ref:h,children:m})});x.displayName=p;function y(C){const g=d(t+"CollectionConsumer",C);return J.useCallback(()=>{const m=g.collectionRef.current;if(!m)return[];const w=Array.from(m.querySelectorAll(`[${S}]`));return Array.from(g.itemMap.values()).sort((b,M)=>w.indexOf(b.ref.current)-w.indexOf(M.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:n,Slot:s,ItemSlot:x},y,i]}var wt=o.createContext(void 0);function Ct(t){const c=o.useContext(wt);return t||c||"ltr"}function yt(t){const c=o.useRef({value:t,previous:t});return o.useMemo(()=>(c.current.value!==t&&(c.current.previous=c.current.value,c.current.value=t),c.current.previous),[t])}var It=[" ","Enter","ArrowUp","ArrowDown"],Tt=[" ","Enter"],se="Select",[ae,de,Pt]=xt(se),[te,$t]=rt(se,[Pt,_e]),ue=_e(),[Rt,z]=te(se),[Et,bt]=te(se),Ne=t=>{const{__scopeSelect:c,children:e,open:i,defaultOpen:l,onOpenChange:d,value:n,defaultValue:r,onValueChange:s,dir:p,name:S,autoComplete:x,disabled:y,required:C,form:g}=t,a=ue(c),[m,w]=o.useState(null),[u,h]=o.useState(null),[b,M]=o.useState(!1),oe=Ct(p),[_=!1,L]=Re({prop:i,defaultProp:l,onChange:d}),[U,Y]=Re({prop:n,defaultProp:r,onChange:s}),V=o.useRef(null),B=m?g||!!m.closest("form"):!0,[K,H]=o.useState(new Set),F=Array.from(K).map(N=>N.props.value).join(";");return f.jsx(ut,{...a,children:f.jsxs(Rt,{required:C,scope:c,trigger:m,onTriggerChange:w,valueNode:u,onValueNodeChange:h,valueNodeHasChildren:b,onValueNodeHasChildrenChange:M,contentId:Te(),value:U,onValueChange:Y,open:_,onOpenChange:L,dir:oe,triggerPointerDownPosRef:V,disabled:y,children:[f.jsx(ae.Provider,{scope:c,children:f.jsx(Et,{scope:t.__scopeSelect,onNativeOptionAdd:o.useCallback(N=>{H(k=>new Set(k).add(N))},[]),onNativeOptionRemove:o.useCallback(N=>{H(k=>{const W=new Set(k);return W.delete(N),W})},[]),children:e})}),B?f.jsxs(tt,{"aria-hidden":!0,required:C,tabIndex:-1,name:S,autoComplete:x,value:U,onChange:N=>Y(N.target.value),disabled:y,form:g,children:[U===void 0?f.jsx("option",{value:""}):null,Array.from(K)]},F):null]})})};Ne.displayName=se;var Me="SelectTrigger",Ae=o.forwardRef((t,c)=>{const{__scopeSelect:e,disabled:i=!1,...l}=t,d=ue(e),n=z(Me,e),r=n.disabled||i,s=O(c,n.onTriggerChange),p=de(e),S=o.useRef("touch"),[x,y,C]=ot(a=>{const m=p().filter(h=>!h.disabled),w=m.find(h=>h.value===n.value),u=nt(m,a,w);u!==void 0&&n.onValueChange(u.value)}),g=a=>{r||(n.onOpenChange(!0),C()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return f.jsx(st,{asChild:!0,...d,children:f.jsx(D.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:r,"data-disabled":r?"":void 0,"data-placeholder":et(n.value)?"":void 0,...l,ref:s,onClick:E(l.onClick,a=>{a.currentTarget.focus(),S.current!=="mouse"&&g(a)}),onPointerDown:E(l.onPointerDown,a=>{S.current=a.pointerType;const m=a.target;m.hasPointerCapture(a.pointerId)&&m.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(g(a),a.preventDefault())}),onKeyDown:E(l.onKeyDown,a=>{const m=x.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&y(a.key),!(m&&a.key===" ")&&It.includes(a.key)&&(g(),a.preventDefault())})})})});Ae.displayName=Me;var Oe="SelectValue",De=o.forwardRef((t,c)=>{const{__scopeSelect:e,className:i,style:l,children:d,placeholder:n="",...r}=t,s=z(Oe,e),{onValueNodeHasChildrenChange:p}=s,S=d!==void 0,x=O(c,s.onValueNodeChange);return $(()=>{p(S)},[p,S]),f.jsx(D.span,{...r,ref:x,style:{pointerEvents:"none"},children:et(s.value)?f.jsx(f.Fragment,{children:n}):d})});De.displayName=Oe;var _t="SelectIcon",je=o.forwardRef((t,c)=>{const{__scopeSelect:e,children:i,...l}=t;return f.jsx(D.span,{"aria-hidden":!0,...l,ref:c,children:i||"▼"})});je.displayName=_t;var Nt="SelectPortal",Le=t=>f.jsx(vt,{asChild:!0,...t});Le.displayName=Nt;var Q="SelectContent",ke=o.forwardRef((t,c)=>{const e=z(Q,t.__scopeSelect),[i,l]=o.useState();if($(()=>{l(new DocumentFragment)},[]),!e.open){const d=i;return d?be.createPortal(f.jsx(Ve,{scope:t.__scopeSelect,children:f.jsx(ae.Slot,{scope:t.__scopeSelect,children:f.jsx("div",{children:t.children})})}),d):null}return f.jsx(Be,{...t,ref:c})});ke.displayName=Q;var j=10,[Ve,q]=te(Q),Mt="SelectContentImpl",Be=o.forwardRef((t,c)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:l,onEscapeKeyDown:d,onPointerDownOutside:n,side:r,sideOffset:s,align:p,alignOffset:S,arrowPadding:x,collisionBoundary:y,collisionPadding:C,sticky:g,hideWhenDetached:a,avoidCollisions:m,...w}=t,u=z(Q,e),[h,b]=o.useState(null),[M,oe]=o.useState(null),_=O(c,v=>b(v)),[L,U]=o.useState(null),[Y,V]=o.useState(null),B=de(e),[K,H]=o.useState(!1),F=o.useRef(!1);o.useEffect(()=>{if(h)return pt(h)},[h]),ft();const N=o.useCallback(v=>{const[R,...A]=B().map(T=>T.ref.current),[P]=A.slice(-1),I=document.activeElement;for(const T of v)if(T===I||(T==null||T.scrollIntoView({block:"nearest"}),T===R&&M&&(M.scrollTop=0),T===P&&M&&(M.scrollTop=M.scrollHeight),T==null||T.focus(),document.activeElement!==I))return},[B,M]),k=o.useCallback(()=>N([L,h]),[N,L,h]);o.useEffect(()=>{K&&k()},[K,k]);const{onOpenChange:W,triggerPointerDownPosRef:G}=u;o.useEffect(()=>{if(h){let v={x:0,y:0};const R=P=>{var I,T;v={x:Math.abs(Math.round(P.pageX)-(((I=G.current)==null?void 0:I.x)??0)),y:Math.abs(Math.round(P.pageY)-(((T=G.current)==null?void 0:T.y)??0))}},A=P=>{v.x<=10&&v.y<=10?P.preventDefault():h.contains(P.target)||W(!1),document.removeEventListener("pointermove",R),G.current=null};return G.current!==null&&(document.addEventListener("pointermove",R),document.addEventListener("pointerup",A,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",A,{capture:!0})}}},[h,W,G]),o.useEffect(()=>{const v=()=>W(!1);return window.addEventListener("blur",v),window.addEventListener("resize",v),()=>{window.removeEventListener("blur",v),window.removeEventListener("resize",v)}},[W]);const[pe,ce]=ot(v=>{const R=B().filter(I=>!I.disabled),A=R.find(I=>I.ref.current===document.activeElement),P=nt(R,v,A);P&&setTimeout(()=>P.ref.current.focus())}),fe=o.useCallback((v,R,A)=>{const P=!F.current&&!A;(u.value!==void 0&&u.value===R||P)&&(U(v),P&&(F.current=!0))},[u.value]),me=o.useCallback(()=>h==null?void 0:h.focus(),[h]),ee=o.useCallback((v,R,A)=>{const P=!F.current&&!A;(u.value!==void 0&&u.value===R||P)&&V(v)},[u.value]),le=i==="popper"?xe:He,ne=le===xe?{side:r,sideOffset:s,align:p,alignOffset:S,arrowPadding:x,collisionBoundary:y,collisionPadding:C,sticky:g,hideWhenDetached:a,avoidCollisions:m}:{};return f.jsx(Ve,{scope:e,content:h,viewport:M,onViewportChange:oe,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:ee,focusSelectedItem:k,selectedItemText:Y,position:i,isPositioned:K,searchRef:pe,children:f.jsx(mt,{as:Se,allowPinchZoom:!0,children:f.jsx(ht,{asChild:!0,trapped:u.open,onMountAutoFocus:v=>{v.preventDefault()},onUnmountAutoFocus:E(l,v=>{var R;(R=u.trigger)==null||R.focus({preventScroll:!0}),v.preventDefault()}),children:f.jsx(ct,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:d,onPointerDownOutside:n,onFocusOutside:v=>v.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:f.jsx(le,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:v=>v.preventDefault(),...w,...ne,onPlaced:()=>H(!0),ref:_,style:{display:"flex",flexDirection:"column",outline:"none",...w.style},onKeyDown:E(w.onKeyDown,v=>{const R=v.ctrlKey||v.altKey||v.metaKey;if(v.key==="Tab"&&v.preventDefault(),!R&&v.key.length===1&&ce(v.key),["ArrowUp","ArrowDown","Home","End"].includes(v.key)){let P=B().filter(I=>!I.disabled).map(I=>I.ref.current);if(["ArrowUp","End"].includes(v.key)&&(P=P.slice().reverse()),["ArrowUp","ArrowDown"].includes(v.key)){const I=v.target,T=P.indexOf(I);P=P.slice(T+1)}setTimeout(()=>N(P)),v.preventDefault()}})})})})})})});Be.displayName=Mt;var At="SelectItemAlignedPosition",He=o.forwardRef((t,c)=>{const{__scopeSelect:e,onPlaced:i,...l}=t,d=z(Q,e),n=q(Q,e),[r,s]=o.useState(null),[p,S]=o.useState(null),x=O(c,_=>S(_)),y=de(e),C=o.useRef(!1),g=o.useRef(!0),{viewport:a,selectedItem:m,selectedItemText:w,focusSelectedItem:u}=n,h=o.useCallback(()=>{if(d.trigger&&d.valueNode&&r&&p&&a&&m&&w){const _=d.trigger.getBoundingClientRect(),L=p.getBoundingClientRect(),U=d.valueNode.getBoundingClientRect(),Y=w.getBoundingClientRect();if(d.dir!=="rtl"){const I=Y.left-L.left,T=U.left-I,X=_.left-T,Z=_.width+X,he=Math.max(Z,L.width),ve=window.innerWidth-j,ge=Ee(T,[j,Math.max(j,ve-he)]);r.style.minWidth=Z+"px",r.style.left=ge+"px"}else{const I=L.right-Y.right,T=window.innerWidth-U.right-I,X=window.innerWidth-_.right-T,Z=_.width+X,he=Math.max(Z,L.width),ve=window.innerWidth-j,ge=Ee(T,[j,Math.max(j,ve-he)]);r.style.minWidth=Z+"px",r.style.right=ge+"px"}const V=y(),B=window.innerHeight-j*2,K=a.scrollHeight,H=window.getComputedStyle(p),F=parseInt(H.borderTopWidth,10),N=parseInt(H.paddingTop,10),k=parseInt(H.borderBottomWidth,10),W=parseInt(H.paddingBottom,10),G=F+N+K+W+k,pe=Math.min(m.offsetHeight*5,G),ce=window.getComputedStyle(a),fe=parseInt(ce.paddingTop,10),me=parseInt(ce.paddingBottom,10),ee=_.top+_.height/2-j,le=B-ee,ne=m.offsetHeight/2,v=m.offsetTop+ne,R=F+N+v,A=G-R;if(R<=ee){const I=V.length>0&&m===V[V.length-1].ref.current;r.style.bottom="0px";const T=p.clientHeight-a.offsetTop-a.offsetHeight,X=Math.max(le,ne+(I?me:0)+T+k),Z=R+X;r.style.height=Z+"px"}else{const I=V.length>0&&m===V[0].ref.current;r.style.top="0px";const X=Math.max(ee,F+a.offsetTop+(I?fe:0)+ne)+A;r.style.height=X+"px",a.scrollTop=R-ee+a.offsetTop}r.style.margin=`${j}px 0`,r.style.minHeight=pe+"px",r.style.maxHeight=B+"px",i==null||i(),requestAnimationFrame(()=>C.current=!0)}},[y,d.trigger,d.valueNode,r,p,a,m,w,d.dir,i]);$(()=>h(),[h]);const[b,M]=o.useState();$(()=>{p&&M(window.getComputedStyle(p).zIndex)},[p]);const oe=o.useCallback(_=>{_&&g.current===!0&&(h(),u==null||u(),g.current=!1)},[h,u]);return f.jsx(Dt,{scope:e,contentWrapper:r,shouldExpandOnScrollRef:C,onScrollButtonChange:oe,children:f.jsx("div",{ref:s,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:f.jsx(D.div,{...l,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...l.style}})})})});He.displayName=At;var Ot="SelectPopperPosition",xe=o.forwardRef((t,c)=>{const{__scopeSelect:e,align:i="start",collisionPadding:l=j,...d}=t,n=ue(e);return f.jsx(lt,{...n,...d,ref:c,align:i,collisionPadding:l,style:{boxSizing:"border-box",...d.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Ot;var[Dt,Pe]=te(Q,{}),we="SelectViewport",Fe=o.forwardRef((t,c)=>{const{__scopeSelect:e,nonce:i,...l}=t,d=q(we,e),n=Pe(we,e),r=O(c,d.onViewportChange),s=o.useRef(0);return f.jsxs(f.Fragment,{children:[f.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),f.jsx(ae.Slot,{scope:e,children:f.jsx(D.div,{"data-radix-select-viewport":"",role:"presentation",...l,ref:r,style:{position:"relative",flex:1,overflow:"hidden auto",...l.style},onScroll:E(l.onScroll,p=>{const S=p.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:y}=n;if(y!=null&&y.current&&x){const C=Math.abs(s.current-S.scrollTop);if(C>0){const g=window.innerHeight-j*2,a=parseFloat(x.style.minHeight),m=parseFloat(x.style.height),w=Math.max(a,m);if(w<g){const u=w+C,h=Math.min(g,u),b=u-h;x.style.height=h+"px",x.style.bottom==="0px"&&(S.scrollTop=b>0?b:0,x.style.justifyContent="flex-end")}}}s.current=S.scrollTop})})})]})});Fe.displayName=we;var We="SelectGroup",[jt,Lt]=te(We),Ue=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=Te();return f.jsx(jt,{scope:e,id:l,children:f.jsx(D.div,{role:"group","aria-labelledby":l,...i,ref:c})})});Ue.displayName=We;var Ke="SelectLabel",Ge=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=Lt(Ke,e);return f.jsx(D.div,{id:l.id,...i,ref:c})});Ge.displayName=Ke;var ie="SelectItem",[kt,$e]=te(ie),ze=o.forwardRef((t,c)=>{const{__scopeSelect:e,value:i,disabled:l=!1,textValue:d,...n}=t,r=z(ie,e),s=q(ie,e),p=r.value===i,[S,x]=o.useState(d??""),[y,C]=o.useState(!1),g=O(c,u=>{var h;return(h=s.itemRefCallback)==null?void 0:h.call(s,u,i,l)}),a=Te(),m=o.useRef("touch"),w=()=>{l||(r.onValueChange(i),r.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return f.jsx(kt,{scope:e,value:i,disabled:l,textId:a,isSelected:p,onItemTextChange:o.useCallback(u=>{x(h=>h||((u==null?void 0:u.textContent)??"").trim())},[]),children:f.jsx(ae.ItemSlot,{scope:e,value:i,disabled:l,textValue:S,children:f.jsx(D.div,{role:"option","aria-labelledby":a,"data-highlighted":y?"":void 0,"aria-selected":p&&y,"data-state":p?"checked":"unchecked","aria-disabled":l||void 0,"data-disabled":l?"":void 0,tabIndex:l?void 0:-1,...n,ref:g,onFocus:E(n.onFocus,()=>C(!0)),onBlur:E(n.onBlur,()=>C(!1)),onClick:E(n.onClick,()=>{m.current!=="mouse"&&w()}),onPointerUp:E(n.onPointerUp,()=>{m.current==="mouse"&&w()}),onPointerDown:E(n.onPointerDown,u=>{m.current=u.pointerType}),onPointerMove:E(n.onPointerMove,u=>{var h;m.current=u.pointerType,l?(h=s.onItemLeave)==null||h.call(s):m.current==="mouse"&&u.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(n.onPointerLeave,u=>{var h;u.currentTarget===document.activeElement&&((h=s.onItemLeave)==null||h.call(s))}),onKeyDown:E(n.onKeyDown,u=>{var b;((b=s.searchRef)==null?void 0:b.current)!==""&&u.key===" "||(Tt.includes(u.key)&&w(),u.key===" "&&u.preventDefault())})})})})});ze.displayName=ie;var re="SelectItemText",qe=o.forwardRef((t,c)=>{const{__scopeSelect:e,className:i,style:l,...d}=t,n=z(re,e),r=q(re,e),s=$e(re,e),p=bt(re,e),[S,x]=o.useState(null),y=O(c,w=>x(w),s.onItemTextChange,w=>{var u;return(u=r.itemTextRefCallback)==null?void 0:u.call(r,w,s.value,s.disabled)}),C=S==null?void 0:S.textContent,g=o.useMemo(()=>f.jsx("option",{value:s.value,disabled:s.disabled,children:C},s.value),[s.disabled,s.value,C]),{onNativeOptionAdd:a,onNativeOptionRemove:m}=p;return $(()=>(a(g),()=>m(g)),[a,m,g]),f.jsxs(f.Fragment,{children:[f.jsx(D.span,{id:s.textId,...d,ref:y}),s.isSelected&&n.valueNode&&!n.valueNodeHasChildren?be.createPortal(d.children,n.valueNode):null]})});qe.displayName=re;var Ye="SelectItemIndicator",Xe=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t;return $e(Ye,e).isSelected?f.jsx(D.span,{"aria-hidden":!0,...i,ref:c}):null});Xe.displayName=Ye;var Ce="SelectScrollUpButton",Ze=o.forwardRef((t,c)=>{const e=q(Ce,t.__scopeSelect),i=Pe(Ce,t.__scopeSelect),[l,d]=o.useState(!1),n=O(c,i.onScrollButtonChange);return $(()=>{if(e.viewport&&e.isPositioned){let r=function(){const p=s.scrollTop>0;d(p)};const s=e.viewport;return r(),s.addEventListener("scroll",r),()=>s.removeEventListener("scroll",r)}},[e.viewport,e.isPositioned]),l?f.jsx(Qe,{...t,ref:n,onAutoScroll:()=>{const{viewport:r,selectedItem:s}=e;r&&s&&(r.scrollTop=r.scrollTop-s.offsetHeight)}}):null});Ze.displayName=Ce;var ye="SelectScrollDownButton",Je=o.forwardRef((t,c)=>{const e=q(ye,t.__scopeSelect),i=Pe(ye,t.__scopeSelect),[l,d]=o.useState(!1),n=O(c,i.onScrollButtonChange);return $(()=>{if(e.viewport&&e.isPositioned){let r=function(){const p=s.scrollHeight-s.clientHeight,S=Math.ceil(s.scrollTop)<p;d(S)};const s=e.viewport;return r(),s.addEventListener("scroll",r),()=>s.removeEventListener("scroll",r)}},[e.viewport,e.isPositioned]),l?f.jsx(Qe,{...t,ref:n,onAutoScroll:()=>{const{viewport:r,selectedItem:s}=e;r&&s&&(r.scrollTop=r.scrollTop+s.offsetHeight)}}):null});Je.displayName=ye;var Qe=o.forwardRef((t,c)=>{const{__scopeSelect:e,onAutoScroll:i,...l}=t,d=q("SelectScrollButton",e),n=o.useRef(null),r=de(e),s=o.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return o.useEffect(()=>()=>s(),[s]),$(()=>{var S;const p=r().find(x=>x.ref.current===document.activeElement);(S=p==null?void 0:p.ref.current)==null||S.scrollIntoView({block:"nearest"})},[r]),f.jsx(D.div,{"aria-hidden":!0,...l,ref:c,style:{flexShrink:0,...l.style},onPointerDown:E(l.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E(l.onPointerMove,()=>{var p;(p=d.onItemLeave)==null||p.call(d),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E(l.onPointerLeave,()=>{s()})})}),Vt="SelectSeparator",Bt=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t;return f.jsx(D.div,{"aria-hidden":!0,...i,ref:c})});Bt.displayName=Vt;var Ie="SelectArrow",Ht=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=ue(e),d=z(Ie,e),n=q(Ie,e);return d.open&&n.position==="popper"?f.jsx(it,{...l,...i,ref:c}):null});Ht.displayName=Ie;function et(t){return t===""||t===void 0}var tt=o.forwardRef((t,c)=>{const{value:e,...i}=t,l=o.useRef(null),d=O(c,l),n=yt(e);return o.useEffect(()=>{const r=l.current,s=window.HTMLSelectElement.prototype,S=Object.getOwnPropertyDescriptor(s,"value").set;if(n!==e&&S){const x=new Event("change",{bubbles:!0});S.call(r,e),r.dispatchEvent(x)}},[n,e]),f.jsx(at,{asChild:!0,children:f.jsx("select",{...i,ref:d,defaultValue:e})})});tt.displayName="BubbleSelect";function ot(t){const c=dt(t),e=o.useRef(""),i=o.useRef(0),l=o.useCallback(n=>{const r=e.current+n;c(r),function s(p){e.current=p,window.clearTimeout(i.current),p!==""&&(i.current=window.setTimeout(()=>s(""),1e3))}(r)},[c]),d=o.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return o.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,l,d]}function nt(t,c,e){const l=c.length>1&&Array.from(c).every(p=>p===c[0])?c[0]:c,d=e?t.indexOf(e):-1;let n=Ft(t,Math.max(d,0));l.length===1&&(n=n.filter(p=>p!==e));const s=n.find(p=>p.textValue.toLowerCase().startsWith(l.toLowerCase()));return s!==e?s:void 0}function Ft(t,c){return t.map((e,i)=>t[(c+i)%t.length])}var zt=Ne,qt=Ae,Yt=De,Xt=je,Zt=Le,Jt=ke,Qt=Fe,eo=Ue,to=Ge,oo=ze,no=qe,ro=Xe,so=Ze,co=Je;export{Jt as C,eo as G,Xt as I,to as L,Zt as P,zt as R,so as S,qt as T,Yt as V,Qt as a,co as b,oo as c,no as d,ro as e,xt as f,Ct as u};
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{r as o,j as f,R as J}from"./index-CGzylDPY.js";import{r as be}from"./components-DrvY4pal.js";import{h as O,k as Se,d as rt,j as _e,A as st,P as D,f as E,i as $,D as ct,C as lt,e as Te,l as it,V as at,n as dt,u as Re,R as ut}from"./tooltip-leWCE50J.js";import{h as pt,u as ft,R as mt,F as ht,P as vt}from"./index-BE3KRz8n.js";function Ee(t,[c,e]){return Math.min(e,Math.max(c,t))}function gt(t,c=[]){let e=[];function i(d,n){const r=o.createContext(n),s=e.length;e=[...e,n];function p(x){const{scope:y,children:C,...g}=x,a=(y==null?void 0:y[t][s])||r,m=o.useMemo(()=>g,Object.values(g));return f.jsx(a.Provider,{value:m,children:C})}function S(x,y){const C=(y==null?void 0:y[t][s])||r,g=o.useContext(C);if(g)return g;if(n!==void 0)return n;throw new Error(`\`${x}\` must be used within \`${d}\``)}return p.displayName=d+"Provider",[p,S]}const l=()=>{const d=e.map(n=>o.createContext(n));return function(r){const s=(r==null?void 0:r[t])||d;return o.useMemo(()=>({[`__scope${t}`]:{...r,[t]:s}}),[r,s])}};return l.scopeName=t,[i,St(l,...c)]}function St(...t){const c=t[0];if(t.length===1)return c;const e=()=>{const i=t.map(l=>({useScope:l(),scopeName:l.scopeName}));return function(d){const n=i.reduce((r,{useScope:s,scopeName:p})=>{const x=s(d)[`__scope${p}`];return{...r,...x}},{});return o.useMemo(()=>({[`__scope${c.scopeName}`]:n}),[n])}};return e.scopeName=c.scopeName,e}function xt(t){const c=t+"CollectionProvider",[e,i]=gt(c),[l,d]=e(c,{collectionRef:{current:null},itemMap:new Map}),n=C=>{const{scope:g,children:a}=C,m=J.useRef(null),w=J.useRef(new Map).current;return f.jsx(l,{scope:g,itemMap:w,collectionRef:m,children:a})};n.displayName=c;const r=t+"CollectionSlot",s=J.forwardRef((C,g)=>{const{scope:a,children:m}=C,w=d(r,a),u=O(g,w.collectionRef);return f.jsx(Se,{ref:u,children:m})});s.displayName=r;const p=t+"CollectionItemSlot",S="data-radix-collection-item",x=J.forwardRef((C,g)=>{const{scope:a,children:m,...w}=C,u=J.useRef(null),h=O(g,u),b=d(p,a);return J.useEffect(()=>(b.itemMap.set(u,{ref:u,...w}),()=>void b.itemMap.delete(u))),f.jsx(Se,{[S]:"",ref:h,children:m})});x.displayName=p;function y(C){const g=d(t+"CollectionConsumer",C);return J.useCallback(()=>{const m=g.collectionRef.current;if(!m)return[];const w=Array.from(m.querySelectorAll(`[${S}]`));return Array.from(g.itemMap.values()).sort((b,M)=>w.indexOf(b.ref.current)-w.indexOf(M.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:n,Slot:s,ItemSlot:x},y,i]}var wt=o.createContext(void 0);function Ct(t){const c=o.useContext(wt);return t||c||"ltr"}function yt(t){const c=o.useRef({value:t,previous:t});return o.useMemo(()=>(c.current.value!==t&&(c.current.previous=c.current.value,c.current.value=t),c.current.previous),[t])}var It=[" ","Enter","ArrowUp","ArrowDown"],Tt=[" ","Enter"],se="Select",[ae,de,Pt]=xt(se),[te,$t]=rt(se,[Pt,_e]),ue=_e(),[Rt,z]=te(se),[Et,bt]=te(se),Ne=t=>{const{__scopeSelect:c,children:e,open:i,defaultOpen:l,onOpenChange:d,value:n,defaultValue:r,onValueChange:s,dir:p,name:S,autoComplete:x,disabled:y,required:C,form:g}=t,a=ue(c),[m,w]=o.useState(null),[u,h]=o.useState(null),[b,M]=o.useState(!1),oe=Ct(p),[_=!1,L]=Re({prop:i,defaultProp:l,onChange:d}),[U,Y]=Re({prop:n,defaultProp:r,onChange:s}),V=o.useRef(null),B=m?g||!!m.closest("form"):!0,[K,H]=o.useState(new Set),F=Array.from(K).map(N=>N.props.value).join(";");return f.jsx(ut,{...a,children:f.jsxs(Rt,{required:C,scope:c,trigger:m,onTriggerChange:w,valueNode:u,onValueNodeChange:h,valueNodeHasChildren:b,onValueNodeHasChildrenChange:M,contentId:Te(),value:U,onValueChange:Y,open:_,onOpenChange:L,dir:oe,triggerPointerDownPosRef:V,disabled:y,children:[f.jsx(ae.Provider,{scope:c,children:f.jsx(Et,{scope:t.__scopeSelect,onNativeOptionAdd:o.useCallback(N=>{H(k=>new Set(k).add(N))},[]),onNativeOptionRemove:o.useCallback(N=>{H(k=>{const W=new Set(k);return W.delete(N),W})},[]),children:e})}),B?f.jsxs(tt,{"aria-hidden":!0,required:C,tabIndex:-1,name:S,autoComplete:x,value:U,onChange:N=>Y(N.target.value),disabled:y,form:g,children:[U===void 0?f.jsx("option",{value:""}):null,Array.from(K)]},F):null]})})};Ne.displayName=se;var Me="SelectTrigger",Ae=o.forwardRef((t,c)=>{const{__scopeSelect:e,disabled:i=!1,...l}=t,d=ue(e),n=z(Me,e),r=n.disabled||i,s=O(c,n.onTriggerChange),p=de(e),S=o.useRef("touch"),[x,y,C]=ot(a=>{const m=p().filter(h=>!h.disabled),w=m.find(h=>h.value===n.value),u=nt(m,a,w);u!==void 0&&n.onValueChange(u.value)}),g=a=>{r||(n.onOpenChange(!0),C()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return f.jsx(st,{asChild:!0,...d,children:f.jsx(D.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:r,"data-disabled":r?"":void 0,"data-placeholder":et(n.value)?"":void 0,...l,ref:s,onClick:E(l.onClick,a=>{a.currentTarget.focus(),S.current!=="mouse"&&g(a)}),onPointerDown:E(l.onPointerDown,a=>{S.current=a.pointerType;const m=a.target;m.hasPointerCapture(a.pointerId)&&m.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(g(a),a.preventDefault())}),onKeyDown:E(l.onKeyDown,a=>{const m=x.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&y(a.key),!(m&&a.key===" ")&&It.includes(a.key)&&(g(),a.preventDefault())})})})});Ae.displayName=Me;var Oe="SelectValue",De=o.forwardRef((t,c)=>{const{__scopeSelect:e,className:i,style:l,children:d,placeholder:n="",...r}=t,s=z(Oe,e),{onValueNodeHasChildrenChange:p}=s,S=d!==void 0,x=O(c,s.onValueNodeChange);return $(()=>{p(S)},[p,S]),f.jsx(D.span,{...r,ref:x,style:{pointerEvents:"none"},children:et(s.value)?f.jsx(f.Fragment,{children:n}):d})});De.displayName=Oe;var _t="SelectIcon",je=o.forwardRef((t,c)=>{const{__scopeSelect:e,children:i,...l}=t;return f.jsx(D.span,{"aria-hidden":!0,...l,ref:c,children:i||"▼"})});je.displayName=_t;var Nt="SelectPortal",Le=t=>f.jsx(vt,{asChild:!0,...t});Le.displayName=Nt;var Q="SelectContent",ke=o.forwardRef((t,c)=>{const e=z(Q,t.__scopeSelect),[i,l]=o.useState();if($(()=>{l(new DocumentFragment)},[]),!e.open){const d=i;return d?be.createPortal(f.jsx(Ve,{scope:t.__scopeSelect,children:f.jsx(ae.Slot,{scope:t.__scopeSelect,children:f.jsx("div",{children:t.children})})}),d):null}return f.jsx(Be,{...t,ref:c})});ke.displayName=Q;var j=10,[Ve,q]=te(Q),Mt="SelectContentImpl",Be=o.forwardRef((t,c)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:l,onEscapeKeyDown:d,onPointerDownOutside:n,side:r,sideOffset:s,align:p,alignOffset:S,arrowPadding:x,collisionBoundary:y,collisionPadding:C,sticky:g,hideWhenDetached:a,avoidCollisions:m,...w}=t,u=z(Q,e),[h,b]=o.useState(null),[M,oe]=o.useState(null),_=O(c,v=>b(v)),[L,U]=o.useState(null),[Y,V]=o.useState(null),B=de(e),[K,H]=o.useState(!1),F=o.useRef(!1);o.useEffect(()=>{if(h)return pt(h)},[h]),ft();const N=o.useCallback(v=>{const[R,...A]=B().map(T=>T.ref.current),[P]=A.slice(-1),I=document.activeElement;for(const T of v)if(T===I||(T==null||T.scrollIntoView({block:"nearest"}),T===R&&M&&(M.scrollTop=0),T===P&&M&&(M.scrollTop=M.scrollHeight),T==null||T.focus(),document.activeElement!==I))return},[B,M]),k=o.useCallback(()=>N([L,h]),[N,L,h]);o.useEffect(()=>{K&&k()},[K,k]);const{onOpenChange:W,triggerPointerDownPosRef:G}=u;o.useEffect(()=>{if(h){let v={x:0,y:0};const R=P=>{var I,T;v={x:Math.abs(Math.round(P.pageX)-(((I=G.current)==null?void 0:I.x)??0)),y:Math.abs(Math.round(P.pageY)-(((T=G.current)==null?void 0:T.y)??0))}},A=P=>{v.x<=10&&v.y<=10?P.preventDefault():h.contains(P.target)||W(!1),document.removeEventListener("pointermove",R),G.current=null};return G.current!==null&&(document.addEventListener("pointermove",R),document.addEventListener("pointerup",A,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",A,{capture:!0})}}},[h,W,G]),o.useEffect(()=>{const v=()=>W(!1);return window.addEventListener("blur",v),window.addEventListener("resize",v),()=>{window.removeEventListener("blur",v),window.removeEventListener("resize",v)}},[W]);const[pe,ce]=ot(v=>{const R=B().filter(I=>!I.disabled),A=R.find(I=>I.ref.current===document.activeElement),P=nt(R,v,A);P&&setTimeout(()=>P.ref.current.focus())}),fe=o.useCallback((v,R,A)=>{const P=!F.current&&!A;(u.value!==void 0&&u.value===R||P)&&(U(v),P&&(F.current=!0))},[u.value]),me=o.useCallback(()=>h==null?void 0:h.focus(),[h]),ee=o.useCallback((v,R,A)=>{const P=!F.current&&!A;(u.value!==void 0&&u.value===R||P)&&V(v)},[u.value]),le=i==="popper"?xe:He,ne=le===xe?{side:r,sideOffset:s,align:p,alignOffset:S,arrowPadding:x,collisionBoundary:y,collisionPadding:C,sticky:g,hideWhenDetached:a,avoidCollisions:m}:{};return f.jsx(Ve,{scope:e,content:h,viewport:M,onViewportChange:oe,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:ee,focusSelectedItem:k,selectedItemText:Y,position:i,isPositioned:K,searchRef:pe,children:f.jsx(mt,{as:Se,allowPinchZoom:!0,children:f.jsx(ht,{asChild:!0,trapped:u.open,onMountAutoFocus:v=>{v.preventDefault()},onUnmountAutoFocus:E(l,v=>{var R;(R=u.trigger)==null||R.focus({preventScroll:!0}),v.preventDefault()}),children:f.jsx(ct,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:d,onPointerDownOutside:n,onFocusOutside:v=>v.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:f.jsx(le,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:v=>v.preventDefault(),...w,...ne,onPlaced:()=>H(!0),ref:_,style:{display:"flex",flexDirection:"column",outline:"none",...w.style},onKeyDown:E(w.onKeyDown,v=>{const R=v.ctrlKey||v.altKey||v.metaKey;if(v.key==="Tab"&&v.preventDefault(),!R&&v.key.length===1&&ce(v.key),["ArrowUp","ArrowDown","Home","End"].includes(v.key)){let P=B().filter(I=>!I.disabled).map(I=>I.ref.current);if(["ArrowUp","End"].includes(v.key)&&(P=P.slice().reverse()),["ArrowUp","ArrowDown"].includes(v.key)){const I=v.target,T=P.indexOf(I);P=P.slice(T+1)}setTimeout(()=>N(P)),v.preventDefault()}})})})})})})});Be.displayName=Mt;var At="SelectItemAlignedPosition",He=o.forwardRef((t,c)=>{const{__scopeSelect:e,onPlaced:i,...l}=t,d=z(Q,e),n=q(Q,e),[r,s]=o.useState(null),[p,S]=o.useState(null),x=O(c,_=>S(_)),y=de(e),C=o.useRef(!1),g=o.useRef(!0),{viewport:a,selectedItem:m,selectedItemText:w,focusSelectedItem:u}=n,h=o.useCallback(()=>{if(d.trigger&&d.valueNode&&r&&p&&a&&m&&w){const _=d.trigger.getBoundingClientRect(),L=p.getBoundingClientRect(),U=d.valueNode.getBoundingClientRect(),Y=w.getBoundingClientRect();if(d.dir!=="rtl"){const I=Y.left-L.left,T=U.left-I,X=_.left-T,Z=_.width+X,he=Math.max(Z,L.width),ve=window.innerWidth-j,ge=Ee(T,[j,Math.max(j,ve-he)]);r.style.minWidth=Z+"px",r.style.left=ge+"px"}else{const I=L.right-Y.right,T=window.innerWidth-U.right-I,X=window.innerWidth-_.right-T,Z=_.width+X,he=Math.max(Z,L.width),ve=window.innerWidth-j,ge=Ee(T,[j,Math.max(j,ve-he)]);r.style.minWidth=Z+"px",r.style.right=ge+"px"}const V=y(),B=window.innerHeight-j*2,K=a.scrollHeight,H=window.getComputedStyle(p),F=parseInt(H.borderTopWidth,10),N=parseInt(H.paddingTop,10),k=parseInt(H.borderBottomWidth,10),W=parseInt(H.paddingBottom,10),G=F+N+K+W+k,pe=Math.min(m.offsetHeight*5,G),ce=window.getComputedStyle(a),fe=parseInt(ce.paddingTop,10),me=parseInt(ce.paddingBottom,10),ee=_.top+_.height/2-j,le=B-ee,ne=m.offsetHeight/2,v=m.offsetTop+ne,R=F+N+v,A=G-R;if(R<=ee){const I=V.length>0&&m===V[V.length-1].ref.current;r.style.bottom="0px";const T=p.clientHeight-a.offsetTop-a.offsetHeight,X=Math.max(le,ne+(I?me:0)+T+k),Z=R+X;r.style.height=Z+"px"}else{const I=V.length>0&&m===V[0].ref.current;r.style.top="0px";const X=Math.max(ee,F+a.offsetTop+(I?fe:0)+ne)+A;r.style.height=X+"px",a.scrollTop=R-ee+a.offsetTop}r.style.margin=`${j}px 0`,r.style.minHeight=pe+"px",r.style.maxHeight=B+"px",i==null||i(),requestAnimationFrame(()=>C.current=!0)}},[y,d.trigger,d.valueNode,r,p,a,m,w,d.dir,i]);$(()=>h(),[h]);const[b,M]=o.useState();$(()=>{p&&M(window.getComputedStyle(p).zIndex)},[p]);const oe=o.useCallback(_=>{_&&g.current===!0&&(h(),u==null||u(),g.current=!1)},[h,u]);return f.jsx(Dt,{scope:e,contentWrapper:r,shouldExpandOnScrollRef:C,onScrollButtonChange:oe,children:f.jsx("div",{ref:s,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:f.jsx(D.div,{...l,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...l.style}})})})});He.displayName=At;var Ot="SelectPopperPosition",xe=o.forwardRef((t,c)=>{const{__scopeSelect:e,align:i="start",collisionPadding:l=j,...d}=t,n=ue(e);return f.jsx(lt,{...n,...d,ref:c,align:i,collisionPadding:l,style:{boxSizing:"border-box",...d.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Ot;var[Dt,Pe]=te(Q,{}),we="SelectViewport",Fe=o.forwardRef((t,c)=>{const{__scopeSelect:e,nonce:i,...l}=t,d=q(we,e),n=Pe(we,e),r=O(c,d.onViewportChange),s=o.useRef(0);return f.jsxs(f.Fragment,{children:[f.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),f.jsx(ae.Slot,{scope:e,children:f.jsx(D.div,{"data-radix-select-viewport":"",role:"presentation",...l,ref:r,style:{position:"relative",flex:1,overflow:"hidden auto",...l.style},onScroll:E(l.onScroll,p=>{const S=p.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:y}=n;if(y!=null&&y.current&&x){const C=Math.abs(s.current-S.scrollTop);if(C>0){const g=window.innerHeight-j*2,a=parseFloat(x.style.minHeight),m=parseFloat(x.style.height),w=Math.max(a,m);if(w<g){const u=w+C,h=Math.min(g,u),b=u-h;x.style.height=h+"px",x.style.bottom==="0px"&&(S.scrollTop=b>0?b:0,x.style.justifyContent="flex-end")}}}s.current=S.scrollTop})})})]})});Fe.displayName=we;var We="SelectGroup",[jt,Lt]=te(We),Ue=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=Te();return f.jsx(jt,{scope:e,id:l,children:f.jsx(D.div,{role:"group","aria-labelledby":l,...i,ref:c})})});Ue.displayName=We;var Ke="SelectLabel",Ge=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=Lt(Ke,e);return f.jsx(D.div,{id:l.id,...i,ref:c})});Ge.displayName=Ke;var ie="SelectItem",[kt,$e]=te(ie),ze=o.forwardRef((t,c)=>{const{__scopeSelect:e,value:i,disabled:l=!1,textValue:d,...n}=t,r=z(ie,e),s=q(ie,e),p=r.value===i,[S,x]=o.useState(d??""),[y,C]=o.useState(!1),g=O(c,u=>{var h;return(h=s.itemRefCallback)==null?void 0:h.call(s,u,i,l)}),a=Te(),m=o.useRef("touch"),w=()=>{l||(r.onValueChange(i),r.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return f.jsx(kt,{scope:e,value:i,disabled:l,textId:a,isSelected:p,onItemTextChange:o.useCallback(u=>{x(h=>h||((u==null?void 0:u.textContent)??"").trim())},[]),children:f.jsx(ae.ItemSlot,{scope:e,value:i,disabled:l,textValue:S,children:f.jsx(D.div,{role:"option","aria-labelledby":a,"data-highlighted":y?"":void 0,"aria-selected":p&&y,"data-state":p?"checked":"unchecked","aria-disabled":l||void 0,"data-disabled":l?"":void 0,tabIndex:l?void 0:-1,...n,ref:g,onFocus:E(n.onFocus,()=>C(!0)),onBlur:E(n.onBlur,()=>C(!1)),onClick:E(n.onClick,()=>{m.current!=="mouse"&&w()}),onPointerUp:E(n.onPointerUp,()=>{m.current==="mouse"&&w()}),onPointerDown:E(n.onPointerDown,u=>{m.current=u.pointerType}),onPointerMove:E(n.onPointerMove,u=>{var h;m.current=u.pointerType,l?(h=s.onItemLeave)==null||h.call(s):m.current==="mouse"&&u.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(n.onPointerLeave,u=>{var h;u.currentTarget===document.activeElement&&((h=s.onItemLeave)==null||h.call(s))}),onKeyDown:E(n.onKeyDown,u=>{var b;((b=s.searchRef)==null?void 0:b.current)!==""&&u.key===" "||(Tt.includes(u.key)&&w(),u.key===" "&&u.preventDefault())})})})})});ze.displayName=ie;var re="SelectItemText",qe=o.forwardRef((t,c)=>{const{__scopeSelect:e,className:i,style:l,...d}=t,n=z(re,e),r=q(re,e),s=$e(re,e),p=bt(re,e),[S,x]=o.useState(null),y=O(c,w=>x(w),s.onItemTextChange,w=>{var u;return(u=r.itemTextRefCallback)==null?void 0:u.call(r,w,s.value,s.disabled)}),C=S==null?void 0:S.textContent,g=o.useMemo(()=>f.jsx("option",{value:s.value,disabled:s.disabled,children:C},s.value),[s.disabled,s.value,C]),{onNativeOptionAdd:a,onNativeOptionRemove:m}=p;return $(()=>(a(g),()=>m(g)),[a,m,g]),f.jsxs(f.Fragment,{children:[f.jsx(D.span,{id:s.textId,...d,ref:y}),s.isSelected&&n.valueNode&&!n.valueNodeHasChildren?be.createPortal(d.children,n.valueNode):null]})});qe.displayName=re;var Ye="SelectItemIndicator",Xe=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t;return $e(Ye,e).isSelected?f.jsx(D.span,{"aria-hidden":!0,...i,ref:c}):null});Xe.displayName=Ye;var Ce="SelectScrollUpButton",Ze=o.forwardRef((t,c)=>{const e=q(Ce,t.__scopeSelect),i=Pe(Ce,t.__scopeSelect),[l,d]=o.useState(!1),n=O(c,i.onScrollButtonChange);return $(()=>{if(e.viewport&&e.isPositioned){let r=function(){const p=s.scrollTop>0;d(p)};const s=e.viewport;return r(),s.addEventListener("scroll",r),()=>s.removeEventListener("scroll",r)}},[e.viewport,e.isPositioned]),l?f.jsx(Qe,{...t,ref:n,onAutoScroll:()=>{const{viewport:r,selectedItem:s}=e;r&&s&&(r.scrollTop=r.scrollTop-s.offsetHeight)}}):null});Ze.displayName=Ce;var ye="SelectScrollDownButton",Je=o.forwardRef((t,c)=>{const e=q(ye,t.__scopeSelect),i=Pe(ye,t.__scopeSelect),[l,d]=o.useState(!1),n=O(c,i.onScrollButtonChange);return $(()=>{if(e.viewport&&e.isPositioned){let r=function(){const p=s.scrollHeight-s.clientHeight,S=Math.ceil(s.scrollTop)<p;d(S)};const s=e.viewport;return r(),s.addEventListener("scroll",r),()=>s.removeEventListener("scroll",r)}},[e.viewport,e.isPositioned]),l?f.jsx(Qe,{...t,ref:n,onAutoScroll:()=>{const{viewport:r,selectedItem:s}=e;r&&s&&(r.scrollTop=r.scrollTop+s.offsetHeight)}}):null});Je.displayName=ye;var Qe=o.forwardRef((t,c)=>{const{__scopeSelect:e,onAutoScroll:i,...l}=t,d=q("SelectScrollButton",e),n=o.useRef(null),r=de(e),s=o.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return o.useEffect(()=>()=>s(),[s]),$(()=>{var S;const p=r().find(x=>x.ref.current===document.activeElement);(S=p==null?void 0:p.ref.current)==null||S.scrollIntoView({block:"nearest"})},[r]),f.jsx(D.div,{"aria-hidden":!0,...l,ref:c,style:{flexShrink:0,...l.style},onPointerDown:E(l.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E(l.onPointerMove,()=>{var p;(p=d.onItemLeave)==null||p.call(d),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E(l.onPointerLeave,()=>{s()})})}),Vt="SelectSeparator",Bt=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t;return f.jsx(D.div,{"aria-hidden":!0,...i,ref:c})});Bt.displayName=Vt;var Ie="SelectArrow",Ht=o.forwardRef((t,c)=>{const{__scopeSelect:e,...i}=t,l=ue(e),d=z(Ie,e),n=q(Ie,e);return d.open&&n.position==="popper"?f.jsx(it,{...l,...i,ref:c}):null});Ht.displayName=Ie;function et(t){return t===""||t===void 0}var tt=o.forwardRef((t,c)=>{const{value:e,...i}=t,l=o.useRef(null),d=O(c,l),n=yt(e);return o.useEffect(()=>{const r=l.current,s=window.HTMLSelectElement.prototype,S=Object.getOwnPropertyDescriptor(s,"value").set;if(n!==e&&S){const x=new Event("change",{bubbles:!0});S.call(r,e),r.dispatchEvent(x)}},[n,e]),f.jsx(at,{asChild:!0,children:f.jsx("select",{...i,ref:d,defaultValue:e})})});tt.displayName="BubbleSelect";function ot(t){const c=dt(t),e=o.useRef(""),i=o.useRef(0),l=o.useCallback(n=>{const r=e.current+n;c(r),function s(p){e.current=p,window.clearTimeout(i.current),p!==""&&(i.current=window.setTimeout(()=>s(""),1e3))}(r)},[c]),d=o.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return o.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,l,d]}function nt(t,c,e){const l=c.length>1&&Array.from(c).every(p=>p===c[0])?c[0]:c,d=e?t.indexOf(e):-1;let n=Ft(t,Math.max(d,0));l.length===1&&(n=n.filter(p=>p!==e));const s=n.find(p=>p.textValue.toLowerCase().startsWith(l.toLowerCase()));return s!==e?s:void 0}function Ft(t,c){return t.map((e,i)=>t[(c+i)%t.length])}var zt=Ne,qt=Ae,Yt=De,Xt=je,Zt=Le,Jt=ke,Qt=Fe,eo=Ue,to=Ge,oo=ze,no=qe,ro=Xe,so=Ze,co=Je;export{Jt as C,eo as G,Xt as I,to as L,Zt as P,zt as R,so as S,qt as T,Yt as V,Qt as a,co as b,oo as c,no as d,ro as e,xt as f,Ct as u};
|
|
2
|
+
//# sourceMappingURL=index-6Hu4Lmzn.js.map
|